fbpx

Swagger

Swagger is a specification and complete framework implementation for describing, producing, consuming, and visualizing RESTful web services.

As of version 4.8 Enterprise Tester now supports describing its API in a swagger compatible manner.

Retrieving the Swagger JSON

Swagger describes the various resources, methods and parameters of a REST API in JSON format. The swagger specification is documented here.

In Enterprise Tester the Swagger API List resource allows retrieval of the “swagger JSON” for the Enterprise Tester API.

Interacting with the API via Swagger UI

Swagger includes its own viewer called Swagger UI – which uses the Swagger JSON output to generate interactive documentation for Swagger-documented API, allowing you to easily try various API methods without requiring a client or programming skills.

Enterprise Tester includes a copy of Swagger UI with itself, you can access the client via the link:

http://{et_server_url}/content/vendor/swagger/index.html#!/api

Generating clients

There are a number of client generators for swagger – check out the Swagger website for more details.

Popular client generators such as Swagger codegen and JavaScript client Swagger-client which provide support for generating clients from Enterprise Tester’s swagger JSON in languages such as Javascript, Ruby, Scala, Java, PHP and Python.

OData (Open Data Protocol)

Some parts of the REST API expose collections which can be queried via OData mechanisms.

ODATA, or Open Data Protocol, is an involved standard allowing for adhoc filtering, paging (and much more) of resources – more details can be found here.

Currently Enterprise Tester leverages some features of OData as below:

  • $filter – Is supported for OData implementing collections.
  • $orderby – Is supported for OData implementing collections.
  • $expand – Is supported for most resource types, but it’s implementation differs in some ways (we align more closely with the Jira REST API expand functionality).
  • $top – Is supported for OData implementing collections (also supported on any collections that take TQL queries).
  • $skip – Is supported for OData implementing collections (also supported on any collections that take TQL queries).

Enterprise Tester at current does not intend to be OData compliant, in particular we have no plans to implement the navigation or metadata features that are within OData, at least not for the first version of the API.

Please see the Uri Conventions topic on the OData website for more information on how the various query parameters can be used to compose queries.

URL structure

Just to whet your appetite, here is a simple query of the projects collection – demonstrating projects being filtered, ordered and paged:

GET /api/projects?$filter=substringof('test',Name) eq true&$orderby=Name desc&$top=5

Pulling the URL apart we can see that:

  • The filter is “substringof(‘test’,Name) eq true” – this will find all projects containing the word ‘test’ ($filter = substringof(‘test’,Name))
  • we are sorting by the Name of the project, in descending order. ($order=Name desc)
  • We want the first 5 resuts only ($top=5)

Examples

Example – Query without inline count

Url:

 http://myserver/EnterpriseTester/api/users?$filter=Name eq 'john'&$top=2

Results:

{"Items": [{"Id": "5b2b0ad0-5371-4abf-a661-9f410088925f","UserName": "Administrator","Email": "john.smith@mycompany.com","FirstName": "John","LastName": "Smith","Self": "http://myserver/EnterpriseTester/api/user/5b2b0ad0-5371-4abf-a661-9f410088925f"},{"Id": "084c8a30-071c-4280-bf4c-9f48015b195f","UserName": "johnb","Email": "john.blogs@mycompany.com","FirstName": "John","LastName": "Bloggs","Self": "http://myserver/EnterpriseTester/api/user/084c8a30-071c-4280-bf4c-9f48015b195f"}}

Example – Query with inline count

Url:

http://myserver/EnterpriseTester/api/users?$inlinecount=allpages&$top=2&$skip=3

Results:

{"Skip": 3,"Top": 2,"Total": 497,"Items": [{"Id": "5b2b0ad0-5371-4abf-a661-9f410088925f","UserName": "Administrator","Email": "john.smith@mycompany.com","FirstName": "John","LastName": "Smith","Self": "http://myserver/EnterpriseTester/api/user/5b2b0ad0-5371-4abf-a661-9f410088925f"},{"Id": "084c8a30-071c-4280-bf4c-9f48015b195f","UserName": "johnb","Email": "john.blogs@mycompany.com","FirstName": "John","LastName": "Bloggs","Self": "http://myserver/EnterpriseTester/api/user/084c8a30-071c-4280-bf4c-9f48015b195f"}]}

JSONP

JSON (Json with Padding) complements in the existing capability of Enterprise Tester API methods to return JSON. It provides a method to request data from the server where CORS is not a viable alternative.

In a JSONP request, the contents of the response is wrapped in a javascript function call, which allows you to fetch it with a script tag, and the have to response automatically invoke the callback once loaded, to process the response body – let’s take a look at an example:

To make a JSONP request you pass an additional query parameter as part of the url with the name “callback”, the value of which is the name of the callback function to invoke:

Example

If we make a request as follows:

GET http://localhost/EnterpriseTester/api/groups?callback=processResponse

Then we can see in the response, that it’s wrapped in a call to the function processResponse:

processResponse({"Items": [{"Id": "2192ce56-971d-4b19-9df7-a0770041f1cf","Name": "Viewer","Description": "Viewer","Expands": ["Users"],"Self": "http://localhost/EnterpriseTester/api/group/2192ce56-971d-4b19-9df7-a0770041f1cf","Links": [...]},...], "Self": "http://localhost/EnterpriseTester/api/groups?callback=process"})

Limitations

JSONP requests are only support for GET HTTP methods.

Expand

Overview

The Enterprise Tester REST API makes extensive use of a feature called Expand (also known as Expansions) – resources that support expanding will return the list of available expansions in a property of the representation, called “Expand” – here is an example of a “project” resource with a set of available expand values:

{"Id": "eb06e5d8-f774-4b0f-a95c-a911c13527a9","Name": "Test Project","Self": "http://localhost/api/project/eb06e5d8-f774-4b0f-a95c-a911c13527a9","Expands": ["Statuses","Priorities","RequirementTypes","RequirementStatuses","RequirementDifficulties","IncidentTypes","TestTypes","IncidentResolutions","IncidentStatuses","Versions","Components","ExecutionPackages","ScriptPackages","RequirementPackages"]}

When making a request, you can include a query parameter called $expand that provides a comma separated list of expands you wish to have expanded in the response – so for example, to get the priority and status picklists back with the project, you would use a request like this:

GET /api/project/eb06e5d8-f774-4b0f-a95c-a911c13527a9?$expand=Status,Priority

In the response those properties will be expanded, and will no longer be listed in the “Expands” property as available properties to expand.

{"Id": "eb06e5d8-f774-4b0f-a95c-a911c13527a9","Name": "Test Project","Self": "http://localhost/api/project/eb06e5d8-f774-4b0f-a95c-a911c13527a9","Expands": ["RequirementTypes","RequirementStatuses","RequirementDifficulties","IncidentTypes","TestTypes","IncidentResolutions","IncidentStatuses","Versions","Components","ExecutionPackages","ScriptPackages","RequirementPackages"],"Priorities": [{"Id": "6b1e46f4-8b59-4dc3-8ed1-0b3b89612e34","Text": "Low","SortOrder": 1,"Self": "http://localhost/api/project/eb06e5d8-f774-4b0f-a95c-a911c13527a9/priority/6b1e46f4-8b59-4dc3-8ed1-0b3b89612e34"},{"Id": "5d37d6a1-6b1d-4007-8fcf-2c5296af3740","Text": "High","SortOrder": 2,"Self": "http://localhost/api/project/eb06e5d8-f774-4b0f-a95c-a911c13527a9/priority/5d37d6a1-6b1d-4007-8fcf-2c5296af3740"}],"Statuses": [{"Id": "753387d7-0a67-45bd-8b96-a58791c283bb","Text": "Draft","SortOrder": 1,"Self": "http://localhost/api/project/eb06e5d8-f774-4b0f-a95c-a911c13527a9/status/753387d7-0a67-45bd-8b96-a58791c283bb"},{"Id": "023b39dc-31a3-4bb6-bf01-69da23de5d3f","Text": "Final","SortOrder": 2,"Self": "http://localhost/api/project/eb06e5d8-f774-4b0f-a95c-a911c13527a9/status/023b39dc-31a3-4bb6-bf01-69da23de5d3f"}]}

Expansions can be more than one level deep. Here is an example of getting a project, with its top level requirement package expanded, and each of those packages children collection expanded as well.

We do this by using a period (.) to navigate to the child expansion:

GET /api/project/593c2fb5-2300-4bce-ad50-9f07009b207c?$expand=RequirementPackages.Children

As you can see the child packages are then expanded as well:

{"Expands" : [ "Components",  ...  ],"Id" : "eb06e5d8-f774-4b0f-a95c-a911c13527a9","Name" : "Test Project","Self" : "/project/eb06e5d8-f774-4b0f-a95c-a911c13527a9","RequirementPackages" : [{      "Id" : "d2353811-36f5-45cf-bb72-a0440092ab60","Name" : "Requirements","OrderNumber" : 0,"Parent" : null,"Self" : "http://localhost/api/requirementpackage/d2353811-36f5-45cf-bb72-a0440092ab60""Children" : [{"Expands" : [ "Children", "Parent" ],"Id" : "87fcdd47-c8b5-4eb0-867b-a0440092ba61","Name" : "Traceability Matrix","OrderNumber" : 0,"Self" : "http://localhost/api/requirementpackage/87fcdd47-c8b5-4eb0-867b-a0440092ba61"},{"Expands" : [ "Children", "Parent" ],"Id" : "ef3882a8-27b3-4a0c-9d54-a0440092bb81","Name" : "Business Requirements","OrderNumber" : 0,"Self" : "http://localhost/api/requirementpackage/ef3882a8-27b3-4a0c-9d54-a0440092bb81"},{"Expands" : [ "Children", "Parent" ],"Id" : "7998df31-147d-4954-b6b6-a0440092bb8a","Name" : "Stakeholder Requirements","OrderNumber" : 0,"Self" : "http://localhost/api/requirementpackage/7998df31-147d-4954-b6b6-a0440092bb8a"},{"Expands" : [ "Children", "Parent" ],"Id" : "f2a2c9ad-98c6-480c-b925-a0440092bbe9","Name" : "Non-Functional Requirements","OrderNumber" : 0,"Self" : "http://localhost/api/requirementpackage/f2a2c9ad-98c6-480c-b925-a0440092bbe9"}],"Expands" : [ "Parent" ],}] }

For each method supported by a resource (GET, POST, PUT) documented within the help system, we also include details of the available expansions.

Deep Expansion

You are not limited to expanding to one or two levels – to expand many levels of depth, you can continue to use a period character between each level i.e. RequirementPackages.Children. Children will return the requirement package, with its children and those children’s children.

GET /api/project/eb06e5d8-f774-4b0f-a95c-a911c13527a9?$expand=RequirementPackages.Children.Children

As we can see the multiple levels are expanded as requested:

{"Id": "c651ed19-5375-475a-a539-9f6401467130","Name": "Test Project","OrganisationId": "564a2bed-e152-4e58-a57d-9f4100888460","OrganisationName": "Acme Inc","Description": "Description of project","EstimatedEndDate": "2011-09-29T11:00:00Z","Slug": "test-project","AutoNumberRequirements": true,"AutoNumberScripts": true,"StartDate": "2011-08-14T12:00:00Z","Expands": ["Components","ExecutionPackages","IncidentResolutions","IncidentStatuses","IncidentTypes","Priorities","RequirementDifficulties","RequirementStatuses","RequirementTypes","ScriptPackages","Statuses","TestTypes","TimeTrackingConfiguration","Versions"],"RequirementPackages": [{"Id": "53b483c7-e332-4d38-bf86-9fd700d552d2","ProjectId": "c651ed19-5375-475a-a539-9f6401467130","Name": "Requirements","OrderNumber": 0,"Expands": ["Parent","Project","Requirements"],"Children": [{"Id": "f3b483c7-e332-4d38-bf86-9fd700d552d2","ProjectId": "c651ed19-5375-475a-a539-9f6401467130","ParentId": "53b483c7-e332-4d38-bf86-9fd700d552d2","Name": "Reports","OrderNumber": 0,"Expands": ["Parent","Project","Children": [...],],"Self": "http://localhost:29840/api/requirementpackage/f3b483c7-e332-4d38-bf86-9fd700d552d2"}],"Self": "http://localhost:29840/api/requirementpackage/53b483c7-e332-4d38-bf86-9fd700d552d2"}],"Self": "http://localhost:29840/api/project/c651ed19-5375-475a-a539-9f6401467130"}

‘All’ Expansion

When exploring the API it can be useful to expand everything, so you can see what information is available – this can be done through the pseudo-expansion “All” i.e.

GET /api/project/eb06e5d8-f774-4b0f-a95c-a911c13527a9?$expand=All

This will automatically be replaced with all available expands in the response:

{"Id": "53b483c7-e332-4d38-bf86-9fd700d552d2","ProjectId": "c651ed19-5375-475a-a539-9f6401467130","Name": "Requirements","OrderNumber": 0,"Children": [...],"Parent": null,"Project": {...},"Requirements": [...],"Self": "http://localhost:29840/api/requirementpackage/53b483c7-e332-4d38-bf86-9fd700d552d2"}

You can use multiple levels of “All” as well – but we strongly advise against using “All” when writing code that interacts with the API as it will cause very large payloads to be returned and negatively impact on the performance of Enterprise Tester.

CORS (Cross-origin Resource Sharing)

CORS (Cross-origin resource sharing) is a web browser specification that defines a way for a web browser and web client to interact in such a way that cross-origin (requests to a server in a different domain) are allowed, for all HTTP methods.

Support for CORS in Enterprise Tester was introduced in version 4.4 and above, and currently supports:

  • CORS without authentication (will use session authentication however, if user is already authenticated with the Enterprise Tester server in the same browser session).
  • CORS with authentication (Enterprise Tester will handle both pre-flighted and immediate requests, by returning the “Access-Control-Allow-Credentials” header – allowing the use of Basic Authentication).

Because a web browser and it’s scripts are inherently insecure to the operator (the user operating the browser can see the javascript/html in raw form easily) – when using CORS with Basic Auth we strongly advise against storing the ET login and password credentials in javascript, and instead they should be retrieved from the user interactively and not stored.

And as always, when using basic Auth, we recommend you access Enterprise Tester via HTTPS (SSL).

Examples of using CORS with Enterprise Tester can be found in the CORS Examples section of our API Github Repository.

Consistency

By default API methods that change data in Enterprise Tester will attempt to wait until those changes have also been reflected in the indexes (such as the Run or Entity index).

If you are performing bulk insert operations, and do not rely on needing to be able to immediately query via TQL and retrieve acurate results based on the the data that was created, updated or deleted then you can choose to “opt out” of this wait mechanism.

To do so you request must either:

  • Include the query parameter “wait-until-indexed” with the value “false”.
  • Include the request header “wait-until-indexed” with the value “false”.

If the query parameter or header is not present, or set to true, then the default behavior of waiting until the entity is indexed after persisting any changes will apply.

Bulk Actions

Overview

Bulk actions are a common extension point within Enterprise Tester, exposed as features of the grid (normally a button, or selection field and button combination).

Bulk actions can be invoked asynchronously by issuing a POST request to the backgroundtasks collection resource, with the configuration information including the command being invoked passed in the Parameters collection, as show in the example below:

{"Type": "bulkaction","Parameters": {"commandName": "BulkCopy","scenarioName": "BulkCopyScriptsScenario","targetId": "ab1bd3c3-f30b-43b2-82e2-a07e0133511c","targetType": "TestScriptPackage","targetPackageId": "ab1bd3c3-f30b-43b2-82e2-a07e0133511c","sourcePackageId": "4016f35b-817f-459e-8533-9fc8015335c8","projectId": "c651ed19-5375-475a-a539-9f6401467130","selections":[{"Id":"0a02cb6d-4afa-463c-a6df-9fe400b7d8fc","Type":"TestScript"},{"Id":"0a675d09-78cd-463e-a600-9fc80153481b","Type":"TestScript"}],"retainStructure":true}}

If we pull apart the above request we can see that we are:

  • Invoking the command “BulkCopy”.
  • Invoking the command scenario “BulkCopyScriptsScenario” – many commands have more then one associated scenario, and you must use the scenario applicable to your source and target package type, and the type of items you have selected.
  • For move and copy operations there needs to be a target and source package (targetPackageId and sourcePackageId) – the source package is used as the “Root” of the bulk copy/move operation so that retain structure can calculate what folders are required.
  • In the above example, our targetType and targetId is the same as the targetPackage.
  • The selected items to copy “selections” – each selection features an Id and a Type (any type which is supported in TQL as a valid EntityType alias will work here i.e. Script and TestScript will both be treated as a TestScript entity type).
  • “retainStructure” – which is a parameter specific to bulk/copy move to retain the packages related to the sourcePackage when copying to the targetPackage.

Available commands

  • Bulk Assign (AssignBulkActionScenario)
  • Bulk Copy (BulkCopyAssignmentsScenario, BulkCopyRequirementsScenario, BulkCopyScriptsScenario)
  • Bulk Create Assignments (BulkCreateScriptAssignmentsScenario)
  • Bulk Create Scripts (BulkCreateScriptsScenario)
  • Bulk Create Scripts From Agile Runs (BulkCreateScriptsFromAgileRunsScenario)
  • Bulk Delete (BulkDelete)
  • Bulk Move (BulkMoveAssignmentsScenario, BulkMoveRequirementsScenario, BulkMoveScriptsScenario)
  • Export (CSV)
  • Traceability (CSV)
  • Update Script Statuses (UpdateScriptStatusBulkActionScenario)

CSV Export command

The CSV Export command is an example of an action which has a payload (an exported file) which you can download after completing the action – first, here is an example of a CSV export task being created:

{"Type": "bulkaction","Parameters": {"scenarioName": "CSV","encoding": "UTF8","delimiter": "comma","onlyVisibleColumns": false,"includeHeader": true,"includeSteps": true,"includeStepsResults": true,"query": "Name ~ export","exportAll": true,"commandName": "Export"}}

As a result of creating this task, the response will indicate where the task updates can be fetched from via GET using the “Self” URL:

{  "Complete": false,"TotalElements": 0,"ProcessedElements": 0,"StartedAt": "2012-07-03T12:16:30Z","ProgressInPercent": 0.0,"Id": "bulkaction_Export_CSV_56065c63-cdf7-4285-ab10-321646317be8","Message": null,"Self": "http://localhost:29840/api/backgroundtask/bulkaction_Export_CSV_56065c63-cdf7-4285-ab10-321646317be8"}

When the task has completed, fetching the task will include in it’s response details of the where you can then download the exported file from (indicated in the “exportedfile” link).

{"Complete": true,"StartedAt": "2012-07-03T12:16:30Z","FinishedAt": "2012-07-03T12:16:30Z","ProgressInPercent": 1.0,"Id": "bulkaction_Export_CSV_56065c63-cdf7-4285-ab10-321646317be8","Message": "Completed","TotalTimeToExecute": "0s","FileName": "export-Entities-2012-07-04-121630am.csv","ContentType": "text/csv","Encoding": "UTF8","Self": "http://localhost:29840/api/backgroundtask/bulkaction_Export_CSV_56065c63-cdf7-4285-ab10-321646317be8","Links": [{"Href": "http://localhost:29840/api/exportfile/export-Entities-2012-07-04-121630am.csv","Rel": "exportedfile"}]}

Authentication

Enterprise Tester allows you to authenticate to the REST API via three methods:

  • Session – this allows javascript running within the Enterprise Tester application to access the API as the currently logged in user.
  • Basic – passing the login/password as a header with each request – if security is a concern, this should not be used unless Enterprise Tester is accessed via HTTPS (SSL).
  • OAuth 1.0 – users can authenticate with Enterprise Tester via OAuth and then make requests using the returned access token.

Most users will want to use Basic Auth due to its simplicity, unless building a 3rd party add-on for Enterprise Tester. In this case we recommend the use of OAuth, so your application is not required to store user logins and passwords.

Basic Auth

Basic Auth combined with SSL will often suffice as the authentication mechanism for interacting with the Enterprise Tester API, here is an example of using Curl to retrieve a list of projects from Enterprise Tester with basic auth:

curl -u Administrator:password http://localhost/EnterpriseTester/api/project/650d8904-c145-4f7c-8b65-a02a0092a85f

In this case we are retrieving the project with ID “650d8904-c145-4f7c-8b65-a02a0092a85f” with the login “Administrator” and the password “password”.

OAuth 1.0

Enterprise Tester supports OAuth 1.0a.

Implementing an OAuth 1.0a client is outside the scope of this help topic, but the key things required to establish the connection are:

Get Request Token Url

http://localhost/EnterpriseTester/OAuth/Token/GetRequestToken.rails

This is Url that you can retrieve the request token from.

User Authorization Url

http://localhost/EnterpriseTester/OAuth/Authorization/PromptForAuthorization.rails

This is the Url that you send users to, so they can authorize the request for access.

Get AccessToken Url

http://localhost/EnterpriseTester/OAuth/Token/GetAccessToken.rails

This is the Url used to exchange the request token for the access token that you can use to sign all your API requests.

For more information on the mechanics of signing a request with your access token, we recommend that you read through a tutorial on the basic authentication flow in OAuth 1.0, and then subsequently through the specification.

Enterprise Tester API

REST API

Overview

Enterprise Tester provides a REST API (Application Programming Interface) that can be used for retrieving and manipulating Enterprise Tester data without having to interact with the user interface.

There are many use cases for the API, but some common examples include:

  • Building new clients for Enterprise Tester i.e. Mobile.
  • Automating the recording, upload or updating of test execution information (including automated test results).
  • Synchronizing Data in 3rd party systems with Enterprise Tester (such as Synchronizing Requirements with a document management system).
  • Complex report generation – Enterprise Tester’s API allows you to harness the full power of the TQL (Testing Query Language) including aggregation support.
  • Mashups of Enterprise Tester and other applications with API’s (such as the Atlassian toolset).

The REST API is based on open standards, and you can use any web development language to access the API, or a tool such as CURL to make simple requests.

Enterprise Tester’s REST API provides a way for applications to access resources (Entities) via a URI (Uniform Resource Identifier) e.g. a path.

To use the REST API your application will make an HTTP request and then parse the response which may include a payload as well as a status indicating if the request was succeedful.

Enterprise Tester’s API uses JSON (JavaScript Object Notation) as the default format for its entities, and standard HTTP methods such as GET, POST, PUT and DELETE (Analogous to Read, Create, Update and Delete i.e. CRUD) to perform actions on those entities. Note: Not all resources support all HTTP methods, see the Resources list for a description of each resource, the methods it supports, and whether TQL or OData querying methods are supported.

URI Structure

Enterprise Testers URIs have the following structure:

http://host:port/applicationpath/api/resource-name

In the resource help topics the URI templates are displayed like so:

/api/project/{id}

Values surrounded by braces (such as {id} above) are parameter substitutions, where this part of the URI would be replaced with an appropriate value. All URI’s already include the required /api fragment as well, and the examples included with each method supported by a resource show these parameters with example values.

So for a local instance of Enterprise Tester, to GET the details of a single project you would take the template above, replace the ID parameter, and prepend the site’s base path (also called the application path, or site.root.url in the Enterprise Tester documentation) – after which you may end up with a URI that looks like this:

http://localhost/EnterpriseTester/api/project/a1d44feb-01b5-4f85-a18d-a03f00be87f6

Permissions

There is no specific permission required to use the API – Any Enterprise Tester user can access the API, but the features they can use will be limited by the permissions they have been granted. Each Resource topic lists the necessary permissions (if any) required to access the resource, and a summary of all resources with associated permissions required for each HTTP method are available in the Permissions topic.

Getting Started

To get started with the API, please refer to the Resources list, this provides the list of Resources (Entities) currently exposed, along with the methods they support and examples of requests and responses, including parameters, headers and status codes.

We also have a section where common features of the API are discussed, which can provide useful background information for those trying to develop against the Enterprise Tester API.

We have also posted some tips and guides on how to use the API on the Catch Software Blogs.

Feedback

We would love to hear your feedback and feature requests on the API – Catch Software are working hard to make it as easy as possible to extend Enterprise Tester. Get in touch with our Support Team, we would love to hear how you are using the API, what’s worked well and what could be improved.

API Permissions

Permissions

The account accessing the API requires project/organisation level permissions to access each supported Method of a resource, the table below documents each resource and the permissions required for use.

Name
GET
PATCH
POST
PUT
DELETE
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsTestManagement / ManageExecutions / Delete
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTests
TestManagement / ManageExecutions / View, TestManagement / ManageIncidents / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
UnsupportedUnsupportedUnsupportedUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTests
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
No PermissionsUnsupportedNo PermissionsUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageScripts / ViewUnsupportedUnsupportedTestManagement / ManageScripts / EditTestManagement / ManageScripts / Delete
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedTestManagement / ManageExecutions / EditTestManagement / ManageExecutions / Delete
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedTestManagement / ManageExecutions / Delete
UnsupportedUnsupportedUnsupportedUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTests
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageIncidents / View, TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTests
TestManagement / ManageIncidents / View, TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTests, TestManagement / ManageIncidents / EditUnsupportedUnsupported
UnsupportedUnsupportedUnsupportedUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTests
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageScripts / EditUnsupportedUnsupported
Enforced by task implementationUnsupportedUnsupportedUnsupportedUnsupported
UnsupportedUnsupportedEnforced by task implementationUnsupportedUnsupported
No PermissionsProject / EditProjectPickLists, Administration / Organisation / EditOrganisationPickListsUnsupportedUnsupportedNo Permissions
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedNo PermissionsUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedTestManagement / ManageExecutions / EditTestManagement / ManageExecutions / Edit, TestManagement / ManageExecutions / Delete
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / EditUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
Resources / ExternalLinksResources / ExternalLinksUnsupportedResources / ExternalLinksResources / ExternalLinks
Resources / ExternalLinksResources / ExternalLinksUnsupportedUnsupportedResources / ExternalLinks
UnsupportedUnsupportedResources / ExternalLinksUnsupportedUnsupported
Resources / ExternalLinksUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / ViewUnsupportedUnsupportedUnsupportedUnsupported
UnsupportedUnsupportedTestManagement / ManageIncidents / EditUnsupportedUnsupported
Resources / ExternalLinks, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageExecutions / ViewUnsupportedResources / ExternalLinksUnsupportedUnsupported
Resources / ExternalLinksUnsupportedResources / ExternalLinksUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
Resources / ExternalLinksUnsupportedResources / ExternalLinksUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
UnsupportedUnsupportedNo PermissionsUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedNo PermissionsUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityAdministration / Organisation / ManageUserAndGroupSecurity
Administration / Organisation / ManageUserAndGroupSecurityUnsupportedUnsupportedUnsupportedUnsupported
Administration / Organisation / ManageUserAndGroupSecurityUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupported
No PermissionsUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupported
No PermissionsUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedTestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupported
TestManagement / ManageIncidents / ViewTestManagement / ManageIncidents / EditUnsupportedTestManagement / ManageIncidents / EditTestManagement / ManageIncidents / Delete
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
UnsupportedUnsupportedUnsupportedUnsupportedTestManagement / ManageIncidents / Edit
TestManagement / ManageIncidents / ViewUnsupportedTestManagement / ManageIncidents / EditUnsupportedUnsupported
TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageIncidents / ViewUnsupportedTestManagement / ManageIncidents / CreateUnsupportedUnsupported
Administration / OrganisationUnsupportedUnsupportedUnsupportedUnsupported
Administration / OrganisationUnsupportedUnsupportedUnsupportedUnsupported
Administration / OrganisationUnsupportedUnsupportedAdministration / OrganisationUnsupported
No PermissionsNo PermissionsUnsupportedUnsupportedNo Permissions
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedAdministration / OrganisationUnsupportedNo Permissions
No PermissionsUnsupportedUnsupportedAdministration / Organisation / ManageOrganisationAdministration / Organisation / ManageOrganisation
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedTestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedAdministration / Organisation / ManageOrganisationUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupportedProject / ManageProjectsProject / ManageProjects
TestManagement / ManageExecutions / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / ViewUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedAdministration / Organisation / ManageOrganisationUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedAdministration / Organisation / ManageOrganisationAdministration / Organisation / ManageOrganisation
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
Administration / Organisation / ManageUserAndGroupSecurityUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedTestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupported
Project / ManageProjectsUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
Administration / Organisation / ManageUserAndGroupSecurityUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedProject / ManageProjectsUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedTestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupportedTestManagement / ManageExecutions / Edit, TestManagement / ManageScripts / Edit, TestManagement / ManageIncidents / Edit, TestManagement / ManageRequirements / EditTestManagement / ManageExecutions / Edit, TestManagement / ManageScripts / Edit, TestManagement / ManageIncidents / Edit, TestManagement / ManageRequirements / Edit
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
UnsupportedUnsupportedTestManagement / ManageExecutions / Edit, TestManagement / ManageScripts / Edit, TestManagement / ManageIncidents / Edit, TestManagement / ManageRequirements / EditUnsupportedUnsupported
TestManagement / ManageRequirements / ViewTestManagement / ManageRequirements / EditUnsupportedTestManagement / ManageRequirements / EditTestManagement / ManageRequirements / Delete
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
UnsupportedUnsupportedUnsupportedUnsupportedTestManagement / ManageRequirements / Edit
TestManagement / ManageRequirements / ViewUnsupportedTestManagement / ManageRequirements / EditUnsupportedUnsupported
TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageRequirements / ViewUnsupportedUnsupportedTestManagement / ManageRequirements / EditTestManagement / ManageRequirements / Edit, TestManagement / ManageRequirements / Delete
TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageRequirements / ViewUnsupportedTestManagement / ManageRequirements / EditUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageRequirements / ViewUnsupportedTestManagement / ManageRequirements / EditUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageScripts / ViewTestManagement / ManageScripts / EditUnsupportedTestManagement / ManageScripts / EditTestManagement / ManageScripts / Delete
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedTestManagement / ManageExecutions / EditTestManagement / ManageExecutions / Delete
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
UnsupportedUnsupportedUnsupportedUnsupportedTestManagement / ManageScripts / Edit
TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageScripts / EditUnsupportedUnsupported
TestManagement / ManageScripts / ViewUnsupportedUnsupportedTestManagement / ManageScripts / EditTestManagement / ManageScripts / Edit, TestManagement / ManageScripts / Delete
TestManagement / ManageScripts / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageScripts / EditUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewTestManagement / ManageExecutions / EditUnsupportedTestManagement / ManageExecutions / EditTestManagement / ManageExecutions / Delete
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageScripts / EditUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageExecutions / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / ViewUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedUnsupported
UnsupportedUnsupportedUnsupportedUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTests
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTests
TestManagement / ManageExecutions / View, TestManagement / ManageIncidents / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
Resources / ExternalLinksResources / ExternalLinksUnsupportedResources / ExternalLinksResources / ExternalLinks
UnsupportedUnsupportedResources / ExternalLinksUnsupportedUnsupported
Resources / ExternalLinksUnsupportedResources / ExternalLinksUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedNo Permissions
No PermissionsUnsupportedAdministrationUnsupportedNo Permissions
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedNo PermissionsUnsupportedUnsupported
UnsupportedUnsupportedUnsupportedUnsupportedNo Permissions
UnsupportedUnsupportedNo PermissionsUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityAdministration / Organisation / ManageUserAndGroupSecurity
No PermissionsUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupported
UnsupportedUnsupportedAdministration / OrganisationUnsupportedUnsupported
UnsupportedUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupported
Administration / Organisation / ManageUserAndGroupSecurityUnsupportedUnsupportedUnsupportedUnsupported
Administration / Organisation / ManageUserAndGroupSecurityUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupported
No PermissionsUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageExecutions / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / ViewUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageExecutions / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / ViewUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported