loading

Test Center API v2

Run functional and comparative tests to check configuration changes before activating.

Learn more:


Overview

Test Center allows you to test how configuration changes affect your web content on Akamai’s edge network. Prior to activation, you can check they’re not behaving in an unexpected manner. This testing tool helps to prevent issues caused by misconfiguration and insufficient testing increasing your confidence in the safety and correctness of your configuration changes.

The application provides two types of testing: functional and comparative. With functional testing, you can assert expected conditions to positively confirm that a new business requirement or config version behaves as intended. With comparative testing, you can compare how hostnames are delivered after changes are applied with how it is currently delivered to end users to see if there are any unexpected differences that may indicate a problem.

Test Center is a contract-aware application, for use only with Property Manager supported delivery products. It serves as an addition to your existing tests and workflows, not as their replacement.

Who should use this API

Use this API as part of an automated system to test your configuration changes before activating them. You can use this API to:

  • Run functional and comparative testing.

  • Manage objects created in Test Center: requirements, config versions, test suites, conditions, test requests, test definitions, and functional and comparative test cases.

  • Manage and view test run results.

  • Accept diffs in comparative testing results.

  • View your organization’s Test Center activity.

Get started

To configure this API for the first time:

  • Review Get Started with APIs for details on how to set up client tokens to access any Akamai API. These tokens appear as custom hostnames that look like this: https://akzz-XXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXX.luna.akamaiapis.net.

  • To enable this API, choose the API service named Test Center and set the access level to READ-WRITE.

  • To run the Add a config version operation, you need to make external calls to Property Manager API (PAPI). Repeat the same steps to set up an API token to run PAPI.

  • If you’re using Front-End Optimization, Image Manager, or Resource Optimizer, you need to force enable or disable them. See Adjust Front-End Optimization, Image Manager, and Resource Optimizer.

  • If you apply access control lists or strip headers, you need to whitelist Test Center test requests. See Whitelist Test Center test request.

How Test Center works

To offer the most effective functionality, Test Center makes requests from a real browser just like an end user would. This lets you test all objects on a page, including those constructed by client-side scripts. When running a comparative test, Test Center chases redirects and resolves any infinite loops, without depending on a manual tester maintaining an updated list of URLs.

Also, when running a comparative test on the staging environment, Test Center purges the content cached under your CP code. It does this to avoid false positives and negatives and improve the validity of the executed tests. Test Center never purges content from the production environment but the cached content may interfere with the accuracy of the test results.

Note that Akamai originates all test requests within the United States. Sites that use China CDN can be tested only as they are viewed from the United States.

Test Center concepts

To use Test Center, you need to understand these concepts that the API makes available in its URL resources and data.

Functional testing

Use this type of testing to check if your configuration changes work as planned. These concepts all apply to functional tests:

  • Requirements. Requirements describe business goals you want to achieve with particular configuration changes. By associating test suites with them, you are saying that the functional test cases included in the test suites can be used as a unit test to confirm the correct implementation of the business requirement.

  • Config versions. Config versions refer to Property Manager property versions. All operations performed on config versions are saved only in Test Center and they don’t affect properties in Property Manager. By adding a config version to Test Center and then associating a test suite with it, you are saying that the functional test cases in the test suite are regression test cases for the property version. To use the property in Test Center, it needs to be added to Property Manager. To learn how to do it, check Property Manager API documentation: Create a new property version and Create a new activation or deactivation.

  • Test suites. Test suites combine several functional test cases and configure their settings.

  • Stateful test suites. In stateful test suites, the test cases included are executed in the exact order they are added and cookies and session information are retained for subsequent test cases.

  • Functional test cases. Functional test cases are the smallest units of testing. Each test case includes one test request, one condition, and one client profile.

  • Test requests. Test requests combine fully qualified URLs and an optional set of custom request headers. By default, the test request URL is requested with whatever default headers are normally sent by the browser used by the client profile.

  • Client profiles. Client profiles combine a browser type, geographic region, and IP version that characterize the client used to make a test request. There are two client profiles provided that you can use. Both of them include the Chrome browser as the browser type and the United States as the geographic region. They differ by IP versions, one is for IPv4 and the other one is for IPv6.

  • Conditions. Conditions are the criteria to be evaluated on the HTTP response corresponding to the test request or a specific config setting applied to the test request. Conditions have a sentence-like structure, for example Response header ‘foo’ has a value that equals ‘bar’ or Caching option is no-store. Each element of such sentence is a value of a node. All nodes and their descriptions including available values are listed in the Test catalog template.

  • Test catalog template. You use the test catalog template to construct conditions. It lists all available nodes with their values and information about which nodes they trigger.

Comparative testing

Use this type of testing to find the side effects of configuration changes on the delivery of a hostname. Comparative testing compares the delivery of a hostname with the current configuration and the new one and lists all found differences (diffs). It also enables you to compare how your website behaves on two production environments against each other. It’s useful if you want to compare the configuration changes behavior on a test hostname which doesn’t carry live traffic with the hostname that does carry the live traffic. These concepts all apply to comparative tests:

  • Test definitions. Test definitions are units of comparative testing. They associate hostnames impacted by config changes with IP versions for which you want to run a test.

  • Comparative test cases. Comparative test cases combine the hostname on which you want to run a test and, optionally, request headers.

  • Diffs. Diffs indicate a difference found between the hostnames’ behaviors. A diff might either show expected behavior, behavior that you wanted to achieve with the configuration changes, or unexpected. You need to decide which one is it. You need to accept the expected diffs that’s not likely to cause a problem when the changed configuration settings are activated. By not accepting the diff you indicate that the detected behavior is unexpected and needs to be further investigated.

Shared concepts

These concepts all apply to both, comparative and functional tests:

  • Test run. A test run executes one or more objects against a selected environment. Each test run can either execute the test for only one type of object (a requirement, config versions, test suites, functional test cases, or test definitions) or you can combine a requirement with config versions, config versions with test definitions, a requirement with test definitions, or a requirement with config versions and test definitions.

  • Execution. An execution is an instance of a resource which is used in a test run.

  • Test results. Test results for comparative testing list diffs in how a hostname serves out to end users. For functional testing, the results show you expected and actual values.

  • Activity. An activity is any operation performed in Test Center.

API workflow

This diagram shows the suggested workflow to work with Test Center. Keep in mind that you can also run each test separately.

Test Center workflow

Run a functional test

You can run three types of functional test:

Run a test for a requirement

Run a test for a requirement to check if the implemented changes meet your business requirements.

  1. Create test requests you want to use in functional test cases. If the test requests are already created, run the List test requests operation to get their identifiers.

  2. Run the List client profiles operation to get the identifier of the client profile you want to use in functional test cases.

  3. Create conditions you want to use in functional test cases. If the conditions are already created, run the List conditions operation to get their identifiers.

  4. Create functional test cases. To do it, you need unique identifiers of the created test requests, conditions, and client profiles.

  5. Create test suites.

  6. Include functional test cases in the test suites.

  7. Create a requirement for which you want to run the test. If the requirement is already created, run the List requirements operation to get its identifier.

  8. Associate test suites with the requirement.

  9. Submit a test run.

  10. Run the Get a test run operation to check the results.

Run a regression test

When a test for the requirement passed and you know that the config changes met the business goal, you can check whether they cause problems in other places within the configuration.

  1. Add a new config version with the implemented changes to Test Center. If the config version is already added, run the List config versions operation to get its identifier.

  2. If the previous config version was added to Test Center, then Test Center automatically creates new test suites that include functional test cases from the previous config version. Go through the included functional test cases and make sure that they are still valid with the configuration changes applied.

  3. If there is no previous config version in Test Center, create functional test cases that should work on the previous version of the config version, the one without the implemented config changes.

    1. Create test requests you want to use in functional test cases. If the test requests are already created, run the List test requests operation to get their identifiers.

    2. Run the List client profiles operation to get the identifier of the client profile you want to use in functional test cases.

    3. Create conditions you want to use in functional test cases. If the conditions are already created, run the List conditions operation to get their identifiers.

    4. Include the created functional test cases in a test suite.

  4. Clone test suites from the requirement for which you run the test.

  5. Associate cloned test suites with the config version.

  6. Submit a test run.

  7. Run the Get a test run operation to check the results.

Run a test for a test suite

If you want to execute a set of test cases, you can run the test for a test suite.

  1. Create test requests you want to use in functional test cases. If the test requests are already created, run the List test requests operation to get their identifiers.

  2. Run the List client profiles operation to get the identifier of the client profile you want to use in functional test cases.

  3. Create conditions you want to use in functional test cases. If the conditions are already created, run the List conditions operation to get their identifiers.

  4. Create functional test cases. To do it, you need identifiers of the test requests, conditions, and client profiles you want to include.

  5. Create test suites.

  6. Include functional test cases in the test suite.

  7. Submit a test run.

  8. Run the Get a test run operation to check the results.

Run a test for a functional test case

If you don’t need to run test for a requirement, config version, or test suite, you can also execute single functional test cases.

  1. Create test requests you want to use in functional test cases. If the test requests are already created, run the List test requests operation to get their identifiers.

  2. Run the List client profiles operation to get the identifier of the client profile you want to use in functional test cases.

  3. Create conditions you want to use in functional test cases. If the conditions are already created, run the List conditions operation to get their identifiers.

  4. Create functional test cases. To do it, you need identifiers of the test requests, conditions, and client profiles you want to include.

  5. Submit a test run.

  6. Run the Get a test run operation to check the results.

Example: create a condition

The example shows how to construct a condition request for the Response header Content-Type has a value that ends with json condition. To better understand the process, read descriptions of Concepts and Test catalog template in the Test Center concepts section and check the Condition and TestCatalogTemplate objects.

To create a request that specifies the condition:

  1. Run the Get the test catalog template operation. The test catalog template’s response object consists of the conditionNodes array and the triggerMappings object. This is a fragment of the conditionNodes array for the conditionId of 1.

    {
      "conditionNodeId": 1,
      "conditionNodeDescription": "Root condition nodes",
      "valueControls": {
        "valueDataType": "string",
        "valueInputType": "single_choice",
        "newValueSupported": false,
        "availableValues": [
          "responseCode",
          "originServer",
          "sureRoute",
          "ignoreCaseInCacheKey",
          "cacheKeyQueryParameters",
          "prefetchObjects",
          "lastMileAcceleration",
          "tieredDistribution",
          "responseHeader",
          "variable",
          "logRequestDetails",
          "cpCode",
          "cachingOption",
          "redirect"
        ]
      }
    }
    
  2. To create the condition, start from the conditionNodes array and conditionId of 1 of the test catalog template’s response object. One of available values of the node is responseHeader, which is the first element of the condition. Enter the values into the request body.

    {
      "condition": {
        "conditionNodeId": 1,
        "values": [
          "responseHeader"
        ]
      }
    }
    
  3. In the test catalog template’s response object, check what are the values you can use next for the selected value of the node. Go to the triggerMappings array and find the triggerValue for responseHeader. Check the conditionNodeId for conditionNode. This is the node triggered by the selection of responseHeader in the first node. In this case it’s the node with conditionNodeId of 4.

  4. In the test catalog template’s response object, go back to the conditionNodes array and conditionNodeId of 4. The description of the node states that it needs input from you. For this example it’s Content-Type. Update the request body.

    {
      "condition": {
        "conditionNodeId": 1,
        "values": [
          "responseHeader"
        ],
        "conditionNode": {
          "conditionNodeId": 4,
          "values": [
            "Content-Type"
          ]
        }
      }
    }
    
  5. Go back to the test catalog template’s response object and the triggerMappings array to check which node is triggered next. The consecutive conditionNodeId is 5.

  6. The description of the node in the conditionNodes array in the test catalog template’s response object states that it requires a single selection out of the provided values. For this example it’s hasAValue. Update the request body. Because the validPath for hasAValue is true you could finish the condition here, but then it would be just Response header Content-Type has a value.

    {
      "condition": {
        "conditionNodeId": 1,
        "values": [
          "responseHeader"
        ],
        "conditionNode": {
          "conditionNodeId": 4,
          "values": [
            "Content-Type"
          ],
          "conditionNode": {
            "conditionNodeId": 5,
            "values": [
              "hasAvalue"
            ]
          }
        }
      }
    }
    
  7. Go back to the triggerMappings array of the test catalog template’s response object and check which node was triggered next by the selected value. The consecutive conditionNodeId is 7. The description of the node in the conditionNodes array states that it requires a single selection out of the listed values. For this example it’s endsWith. Update the request body.

    {
      "condition": {
        "conditionNodeId": 1,
        "values": [
          "responseHeader"
        ],
        "conditionNode": {
          "conditionNodeId": 4,
          "values": [
            "Content-Type"
          ],
          "conditionNode": {
            "conditionNodeId": 5,
            "values": [
              "hasAvalue"
            ],
            "conditionNode": {
              "conditionNodeId": 7,
              "values": [
                "endsWith"
              ]
            }
          }
        }
      }
    }
    
  8. Go back to the triggerMappings array of the test catalog template’s response object and check which node was triggered next. Because there were several values from which you could choose, you need to find triggerValue for endsWith and find triggered conditionNodeId. It’s 4. This node was used before, so you known that it requires a single input from you. For this example it’s json. Update the request body. The condition Response header Content-Type has a value that ends with json is ready. The validPath for the last node is true so the condition is finished. You can now use this as the POST request object when running the Create a condition operation.

    {
      "condition": {
        "conditionNodeId": 1,
        "values": [
          "responseHeader"
        ],
        "conditionNode": {
          "conditionNodeId": 4,
          "values": [
            "Content-Type"
          ],
          "conditionNode": {
            "conditionNodeId": 5,
            "values": [
              "hasAValue"
            ],
            "conditionNode": {
              "conditionNodeId": 7,
              "values": [
                "endsWith"
              ],
              "conditionNode": {
                "conditionNodeId": 4,
                "values": [
                  "json"
                ]
              }
            }
          }
        }
      }
    }
    

Run a comparative test

Run a configuration change test to compare the behavior of a control hostname with the behavior of a changed hostname that’s hosting your changed configuration settings.

  1. Create a new test definition.

  2. Create comparative test cases for the created test definition.

  3. Submit a test run.

  4. When the test run is complete, list differences.

  5. Accept differences that are result of the configuration changes and were expected. Investigate unexpected diffs.

Resource limiting

Test Center impose these limits:

Limit Value Description
max.requests.per.min.exceeded 60 Maximum number of test requests per minute. The limit resets at the start of the next minute.
max.test.runs.per.day.exceeded 10 Maximum number of test runs per day for a hostname. The limit resets after one calendar day. If a test run has multiple hostnames, and any of these hostnames meets the rate limit, the whole test run fails.
max.associations.exceeded 6150 Maximum number of functional test cases per test suite.
tags.per.test.request.max.limit.exceeded 50 Maximum number of tags per test request.
max.test.definitions.per.test.run.exceeded 5 Maximum number of test definitions per test run.
max.test.cases.per.test.run.exceeded 20 Maximum number of test suites per test run.
max.test.cases.per.test.run 6150 Maximum number of test cases per test run, both functional and comparative. One comparative test case is counted as 40 test cases included in the test run.
test.definitions.per.hostname.max.limit.exceeded 5 Maximum number of test definitions per hostname.
test.cases.per.test.definition.max.limit.exceeded 15 Maximum number of comparative test cases per test definition.

Default values

Default values don’t apply to creating objects. If you don’t provide an optional member in the body of your request, then the returned object also won’t have those members.

There are several objects in Test Center that you can update, clone, or both. However, those operations differ in terms of changes applied to an object you’re working on.

When updating an object, you only need to provide required, modifiable members. You can omit optional members, but they will be substituted with their default values. Unmodifiable variables are indicated by Read-only.

Cloning, on the other hand, is a POST operation that in case of a missing optional member, uses the value of this member from the source object. This means that in the body of your request, you provide only members that you want to override. This operation is useful when you want to use the same test suites in both, a requirement and a config version. Test suites can’t be used simultaneously in requirements and config versions, and without this feature you’d need to create all test suites again.

Partial success responses

Test Center supports partial success responses for batch operations such as associating or dissociating.

The HTTP response code for these operations is 207. The response is an object that consists of two arrays, successes and failures. The successes array lists unique identifiers of items for which the POST operation was successful. The failures array contains a list of HTTP Problem Details objects and indicates errors together with unique identifiers of items for which the operation failed. The included objects are the same type of object as those for individual failure responses, described in the Error responses section.

Example:

{
    "successes": [
        301
    ],
    "failures": [
        {
            "type": "resource.not.found",
            "title": "Resource not found",
            "field": "testCaseIds",
            "value": [
                122
            ]
        }
    ]
}

Resources

This section provides details on the API’s various operations.

API summary

Download the RAML descriptors for this API.

Operation Method Endpoint
Functional testing: requirements  
List requirements GET /test-management/v2/functional/requirements
Create a requirement POST /test-management/v2/functional/requirements
Get a requirement GET /test-management/v2/functional/requirements/{requirementId}
Update a requirement PUT /test-management/v2/functional/requirements/{requirementId}
Delete a requirement DELETE /test-management/v2/functional/requirements/{requirementId}
List test suites associated with a requirement GET /test-management/v2/functional/requirements/{requirementId}/associations/test-suites
Associate test suites with a requirement POST /test-management/v2/functional/requirements/{requirementId}/associations/test-suites/associate
Dissociate test suites from a requirement POST /test-management/v2/functional/requirements/{requirementId}/associations/test-suites/dissociate
Functional testing: config versions  
List config versions GET /test-management/v2/functional/config-versions
Add a config version POST /test-management/v2/functional/config-versions
Get a config version GET /test-management/v2/functional/config-versions/{configVersionId}
Delete a config version DELETE /test-management/v2/functional/config-versions/{configVersionId}
List test suites associated with a config version GET /test-management/v2/functional/config-versions/{configVersionId}/associations/test-suites
Associate test suites with a config version POST /test-management/v2/functional/config-versions/{configVersionId}/associations/test-suites/associate
Dissociate test suites from a config version POST /test-management/v2/functional/config-versions/{configVersionId}/associations/test-suites/dissociate
Functional testing: test suites  
List test suites GET /test-management/v2/functional/test-suites
Create a test suite POST /test-management/v2/functional/test-suites
Get a test suite GET /test-management/v2/functional/test-suites/{testSuiteId}
Update a test suite PUT /test-management/v2/functional/test-suites/{testSuiteId}
Delete a test suite DELETE /test-management/v2/functional/test-suites/{testSuiteId}
List requirements associated with a test suite GET /test-management/v2/functional/test-suites/{testSuiteId}/associations/requirements
List config versions associated with a test suite GET /test-management/v2/functional/test-suites/{testSuiteId}/associations/config-versions
List functional test cases included in a test suite GET /test-management/v2/functional/test-suites/{testSuiteId}/associations/test-cases
Include functional test cases in a test suite POST /test-management/v2/functional/test-suites/{testSuiteId}/associate
Remove functional test cases from a test suite POST /test-management/v2/functional/test-suites/{testSuiteId}/associate/dissociate
List order of functional test cases in a stateful test suite GET /test-management/v2/functional/test-suites/{testSuiteId}/associate/associations/order
Include ordered functional test cases in a test suite POST /test-management/v2/functional/test-suites/{testSuiteId}/associate/associations/order
Clone test suites POST /test-management/v2/functional/test-suites/clone
Functional testing: test cases  
List functional test cases GET /test-management/v2/functional/test-cases
Create functional test cases POST /test-management/v2/functional/test-cases
Get a functional test case GET /test-management/v2/functional/test-cases/{testCaseId}
Update a functional test case PUT /test-management/v2/functional/test-cases/{testCaseId}
Delete a functional test case DELETE /test-management/v2/functional/test-cases/{testCaseId}
List test suites with a functional test case GET /test-management/v2/functional/test-cases/{testCaseId}/associations/test-suites
Assign test suites to a functional test case POST /test-management/v2/functional/test-cases/{testCaseId}/associations/test-suites/associate
Remove test suites from a functional test case POST /test-management/v2/functional/test-cases/{testCaseId}/associations/test-suites/dissociate
Clone functional test cases POST /test-management/v2/functional/test-cases/clone
Functional testing: client profiles  
List client profiles GET /test-management/v2/functional/client-profiles
Get a client profile GET /test-management/v2/functional/client-profiles/{clientProfileId}
List functional test cases that use a client profile GET /test-management/v2/functional/client-profiles/{clientProfileId}/associations/test-cases
Functional testing: test requests  
List test requests GET /test-management/v2/functional/test-requests
Create test requests POST /test-management/v2/functional/test-requests
Get a test request GET /test-management/v2/functional/test-requests/{testRequestId}
Update a test request PUT /test-management/v2/functional/test-requests/{testRequestId}
Delete a test request DELETE /test-management/v2/functional/test-requests/{testRequestId}
List functional test cases that use a test request GET /test-management/v2/functional/test-requests/{testRequestId}/associations/test-cases
Functional testing: conditions  
Get the test catalog template GET /test-management/v2/functional/test-catalog/template
List conditions GET /test-management/v2/functional/test-catalog/conditions
Create a condition POST /test-management/v2/functional/test-catalog/conditions
Get a condition GET /test-management/v2/functional/test-catalog/conditions/{conditionId}
Update a condition PUT /test-management/v2/functional/test-catalog/conditions/{conditionId}
Delete a condition DELETE /test-management/v2/functional/test-catalog/conditions/{conditionId}
List functional test cases that use a condition GET /test-management/v2/functional/test-catalog/conditions/{conditionId}/associations/test-cases
Functional testing: executions  
Get transaction details for a functional test case GET /test-management/v2/functional/test-case-executions/{testCaseExecutionId}/raw-request-response
Comparative testing: test definitions  
List test definitions GET /test-management/v2/comparative/test-definitions
Create a new test definition POST /test-management/v2/comparative/test-definitions
Get a test definition GET /test-management/v2/comparative/test-definitions/{testDefinitionId}
Update a test definition PUT /test-management/v2/comparative/test-definitions/{testDefinitionId}
Remove a test definition POST /test-management/v2/comparative/test-definitions/{testDefinitionId}/remove
Clone a test definition POST /test-management/v2/comparative/test-definitions/{testDefinitionId}/clone
List comparative test cases included in a test definition GET /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases
Create a comparative test case POST /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases
Get a comparative test case GET /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases/{testCaseId}
Update a comparative test case PUT /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases/{testCaseId}
Remove a comparative test case POST /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases/{testCaseId}/remove
Clone a comparative test case POST /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases/{testCaseId}/clone
Comparative testing: executions  
List executions GET /test-management/v2/comparative/test-definition-executions{?testDefinitionIds,latestPerTestDefinition}
Get an execution GET /test-management/v2/comparative/test-definition-executions/{testDefinitionExecutionId}
List diffs GET /test-management/v2/comparative/test-definition-executions/{testDefinitionExecutionId}/differences
Update diffs PUT /test-management/v2/comparative/test-definition-executions/{testDefinitionExecutionId}/differences
Create notes for a set of diffs POST /test-management/v2/comparative/test-definition-executions/{testDefinitionExecutionId}/differences/notes
Get a diff GET /test-management/v2/comparative/test-definition-executions/{testDefinitionExecutionId}/differences/{differenceId}
Get transaction details for a diff GET /test-management/v2/comparative/test-definition-executions/{testDefinitionExecutionId}/differences/{differenceId}/raw-request-response
Common operations  
List test runs GET /test-management/v2/test-runs
Submit a test run POST /test-management/v2/test-runs
Get a test run GET /test-management/v2/test-runs/{testRunId}
Get transaction details for a test run GET /test-management/v2/test-runs/{testRunId}/raw-request-response
List activities GET /test-management/v2/activities{?activityResource,resourceId}
List comparison lists GET /test-management/v2/comparison-settings-default-values
List HTTP headers GET /test-management/v2/http-headers

List requirements

Lists all requirements created in your organization. The response is an array of Requirement objects, each keyed by requirementId.

GET /test-management/v2/functional/requirements

Status 200 application/json

Object type: Requirement

Download schema: get-requirements-response.json

Response body:

[
    {
        "requirementId": 7,
        "requirementName": "Example.com sanity requirement",
        "requirementDescription": "The basic requirement to test the config changes",
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-10-30T12:09:37+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-10-30T12:09:37+0000",
        "references": [
            {
                "referenceTitle": "Basic",
                "referenceUrl": "http://www.atcuser8.akamaiu.com/reference"
            }
        ]
    },
    {
        "requirementId": 8,
        "requirementName": "www.atcuser8.akamaiu.com sanity requirement",
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-11-30T12:09:37+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-11-30T12:09:37+0000",
        "references": [
            {
                "referenceTitle": "TTL"
            }
        ]
    },
    {
        "requirementId": 9,
        "requirementName": "www.atcuser8.akamaiu.com sanity requirement2",
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-11-30T12:09:37+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-11-30T12:09:37+0000"
    }
]

Create a requirement

Creates a new requirement.

POST /test-management/v2/functional/requirements

Content-Type: application/json

Object type: Requirement

Download schema: create-requirement-request.json

Request body:

{
    "requirementName": "Example.com sanity requirement",
    "requirementDescription": "The basic requirement to test the config changes",
    "references": [
        {
            "referenceTitle": "Basic",
            "referenceUrl": "http://www.atcuser8.akamaiu.com/reference"
        }
    ]
}

Status 201 application/json

Object type: Requirement

Download schema: get-requirement-response.json

Response body:

{
    "requirementId": 7,
    "requirementName": "Example.com sanity requirement",
    "requirementDescription": "The basic requirement to test the config changes",
    "createdBy": "atctest@akamai.com",
    "createdDate": "2019-10-30T12:09:37+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2019-10-30T12:09:37+0000",
    "references": [
        {
            "referenceTitle": "Basic",
            "referenceUrl": "http://www.atcuser8.akamaiu.com/reference"
        }
    ]
}
  1. Build a new Requirement object.

  2. POST the object to /test-management/v2/functional/requirements.

The operation responds with the created Requirement object.

Get a requirement

Returns details of a requirement.

GET /test-management/v2/functional/requirements/{requirementId}

Sample: /test-management/v2/functional/requirements/7

Parameter Type Sample Description
URL path parameters
requirementId Integer 7 Unique identifier of the requirement.

Status 200 application/json

Object type: Requirement

Download schema: get-requirement-response.json

Response body:

{
    "requirementId": 7,
    "requirementName": "Example.com sanity requirement",
    "requirementDescription": "The basic requirement to test the config changes",
    "createdBy": "atctest@akamai.com",
    "createdDate": "2019-10-30T12:09:37+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2019-10-30T12:09:37+0000",
    "references": [
        {
            "referenceTitle": "Basic",
            "referenceUrl": "http://www.atcuser8.akamaiu.com/reference"
        }
    ]
}
  1. Run the List requirements operation and store the requirementId of the requirement you want to get the details of.

  2. Make a GET request to /test-management/v2/functional/requirements/{requirementId}.

The operation responds with a Requirement object.

Update a requirement

Updates a requirement. Optional, modifiable request members that are not included in the request are overridden by their default values.

PUT /test-management/v2/functional/requirements/{requirementId}

Sample: /test-management/v2/functional/requirements/7

Content-Type: application/json

Object type: Requirement

Download schema: update-requirement-request.json

Request body:

{
    "requirementName": "Example.com sanity requirement updated",
    "requirementDescription": "The basic requirement to test the config changes",
    "references": [
        {
            "referenceTitle": "Basic",
            "referenceUrl": "http://www.atcuser8.akamaiu.com/reference"
        }
    ]
}
Parameter Type Sample Description
URL path parameters
requirementId Integer 7 Unique identifier of the requirement.

Status 200 application/json

Object type: Requirement

Download schema: get-requirement-response.json

Response body:

{
    "requirementId": 7,
    "requirementName": "Example.com sanity requirement updated",
    "requirementDescription": "The basic requirement to test the config changes",
    "createdBy": "atctest@akamai.com",
    "createdDate": "2019-10-30T12:09:37+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2019-11-30T12:09:37+0000",
    "references": [
        {
            "referenceTitle": "Basic",
            "referenceUrl": "http://www.atcuser8.akamaiu.com/reference"
        }
    ]
}
  1. Run the List requirements operation and store the requirementId of the requirement you want to update.

  2. Run the Get a requirement operation.

  3. Modify the returned Requirement object.

  4. PUT the object to /test-management/v2/functional/requirements/{requirementId}.

The operation responds with the modified Requirement object.

Delete a requirement

Deletes a requirement.

DELETE /test-management/v2/functional/requirements/{requirementId}

Sample: /test-management/v2/functional/requirements/7

Parameter Type Sample Description
URL path parameters
requirementId Integer 7 Unique identifier of the requirement.

Status 204

  1. Run the List requirements operation and store the requirementId of the requirement you want to remove.

  2. Make a DELETE request to /test-management/v2/functional/requirements/{requirementId}.

List test suites associated with a requirement

Lists all test suites associated with a requirement. The response is an array of TestSuite objects, each keyed by testSuiteId.

GET /test-management/v2/functional/requirements/{requirementId}/associations/test-suites

Sample: /test-management/v2/functional/requirements/7/associations/test-suites

Parameter Type Sample Description
URL path parameters
requirementId Integer 7 Unique identifier of the requirement.

Status 200 application/json

Object type: TestSuite

Download schema: get-test-suites-response.json

Response body:

[
    {
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-10-30T12:09:37+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-10-30T12:09:37+0000",
        "testSuiteId": 284,
        "testSuiteName": "www.atcuser8.akamaiu.com sanity test suite",
        "testSuiteDescription": "This test suite performs basic sanity of www.atcuser8.akamaiu.com",
        "locked": false,
        "stateful": false
    },
    {
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-11-06T23:37:23+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-11-11T09:55:05+0000",
        "testSuiteId": 317,
        "testSuiteName": "www.atcuser8.akamaiu.com images test suite",
        "testSuiteDescription": "This test suite validates caching of images used in www.atcuser8.akamaiu.com",
        "locked": false,
        "stateful": false
    }
]
  1. Run the List requirements operation and store the requirementId of the requirements for which you want to get a list of associated test suites.

  2. Make a GET request to /test-management/v2/functional/requirements/{requirementId}/associations/test-suites.

The operation responds with a TestSuite object.

Associate test suites with a requirement

Associates a list of test suites with a requirement. A test suite can be associated either with a requirement or a config version. It can’t be associated with both of them at the same time. If you want to associate a particular test suite with both, a requirement and a config version, you can clone the created test suite. See Clone test suites. The operation responds with a partial-success 207 response that consists of two arrays, successes and failures. The successes array lists all unique identifiers of test suites associated successfully, whereas the failures array provides details on any remainders that failed. See Partial success responses.

POST /test-management/v2/functional/requirements/{requirementId}/associations/test-suites/associate

Sample: /test-management/v2/functional/requirements/7/associations/test-suites/associate

Content-Type: application/json

Object type: TestSuitesAssociation

Download schema: test-suites-association-dissociation-request.json

Request body:

[
    77,
    122
]
Parameter Type Sample Description
URL path parameters
requirementId Integer 7 Unique identifier of the requirement.

Status 207 application/json

Object type: TestSuitesAssociation

Download schema: test-suites-association-dissociation-response.json

Response body:

{
    "successes": [
        77
    ],
    "failures": [
        {
            "type": "resource.not.found",
            "title": "Resource not found",
            "requestField": "testSuiteId",
            "requestValues": [
                122
            ]
        }
    ]
}
  1. Run the List requirements operation and store the requirementId of the requirement with which you want associate test suites.

  2. Run the List test suites operation and store testSuiteId values of test suites you want to associate with the requirement.

  3. Enter the stored testSuiteId values into an array in the body of your request.

  4. POST the array to /test-management/v2/functional/requirements/{requirementId}/associations/test-suites/associate.

The operation responds with a TestSuitesAssociation object.

Dissociate test suites from a requirement

Dissociates a list of test suites from a requirement. The operation responds with a partial-success 207 response that consists of two arrays, successes and failures. The successes array lists all unique identifiers of test suites dissociated successfully, whereas the failures array provides details on any remainders that failed. See Partial success responses.

POST /test-management/v2/functional/requirements/{requirementId}/associations/test-suites/dissociate

Sample: /test-management/v2/functional/requirements/7/associations/test-suites/dissociate

Content-Type: application/json

Object type: TestSuitesAssociation

Download schema: test-suites-association-dissociation-request.json

Request body:

[
    77,
    122
]
Parameter Type Sample Description
URL path parameters
requirementId Integer 7 Unique identifier of the requirement.

Status 207 application/json

Object type: TestSuitesAssociation

Download schema: test-suites-association-dissociation-response.json

Response body:

{
    "successes": [
        77
    ],
    "failures": [
        {
            "type": "resource.not.found",
            "title": "Resource not found",
            "requestField": "testSuiteId",
            "requestValues": [
                122
            ]
        }
    ]
}
  1. Run the List requirements operation and store the requirementId of the requirement from which you want to dissociate test suites.

  2. Run the List test suites operation and store testSuiteId values of test suites you want to dissociate from the requirement.

  3. Enter the stored testSuiteId values into the array in the body of your request.

  4. POST the array to /test-management/v2/functional/requirements/{requirementId}/associations/test-suites/dissociate.

The operation responds with a TestSuitesAssociation object.

List config versions

Lists all config versions added to Test Center from Property Manager available in your organization. The response is an array of ConfigVersion objects, each keyed by configVersionId.

GET /test-management/v2/functional/config-versions

Status 200 application/json

Object type: ConfigVersion

Download schema: get-config-versions-response.json

Response body:

[
    {
        "configVersionId": 919,
        "arlFileId": 424809,
        "propertyName": "atc_test_config",
        "propertyVersion": 6,
        "propertyVersionNote": "Test asset v1",
        "lastSync": "2020-01-04T11:35:30+0000"
    },
    {
        "configVersionId": 920,
        "arlFileId": 424820,
        "propertyName": "atc_test_config2",
        "propertyVersion": 2,
        "lastSync": "2020-01-04T11:45:30+0000"
    }
]

Add a config version

Adds a new config version to Test Center from Property Manager. The config version you want to add must be added to Property Manager. If it’s not, see the Property Manager API documentation to learn how to do it: Create a new property version.

POST /test-management/v2/functional/config-versions

Content-Type: application/json

Object type: ConfigVersion

Download schema: create-config-version-request.json

Request body:

{
    "arlFileId": 424809,
    "propertyVersion": 6
}

Status 201 application/json

Object type: ConfigVersion

Download schema: get-config-version-response.json

Response body:

{
    "configVersionId": 919,
    "arlFileId": 424809,
    "propertyName": "atc_test_config",
    "propertyVersion": 6,
    "propertyVersionNote": "Test asset v1",
    "lastSync": "2020-01-04T11:35:30+0000"
}
  1. Using the Property Manager API, run the List properties operation and choose the propertyId of the property you want to add to Test Center. Remove any non-digit prefix that may appear in the string, and store the value as a numeric arlFileId for your request object. For more details about Property Manager prefixes, see ID prefixes.

  2. Using the Property Manager API, run the List property versions operation and choose the propertyVersion of the property you want to add to Test Center. Store the value as a version for your request object.

  3. Build a request object that specifies the arlFileId and versions.

  4. POST the object to /test-management/v2/functional/config-versions.

The operation responds with a ConfigVersion object.

Get a config version

Returns details of a config version.

GET /test-management/v2/functional/config-versions/{configVersionId}

Sample: /test-management/v2/functional/config-versions/919

Parameter Type Sample Description
URL path parameters
configVersionId Integer 919 Unique identifier of the config version.

Status 200 application/json

Object type: ConfigVersion

Download schema: get-config-version-response.json

Response body:

{
    "configVersionId": 919,
    "arlFileId": 424809,
    "propertyName": "atc_test_config",
    "propertyVersion": 6,
    "propertyVersionNote": "Test asset v1",
    "lastSync": "2020-01-04T11:35:30+0000"
}
  1. Run the List config versions operation and store the configVersionId of the config version you want to get details of.

  2. Make a GET request to /test-management/v2/functional/config-versions/{configVersionId}.

The operation responds with a ConfigVersion object.

Delete a config version

Deletes a config version from Test Center.

DELETE /test-management/v2/functional/config-versions/{configVersionId}

Sample: /test-management/v2/functional/config-versions/919

Parameter Type Sample Description
URL path parameters
configVersionId Integer 919 Unique identifier of the config version.

Status 204

  1. Run the List config versions operation and store the configVersionId of the config version you want to remove from Test Center.

  2. Make a DELETE request to /test-management/v2/functional/config-versions/{configVersionId}.

List test suites associated with a config version

Lists all test suites associated with a config version. The response is an array of TestSuite objects, each keyed by testSuiteId.

GET /test-management/v2/functional/config-versions/{configVersionId}/associations/test-suites

Sample: /test-management/v2/functional/config-versions/919/associations/test-suites

Parameter Type Sample Description
URL path parameters
configVersionId Integer 919 Unique identifier of the config version.

Status 200 application/json

Object type: TestSuite

Download schema: get-test-suites-response.json

Response body:

[
    {
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-10-30T12:09:37+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-10-30T12:09:37+0000",
        "testSuiteId": 284,
        "testSuiteName": "www.atcuser8.akamaiu.com sanity test suite",
        "testSuiteDescription": "This test suite performs basic sanity of www.atcuser8.akamaiu.com",
        "locked": false,
        "stateful": false
    },
    {
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-11-06T23:37:23+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-11-11T09:55:05+0000",
        "testSuiteId": 317,
        "testSuiteName": "www.atcuser8.akamaiu.com images test suite",
        "testSuiteDescription": "This test suite validates caching of images used in www.atcuser8.akamaiu.com",
        "locked": false,
        "stateful": false
    }
]
  1. Run the List config versions operation and store the configVersionId of the config version for which you want to get a list of associated test suites.

  2. Make a GET request to /test-management/v2/functional/config-versions/{configVersionId}/associations/test-suites.

The operation responds with a TestSuite object.

Associate test suites with a config version

Associates a list of test suites with a config version. A test suite can be associated either with a requirement or a config version. It can’t be associated with both of them at the same time. If you want to associate a particular test suite with both, a requirement and a config version, you can clone the created test suite. See Clone test suites. The operation responds with a partial-success 207 response that consists of two arrays, successes and failures. The successes array lists all unique identifiers of test suites associated successfully, whereas the failures array provides details on any remainders that failed. See Partial success responses.

POST /test-management/v2/functional/config-versions/{configVersionId}/associations/test-suites/associate

Sample: /test-management/v2/functional/config-versions/919/associations/test-suites/associate

Content-Type: application/json

Object type: TestSuitesAssociation

Download schema: test-suites-association-dissociation-request.json

Request body:

[
    77,
    122
]
Parameter Type Sample Description
URL path parameters
configVersionId Integer 919 Unique identifier of the config version.

Status 207 application/json

Object type: TestSuitesAssociation

Download schema: test-suites-association-dissociation-response.json

Response body:

{
    "successes": [
        77
    ],
    "failures": [
        {
            "type": "resource.not.found",
            "title": "Resource not found",
            "requestField": "testSuiteId",
            "requestValues": [
                122
            ]
        }
    ]
}
  1. Run the List config versions operation and store the configVersionId of the config version with which you want associate test suites.

  2. Run the List test suites operation and store the testSuiteId of test suites you want to associate with the config version.

  3. Enter the stored testSuiteId values into an array in the body of your request.

  4. POST the array to /test-management/v2/functional/config-versions/{configVersionId}/associations/test-suites/associate.

The operation responds with a TestSuitesAssociation object.

Dissociate test suites from a config version

Dissociates a list of test suites from a config version. The operation responds with a partial-success 207 response that consists of two arrays, successes and failures. The successes array lists all unique identifiers of test suites dissociated successfully, whereas the failures array provides details on any remainders that failed. See Partial success responses.

POST /test-management/v2/functional/config-versions/{configVersionId}/associations/test-suites/dissociate

Sample: /test-management/v2/functional/config-versions/919/associations/test-suites/dissociate

Content-Type: application/json

Object type: TestSuitesAssociation

Download schema: test-suites-association-dissociation-request.json

Request body:

[
    77,
    122
]
Parameter Type Sample Description
URL path parameters
configVersionId Integer 919 Unique identifier of the config version.

Status 207 application/json

Object type: TestSuitesAssociation

Download schema: test-suites-association-dissociation-response.json

Response body:

{
    "successes": [
        77
    ],
    "failures": [
        {
            "type": "resource.not.found",
            "title": "Resource not found",
            "requestField": "testSuiteId",
            "requestValues": [
                122
            ]
        }
    ]
}
  1. Run the List config versions operation and store the configVersionId of the config version from which you want to dissociate test suites.

  2. Run the List test suites operation and store testSuiteId values of test suites you want to dissociate from the config version.

  3. Enter the stored testSuiteId values into an array in the body of your request.

  4. POST the object to /test-management/v2/functional/config-versions/{configVersionId}/associations/test-suites/dissociate.

The operation responds with a TestSuitesAssociation object.

List test suites

Lists all test suites created in your organization. The response is an array of TestSuite objects, each keyed by testSuiteId.

GET /test-management/v2/functional/test-suites

Status 200 application/json

Object type: TestSuite

Download schema: get-test-suites-response.json

Response body:

[
    {
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-10-30T12:09:37+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-10-30T12:09:37+0000",
        "testSuiteId": 284,
        "testSuiteName": "www.atcuser8.akamaiu.com sanity test suite",
        "testSuiteDescription": "This test suite performs basic sanity of www.atcuser8.akamaiu.com",
        "locked": false,
        "stateful": false
    },
    {
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-11-06T23:37:23+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-11-11T09:55:05+0000",
        "testSuiteId": 317,
        "testSuiteName": "www.atcuser8.akamaiu.com images test suite",
        "testSuiteDescription": "This test suite validates caching of images used in www.atcuser8.akamaiu.com",
        "locked": false,
        "stateful": false
    }
]

Create a test suite

Creates a new test suite.

POST /test-management/v2/functional/test-suites

Content-Type: application/json

Object type: TestSuite

Download schema: create-test-suite-request.json

Request body:

{
    "testSuiteName": "www.atcuser8.akamaiu.com sanity test suite",
    "testSuiteDescription": "This test suite performs basic sanity of www.atcuser8.akamaiu.com",
    "locked": false,
    "stateful": false
}

Status 201 application/json

Object type: TestSuite

Download schema: get-test-suite-response.json

Response body:

{
    "createdBy": "atctest@akamai.com",
    "createdDate": "2019-10-30T12:09:37+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2019-10-30T12:09:37+0000",
    "testSuiteId": 284,
    "testSuiteName": "www.atcuser8.akamaiu.com sanity test suite",
    "testSuiteDescription": "This test suite performs basic sanity of www.atcuser8.akamaiu.com",
    "locked": false,
    "stateful": false
}
  1. Build a new TestSuite object.

  2. POST the object to /test-management/v2/functional/test-suites.

The operation responds with the created TestSuite object.

Get a test suite

Returns details of a test suite.

GET /test-management/v2/functional/test-suites/{testSuiteId}

Sample: /test-management/v2/functional/test-suites/284

Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier of the test suite.

Status 200 application/json

Object type: TestSuite

Download schema: get-test-suite-response.json

Response body:

{
    "createdBy": "atctest@akamai.com",
    "createdDate": "2019-10-30T12:09:37+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2019-10-30T12:09:37+0000",
    "testSuiteId": 284,
    "testSuiteName": "www.atcuser8.akamaiu.com sanity test suite",
    "testSuiteDescription": "This test suite performs basic sanity of www.atcuser8.akamaiu.com",
    "locked": false,
    "stateful": false
}
  1. Run the List test suites operation and store the testSuiteId of the test suite you want to get the details of.

  2. Make a GET request to /test-management/v2/functional/test-suites/{testSuiteId}.

The operation responds with a TestSuite object.

Update a test suite

Updates a test suite. Optional, modifiable request members that are not included in the request are overridden by their default values.

PUT /test-management/v2/functional/test-suites/{testSuiteId}

Sample: /test-management/v2/functional/test-suites/284

Content-Type: application/json

Object type: TestSuite

Download schema: update-test-suite-request.json

Request body:

{
    "testSuiteId": 284,
    "testSuiteName": "Updated sanity suite",
    "testSuiteDescription": "This test suite performs basic sanity of www.atcuser8.akamaiu.com",
    "locked": true,
    "stateful": false
}
Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier of the test suite.

Status 200 application/json

Object type: TestSuite

Download schema: get-test-suite-response.json

Response body:

{
    "createdBy": "atctest@akamai.com",
    "createdDate": "2019-10-30T12:09:37+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2019-10-30T12:10:03+0000",
    "testSuiteId": 284,
    "testSuiteName": "Updated sanity suite",
    "testSuiteDescription": "This test suite performs basic sanity of www.atcuser8.akamaiu.com",
    "locked": true,
    "stateful": false
}
  1. Run the List test suites operation and store the testSuiteId of the test suite you want to update.

  2. Run the Get a test suite operation.

  3. Modify the returned TestSuite object.

  4. PUT the object to /test-management/v2/functional/test-suites/{testSuiteId}.

The operation responds with the modified TestSuite object.

Delete a test suite

Deletes a test suite.

DELETE /test-management/v2/functional/test-suites/{testSuiteId}

Sample: /test-management/v2/functional/test-suites/284

Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier of the test suite.

Status 204

  1. Run the List test suites operation and store the testSuiteId of the test suite you want to remove.

  2. Make a DELETE request to /test-management/v2/functional/test-suites/{testSuiteId}.

List requirements associated with a test suite

Lists all requirements associated with a test suite. The response is an array of Requirement objects, each keyed by requirementId.

GET /test-management/v2/functional/test-suites/{testSuiteId}/associations/requirements

Sample: /test-management/v2/functional/test-suites/284/associations/requirements

Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier of the test suite.

Status 200 application/json

Object type: Requirement

Download schema: get-requirements-response.json

Response body:

[
    {
        "requirementId": 7,
        "requirementName": "Example.com sanity requirement",
        "requirementDescription": "The basic requirement to test the config changes",
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-10-30T12:09:37+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-10-30T12:09:37+0000",
        "references": [
            {
                "referenceTitle": "Basic",
                "referenceUrl": "http://www.atcuser8.akamaiu.com/reference"
            }
        ]
    },
    {
        "requirementId": 8,
        "requirementName": "www.atcuser8.akamaiu.com sanity requirement",
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-11-30T12:09:37+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-11-30T12:09:37+0000",
        "references": [
            {
                "referenceTitle": "TTL"
            }
        ]
    },
    {
        "requirementId": 9,
        "requirementName": "www.atcuser8.akamaiu.com sanity requirement2",
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-11-30T12:09:37+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-11-30T12:09:37+0000"
    }
]
  1. Run the List test suites operation and store the testSuiteId of the test suite for which you want to get associated requirements.

  2. Make a GET request to /test-management/v2/functional/test-suites/{testSuiteId}/associations/requirements.

The operation responds with a Requirement object.

List config versions associated with a test suite

Lists all config versions associated with a test suite. The response is an array of ConfigVersion objects, each keyed by configVersionId.

GET /test-management/v2/functional/test-suites/{testSuiteId}/associations/config-versions

Sample: /test-management/v2/functional/test-suites/284/associations/config-versions

Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier of the test suite.

Status 200 application/json

Object type: ConfigVersion

Download schema: get-config-versions-response.json

Response body:

[
    {
        "configVersionId": 919,
        "arlFileId": 424809,
        "propertyName": "atc_test_config",
        "propertyVersion": 6,
        "propertyVersionNote": "Test asset v1",
        "lastSync": "2020-01-04T11:35:30+0000"
    },
    {
        "configVersionId": 920,
        "arlFileId": 424820,
        "propertyName": "atc_test_config2",
        "propertyVersion": 2,
        "lastSync": "2020-01-04T11:45:30+0000"
    }
]
  1. Run the List test suites operation and store the testSuiteId of the test suite for which you want to get associated config versions.

  2. Make a GET request to /test-management/v2/functional/test-suites/{testSuiteId}/associations/config-versions.

The operation responds with a ConfigVersion object.

List functional test cases included in a test suite

Lists all functional test cases included in a test suite. The response is an array of FunctionalTestCase objects, each keyed by testCaseId.

GET /test-management/v2/functional/test-suites/{testSuiteId}/associations/test-cases

Sample: /test-management/v2/functional/test-suites/284/associations/test-cases

Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier of the test suite.

Status 200 application/json

Object type: FunctionalTestCase

Download schema: get-functional-test-cases-response.json

Response body:

[
    {
        "testCaseId": 301,
        "createdBy": "atctest@akamai.com",
        "createdDate": "2020-01-07T06:25:07+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2020-01-07T06:25:07+0000",
        "clientProfile": {
            "clientProfileId": 2,
            "geoLocation": "us",
            "ipVersion": "ipv4",
            "browser": {
                "name": "chrome",
                "version": "72"
            }
        },
        "testRequest": {
            "testRequestId": 59,
            "testRequestUrl": "https://www.atcuser8.akamaiu.com/?abc=1234555",
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-31T08:52:57+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2020-01-03T09:26:09+0000",
            "requestHeaders": [
                {
                    "headerName": "Accept",
                    "headerValues": "v1",
                    "headerAction": "add"
                }
            ]
        },
        "condition": {
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-15T04:30:46+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2020-01-06T19:58:52+0000",
            "conditionId": 47,
            "condition": {
                "conditionNodeId": 1,
                "values": [
                    "responseHeader"
                ],
                "conditionNode": {
                    "conditionNodeId": 4,
                    "values": [
                        "Content-Type"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 5,
                        "values": [
                            "hasAValue"
                        ],
                        "conditionNode": {
                            "conditionNodeId": 7,
                            "values": [
                                "endsWith"
                            ],
                            "conditionNode": {
                                "conditionNodeId": 4,
                                "values": [
                                    "json"
                                ]
                            }
                        }
                    }
                }
            }
        }
    },
    {
        "testCaseId": 298,
        "createdBy": "atctest@akamai.com",
        "createdDate": "2020-01-03T11:28:04+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2020-01-03T11:28:41+0000",
        "clientProfile": {
            "clientProfileId": 2,
            "geoLocation": "us",
            "ipVersion": "ipv4",
            "browser": {
                "name": "chrome",
                "version": "72"
            }
        },
        "testRequest": {
            "testRequestId": 59,
            "testRequestUrl": "https://www.atcuser8.akamaiu.com/?abc=1234555",
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-31T08:52:57+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2020-01-03T09:26:09+0000",
            "requestHeaders": [
                {
                    "headerName": "Accept",
                    "headerValues": "v1",
                    "headerAction": "add"
                }
            ]
        },
        "condition": {
            "conditionId": 42,
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-05T09:10:22+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2019-12-05T09:10:22+0000",
            "condition": {
                "conditionNodeId": 1,
                "values": [
                    "originServer"
                ],
                "conditionNode": {
                    "conditionNodeId": 23,
                    "values": [
                        "is"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 4,
                        "values": [
                            "www.atcuser8.akamaiu.com"
                        ]
                    }
                }
            }
        }
    }
]
  1. Run the List test suites operation and store the testSuiteId of the test suite for which you want to get a list of included functional test cases.

  2. Make a GET request to /test-management/v2/functional/test-suites/{testSuiteId}/associations/test-cases.

The operation responds with a FunctionalTestCase object.

Include functional test cases in a test suite

Includes a list of functional test cases in a test suite. The operation responds with a partial-success 207 response that consists of two arrays, successes and failures. The successes array lists all unique identifiers of functional test cases included successfully, whereas the failures array provides details on any remainders that failed. See Partial success responses.

POST /test-management/v2/functional/test-suites/{testSuiteId}/associate

Sample: /test-management/v2/functional/test-suites/284/associate

Content-Type: application/json

Object type: TestCasesAssociation

Download schema: test-cases-association-dissociation-request.json

Request body:

[
    301,
    122
]
Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier of the test suite.

Status 207 application/json

Object type: TestCasesAssociation

Download schema: test-cases-association-dissociation-response.json

Response body:

{
    "successes": [
        301
    ],
    "failures": [
        {
            "type": "resource.not.found",
            "title": "Resource not found",
            "requestField": "testCaseId",
            "requestValues": [
                122
            ]
        }
    ]
}
  1. Run the List test suites operation and store the testSuiteId of the test suite in which you want to include functional test cases.

  2. Run the List functional test cases operation and store the testCaseId of functional test cases you want to include in the test suite.

  3. Enter the stored testCaseId values into an array in the body of your request.

  4. POST the array to /test-management/v2/functional/test-suites/{testSuiteId}/associate.

The operation responds with a TestCasesAssociation object.

Remove functional test cases from a test suite

Removes a list of functional test cases from a test suite. The operation responds with a partial-success 207 response that consists of two arrays, successes and failures. The successes array lists all unique identifiers of functional test cases removed successfully, whereas the failures array provides details on any remainders that failed. See Partial success responses.

POST /test-management/v2/functional/test-suites/{testSuiteId}/associate/dissociate

Sample: /test-management/v2/functional/test-suites/284/associate/dissociate

Content-Type: application/json

Object type: TestCasesAssociation

Download schema: test-cases-association-dissociation-request.json

Request body:

[
    301,
    122
]
Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier of the test suite.

Status 207 application/json

Object type: TestCasesAssociation

Download schema: test-cases-association-dissociation-response.json

Response body:

{
    "successes": [
        301
    ],
    "failures": [
        {
            "type": "resource.not.found",
            "title": "Resource not found",
            "requestField": "testCaseId",
            "requestValues": [
                122
            ]
        }
    ]
}
  1. Run the List test suites operation and store the testSuiteId of the test suite from which you want to dissociate functional test cases.

  2. Run the List functional test cases operation and store testCaseId values of functional test cases you want to dissociate from the test suite.

  3. Enter the stored testCaseId values into an array in the body of your request.

  4. POST the array to /test-management/v2/functional/test-suites/{testSuiteId}/associate/dissociate.

The operation responds with a TestCasesAssociation object.

List order of functional test cases in a stateful test suite

Lists all functional test cases included in a stateful test suite with the set order.

GET /test-management/v2/functional/test-suites/{testSuiteId}/associate/associations/order

Sample: /test-management/v2/functional/test-suites/284/associate/associations/order

Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier of the test suite.

Status 200 application/json

Download schema: test-cases-order-request-response.json

Response body:

[
    {
        "testCaseId": 301,
        "order": 1
    },
    {
        "testCaseId": 302,
        "order": 2
    }
]
  1. Run the List test suites operation and store the testSuiteId of the stateful test suite for which you want to get the list of ordered functional test cases.

  2. Make a GET request to /test-management/v2/functional/test-suites/{testSuiteId}/associate/associations/order.

The operation responds with an array of objects consisting of unique identifiers of a functional test case and their order.

Include ordered functional test cases in a test suite

Includes a list of functional test cases with a set order in a test suite. The order of the functional test suites is taken into account if you include them in a stateful test suite.

POST /test-management/v2/functional/test-suites/{testSuiteId}/associate/associations/order

Sample: /test-management/v2/functional/test-suites/284/associate/associations/order

Content-Type: application/json

Download schema: test-cases-order-request-response.json

Request body:

[
    {
        "testCaseId": 301,
        "order": 1
    },
    {
        "testCaseId": 302,
        "order": 2
    }
]
Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier of the test suite.

Status 200 application/json

Download schema: test-cases-order-request-response.json

Response body:

[
    {
        "testCaseId": 301,
        "order": 1
    },
    {
        "testCaseId": 302,
        "order": 2
    }
]
  1. Run the List test suites operation and store the testSuiteId of the test suite in which you want to include ordered functional test cases.

  2. Run the List functional test cases operation and store testCaseId values of functional test cases you want to include in the test suite.

  3. In the body of your request, create an array of objects consisting of the stored testCaseId and the numeric order in which you want them to appear.

  4. POST the object to /test-management/v2/functional/test-suites/{testSuiteId}/associate/associations/order.

Clone test suites

Clones a list of test suites. If an optional request member of the request is missing, Test Center uses the value from the source test suite. See Default values. The operation responds with a partial-success 207 response that consists of two arrays, successes and failures. The successes array lists all test suites cloned successfully, whereas the failures array provides details on any remainders that failed. See Partial success responses.

POST /test-management/v2/functional/test-suites/clone

Content-Type: application/json

Download schema: clone-test-suite-request.json

Request body:

[
    {
        "testSuiteId": 284,
        "testSuiteDescription": "cloned test suite",
        "locked": true
    },
    {
        "testSuiteId": 300,
        "testSuiteDescription": "cloned test suite 2",
        "stateful": true
    }
]

Status 207 application/json

Object type: TestSuite

Download schema: clone-test-suite-response.json

Response body:

{
    "successes": [
        {
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-10-30T12:09:37+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2019-10-30T12:09:37+0000",
            "testSuiteId": 285,
            "testSuiteName": "Copy of www.atcuser8.akamaiu.com sanity test suite",
            "testSuiteDescription": "cloned test suite",
            "locked": true,
            "stateful": false
        }
    ],
    "failures": [
        {
            "type": "resource.not.found",
            "title": "Resource not found",
            "requestField": "testSuiteId",
            "requestValues": [
                300
            ]
        }
    ]
}
  1. Run the List test suites operation and store testSuiteId values of test suites you want to clone.

  2. Build an array of objects. In each object include testSuiteId and optionally, members you want to override.

  3. POST the array to /test-management/v2/functional/test-suites/clone.

List functional test cases

Lists all functional test cases created in your organization. The response is an array of FunctionalTestCase objects, each keyed by testCaseId.

GET /test-management/v2/functional/test-cases

Status 200 application/json

Object type: FunctionalTestCase

Download schema: get-functional-test-cases-response.json

Response body:

[
    {
        "testCaseId": 301,
        "createdBy": "atctest@akamai.com",
        "createdDate": "2020-01-07T06:25:07+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2020-01-07T06:25:07+0000",
        "clientProfile": {
            "clientProfileId": 2,
            "geoLocation": "us",
            "ipVersion": "ipv4",
            "browser": {
                "name": "chrome",
                "version": "72"
            }
        },
        "testRequest": {
            "testRequestId": 59,
            "testRequestUrl": "https://www.atcuser8.akamaiu.com/?abc=1234555",
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-31T08:52:57+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2020-01-03T09:26:09+0000",
            "requestHeaders": [
                {
                    "headerName": "Accept",
                    "headerValues": "v1",
                    "headerAction": "add"
                }
            ]
        },
        "condition": {
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-15T04:30:46+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2020-01-06T19:58:52+0000",
            "conditionId": 47,
            "condition": {
                "conditionNodeId": 1,
                "values": [
                    "responseHeader"
                ],
                "conditionNode": {
                    "conditionNodeId": 4,
                    "values": [
                        "Content-Type"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 5,
                        "values": [
                            "hasAValue"
                        ],
                        "conditionNode": {
                            "conditionNodeId": 7,
                            "values": [
                                "endsWith"
                            ],
                            "conditionNode": {
                                "conditionNodeId": 4,
                                "values": [
                                    "json"
                                ]
                            }
                        }
                    }
                }
            }
        }
    },
    {
        "testCaseId": 298,
        "createdBy": "atctest@akamai.com",
        "createdDate": "2020-01-03T11:28:04+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2020-01-03T11:28:41+0000",
        "clientProfile": {
            "clientProfileId": 2,
            "geoLocation": "us",
            "ipVersion": "ipv4",
            "browser": {
                "name": "chrome",
                "version": "72"
            }
        },
        "testRequest": {
            "testRequestId": 59,
            "testRequestUrl": "https://www.atcuser8.akamaiu.com/?abc=1234555",
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-31T08:52:57+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2020-01-03T09:26:09+0000",
            "requestHeaders": [
                {
                    "headerName": "Accept",
                    "headerValues": "v1",
                    "headerAction": "add"
                }
            ]
        },
        "condition": {
            "conditionId": 42,
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-05T09:10:22+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2019-12-05T09:10:22+0000",
            "condition": {
                "conditionNodeId": 1,
                "values": [
                    "originServer"
                ],
                "conditionNode": {
                    "conditionNodeId": 23,
                    "values": [
                        "is"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 4,
                        "values": [
                            "www.atcuser8.akamaiu.com"
                        ]
                    }
                }
            }
        }
    }
]

Create functional test cases

Creates a list of new functional test cases. Each test case consists of a test request, client profile, and condition. The operation responds with a partial-success 207 response that consists of two arrays, successes and failures. The successes array lists all functional test cases created successfully, whereas the failures array provides details on any remainders that failed. See Partial success responses.

POST /test-management/v2/functional/test-cases

Content-Type: application/json

Object type: FunctionalTestCase

Download schema: create-functional-test-case-request.json

Request body:

[
    {
        "testRequestId": 59,
        "conditionId": 47,
        "clientProfileId": 1
    },
    {
        "testRequestId": 59111,
        "conditionId": 47,
        "clientProfileId": 1
    }
]

Status 207 application/json

Object type: FunctionalTestCase

Download schema: create-functional-test-case-response.json

Response body:

{
    "successes": [
        {
            "testCaseId": 301,
            "createdBy": "atctest@akamai.com",
            "createdDate": "2020-01-07T06:25:07+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2020-01-07T06:25:07+0000",
            "clientProfile": {
                "clientProfileId": 2,
                "geoLocation": "US",
                "ipVersion": "ipv4",
                "browser": {
                    "name": "chrome",
                    "version": "72"
                }
            },
            "testRequest": {
                "testRequestId": 59,
                "testRequestUrl": "https://www.atcuser8.akamaiu.com/?abc=1234555",
                "createdBy": "atctest@akamai.com",
                "createdDate": "2019-12-31T08:52:57+0000",
                "modifiedBy": "atctest@akamai.com",
                "modifiedDate": "2020-01-03T09:26:09+0000",
                "requestHeaders": [
                    {
                        "headerName": "Accept",
                        "headerValues": "v1",
                        "headerAction": "add"
                    }
                ]
            },
            "condition": {
                "createdBy": "atctest@akamai.com",
                "createdDate": "2019-12-15T04:30:46+0000",
                "modifiedBy": "atctest@akamai.com",
                "modifiedDate": "2020-01-06T19:58:52+0000",
                "conditionId": 47,
                "condition": {
                    "conditionNodeId": 1,
                    "values": [
                        "responseHeader"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 4,
                        "values": [
                            "Content-Type"
                        ],
                        "conditionNode": {
                            "conditionNodeId": 5,
                            "values": [
                                "hasAValue"
                            ],
                            "conditionNode": {
                                "conditionNodeId": 7,
                                "values": [
                                    "endsWith"
                                ],
                                "conditionNode": {
                                    "conditionNodeId": 4,
                                    "values": [
                                        "json"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        }
    ],
    "failures": [
        {
            "type": "resource.not.found",
            "title": "Resource not found",
            "requestField": "testRequestId",
            "requestValues": [
                59111
            ]
        }
    ]
}
  1. Run the List client profiles operation and store the clientProfileId of client profiles you want to include in functional test cases.

  2. Run the List conditions operation and store the conditionId of conditions you want to include in functional test cases. If the condition is not yet created, run the Create a condition operation.

  3. Run the List test requests operation and store the testRequestId of test requests you want to include in functional test cases. If the test request is not yet created, run the Create a test request operation.

  4. Build an array of FunctionalTestCase objects. Specify a set of clientProfileId, conditionId, testRequestId for each object.

  5. POST the object to /test-management/v2/functional/test-cases.

  6. The 207 response object includes the newly created FunctionalTestCase object within its successes array. Details about any failed request objects appear in the failures array.

Get a functional test case

Returns details of a functional test case.

GET /test-management/v2/functional/test-cases/{testCaseId}

Sample: /test-management/v2/functional/test-cases/301

Parameter Type Sample Description
URL path parameters
testCaseId Integer 301 Unique identifier of the functional test case.

Status 200 application/json

Object type: FunctionalTestCase

Download schema: get-functional-test-case-response.json

Response body:

[
    {
        "testCaseId": 301,
        "createdBy": "atctest@akamai.com",
        "createdDate": "2020-01-07T06:25:07+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2020-01-07T06:25:07+0000",
        "clientProfile": {
            "clientProfileId": 2,
            "geoLocation": "us",
            "ipVersion": "ipv4",
            "browser": {
                "name": "chrome",
                "version": "72"
            }
        },
        "testRequest": {
            "testRequestId": 59,
            "testRequestUrl": "https://www.atcuser8.akamaiu.com/?abc=1234555",
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-31T08:52:57+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2020-01-03T09:26:09+0000",
            "requestHeaders": [
                {
                    "headerName": "Accept",
                    "headerValues": "v1",
                    "headerAction": "add"
                }
            ]
        },
        "condition": {
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-15T04:30:46+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2020-01-06T19:58:52+0000",
            "conditionId": 47,
            "condition": {
                "conditionNodeId": 1,
                "values": [
                    "responseHeader"
                ],
                "conditionNode": {
                    "conditionNodeId": 4,
                    "values": [
                        "Content-Type"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 5,
                        "values": [
                            "hasAValue"
                        ],
                        "conditionNode": {
                            "conditionNodeId": 7,
                            "values": [
                                "endsWith"
                            ],
                            "conditionNode": {
                                "conditionNodeId": 4,
                                "values": [
                                    "json"
                                ]
                            }
                        }
                    }
                }
            }
        }
    },
    {
        "testCaseId": 298,
        "createdBy": "atctest@akamai.com",
        "createdDate": "2020-01-03T11:28:04+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2020-01-03T11:28:41+0000",
        "clientProfile": {
            "clientProfileId": 2,
            "geoLocation": "us",
            "ipVersion": "ipv4",
            "browser": {
                "name": "chrome",
                "version": "72"
            }
        },
        "testRequest": {
            "testRequestId": 59,
            "testRequestUrl": "https://www.atcuser8.akamaiu.com/?abc=1234555",
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-31T08:52:57+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2020-01-03T09:26:09+0000",
            "requestHeaders": [
                {
                    "headerName": "Accept",
                    "headerValues": "v1",
                    "headerAction": "add"
                }
            ]
        },
        "condition": {
            "conditionId": 42,
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-05T09:10:22+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2019-12-05T09:10:22+0000",
            "condition": {
                "conditionNodeId": 1,
                "values": [
                    "originServer"
                ],
                "conditionNode": {
                    "conditionNodeId": 23,
                    "values": [
                        "is"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 4,
                        "values": [
                            "www.atcuser8.akamaiu.com"
                        ]
                    }
                }
            }
        }
    }
]
  1. Run the List functional test cases operation and store the testCaseId of the functional test case which you want to get the details of.

  2. Make a GET request to /test-management/v2/functional/test-cases/{testCaseId}.

The operation responds with a FunctionalTestCase object.

Update a functional test case

Updates a functional test case. Optional, modifiable request members that are not included in the request are overridden by their default values.

PUT /test-management/v2/functional/test-cases/{testCaseId}

Sample: /test-management/v2/functional/test-cases/301

Content-Type: application/json

Object type: FunctionalTestCase

Download schema: update-functional-test-case-request.json

Request body:

{
    "testRequestId": 59,
    "conditionId": 47,
    "clientProfileId": 1
}
Parameter Type Sample Description
URL path parameters
testCaseId Integer 301 Unique identifier of the functional test case.

Status 200 application/json

Object type: FunctionalTestCase

Download schema: get-functional-test-case-response.json

Response body:

{
    "testCaseId": 301,
    "createdBy": "atctest@akamai.com",
    "createdDate": "2020-01-07T06:25:07+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2020-01-07T06:53:24+0000",
    "clientProfile": {
        "clientProfileId": 1,
        "geoLocation": "US",
        "ipVersion": "ipv6",
        "browser": {
            "name": "chrome",
            "version": "72"
        }
    },
    "testRequest": {
        "testRequestId": 59,
        "testRequestUrl": "https://www.atcuser8.akamaiu.com/?abc=123",
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-12-31T08:52:57+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2020-01-03T09:26:09+0000",
        "tags": [],
        "requestHeaders": [
            {
                "headerName": "Accept",
                "headerValues": "v1",
                "headerAction": "add"
            }
        ]
    },
    "condition": {
        "conditionId": 47,
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-12-15T04:30:46+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2020-01-06T19:58:52+0000",
        "condition": {
            "conditionNodeId": 1,
            "values": [
                "responseHeader"
            ],
            "conditionNode": {
                "conditionNodeId": 4,
                "values": [
                    "Content-Type"
                ],
                "conditionNode": {
                    "conditionNodeId": 5,
                    "values": [
                        "hasAValue"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 7,
                        "values": [
                            "endsWith"
                        ],
                        "conditionNode": {
                            "conditionNodeId": 4,
                            "values": [
                                "json"
                            ]
                        }
                    }
                }
            }
        }
    }
}
  1. Run the List functional test cases operation and store the testCaseId of the functional test case you want to update.

  2. Run the Get a functional test case operation.

  3. Modify the returned FunctionalTestCase object.

  4. PUT the object to /test-management/v2/functional/test-cases/{testCaseId}.

The operation responds with the modified FunctionalTestCase object.

Delete a functional test case

Deletes a functional test case.

DELETE /test-management/v2/functional/test-cases/{testCaseId}

Sample: /test-management/v2/functional/test-cases/301

Parameter Type Sample Description
URL path parameters
testCaseId Integer 301 Unique identifier of the functional test case.

Status 204

  1. Run the List functional test cases operation and store the testCaseId of the functional test case you want to remove.

  2. Make a DELETE request to /test-management/v2/functional/test-cases/{testCaseId}.

List test suites with a functional test case

Lists all test suites with a functional test case. The response is an array of TestSuite objects, each keyed by testSuiteId.

GET /test-management/v2/functional/test-cases/{testCaseId}/associations/test-suites

Sample: /test-management/v2/functional/test-cases/301/associations/test-suites

Parameter Type Sample Description
URL path parameters
testCaseId Integer 301 Unique identifier of the functional test case.

Status 200 application/json

Object type: TestSuite

Download schema: get-test-suites-response.json

Response body:

[
    {
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-10-30T12:09:37+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-10-30T12:09:37+0000",
        "testSuiteId": 284,
        "testSuiteName": "www.atcuser8.akamaiu.com sanity test suite",
        "testSuiteDescription": "This test suite performs basic sanity of www.atcuser8.akamaiu.com",
        "locked": false,
        "stateful": false
    },
    {
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-11-06T23:37:23+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-11-11T09:55:05+0000",
        "testSuiteId": 317,
        "testSuiteName": "www.atcuser8.akamaiu.com images test suite",
        "testSuiteDescription": "This test suite validates caching of images used in www.atcuser8.akamaiu.com",
        "locked": false,
        "stateful": false
    }
]
  1. Run the List functional test cases operation and store the testCaseId of the functional test case for which you want to check the list of test suites.

  2. Make a GET request to /test-management/v2/functional/test-cases/{testCaseId}/associations/test-suites.

The operation responds with a TestSuite object.

Assign test suites to a functional test case

Assigns a list of test suites to a functional test case. The operation responds with a partial-success 207 response that consists of two arrays, successes and failures. The successes array lists all unique identifiers of test suites assigned successfully, whereas the failures array provides details on any remainders that failed. See Partial success responses.

POST /test-management/v2/functional/test-cases/{testCaseId}/associations/test-suites/associate

Sample: /test-management/v2/functional/test-cases/301/associations/test-suites/associate

Content-Type: application/json

Object type: TestSuitesAssociation

Download schema: test-suites-association-dissociation-request.json

Request body:

[
    77,
    122
]
Parameter Type Sample Description
URL path parameters
testCaseId Integer 301 Unique identifier of the functional test case.

Status 207 application/json

Object type: TestSuitesAssociation

Download schema: test-suites-association-dissociation-response.json

Response body:

{
    "successes": [
        77
    ],
    "failures": [
        {
            "type": "resource.not.found",
            "title": "Resource not found",
            "requestField": "testSuiteId",
            "requestValues": [
                122
            ]
        }
    ]
}
  1. Run the List functional test cases operation and store the testCaseId of the functional test case to which you want to assign test suites.

  2. Run the List test suites operation and store the testSuiteId of test suites you want to assign to the functional test case.

  3. Enter the stored testSuiteId values into an array in the body of your request.

  4. POST the array to /test-management/v2/functional/test-cases/{testCaseId}/associations/test-suites/associate.

The operation responds with a TestSuitesAssociation object.

Remove test suites from a functional test case

Removes a list of test suites from a functional test case. The operation responds with a partial-success 207 response that consists of two arrays, successes and failures. The successes array lists unique identifiers of test suites removed successfully, whereas the failures array provides details on any remainders that failed. See Partial success responses.

POST /test-management/v2/functional/test-cases/{testCaseId}/associations/test-suites/dissociate

Sample: /test-management/v2/functional/test-cases/301/associations/test-suites/dissociate

Content-Type: application/json

Object type: TestSuitesAssociation

Download schema: test-suites-association-dissociation-request.json

Request body:

[
    77,
    122
]
Parameter Type Sample Description
URL path parameters
testCaseId Integer 301 Unique identifier of the functional test case.

Status 207 application/json

Object type: TestSuitesAssociation

Download schema: test-suites-association-dissociation-response.json

Response body:

{
    "successes": [
        77
    ],
    "failures": [
        {
            "type": "resource.not.found",
            "title": "Resource not found",
            "requestField": "testSuiteId",
            "requestValues": [
                122
            ]
        }
    ]
}
  1. Run the List functional test cases operation and store the testCaseId of the functional test case from which you want to remove test suites.

  2. Run the List test suites operation and store testSuiteId values of test suites you want to remove from the functional test case.

  3. Enter the stored testSuiteId values into an array in the body of your request.

  4. POST the array to /test-management/v2/functional/test-cases/{testCaseId}/associations/test-suites/dissociate.

The operation responds with a TestSuitesAssociation object.

Clone functional test cases

Clones a list of functional test cases. To clone a functional test case you need to modify at least one included object (condition, test request, or client profile). Test Center changes only the objects included in the request. Those not included in the request are taken from the source functional test cases. The operation responds with a partial-success 207 response that consists of two arrays, successes and failures. The successes array lists all functional test cases cloned successfully, whereas the failures array provides details on any remainders that failed. See Partial success responses.

POST /test-management/v2/functional/test-cases/clone

Content-Type: application/json

Download schema: clone-functional-test-case-request.json

Request body:

[
    {
        "testCaseId": 301,
        "clientProfileId": 2
    },
    {
        "testCaseId": 308,
        "conditionId": 47
    }
]

Status 207 application/json

Object type: CloneFunctionalTestCase

Download schema: clone-functional-test-case-response.json

Response body:

{
    "successes": [
        {
            "testCaseId": 303,
            "createdBy": "atctest@akamai.com",
            "createdDate": "2020-01-07T06:25:07+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2020-01-07T06:25:07+0000",
            "clientProfile": {
                "clientProfileId": 2,
                "geoLocation": "US",
                "ipVersion": "ipv4",
                "browser": {
                    "name": "chrome",
                    "version": "72"
                }
            },
            "testRequest": {
                "testRequestId": 59,
                "testRequestUrl": "https://www.atcuser8.akamaiu.com/?abc=1234555",
                "createdBy": "atctest@akamai.com",
                "createdDate": "2019-12-31T08:52:57+0000",
                "modifiedBy": "atctest@akamai.com",
                "modifiedDate": "2020-01-03T09:26:09+0000",
                "requestHeaders": [
                    {
                        "headerName": "Accept",
                        "headerValues": "v1",
                        "headerAction": "add"
                    }
                ]
            },
            "condition": {
                "createdBy": "atctest@akamai.com",
                "createdDate": "2019-12-15T04:30:46+0000",
                "modifiedBy": "atctest@akamai.com",
                "modifiedDate": "2020-01-06T19:58:52+0000",
                "conditionId": 47,
                "condition": {
                    "conditionNodeId": 1,
                    "values": [
                        "responseHeader"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 4,
                        "values": [
                            "Content-Type"
                        ],
                        "conditionNode": {
                            "conditionNodeId": 5,
                            "values": [
                                "hasAValue"
                            ],
                            "conditionNode": {
                                "conditionNodeId": 7,
                                "values": [
                                    "endsWith"
                                ],
                                "conditionNode": {
                                    "conditionNodeId": 4,
                                    "values": [
                                        "json"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        }
    ],
    "failures": [
        {
            "type": "resource.not.found",
            "title": "Resource not found",
            "requestField": "testCaseId",
            "requestValues": [
                308
            ]
        }
    ]
}
  1. Run the List functional test cases operation and store testCaseId values of functional test cases you want to clone.

  2. Build an array of objects. In each object include testCaseId and optionally, members you want to override.

  3. POST the array to /test-management/v2/functional/test-cases/clone.

List client profiles

Lists two client profiles that you can use in functional test cases. The response is an array of ClientProfile objects, each keyed by clientProfileId.

GET /test-management/v2/functional/client-profiles

Status 200 application/json

Object type: ClientProfile

Download schema: get-client-profiles-response.json

Response body:

[
    {
        "clientProfileId": 1,
        "geoLocation": "us",
        "ipVersion": "ipv6",
        "browser": {
            "name": "chrome",
            "version": "72"
        }
    },
    {
        "clientProfileId": 2,
        "geoLocation": "us",
        "ipVersion": "ipv4",
        "browser": {
            "name": "chrome",
            "version": "72"
        }
    }
]

Get a client profile

Returns details of a client profile.

GET /test-management/v2/functional/client-profiles/{clientProfileId}

Sample: /test-management/v2/functional/client-profiles/1

Parameter Type Sample Description
URL path parameters
clientProfileId Integer 1 Unique identifier of the client profiles.

Status 200 application/json

Object type: ClientProfile

Download schema: get-client-profile-response.json

Response body:

{
    "clientProfileId": 1,
    "geoLocation": "us",
    "ipVersion": "ipv6",
    "browser": {
        "name": "chrome",
        "version": "72"
    }
}
  1. Run the List client profiles operation and store the clientProfileId of the client profile you want to get details of.

  2. Make a GET request to /test-management/v2/functional/client-profiles/{clientProfileId}.

The operation responds with a ClientProfile object.

List functional test cases that use a client profile

Lists all functional test cases that use a client profile. The response is an array of FunctionalTestCase objects, each keyed by testCaseId.

GET /test-management/v2/functional/client-profiles/{clientProfileId}/associations/test-cases

Sample: /test-management/v2/functional/client-profiles/1/associations/test-cases

Parameter Type Sample Description
URL path parameters
clientProfileId Integer 1 Unique identifier of the client profiles.

Status 200 application/json

Object type: FunctionalTestCase

Download schema: get-functional-test-cases-response.json

Response body:

[
    {
        "testCaseId": 302,
        "createdBy": "atctest@akamai.com",
        "createdDate": "2020-01-07T06:25:07+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2020-01-07T06:25:07+0000",
        "clientProfile": {
            "clientProfileId": 1,
            "geoLocation": "us",
            "ipVersion": "ipv6",
            "browser": {
                "name": "chrome",
                "version": "72"
            }
        },
        "testRequest": {
            "testRequestId": 59,
            "testRequestUrl": "https://www.atcuser8.akamaiu.com/?abc=1234555",
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-31T08:52:57+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2020-01-03T09:26:09+0000",
            "requestHeaders": [
                {
                    "headerName": "Accept",
                    "headerValues": "v1",
                    "headerAction": "add"
                }
            ]
        },
        "condition": {
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-15T04:30:46+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2020-01-06T19:58:52+0000",
            "conditionId": 41,
            "condition": {
                "conditionNodeId": 1,
                "values": [
                    "responseHeader"
                ],
                "conditionNode": {
                    "conditionNodeId": 4,
                    "values": [
                        "Content-Type"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 5,
                        "values": [
                            "hasAValue"
                        ],
                        "conditionNode": {
                            "conditionNodeId": 7,
                            "values": [
                                "endsWith"
                            ],
                            "conditionNode": {
                                "conditionNodeId": 4,
                                "values": [
                                    "json"
                                ]
                            }
                        }
                    }
                }
            }
        }
    },
    {
        "testCaseId": 296,
        "createdBy": "atctest@akamai.com",
        "createdDate": "2020-01-03T11:28:04+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2020-01-03T11:28:41+0000",
        "clientProfile": {
            "clientProfileId": 1,
            "geoLocation": "us",
            "ipVersion": "ipv6",
            "browser": {
                "name": "chrome",
                "version": "72"
            }
        },
        "testRequest": {
            "testRequestId": 59,
            "testRequestUrl": "https://www.atcuser8.akamaiu.com/?abc=1234555",
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-31T08:52:57+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2020-01-03T09:26:09+0000",
            "requestHeaders": [
                {
                    "headerName": "Accept",
                    "headerValues": "v1",
                    "headerAction": "add"
                }
            ]
        },
        "condition": {
            "conditionId": 42,
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-05T09:10:22+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2019-12-05T09:10:22+0000",
            "condition": {
                "conditionNodeId": 1,
                "values": [
                    "originServer"
                ],
                "conditionNode": {
                    "conditionNodeId": 23,
                    "values": [
                        "is"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 4,
                        "values": [
                            "www.atcuser8.akamaiu.com"
                        ]
                    }
                }
            }
        }
    }
]
  1. Run the List client profiles operation and store the clientProfileId of the client profile for which you want to get a list of functional test cases.

  2. Make a GET request to /test-management/v2/functional/client-profiles/{clientProfileId}/associations/test-cases.

The operation responds with a FunctionalTestCase object.

List test requests

Lists all test requests created in your organization. The response is an array of TestRequest objects, each keyed by testRequestId.

GET /test-management/v2/functional/test-requests

Status 200 application/json

Object type: TestRequest

Download schema: get-test-requests-response.json

Response body:

[
    {
        "testRequestId": 11,
        "testRequestUrl": "http://www.atcuser8.akamaiu.com/images/logo.png",
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-11-15T15:42:50+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-11-15T15:42:50+0000",
        "tags": [
            "images"
        ],
        "requestHeaders": [
            {
                "headerName": "Accept",
                "headerValue": "image/png",
                "headerAction": "modify"
            }
        ]
    }
]

Create test requests

Creates a list of new test request. The operation responds with a partial-success 207 response that consists of two arrays, successes and failures. The successes array lists all test requests created successfully, whereas the failures array provides details on any remainders that failed. See Partial success responses.

POST /test-management/v2/functional/test-requests

Content-Type: application/json

Object type: TestRequest

Download schema: create-test-request-request.json

Request body:

[
    {
        "testRequestUrl": "http://www.atcuser8.akamaiu.com/images/logo.png",
        "tags": [
            "images"
        ],
        "requestHeaders": [
            {
                "headerName": "Accept",
                "headerValue": "image/png",
                "headerAction": "modify"
            }
        ]
    }
]

Status 207 application/json

Object type: TestRequest

Download schema: create-test-request-response.json

Response body:

{
    "failures": [],
    "successes": [
        {
            "testRequestId": 11,
            "testRequestUrl": "http://www.atcuser8.akamaiu.com/images/logo.png",
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-11-15T15:42:50+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2019-11-15T15:42:50+0000",
            "tags": [
                "images"
            ],
            "requestHeaders": [
                {
                    "headerName": "Accept",
                    "headerValue": "image/png",
                    "headerAction": "modify"
                }
            ]
        }
    ]
}
  1. Build an array of TestRequest objects.

  2. POST the array to /test-management/v2/functional/test-requests.

The operation responds with the created TestRequest object.

Get a test request

Returns details of a test request.

GET /test-management/v2/functional/test-requests/{testRequestId}

Sample: /test-management/v2/functional/test-requests/11

Parameter Type Sample Description
URL path parameters
testRequestId Integer 11 Unique identifier of the test request.

Status 200 application/json

Object type: TestRequest

Download schema: get-test-request-response.json

Response body:

{
    "testRequestId": 11,
    "testRequestUrl": "http://www.atcuser8.akamaiu.com/images/logo.png",
    "createdBy": "atctest@akamai.com",
    "createdDate": "2019-11-15T15:42:50+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2019-11-15T15:42:50+0000",
    "tags": [
        "images"
    ],
    "requestHeaders": [
        {
            "headerName": "Accept",
            "headerValue": "image/png",
            "headerAction": "modify"
        }
    ]
}
  1. Run the List test requests operation and store the testRequestId of the test request you want to get the details of.

  2. Make a GET request to /test-management/v2/functional/test-requests/{testRequestId}.

The operation responds with a TestRequest object.

Update a test request

Updates a test request. Optional, modifiable request members that are not included in the request are overridden by their default values.

PUT /test-management/v2/functional/test-requests/{testRequestId}

Sample: /test-management/v2/functional/test-requests/11

Content-Type: application/json

Object type: TestRequest

Download schema: update-test-request-request.json

Request body:

{
    "testRequestId": 11,
    "testRequestUrl": "http://www.atcuser8.akamaiu.com/assets/images/logo.png",
    "tags": [
        "images",
        "homepage"
    ],
    "requestHeaders": [
        {
            "headerName": "Accept",
            "headerValue": "image/png",
            "headerAction": "modify"
        }
    ]
}
Parameter Type Sample Description
URL path parameters
testRequestId Integer 11 Unique identifier of the test request.

Status 200 application/json

Object type: TestRequest

Download schema: get-test-request-response.json

Response body:

{
    "testRequestId": 11,
    "testRequestUrl": "http://www.atcuser8.akamaiu.com/assets/images/logo.png",
    "createdBy": "atctest@akamai.com",
    "createdDate": "2019-11-15T15:42:50+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2019-11-15T15:48:14+0000",
    "tags": [
        "images",
        "homepage"
    ],
    "requestHeaders": [
        {
            "headerName": "Accept",
            "headerValue": "image/png",
            "headerAction": "modify"
        }
    ]
}
  1. Run the List test requests operation and store the testRequestId of the test request you want to update.

  2. Run the Get a test request operation.

  3. Modify the returned TestRequest object.

  4. PUT the object to /test-management/v2/functional/test-requests/{testRequestId}.

The operation responds with the modified TestRequest object.

Delete a test request

Deletes a test request.

DELETE /test-management/v2/functional/test-requests/{testRequestId}

Sample: /test-management/v2/functional/test-requests/11

Parameter Type Sample Description
URL path parameters
testRequestId Integer 11 Unique identifier of the test request.

Status 204

  1. Run the List test requests operation and store the testRequestId of the test request you want to remove.

  2. Make a DELETE request to /test-management/v2/functional/test-requests/{testRequestId}.

List functional test cases that use a test request

Lists all functional test cases that use a test request. The response is an array of TestRequest objects, each keyed by testRequestId.

GET /test-management/v2/functional/test-requests/{testRequestId}/associations/test-cases

Sample: /test-management/v2/functional/test-requests/11/associations/test-cases

Parameter Type Sample Description
URL path parameters
testRequestId Integer 11 Unique identifier of the test request.

Status 200 application/json

Object type: FunctionalTestCase

Download schema: get-functional-test-cases-response.json

Response body:

[
    {
        "testCaseId": 309,
        "createdBy": "atctest@akamai.com",
        "createdDate": "2020-01-07T06:25:07+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2020-01-07T06:25:07+0000",
        "clientProfile": {
            "clientProfileId": 2,
            "geoLocation": "us",
            "ipVersion": "ipv4",
            "browser": {
                "name": "chrome",
                "version": "72"
            }
        },
        "testRequest": {
            "testRequestId": 11,
            "testRequestUrl": "http://www.atcuser8.akamaiu.com/images/logo.png",
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-11-15T15:42:50+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2019-11-15T15:42:50+0000",
            "tags": [
                "images"
            ],
            "requestHeaders": [
                {
                    "headerName": "Accept",
                    "headerValue": "image/png",
                    "headerAction": "modify"
                }
            ]
        },
        "condition": {
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-15T04:30:46+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2020-01-06T19:58:52+0000",
            "conditionId": 47,
            "condition": {
                "conditionNodeId": 1,
                "values": [
                    "responseHeader"
                ],
                "conditionNode": {
                    "conditionNodeId": 4,
                    "values": [
                        "Content-Type"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 5,
                        "values": [
                            "hasAValue"
                        ],
                        "conditionNode": {
                            "conditionNodeId": 7,
                            "values": [
                                "endsWith"
                            ],
                            "conditionNode": {
                                "conditionNodeId": 4,
                                "values": [
                                    "json"
                                ]
                            }
                        }
                    }
                }
            }
        }
    },
    {
        "testCaseId": 291,
        "createdBy": "atctest@akamai.com",
        "createdDate": "2020-01-03T11:28:04+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2020-01-03T11:28:41+0000",
        "clientProfile": {
            "clientProfileId": 2,
            "geoLocation": "us",
            "ipVersion": "ipv4",
            "browser": {
                "name": "chrome",
                "version": "72"
            }
        },
        "testRequest": {
            "testRequestId": 11,
            "testRequestUrl": "http://www.atcuser8.akamaiu.com/images/logo.png",
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-11-15T15:42:50+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2019-11-15T15:42:50+0000",
            "tags": [
                "images"
            ],
            "requestHeaders": [
                {
                    "headerName": "Accept",
                    "headerValue": "image/png",
                    "headerAction": "modify"
                }
            ]
        },
        "condition": {
            "conditionId": 42,
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-05T09:10:22+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2019-12-05T09:10:22+0000",
            "condition": {
                "conditionNodeId": 1,
                "values": [
                    "originServer"
                ],
                "conditionNode": {
                    "conditionNodeId": 23,
                    "values": [
                        "is"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 4,
                        "values": [
                            "www.atcuser8.akamaiu.com"
                        ]
                    }
                }
            }
        }
    }
]
  1. Run the List test requests operation and store the testRequestId of the test request for which you want to get a list of functional test cases.

  2. Make a GET request to /test-management/v2/functional/test-requests/{testRequestId}/associations/test-cases.

The operation responds with a FunctionalTestCase object.

Get the test catalog template

Returns the test catalog template used for creating conditions. See Test Center concepts.

GET /test-management/v2/functional/test-catalog/template

Status 200 application/json

Object type: TestCatalogTemplate

Download schema: get-test-catalog-template-response.json

Response body:

{
    "triggerMappings": {
        "conditionNodeId": 1,
        "triggers": [
            {
                "triggerValue": "responseHeader",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 4,
                    "triggers": [
                        {
                            "triggerValue": null,
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 5,
                                "triggers": [
                                    {
                                        "triggerValue": "hasAValue",
                                        "validPath": true,
                                        "conditionNode": {
                                            "conditionNodeId": 7,
                                            "triggers": [
                                                {
                                                    "triggerValue": "doesNotEndWith",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "beginsWith",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "doesNotEqual",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "doesNotContain",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "doesNotBeginWith",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "matchesRegex",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "doesNotMatchRegex",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "contains",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "endsWith",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "equals",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "hasNoValue",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "doesNotExist",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "exists",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "sureRoute",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 14,
                    "triggers": [
                        {
                            "triggerValue": "isEnabled",
                            "validPath": true,
                            "conditionNode": null
                        },
                        {
                            "triggerValue": "isNotEnabled",
                            "validPath": true,
                            "conditionNode": null
                        }
                    ]
                }
            },
            {
                "triggerValue": "responseCode",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 2,
                    "triggers": [
                        {
                            "triggerValue": "isOneOf",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 3,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "cacheKeyQueryParameters",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 19,
                    "triggers": [
                        {
                            "triggerValue": "included",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 25,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "notIncluded",
                            "validPath": true,
                            "conditionNode": null
                        }
                    ]
                }
            },
            {
                "triggerValue": "logRequestDetails",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 15,
                    "triggers": [
                        {
                            "triggerValue": "customData",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "isLogged",
                                        "validPath": true,
                                        "conditionNode": {
                                            "conditionNodeId": 6,
                                            "triggers": [
                                                {
                                                    "triggerValue": "value",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 23,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": "is",
                                                                "validPath": false,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 4,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": null,
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "isNotLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "referrerHeader",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "isLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "isNotLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "acceptLanguageHeader",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "isLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "isNotLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "userAgentHeader",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "isLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "isNotLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "hostHeader",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "isLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "isNotLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "cookies",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 24,
                                "triggers": [
                                    {
                                        "triggerValue": "logged",
                                        "validPath": false,
                                        "conditionNode": {
                                            "conditionNodeId": 17,
                                            "triggers": [
                                                {
                                                    "triggerValue": null,
                                                    "validPath": true,
                                                    "conditionNode": null
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "notLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "originServer",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 23,
                    "triggers": [
                        {
                            "triggerValue": "is",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 4,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "lastMileAcceleration",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 22,
                    "triggers": [
                        {
                            "triggerValue": "isGzipped",
                            "validPath": true,
                            "conditionNode": null
                        },
                        {
                            "triggerValue": "isNotGzipped",
                            "validPath": true,
                            "conditionNode": null
                        }
                    ]
                }
            },
            {
                "triggerValue": "cpCode",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 23,
                    "triggers": [
                        {
                            "triggerValue": "is",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 9,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "ignoreCaseInCacheKey",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 14,
                    "triggers": [
                        {
                            "triggerValue": "isEnabled",
                            "validPath": true,
                            "conditionNode": null
                        },
                        {
                            "triggerValue": "isNotEnabled",
                            "validPath": true,
                            "conditionNode": null
                        }
                    ]
                }
            },
            {
                "triggerValue": "redirect",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 2,
                    "triggers": [
                        {
                            "triggerValue": "isOneOf",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 13,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true,
                                        "conditionNode": {
                                            "conditionNodeId": 18,
                                            "triggers": [
                                                {
                                                    "triggerValue": "location",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 23,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": "is",
                                                                "validPath": false,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 4,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": null,
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "prefetchObjects",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 20,
                    "triggers": [
                        {
                            "triggerValue": "isNotTriggered",
                            "validPath": true,
                            "conditionNode": null
                        },
                        {
                            "triggerValue": "isTriggered",
                            "validPath": true,
                            "conditionNode": null
                        }
                    ]
                }
            },
            {
                "triggerValue": "tieredDistribution",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 14,
                    "triggers": [
                        {
                            "triggerValue": "isEnabled",
                            "validPath": true,
                            "conditionNode": null
                        },
                        {
                            "triggerValue": "isNotEnabled",
                            "validPath": true,
                            "conditionNode": null
                        }
                    ]
                }
            },
            {
                "triggerValue": "cachingOption",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 23,
                    "triggers": [
                        {
                            "triggerValue": "is",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 10,
                                "triggers": [
                                    {
                                        "triggerValue": "cache",
                                        "validPath": false,
                                        "conditionNode": {
                                            "conditionNodeId": 11,
                                            "triggers": [
                                                {
                                                    "triggerValue": "seconds",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 9,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": null
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "minutes",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 9,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": null
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "hours",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 9,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": null
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "days",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 9,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": null
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "no-store",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "bypass-cache",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "variable",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 4,
                    "triggers": [
                        {
                            "triggerValue": null,
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 5,
                                "triggers": [
                                    {
                                        "triggerValue": "hasAValue",
                                        "validPath": true,
                                        "conditionNode": {
                                            "conditionNodeId": 7,
                                            "triggers": [
                                                {
                                                    "triggerValue": "doesNotEndWith",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "beginsWith",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "doesNotEqual",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "doesNotContain",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "doesNotBeginWith",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "matchesRegex",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "doesNotMatchRegex",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "contains",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "endsWith",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "equals",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "hasNoValue",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "doesNotExist",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "exists",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        }
                    ]
                }
            }
        ]
    },
    "conditionNodes": [
        {
            "conditionNodeId": 7,
            "conditionNodeDescription": "Multiple string test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "doesNotEqual",
                    "doesNotBeginWith",
                    "contains",
                    "endsWith",
                    "beginsWith",
                    "equals",
                    "doesNotContain",
                    "doesNotEndWith",
                    "matchesRegex",
                    "doesNotMatchRegex"
                ]
            }
        },
        {
            "conditionNodeId": 1,
            "conditionNodeDescription": "Root condition nodes",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "responseCode",
                    "originServer",
                    "sureRoute",
                    "ignoreCaseInCacheKey",
                    "cacheKeyQueryParameters",
                    "prefetchObjects",
                    "lastMileAcceleration",
                    "tieredDistribution",
                    "responseHeader",
                    "variable",
                    "logRequestDetails",
                    "cpCode",
                    "cachingOption",
                    "redirect"
                ]
            }
        },
        {
            "conditionNodeId": 16,
            "conditionNodeDescription": "Is and is not logged test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "isLogged",
                    "isNotLogged"
                ]
            }
        },
        {
            "conditionNodeId": 15,
            "conditionNodeDescription": "Log request values",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "hostHeader",
                    "customData",
                    "referrerHeader",
                    "userAgentHeader",
                    "acceptLanguageHeader",
                    "cookies"
                ]
            }
        },
        {
            "conditionNodeId": 11,
            "conditionNodeDescription": "Time units",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "days",
                    "minutes",
                    "hours",
                    "seconds"
                ]
            }
        },
        {
            "conditionNodeId": 24,
            "conditionNodeDescription": "Logged/not logged test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "notLogged",
                    "logged"
                ]
            }
        },
        {
            "conditionNodeId": 10,
            "conditionNodeDescription": "Caching options",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "cache",
                    "no-store",
                    "bypass-cache"
                ]
            }
        },
        {
            "conditionNodeId": 20,
            "conditionNodeDescription": "Is and is not triggered test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "isNotTriggered",
                    "isTriggered"
                ]
            }
        },
        {
            "conditionNodeId": 23,
            "conditionNodeDescription": "Is test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "is"
                ]
            }
        },
        {
            "conditionNodeId": 5,
            "conditionNodeDescription": "Exists or does not exists test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "hasAValue",
                    "hasNoValue",
                    "doesNotExist",
                    "exists"
                ]
            }
        },
        {
            "conditionNodeId": 3,
            "conditionNodeDescription": "User input to select multiple response codes",
            "valueControls": {
                "valueDataType": "integer",
                "valueInputType": "multiple_choice",
                "newValueSupported": true,
                "availableValues": [
                    300,
                    200,
                    400,
                    500
                ]
            }
        },
        {
            "conditionNodeId": 14,
            "conditionNodeDescription": "Is and is not enabled test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "isEnabled",
                    "isNotEnabled"
                ]
            }
        },
        {
            "conditionNodeId": 22,
            "conditionNodeDescription": "Is and is not gzipped test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "isNotGzipped",
                    "isGzipped"
                ]
            }
        },
        {
            "conditionNodeId": 8,
            "conditionNodeDescription": "String ignore case test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "ignoreCase"
                ]
            }
        },
        {
            "conditionNodeId": 6,
            "conditionNodeDescription": "Input value select",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "value"
                ]
            }
        },
        {
            "conditionNodeId": 19,
            "conditionNodeDescription": "Included/not included test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "included",
                    "notIncluded"
                ]
            }
        },
        {
            "conditionNodeId": 2,
            "conditionNodeDescription": "Is one of test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "isOneOf"
                ]
            }
        },
        {
            "conditionNodeId": 13,
            "conditionNodeDescription": "User input to select multiple redirect(3xx) response codes",
            "valueControls": {
                "valueDataType": "integer",
                "valueInputType": "multiple_choice",
                "newValueSupported": true,
                "availableValues": [
                    301,
                    302
                ]
            }
        },
        {
            "conditionNodeId": 12,
            "conditionNodeDescription": "String equals test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "equals"
                ]
            }
        },
        {
            "conditionNodeId": 18,
            "conditionNodeDescription": "Redirect url(location) test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "location"
                ]
            }
        },
        {
            "conditionNodeId": 25,
            "conditionNodeDescription": "User input to enter multiple string in order",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "multiple_choice",
                "newValueSupported": true,
                "availableValues": []
            }
        },
        {
            "conditionNodeId": 17,
            "conditionNodeDescription": "User input to enter multiple string",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "multiple_choice",
                "newValueSupported": true,
                "availableValues": []
            }
        },
        {
            "conditionNodeId": 9,
            "conditionNodeDescription": "User input to enter a integer",
            "valueControls": {
                "valueDataType": "integer",
                "valueInputType": "free_text",
                "newValueSupported": true,
                "availableValues": []
            }
        },
        {
            "conditionNodeId": 4,
            "conditionNodeDescription": "User input to enter a string",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "free_text",
                "newValueSupported": true,
                "availableValues": []
            }
        }
    ]
}

List conditions

Lists all conditions created in your organization. The response is an array of Condition objects, each keyed by conditionId.

GET /test-management/v2/functional/test-catalog/conditions

Status 200 application/json

Object type: Condition

Download schema: get-conditions-response.json

Response body:

[
    {
        "conditionId": 47,
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-12-15T04:30:46+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-12-15T04:30:46+0000",
        "condition": {
            "conditionNodeId": 1,
            "values": [
                "responseCode"
            ],
            "conditionNode": {
                "conditionNodeId": 2,
                "values": [
                    "isOneOf"
                ],
                "conditionNode": {
                    "conditionNodeId": 3,
                    "values": [
                        200,
                        201
                    ]
                }
            }
        }
    },
    {
        "conditionId": 49,
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-12-15T04:30:46+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2020-01-06T19:58:52+0000",
        "condition": {
            "conditionNodeId": 1,
            "values": [
                "responseHeader"
            ],
            "conditionNode": {
                "conditionNodeId": 4,
                "values": [
                    "Content-Type"
                ],
                "conditionNode": {
                    "conditionNodeId": 5,
                    "values": [
                        "hasAValue"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 7,
                        "values": [
                            "endsWith"
                        ],
                        "conditionNode": {
                            "conditionNodeId": 4,
                            "values": [
                                "json"
                            ]
                        }
                    }
                }
            }
        }
    }
]

Create a condition

Creates a new condition.

POST /test-management/v2/functional/test-catalog/conditions

Content-Type: application/json

Object type: Condition

Download schema: create-condition-request.json

Request body:

{
    "condition": {
        "conditionNodeId": 1,
        "values": [
            "responseCode"
        ],
        "conditionNode": {
            "conditionNodeId": 2,
            "values": [
                "isOneOf"
            ],
            "conditionNode": {
                "conditionNodeId": 3,
                "values": [
                    200,
                    201
                ]
            }
        }
    }
}

Status 201 application/json

Object type: Condition

Download schema: get-condition-response.json

Response body:

{
    "conditionId": 47,
    "createdBy": "atctest@akamai.com",
    "createdDate": "2019-12-15T04:30:46+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2019-12-15T04:30:46+0000",
    "condition": {
        "conditionNodeId": 1,
        "values": [
            "responseCode"
        ],
        "conditionNode": {
            "conditionNodeId": 2,
            "values": [
                "isOneOf"
            ],
            "conditionNode": {
                "conditionNodeId": 3,
                "values": [
                    200,
                    201
                ]
            }
        }
    }
}
  1. Run the Get test catalog template operation.

  2. In the template, go to the conditionNodes array, search for the conditionNodeId of 1, and store one of the values from availableValues.

  3. Build the Condition object and enter the stored value in the first values member of your request. Note that the subsequent conditionNode objects depend on the selected value.

  4. Refer to the template’s triggerMappings array, search for the triggerValue member matching the previously selected value, and store its conditionNodeId.

  5. In the template’s conditionNodes array, search for the conditionNodeId of the triggered value.

  6. Based on the description from the conditionNode array for the triggered conditionNodeId, enter proper values into the subsequent values member of your request.

  7. Continue creating the condition until validPath for the triggerValue is true.

  8. POST the object to /test-management/v2/functional/test-catalog/conditions.

The operation responds with the Condition object.

Get a condition

Returns details of a condition.

GET /test-management/v2/functional/test-catalog/conditions/{conditionId}

Sample: /test-management/v2/functional/test-catalog/conditions/47

Parameter Type Sample Description
URL path parameters
conditionId Integer 47 Unique identifier of the condition.

Status 200 application/json

Object type: Condition

Download schema: get-condition-response.json

Response body:

{
    "conditionId": 47,
    "createdBy": "atctest@akamai.com",
    "createdDate": "2019-12-15T04:30:46+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2019-12-15T04:30:46+0000",
    "condition": {
        "conditionNodeId": 1,
        "values": [
            "responseCode"
        ],
        "conditionNode": {
            "conditionNodeId": 2,
            "values": [
                "isOneOf"
            ],
            "conditionNode": {
                "conditionNodeId": 3,
                "values": [
                    200,
                    201
                ]
            }
        }
    }
}
  1. Run the List conditions operation and store the conditionId of the condition you want to get details of.

  2. Make a GET request to /test-management/v2/functional/test-catalog/conditions/{conditionId}.

The operation responds with a Condition object.

Update a condition

Updates a condition. Optional, modifiable request members that are not included in the request are overridden by their default values.

PUT /test-management/v2/functional/test-catalog/conditions/{conditionId}

Sample: /test-management/v2/functional/test-catalog/conditions/47

Content-Type: application/json

Object type: Condition

Download schema: update-condition-request.json

Request body:

{
    "condition": {
        "conditionNodeId": 1,
        "values": [
            "responseHeader"
        ],
        "conditionNode": {
            "conditionNodeId": 4,
            "values": [
                "Content-Type"
            ],
            "conditionNode": {
                "conditionNodeId": 5,
                "values": [
                    "hasAValue"
                ],
                "conditionNode": {
                    "conditionNodeId": 7,
                    "values": [
                        "endsWith"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 4,
                        "values": [
                            "json"
                        ]
                    }
                }
            }
        }
    }
}
Parameter Type Sample Description
URL path parameters
conditionId Integer 47 Unique identifier of the condition.

Status 200 application/json

Object type: Condition

Download schema: get-condition-response.json

Response body:

{
    "conditionId": 47,
    "createdBy": "atctest@akamai.com",
    "createdDate": "2019-12-15T04:30:46+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2020-01-06T19:58:52+0000",
    "condition": {
        "conditionNodeId": 1,
        "values": [
            "responseHeader"
        ],
        "conditionNode": {
            "conditionNodeId": 4,
            "values": [
                "Content-Type"
            ],
            "conditionNode": {
                "conditionNodeId": 5,
                "values": [
                    "hasAValue"
                ],
                "conditionNode": {
                    "conditionNodeId": 7,
                    "values": [
                        "endsWith"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 4,
                        "values": [
                            "json"
                        ]
                    }
                }
            }
        }
    }
}
  1. Run the List conditions operation and store the conditionId of the condition you want to update.

  2. Run the Get a condition operation.

  3. Modify the returned Condition object.

  4. PUT the object to /test-management/v2/functional/test-catalog/conditions/{conditionId}.

The operation responds with the modified Condition object.

Delete a condition

Deletes a condition.

DELETE /test-management/v2/functional/test-catalog/conditions/{conditionId}

Sample: /test-management/v2/functional/test-catalog/conditions/47

Parameter Type Sample Description
URL path parameters
conditionId Integer 47 Unique identifier of the condition.

Status 204

  1. Run the List conditions operation and store conditionId values of the conditions you want to remove.

  2. Make a DELETE request to /test-management/v2/functional/test-catalog/conditions/{conditionId}.

List functional test cases that use a condition

Lists all functional test cases that use a condition. The response is an array of FunctionalTestCase objects, each keyed by testCaseId.

GET /test-management/v2/functional/test-catalog/conditions/{conditionId}/associations/test-cases

Sample: /test-management/v2/functional/test-catalog/conditions/47/associations/test-cases

Parameter Type Sample Description
URL path parameters
conditionId Integer 47 Unique identifier of the condition.

Status 200 application/json

Object type: FunctionalTestCase

Download schema: get-functional-test-cases-response.json

Response body:

[
    {
        "testCaseId": 304,
        "createdBy": "atctest@akamai.com",
        "createdDate": "2020-01-07T06:25:07+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2020-01-07T06:25:07+0000",
        "clientProfile": {
            "clientProfileId": 2,
            "geoLocation": "us",
            "ipVersion": "ipv4",
            "browser": {
                "name": "chrome",
                "version": "72"
            }
        },
        "testRequest": {
            "testRequestId": 59,
            "testRequestUrl": "https://www.atcuser8.akamaiu.com/?abc=1234555",
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-31T08:52:57+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2020-01-03T09:26:09+0000",
            "requestHeaders": [
                {
                    "headerName": "Accept",
                    "headerValues": "v1",
                    "headerAction": "add"
                }
            ]
        },
        "condition": {
            "conditionId": 47,
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-15T04:30:46+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2019-12-15T04:30:46+0000",
            "condition": {
                "conditionNodeId": 1,
                "values": [
                    "responseCode"
                ],
                "conditionNode": {
                    "conditionNodeId": 2,
                    "values": [
                        "isOneOf"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 3,
                        "values": [
                            200,
                            201
                        ]
                    }
                }
            }
        }
    },
    {
        "testCaseId": 297,
        "createdBy": "atctest@akamai.com",
        "createdDate": "2020-01-03T11:28:04+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2020-01-03T11:28:41+0000",
        "clientProfile": {
            "clientProfileId": 1,
            "geoLocation": "us",
            "ipVersion": "ipv6",
            "browser": {
                "name": "chrome",
                "version": "72"
            }
        },
        "testRequest": {
            "testRequestId": 59,
            "testRequestUrl": "https://www.atcuser8.akamaiu.com/?abc=1234555",
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-31T08:52:57+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2020-01-03T09:26:09+0000",
            "requestHeaders": [
                {
                    "headerName": "Accept",
                    "headerValues": "v1",
                    "headerAction": "add"
                }
            ]
        },
        "condition": {
            "conditionId": 47,
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-12-15T04:30:46+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2019-12-15T04:30:46+0000",
            "condition": {
                "conditionNodeId": 1,
                "values": [
                    "responseCode"
                ],
                "conditionNode": {
                    "conditionNodeId": 2,
                    "values": [
                        "isOneOf"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 3,
                        "values": [
                            200,
                            201
                        ]
                    }
                }
            }
        }
    }
]
  1. Run the List conditions operation and store the conditionId of the condition for which you want to get a list of functional test cases.

  2. Make a GET request to /test-management/v2/functional/test-catalog/conditions/{conditionId}/associations/test-cases.

The operation responds with a FunctionalTestCase object.

Get transaction details for a functional test case

Returns transaction details for a URL of the test request in functional testing.

GET /test-management/v2/functional/test-case-executions/{testCaseExecutionId}/raw-request-response

Sample: /test-management/v2/functional/test-case-executions/22/raw-request-response

Parameter Type Sample Description
URL path parameters
testCaseExecutionId Integer 22 Unique identifier of the functional test case execution.

Status 200 application/json

Object type: FunctionalRawTransaction

Download schema: get-functional-raw-request-response.json

Response body:

{
    "request": {
        "method": "GET",
        "url": "http://www.atcuser3.akamaiu.com/catalog/view/theme/akamai/image/icon_currency.png",
        "httpVersion": "HTTP/1.1",
        "headersSize": 658,
        "bodySize": 0,
        "comment": "",
        "cookies": [],
        "queryString": [],
        "headers": [
            {
                "name": "Host",
                "value": "www.atcuser3.akamaiu.com"
            },
            {
                "name": "Proxy-Connection",
                "value": "keep-alive"
            },
            {
                "name": "Upgrade-Insecure-Requests",
                "value": "1"
            },
            {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36"
            },
            {
                "name": "Accept",
                "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"
            },
            {
                "name": "Accept-Encoding",
                "value": "gzip, deflate"
            },
            {
                "name": "Accept-Language",
                "value": "en-US,en;q=0.9"
            },
            {
                "name": "Content-Length",
                "value": "0"
            }
        ]
    },
    "response": {
        "status": 200,
        "statusText": "OK",
        "httpVersion": "HTTP/1.1",
        "redirectURL": "",
        "headersSize": 2147,
        "bodySize": 738,
        "comment": "",
        "cookies": [],
        "content": {
            "size": 0,
            "mimeType": "image/png",
            "comment": "",
            "text": null,
            "compression": 0
        },
        "headers": [
            {
                "name": "Server",
                "value": "Apache/2.4.7 (Ubuntu)"
            },
            {
                "name": "Connection",
                "value": "keep-alive"
            },
            {
                "name": "Last-Modified",
                "value": "Sat, 26 Sep 2009 07:15:08 GMT"
            },
            {
                "name": "Date",
                "value": "Mon, 16 Dec 2019 12:48:32 GMT"
            },
            {
                "name": "Accept-Ranges",
                "value": "bytes"
            },
            {
                "name": "X-Akamai-Staging",
                "value": "EdgeSuite"
            },
            {
                "name": "X-Akamai-Staging",
                "value": "EdgeSuite"
            },
            {
                "name": "Cache-Control",
                "value": "max-age=604800"
            },
            {
                "name": "ETag",
                "value": "\"2e2-47475d311d700\""
            },
            {
                "name": "Vary",
                "value": "Accept-Encoding"
            },
            {
                "name": "Expires",
                "value": "Mon, 23 Dec 2019 12:48:32 GMT"
            },
            {
                "name": "Content-Length",
                "value": "738"
            },
            {
                "name": "Content-Type",
                "value": "image/png"
            }
        ]
    }
}
  1. Run the List test runs operation and store the testCaseExecutionId of the comparative test case execution you want to get the details of.

  2. Make a GET request to /test-management/v2/functional/test-case-executions/{testCaseExecutionId}/raw-request-response.

The operation responds with a FunctionalRawTransaction object.

List test definitions

Lists all test definitions created in your organization. The response is an array of TestDefinition objects, each keyed by testDefinitionId.

GET /test-management/v2/comparative/test-definitions

Status 200 application/json

Object type: TestDefinition

Download schema: get-test-definitions-response.json

Response body:

[
    {
        "testDefinitionId": 738,
        "hostname": "www.example-weather.com",
        "testDefinitionName": "Weather Test",
        "testDefinitionDescription": "Testing weather prefetch configurations",
        "createdBy": "atctestuser",
        "modifiedBy": "atctestuser",
        "createdDate": "2018-03-16T10:46:21+0000",
        "modifiedDate": "2018-03-16T10:46:22+0000",
        "ipVersions": [
            "ipv6"
        ]
    },
    {
        "testDefinitionId": 495,
        "hostname": "www.example-weather-config-1.com",
        "testDefinitionName": "Weather Test Config 1",
        "createdBy": "atctestuser",
        "modifiedBy": "atctestuser",
        "createdDate": "2018-03-11T17:45:27+0000",
        "modifiedDate": "2018-03-22T10:56:45+0000",
        "ipVersions": [
            "ipv4"
        ]
    },
    {
        "testDefinitionId": 740,
        "hostname": "www.example-weather-config-2.com",
        "testDefinitionName": "Weather Test Config 2",
        "testDefinitionDescription": "Testing weather prefetch configurations (config 2)",
        "createdBy": "atctestuser",
        "modifiedBy": "atctestuser",
        "createdDate": "2018-03-16T10:46:21+0000",
        "modifiedDate": "2018-03-16T10:46:22+0000",
        "ipVersions": [
            "ipv4",
            "ipv6"
        ]
    }
]

Create a new test definition

Creates a new test definition. Specify a hostname for which you’re using Property Manager to deliver content. Hostnames that use Instant Config, Slot Matching, or Zone Apex Mapping do not work. Once you specify a hostname, you cannot change it.

POST /test-management/v2/comparative/test-definitions

Content-Type: application/json

Object type: TestDefinition

Download schema: create-test-definition-request.json

Request body:

{
    "hostname": "www.example-weather.com",
    "testDefinitionName": "Weather Test",
    "testDefinitionDescription": "Testing weather prefetch configurations",
    "ipVersions": [
        "ipv6"
    ]
}

Status 201 application/json

Object type: TestDefinition

Download schema: get-test-definition-response.json

Response body:

{
    "testDefinitionId": 738,
    "hostname": "www.example-weather.com",
    "testDefinitionName": "Weather Test",
    "testDefinitionDescription": "Testing weather prefetch configurations",
    "createdBy": "atctestuser",
    "modifiedBy": "atctestuser",
    "createdDate": "2018-03-16T10:46:21+0000",
    "modifiedDate": "2018-03-16T10:46:22+0000",
    "status": "active",
    "ipVersions": [
        "ipv6"
    ]
}
  1. Build a new TestDefinition object.

  2. POST the object to /test-management/v2/comparative/test-definitions.

The operation responds with the created TestDefinition object.

Get a test definition

Returns details of a test definition, including its status. To check the included test cases, run the List comparative test cases operation.

GET /test-management/v2/comparative/test-definitions/{testDefinitionId}

Sample: /test-management/v2/comparative/test-definitions/738

Parameter Type Sample Description
URL path parameters
testDefinitionId Integer 738 Unique identifier for test definition.

Status 200 application/json

Object type: TestDefinition

Download schema: get-test-definition-response.json

Response body:

{
    "testDefinitionId": 738,
    "hostname": "www.example-weather.com",
    "testDefinitionName": "Weather Test",
    "testDefinitionDescription": "Testing weather prefetch configurations",
    "createdBy": "atctestuser",
    "modifiedBy": "atctestuser",
    "createdDate": "2018-03-16T10:46:21+0000",
    "modifiedDate": "2018-03-16T10:46:22+0000",
    "status": "active",
    "ipVersions": [
        "ipv6"
    ]
}
  1. Run the List test definitions operation and store the testDefinitionId of the test definition which you want to get the details of.

  2. Make a GET request to /test-management/v2/comparative/test-definitions/{testDefinitionId}.

The operation responds with a TestDefinition object.

Update a test definition

Updates a test definition except for its hostname, which you set once when creating the test definition.

PUT /test-management/v2/comparative/test-definitions/{testDefinitionId}

Sample: /test-management/v2/comparative/test-definitions/738

Content-Type: application/json

Object type: TestDefinition

Download schema: update-test-definition-request.json

Request body:

{
    "testDefinitionId": 738,
    "hostname": "www.example-weather.com",
    "testDefinitionName": "Weather Test (edited)",
    "testDefinitionDescription": "Testing weather prefetch configurations (edited)",
    "ipVersions": [
        "ipv6"
    ]
}
Parameter Type Sample Description
URL path parameters
testDefinitionId Integer 738 Unique identifier for test definition.

Status 200 application/json

Object type: TestDefinition

Download schema: get-test-definition-response.json

Response body:

{
    "testDefinitionId": 738,
    "hostname": "www.example-weather.com",
    "testDefinitionName": "Weather Test (edited)",
    "testDefinitionDescription": "Testing weather prefetch configurations (edited)",
    "createdBy": "atctestuser",
    "modifiedBy": "atctestuser",
    "createdDate": "2018-03-16T10:46:21+0000",
    "modifiedDate": "2018-04-10T06:45:58+0000",
    "ipVersions": [
        "ipv6"
    ]
}
  1. Run the List test definitions operation and store the testDefinitionId of the test definition which you want to update.

  2. Run the Get a test definition operation.

  3. Modify the returned TestDefinition object. You can’t modify the hostname value.

  4. PUT the object to /test-management/v2/comparative/test-definitions/{testDefinitionId}.

The operation responds with the modified TestDefinition object.

Remove a test definition

Removes a test definition. When you remove a test definition and make a GET request for it, its status is inactive. The API retains removed test definitions for 30 days from the date of the removal. After that, you receive a 404 error if you try to get it.

POST /test-management/v2/comparative/test-definitions/{testDefinitionId}/remove

Sample: /test-management/v2/comparative/test-definitions/738/remove

Parameter Type Sample Description
URL path parameters
testDefinitionId Integer 738 Unique identifier for test definition.

Status 204

  1. Run the List test definitions operation and store the testDefinitionId of the test definition which you want to remove.

  2. Make a POST request to /test-management/v2/comparative/test-definitions/{testDefinitionId}/remove.

Clone a test definition

Clones a test definition. Cloned test definitions have the same hostname and associated configuration as the source test definition. The operation also clones the included comparative test cases. If an optional request member of the request is missing, Test Center uses the value from the source test suite.

POST /test-management/v2/comparative/test-definitions/{testDefinitionId}/clone

Sample: /test-management/v2/comparative/test-definitions/738/clone

Content-Type: application/json

Object type: TestDefinition

Download schema: clone-test-definition-request.json

Request body:

{
    "testDefinitionId": 738,
    "hostname": "www.example-weather-config-1.com",
    "testDefinitionName": "Copy of Weather Test",
    "testDefinitionDescription": "Creating a copy of Weather Test",
    "createdBy": "atctestuser",
    "modifiedBy": "atctestuser",
    "createdDate": "2018-03-16T10:46:21+0000",
    "modifiedDate": "2018-04-10T06:45:58+0000"
}
Parameter Type Sample Description
URL path parameters
testDefinitionId Integer 738 Unique identifier for test definition.

Status 201 application/json

Object type: TestDefinition

Download schema: get-test-definition-response.json

Response body:

{
    "testDefinitionId": 3753,
    "hostname": "www.example-weather-config-1.com",
    "testDefinitionName": "Copy of Weather Test",
    "testDefinitionDescription": "Creating a copy of Weather Test",
    "createdBy": "atctestuser",
    "createdDate": "2018-04-10T06:47:16+0000",
    "ipVersions": [
        "ipv6"
    ]
}
  1. Run the List test definitions operation and store the testDefinitionId of the test definition which you want to clone.

  2. Build an object specifying the stored testDefinitionId and optionally, members you want to override.

  3. POST the object to /test-management/v2/comparative/test-definitions/{testDefinitionId}/clone.

The operation responds with a TestDefinition object.

List comparative test cases included in a test definition

Lists all comparative test cases included in a test definition.

GET /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases

Sample: /test-management/v2/comparative/test-definitions/738/test-cases

Parameter Type Sample Description
URL path parameters
testDefinitionId Integer 738 Unique identifier for test definition.

Status 200 application/json

Object type: ComparativeTestCase

Download schema: get-test-cases-response.json

Response body:

[
    {
        "testCaseId": 1855,
        "testDefinitionId": 738,
        "url": "https://www.example-weather.com/",
        "testCaseName": "Base Page",
        "testCaseDescription": "Base Page Test",
        "runOrder": 1,
        "createdBy": "atctestuser",
        "modifiedBy": "atctestuser",
        "createdDate": "2018-03-16T10:46:23+0000",
        "modifiedDate": "2018-03-16T10:46:28+0000",
        "comparisonSettings": {
            "responseCode": {
                "isEnabled": true,
                "includeEmbeddedObjects": true
            },
            "responseHeaders": {
                "isEnabled": true,
                "includeEmbeddedObjects": true,
                "compareOnly": [],
                "compareAllExcept": [
                    "Age",
                    "Date",
                    "Expires",
                    "Server",
                    "Via",
                    "Set-Cookie",
                    "Cache-Control"
                ]
            },
            "cpcode": {
                "isEnabled": true,
                "includeEmbeddedObjects": true
            },
            "cachingOption": {
                "isEnabled": true,
                "includeEmbeddedObjects": true
            },
            "cacheKey": {
                "isEnabled": true,
                "includeEmbeddedObjects": true
            },
            "metadataVariables": {
                "isEnabled": true,
                "includeEmbeddedObjects": true,
                "compareOnly": [],
                "compareAllExcept": [
                    "RUM_IS_IPV6",
                    "RUA_OUT_IS_APPLIED",
                    "RUM_XHR_TEST",
                    "RUM_CLIENT_TO_MAPPING_PCT",
                    "RANDOM_SAMPLE",
                    "RUM_IMPL_PM_GROUPID",
                    "RUM_IMPL_PM_GROUPNAME",
                    "RUM_IMPL_PM_PRODUCT",
                    "RUM_DEBUG"
                ]
            },
            "originServer": {
                "isEnabled": true,
                "includeEmbeddedObjects": true
            }
        },
        "requestHeaders": [
            {
                "headerName": "Max-Forwards",
                "headerAction": "add",
                "headerValues": "10"
            }
        ]
    },
    {
        "testCaseId": 1866,
        "testDefinitionId": 738,
        "url": "https://www.example-weather.com/accounts",
        "testCaseName": "Accounts page",
        "testCaseDescription": "Accounts page test",
        "runOrder": 2,
        "createdBy": "atctestuser",
        "modifiedBy": "atctestuser",
        "createdDate": "2018-03-16T10:46:24+0000",
        "modifiedDate": "2018-03-16T10:46:30+0000",
        "requestHeaders": [],
        "comparisonSettings": {
            "responseCode": {
                "isEnabled": true,
                "includeEmbeddedObjects": true
            },
            "cpcode": {
                "isEnabled": true,
                "includeEmbeddedObjects": true
            },
            "cachingOption": {
                "isEnabled": true,
                "includeEmbeddedObjects": true
            },
            "cacheKey": {
                "isEnabled": true,
                "includeEmbeddedObjects": true
            },
            "metadataVariables": {
                "isEnabled": true,
                "includeEmbeddedObjects": true,
                "compareOnly": [],
                "compareAllExcept": [
                    "RUM_IS_IPV6",
                    "RUA_OUT_IS_APPLIED",
                    "RUM_XHR_TEST",
                    "RUM_CLIENT_TO_MAPPING_PCT",
                    "RANDOM_SAMPLE"
                ]
            },
            "originServer": {
                "isEnabled": true,
                "includeEmbeddedObjects": true
            },
            "responseHeaders": {
                "isEnabled": true,
                "includeEmbeddedObjects": true,
                "compareOnly": [],
                "compareAllExcept": [
                    "Age",
                    "Date",
                    "Expires",
                    "Server",
                    "Via",
                    "Set-Cookie",
                    "Cache-Control"
                ]
            }
        }
    }
]
  1. Run the List test definitions operation and store the testDefinitionId of the test definition for which you want to get the list of included comparative test cases.

  2. Make a GET request to /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases.

The operation responds with an array of ComparativeTestCase objects.

Create a comparative test case

Creates a comparative test case and includes it in a test definition. The hostname of the url you provide needs to match the hostname in the test definition the test case belongs to. You can’t test authenticated content.

POST /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases

Sample: /test-management/v2/comparative/test-definitions/738/test-cases

Content-Type: application/json

Object type: ComparativeTestCase

Download schema: create-test-case-request.json

Request body:

{
    "testDefinitionId": 738,
    "url": "https://www.example-weather.com/",
    "testCaseName": "Base Page",
    "testCaseDescription": "Base Page Test",
    "comparisonSettings": {
        "responseCode": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "responseHeaders": {
            "isEnabled": true,
            "includeEmbeddedObjects": true,
            "compareOnly": [],
            "compareAllExcept": [
                "Age",
                "Date",
                "Expires",
                "Server",
                "Via",
                "Set-Cookie",
                "Cache-Control"
            ]
        },
        "cpcode": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "cachingOption": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "cacheKey": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "metadataVariables": {
            "isEnabled": true,
            "includeEmbeddedObjects": true,
            "compareOnly": [],
            "compareAllExcept": [
                "RUM_IS_IPV6",
                "RUA_OUT_IS_APPLIED",
                "RUM_XHR_TEST",
                "RUM_CLIENT_TO_MAPPING_PCT",
                "RANDOM_SAMPLE",
                "RUM_IMPL_PM_GROUPID",
                "RUM_IMPL_PM_GROUPNAME",
                "RUM_IMPL_PM_PRODUCT",
                "RUM_DEBUG"
            ]
        },
        "originServer": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        }
    },
    "requestHeaders": [
        {
            "headerName": "Max-Forwards",
            "headerAction": "add",
            "headerValues": "10"
        }
    ]
}
Parameter Type Sample Description
URL path parameters
testDefinitionId Integer 738 Unique identifier for test definition.

Status 201 application/json

Object type: ComparativeTestCase

Download schema: get-test-case-response.json

Response body:

{
    "testCaseId": 1855,
    "testDefinitionId": 738,
    "url": "https://www.example-weather.com/",
    "testCaseName": "Base Page",
    "testCaseDescription": "Base Page Test",
    "createdBy": "atctestuser",
    "modifiedBy": "atctestuser",
    "createdDate": "2018-03-16T10:46:23+0000",
    "modifiedDate": "2018-03-16T10:46:28+0000",
    "runOrder": 1,
    "status": "active",
    "comparisonSettings": {
        "responseCode": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "responseHeaders": {
            "isEnabled": true,
            "includeEmbeddedObjects": true,
            "compareOnly": [],
            "compareAllExcept": [
                "Age",
                "Date",
                "Expires",
                "Server",
                "Via",
                "Set-Cookie",
                "Cache-Control"
            ]
        },
        "cpcode": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "cachingOption": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "cacheKey": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "metadataVariables": {
            "isEnabled": true,
            "includeEmbeddedObjects": true,
            "compareOnly": [],
            "compareAllExcept": [
                "RUM_IS_IPV6",
                "RUA_OUT_IS_APPLIED",
                "RUM_XHR_TEST",
                "RUM_CLIENT_TO_MAPPING_PCT",
                "RANDOM_SAMPLE",
                "RUM_IMPL_PM_GROUPID",
                "RUM_IMPL_PM_GROUPNAME",
                "RUM_IMPL_PM_PRODUCT",
                "RUM_DEBUG"
            ]
        },
        "originServer": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        }
    },
    "requestHeaders": [
        {
            "headerName": "Max-Forwards",
            "headerAction": "add",
            "headerValues": "10"
        }
    ]
}
  1. Run the List test definitions operation and store the testDefinitionId of the test definition in which you want to include comparative test cases.

  2. Build a ComparativeTestCase object.

  3. POST the object to /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases.

The operation responds with a ComparativeTestCase object.

Get a comparative test case

Returns details of a comparative test case, including its request headers and comparison settings.

GET /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases/{testCaseId}

Sample: /test-management/v2/comparative/test-definitions/738/test-cases/1855

Parameter Type Sample Description
URL path parameters
testDefinitionId Integer 738 Unique identifier for test definition.
testCaseId Integer 1855 Unique identifier for test case.

Status 200 application/json

Object type: ComparativeTestCase

Download schema: get-test-case-response.json

Response body:

{
    "testCaseId": 1855,
    "testDefinitionId": 738,
    "url": "https://www.example-weather.com/",
    "testCaseName": "Base Page",
    "testCaseDescription": "Base Page Test",
    "createdBy": "atctestuser",
    "modifiedBy": "atctestuser",
    "createdDate": "2018-03-16T10:46:23+0000",
    "modifiedDate": "2018-03-16T10:46:28+0000",
    "runOrder": 1,
    "status": "active",
    "comparisonSettings": {
        "responseCode": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "responseHeaders": {
            "isEnabled": true,
            "includeEmbeddedObjects": true,
            "compareOnly": [],
            "compareAllExcept": [
                "Age",
                "Date",
                "Expires",
                "Server",
                "Via",
                "Set-Cookie",
                "Cache-Control"
            ]
        },
        "cpcode": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "cachingOption": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "cacheKey": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "metadataVariables": {
            "isEnabled": true,
            "includeEmbeddedObjects": true,
            "compareOnly": [],
            "compareAllExcept": [
                "RUM_IS_IPV6",
                "RUA_OUT_IS_APPLIED",
                "RUM_XHR_TEST",
                "RUM_CLIENT_TO_MAPPING_PCT",
                "RANDOM_SAMPLE",
                "RUM_IMPL_PM_GROUPID",
                "RUM_IMPL_PM_GROUPNAME",
                "RUM_IMPL_PM_PRODUCT",
                "RUM_DEBUG"
            ]
        },
        "originServer": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        }
    },
    "requestHeaders": [
        {
            "headerName": "Max-Forwards",
            "headerAction": "add",
            "headerValues": "10"
        }
    ]
}
  1. Run the List test definitions operation and store the testDefinitionId of the test definition that includes the comparative test case you want to get the details of.

  2. Run the List comparative test cases included in a test definition operation and store the testCaseId of the comparative test case you want to get the details of.

  3. Make a GET request to /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases/{testCaseId}.

The operation responds with a ComparativeTestCase object.

Update a comparative test case

Updates a comparative test case. You can modify all members except for the testCaseId and the testDefinitionId.

PUT /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases/{testCaseId}

Sample: /test-management/v2/comparative/test-definitions/738/test-cases/1855

Content-Type: application/json

Object type: ComparativeTestCase

Download schema: update-test-case-request.json

Request body:

{
    "testCaseId": 1855,
    "testDefinitionId": 738,
    "url": "https://www.example-weather.com/",
    "testCaseName": "Base Page (edited)",
    "testCaseDescription": "Base Page Test (edited)",
    "requestHeaders": [],
    "comparisonSettings": {
        "responseCode": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "responseHeaders": {
            "isEnabled": true,
            "includeEmbeddedObjects": true,
            "compareOnly": [],
            "compareAllExcept": [
                "Age",
                "Date",
                "Expires",
                "Server"
            ]
        },
        "cpcode": {
            "isEnabled": false,
            "includeEmbeddedObjects": false
        },
        "cachingOption": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "cacheKey": {
            "isEnabled": false,
            "includeEmbeddedObjects": false
        },
        "metadataVariables": {
            "isEnabled": true,
            "includeEmbeddedObjects": true,
            "compareOnly": [],
            "compareAllExcept": [
                "RUM_IS_IPV6",
                "RUA_OUT_IS_APPLIED",
                "RUM_XHR_TEST",
                "RUM_CLIENT_TO_MAPPING_PCT",
                "RANDOM_SAMPLE",
                "RUM_IMPL_PM_GROUPID",
                "RUM_IMPL_PM_GROUPNAME",
                "RUM_IMPL_PM_PRODUCT",
                "RUM_DEBUG"
            ]
        },
        "originServer": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        }
    }
}
Parameter Type Sample Description
URL path parameters
testDefinitionId Integer 738 Unique identifier for test definition.
testCaseId Integer 1855 Unique identifier for test case.

Status 200 application/json

Object type: ComparativeTestCase

Download schema: get-test-case-response.json

Response body:

{
    "testCaseId": 1855,
    "testDefinitionId": 738,
    "url": "https://www.example-weather.com/",
    "testCaseName": "Base Page (edited)",
    "testCaseDescription": "Base Page Test (edited)",
    "createdBy": "atctestuser",
    "modifiedBy": "aanuj",
    "createdDate": "2018-03-16T10:46:23+0000",
    "modifiedDate": "2018-04-10T06:32:31+0000",
    "runOrder": 1,
    "requestHeaders": [],
    "comparisonSettings": {
        "responseCode": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "responseHeaders": {
            "isEnabled": true,
            "includeEmbeddedObjects": true,
            "compareOnly": [],
            "compareAllExcept": [
                "Age",
                "Date",
                "Expires",
                "Server"
            ]
        },
        "cpcode": {
            "isEnabled": false,
            "includeEmbeddedObjects": false
        },
        "cachingOption": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "cacheKey": {
            "isEnabled": false,
            "includeEmbeddedObjects": false
        },
        "metadataVariables": {
            "isEnabled": true,
            "includeEmbeddedObjects": true,
            "compareOnly": [],
            "compareAllExcept": [
                "RUM_IS_IPV6",
                "RUA_OUT_IS_APPLIED",
                "RUM_XHR_TEST",
                "RUM_CLIENT_TO_MAPPING_PCT",
                "RANDOM_SAMPLE",
                "RUM_IMPL_PM_GROUPID",
                "RUM_IMPL_PM_GROUPNAME",
                "RUM_IMPL_PM_PRODUCT",
                "RUM_DEBUG"
            ]
        },
        "originServer": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        }
    }
}
  1. Run the List test definitions operation and store the testDefinitionId of the test definition which includes the comparative test case you want to update.

  2. Run the List comparative test cases included in a test definition operation and store the testCaseId of the comparative test case you want to update.

  3. Run the Get a comparative test case operation.

  4. Modify the returned ComparativeTestCase object.

  5. PUT the object to /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases/{testCaseId}.

The operation responds with the modified ComparativeTestCase object.

Remove a comparative test case

Removes a comparative test case included in a test definition. When you remove a test case and make a GET request for it, its status is inactive. The API retains removed test cases for 30 days from the date of the removal. After that, you receive a 404 error if you try to get it.

POST /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases/{testCaseId}/remove

Sample: /test-management/v2/comparative/test-definitions/738/test-cases/1855/remove

Parameter Type Sample Description
URL path parameters
testDefinitionId Integer 738 Unique identifier for test definition.
testCaseId Integer 1855 Unique identifier for test case.

Status 204

  1. Run the List test definitions operation and store the testDefinitionId of the test definition with the comparative test case you want to remove.

  2. Run the List comparative test cases included in a test definition operation and store the testCaseId of the comparative test case you want to remove.

  3. Make a POST request to /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases/{testCaseId}/remove.

Clone a comparative test case

Clones a comparative test case. If an optional request member of the request is missing, Test Center uses the value from the source test suite.

POST /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases/{testCaseId}/clone

Sample: /test-management/v2/comparative/test-definitions/738/test-cases/1855/clone

Content-Type: application/json

Object type: ComparativeTestCase

Download schema: clone-test-case-request.json

Request body:

{
    "testCaseId": 1855,
    "testDefinitionId": 738,
    "url": "https://www.example-weather.com/",
    "testCaseName": "Copy of Base Page",
    "testCaseDescription": "Copy of Base Page Test",
    "requestHeaders": [],
    "comparisonSettings": {
        "responseCode": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "responseHeaders": {
            "isEnabled": true,
            "includeEmbeddedObjects": true,
            "compareOnly": [],
            "compareAllExcept": [
                "Age",
                "Date",
                "Expires",
                "Server",
                "Via",
                "Set-Cookie",
                "Cache-Control"
            ]
        },
        "cpcode": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "cachingOption": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "cacheKey": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "metadataVariables": {
            "isEnabled": true,
            "includeEmbeddedObjects": true,
            "compareOnly": [],
            "compareAllExcept": [
                "RUM_IS_IPV6",
                "RUA_OUT_IS_APPLIED",
                "RUM_XHR_TEST",
                "RUM_CLIENT_TO_MAPPING_PCT",
                "RANDOM_SAMPLE"
            ]
        },
        "originServer": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        }
    }
}
Parameter Type Sample Description
URL path parameters
testDefinitionId Integer 738 Unique identifier for test definition.
testCaseId Integer 1855 Unique identifier for test case.

Status 201 application/json

Object type: ComparativeTestCase

Download schema: get-test-case-response.json

Response body:

{
    "testCaseId": 4621,
    "testDefinitionId": 738,
    "url": "https://www.example-weather.com/",
    "testCaseName": "Copy of Base Page",
    "testCaseDescription": "Copy of Base Page Test",
    "createdBy": "atctestuser",
    "createdDate": "2018-04-10T06:35:29+0000",
    "requestHeaders": [],
    "comparisonSettings": {
        "responseCode": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "cpcode": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "cachingOption": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "cacheKey": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "metadataVariables": {
            "isEnabled": true,
            "includeEmbeddedObjects": true,
            "compareOnly": [],
            "compareAllExcept": [
                "RUM_IS_IPV6",
                "RUA_OUT_IS_APPLIED",
                "RUM_XHR_TEST",
                "RUM_CLIENT_TO_MAPPING_PCT",
                "RANDOM_SAMPLE"
            ]
        },
        "originServer": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "responseHeaders": {
            "isEnabled": true,
            "includeEmbeddedObjects": true,
            "compareOnly": [],
            "compareAllExcept": [
                "Age",
                "Date",
                "Expires",
                "Server",
                "Via",
                "Set-Cookie",
                "Cache-Control"
            ]
        }
    }
}
  1. Run the List test definitions operation and store the testDefinitionId of the test definition which includes the comparative test case you want to clone.

  2. Run the List comparative test cases included in a test definition operation and store the testCaseId of the comparative test case you want to clone.

  3. Build an object that includes the stored values of testDefinitionId and testCaseId and optionally, members you want to override.

  4. POST the object to /test-management/v2/comparative/test-definitions/{testDefinitionId}/test-cases/{testCaseId}/clone.

The operation responds with a ComparativeTestCase object.

List executions

Lists all test definition executions. One test definition execution is created for each test definition included in a completed test run.

GET /test-management/v2/comparative/test-definition-executions{?testDefinitionIds,latestPerTestDefinition}

Sample: /test-management/v2/comparative/test-definition-executions?testDefinitionIds=738%2C740&latestPerTestDefinition=true

Parameter Type Sample Description
Optional query parameters
latestPerTestDefinition Boolean true When enabled, the response includes only the latest test definition execution for each passed valid test definition ID.
testDefinitionIds String 738,740 A list of comma-delimited test definition identifiers for which you want to get executions’ details.

Status 200 application/json

Download schema: get-test-definition-executions-response.json

Response body:

[
    {
        "testDefinitionExecutionId": 148,
        "testDefinitionId": 738,
        "testRunId": 133,
        "targetHostname": "www.example-weather-production.com",
        "targetEnvironment": "production",
        "submittedBy": "atctestuser",
        "submittedDate": "2018-08-18T11:37:26+0000",
        "status": "completed",
        "completedDate": "2018-08-18T12:37:26+0000",
        "note": "A sample note",
        "ipVersions": [
            "ipv6"
        ],
        "testCaseIds": [
            1855
        ],
        "diffCount": {
            "total": 2,
            "outstanding": 2
        }
    },
    {
        "testDefinitionExecutionId": 149,
        "testDefinitionId": 740,
        "testRunId": 133,
        "targetHostname": "www.example-weather-config-1-production.com",
        "targetEnvironment": "staging",
        "submittedBy": "atctestuser",
        "submittedDate": "2018-03-20T11:37:26+0000",
        "status": "failed",
        "completedDate": "2018-03-20T11:43:26+0000",
        "note": "Another sample note",
        "ipVersions": [
            "ipv4",
            "ipv6"
        ],
        "testCaseIds": [
            1991,
            1992
        ],
        "errors": [
            {
                "type": "ip.version.not.supported",
                "title": "IP version not supported",
                "ipVersion": "ipv6"
            }
        ]
    }
]
  1. Run the List test definitions operation and store the testDefinitionId values of test definitions for which you want to get the list of executions.

  2. Join all the testDefinitionId values into a comma-separated testDefinitionIds value.

  3. If you want to view only the latest execution for each definition, enable the latestPerTestDefinition query parameter.

  4. Make a GET request to /test-management/v2/comparative/test-definition-executions{?testDefinitionIds,latestPerTestDefinition}.

The operation responds with a TestDefinitionExecution object.

Get an execution

Returns details of a test definition execution. The response includes the comparative test case IDs of the test cases that belong to the test definitions that were included in the test run. It also includes details about the test run in which the test definition was executed, including target hostname, target environment, IP versions, and notes. When the status is completed there is a diffCount object. When the status is failed there is an errors array. If the test run is in progress when you request to get an execution, the API returns a 404 error.

GET /test-management/v2/comparative/test-definition-executions/{testDefinitionExecutionId}

Sample: /test-management/v2/comparative/test-definition-executions/148

Parameter Type Sample Description
URL path parameters
testDefinitionExecutionId Integer 148 Numeric identifier for test definition execution.

Status 200 application/json

Object type: TestDefinitionExecution

Download schema: get-test-definition-execution-response.json

Response body:

{
    "testDefinitionExecutionId": 148,
    "testDefinitionId": 738,
    "testRunId": 133,
    "targetHostname": "www.example-weather-production.com",
    "targetEnvironment": "production",
    "submittedBy": "atctestuser",
    "submittedDate": "2018-08-18T11:37:26+0000",
    "status": "completed",
    "completedDate": "2018-08-18T12:37:26+0000",
    "note": "A sample note",
    "ipVersions": [
        "ipv6"
    ],
    "testCaseIds": [
        1855
    ],
    "diffCount": {
        "total": 2,
        "outstanding": 2
    }
}
  1. Run the List executions operation and store the testDefinitionExecutionId of the execution you want to get the details of.

  2. Make a GET request to /test-management/v2/comparative/test-definition-executions/{testDefinitionExecutionId}.

The operation responds with a TestDefinitionExecution object.

List diffs

Lists differences found for a test definition execution. You can follow up and update the status of the diffs. See Update diffs.

GET /test-management/v2/comparative/test-definition-executions/{testDefinitionExecutionId}/differences

Sample: /test-management/v2/comparative/test-definition-executions/148/differences

Parameter Type Sample Description
URL path parameters
testDefinitionExecutionId Integer 148 Numeric identifier for test definition execution.

Status 200 application/json

Object type: Difference

Download schema: get-differences-response.json

Response body:

[
    {
        "differenceId": "e52a1b76-d33d-11e7-9296-cec278b6b50a",
        "testCaseId": 1855,
        "sourceUrl": "https://www.example-weather.com/",
        "targetUrl": "https://www.example-weather-production.com/",
        "ipVersion": "ipv6",
        "geoLocation": "us",
        "comparisonAttribute": "responseHeaders",
        "sourceValue": "gzip",
        "targetValue": "deflate",
        "isAccepted": false,
        "parameterNames": [
            "Content-Encoding"
        ],
        "browser": {
            "name": "chrome",
            "version": "62"
        }
    },
    {
        "differenceId": "eece8d88-d33d-11e7-9296-cec278b6b50a",
        "testCaseId": 1855,
        "sourceUrl": "https://www.example-weather.com/regions/12345",
        "targetUrl": "https://www.example-weather-production.com/regions/12345",
        "ipVersion": "ipv6",
        "geoLocation": "us",
        "comparisonAttribute": "responseCode",
        "sourceValue": "200",
        "targetValue": "400",
        "isAccepted": false,
        "parameterNames": [],
        "browser": {
            "name": "chrome",
            "version": "62"
        }
    }
]
  1. Run the List executions operation and store the testDefinitionExecutionId of the execution for which you want to get the list of diffs.

  2. Make a GET request to /test-management/v2/comparative/test-definition-executions/{testDefinitionExecutionId}/differences.

The operation responds with a Difference object.

Update diffs

Updates the status of diffs. If the isAccepted value of a diff is set to true you indicate that the particular diff was expected by the configuration changes. Not accepted diffs need to be further investigated. The operation responds with a partial-success 207 response that consists of two arrays, successes and failures. The successes array lists diffs updated successfully, whereas the failures array provides details on any remainders that failed. See Partial success responses.

PUT /test-management/v2/comparative/test-definition-executions/{testDefinitionExecutionId}/differences

Sample: /test-management/v2/comparative/test-definition-executions/148/differences

Content-Type: application/json

Object type: Difference

Download schema: update-differences-request.json

Request body:

[
    {
        "differenceId": "e52a1b76-d33d-11e7-9296-cec278b6b50a",
        "isAccepted": true
    },
    {
        "differenceId": "fe59f1e6-0022-4119-b05b-71e33c2a0ee2",
        "isAccepted": true
    }
]
Parameter Type Sample Description
URL path parameters
testDefinitionExecutionId Integer 148 Numeric identifier for test definition execution.

Status 207 application/json

Object type: Difference

Download schema: update-differences-response.json

Response body:

{
    "successes": [
        {
            "differenceId": "e52a1b76-d33d-11e7-9296-cec278b6b50a"
        }
    ],
    "failures": [
        {
            "type": "validation.error",
            "title": "Validation Error",
            "status": 200,
            "errors": [
                {
                    "type": "invalid.value",
                    "title": "Invalid Value",
                    "errorField": "differenceId",
                    "differenceId": "fe59f1e6-0022-4119-b05b-71e33c2a0ee2"
                }
            ]
        }
    ]
}
  1. Run the List executions operation and store the testDefinitionExecutionId of the execution for which you want to update the status of diffs.

  2. Run the List diffs operation and store differenceId values of diffs you want to change the status.

  3. Create an array of objects. Specify the differenceId of the diff you want to change the status and the isAccepted member with either true or false value for each object.

  4. PUT the object to /test-management/v2/comparative/test-definition-executions/{testDefinitionExecutionId}/differences.

The operation responds with a Difference object.

Create notes for a set of diffs

Creates notes for a set of diffs in bulk, under testDefinitionExecutionId. To access created notes, run the List activities operation and set the value of activityResource to test_difference_note.

POST /test-management/v2/comparative/test-definition-executions/{testDefinitionExecutionId}/differences/notes

Sample: /test-management/v2/comparative/test-definition-executions/148/differences/notes

Content-Type: application/json

Download schema: create-diff-note-request.json

Request body:

[
    {
        "differenceId": "e52a1b76-d33d-11e7-9296-cec278b6b50a",
        "note": "Unexpected change due to incorrect content encoding config"
    },
    {
        "differenceId": "eece8d88-d33d-11e7-9296-cec278b6b50a",
        "note": "Expected change."
    }
]
Parameter Type Sample Description
URL path parameters
testDefinitionExecutionId Integer 148 Numeric identifier for test definition execution.

Status 200

  1. Run the List executions operation and store the testDefinitionExecutionId of the execution which includes the diffs to which you want to add notes.

  2. Run the List diffs operation and store differenceId values of diffs to which you want to add a note.

  3. Create an array of objects, each containing the differenceId you want to modify, along with a new note value.

  4. POST the array to /test-management/v2/comparative/test-definition-executions/{testDefinitionExecutionId}/differences/notes.

Get a diff

Returns details of a test definition execution difference.

GET /test-management/v2/comparative/test-definition-executions/{testDefinitionExecutionId}/differences/{differenceId}

Sample: /test-management/v2/comparative/test-definition-executions/148/differences/e52a1b76-d33d–11e7-9296-cec278b6b50a

Parameter Type Sample Description
URL path parameters
testDefinitionExecutionId Integer 148 Numeric identifier for test definition execution.
differenceId String e52a1b76-d33d-11e7-9296-cec278b6b50a Alphanumeric identifier for the difference.

Status 200 application/json

Object type: Difference

Download schema: get-difference-response.json

Response body:

{
    "differenceId": "e52a1b76-d33d-11e7-9296-cec278b6b50a",
    "testCaseId": 1855,
    "sourceUrl": "https://www.example-weather.com/",
    "targetUrl": "https://www.example-weather-production.com/",
    "ipVersion": "ipv6",
    "geoLocation": "us",
    "comparisonAttribute": "responseHeaders",
    "sourceValue": "gzip",
    "targetValue": "deflate",
    "isAccepted": false,
    "parameterNames": [
        "Content-Encoding"
    ],
    "browser": {
        "name": "chrome",
        "version": "62"
    }
}
  1. Run the List executions operation and store the testDefinitionExecutionId of the execution which includes the diff you want to get the details of.

  2. Run the List diffs operation and store the differenceId of the diff you want to get the details of.

  3. Make a GET request to /test-management/v2/comparative/test-definition-executions/{testDefinitionExecutionId}/differences/{differenceId}.

The operation responds with a Difference object.

Get transaction details for a diff

Returns transaction details for both compared environments from which a diff was generated.

GET /test-management/v2/comparative/test-definition-executions/{testDefinitionExecutionId}/differences/{differenceId}/raw-request-response

Sample: /test-management/v2/comparative/test-definition-executions/148/differences/e52a1b76-d33d–11e7-9296-cec278b6b50a/raw-request-response

Parameter Type Sample Description
URL path parameters
testDefinitionExecutionId Integer 148 Numeric identifier for test definition execution.
differenceId String e52a1b76-d33d-11e7-9296-cec278b6b50a Alphanumeric identifier for the difference.

Status 200 application/json

Download schema: get-raw-request-response.json

Response body:

{
    "sourceEnvironment": {
        "request": {
            "method": "GET",
            "url": "https://www.example-weather.com/",
            "httpVersion": "HTTP/1.1",
            "headersSize": 610,
            "bodySize": 0,
            "comment": "",
            "cookies": [],
            "queryString": [],
            "headers": [
                {
                    "name": "Host",
                    "value": "www.example-weather"
                },
                {
                    "name": "Proxy-Connection",
                    "value": "keep-alive"
                },
                {
                    "name": "User-Agent",
                    "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"
                },
                {
                    "name": "Accept",
                    "value": "*/*"
                },
                {
                    "name": "Referer",
                    "value": "https://www.example-weather.com/"
                },
                {
                    "name": "Accept-Encoding",
                    "value": "gzip, deflate"
                },
                {
                    "name": "Accept-Language",
                    "value": "en-US,en;q=0.9"
                },
                {
                    "name": "Cookie",
                    "value": "frontend=291i77k6avpip216ct88tkciv7"
                },
                {
                    "name": "Content-Length",
                    "value": "0"
                },
                {
                    "name": "HeaderName1523525534255",
                    "value": "HeaderValue11523525534255,HeaderValue21523525534255"
                }
            ]
        },
        "response": {
            "status": 200,
            "statusText": "OK",
            "httpVersion": "HTTP/1.1",
            "redirectURL": "",
            "headersSize": 1350,
            "bodySize": 737,
            "comment": "",
            "cookies": [],
            "content": {
                "size": 0,
                "mimeType": "application/javascript",
                "comment": "",
                "text": "",
                "compression": 0
            },
            "headers": [
                {
                    "name": "Server",
                    "value": "Apache/2.4.7 (Ubuntu)"
                },
                {
                    "name": "Last-Modified",
                    "value": "Wed, 14 May 2014 16:03:36 GMT"
                },
                {
                    "name": "ETag",
                    "value": "\\63d-4f95e52aaa600-gzip\\"
                },
                {
                    "name": "Accept-Ranges",
                    "value": "bytes"
                },
                {
                    "name": "Content-Encoding",
                    "value": "gzip"
                },
                {
                    "name": "Content-Length",
                    "value": "737"
                },
                {
                    "name": "Content-Type",
                    "value": "application/javascript"
                },
                {
                    "name": "Cache-Control",
                    "value": "max-age=86400"
                },
                {
                    "name": "Expires",
                    "value": "Sat, 14 Apr 2018 11:02:43 GMT"
                },
                {
                    "name": "Date",
                    "value": "Fri, 13 Apr 2018 11:02:43 GMT"
                },
                {
                    "name": "Connection",
                    "value": "keep-alive"
                },
                {
                    "name": "Vary",
                    "value": "Accept-Encoding"
                }
            ]
        }
    },
    "targetEnvironment": {
        "request": {
            "method": "GET",
            "url": "https://www.example-weather-production.com/",
            "httpVersion": "HTTP/1.1",
            "headersSize": 625,
            "bodySize": 0,
            "comment": "",
            "cookies": [],
            "queryString": [],
            "headers": [
                {
                    "name": "Host",
                    "value": "www.example-weather-production.com"
                },
                {
                    "name": "Proxy-Connection",
                    "value": "keep-alive"
                },
                {
                    "name": "User-Agent",
                    "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"
                },
                {
                    "name": "Accept",
                    "value": "*/*"
                },
                {
                    "name": "Referer",
                    "value": "https://www.example-weather-production.com/"
                },
                {
                    "name": "Accept-Encoding",
                    "value": "gzip, deflate"
                },
                {
                    "name": "Accept-Language",
                    "value": "en-US,en;q=0.9"
                },
                {
                    "name": "Cookie",
                    "value": "frontend=60klgq7g1jc4u42gmjt21c7tp1"
                },
                {
                    "name": "Content-Length",
                    "value": "0"
                },
                {
                    "name": "Content-Encoding",
                    "value": "deflate"
                },
                {
                    "name": "HeaderName1523525534255",
                    "value": "HeaderValue11523525534255,HeaderValue21523525534255"
                }
            ]
        },
        "response": {
            "status": 200,
            "statusText": "OK",
            "httpVersion": "HTTP/1.1",
            "redirectURL": "",
            "headersSize": 1560,
            "bodySize": 1597,
            "comment": "",
            "cookies": [],
            "content": {
                "size": 0,
                "mimeType": "application/javascript",
                "comment": "",
                "text": "",
                "compression": 0
            },
            "headers": [
                {
                    "name": "Server",
                    "value": "Apache/2.4.7 (Ubuntu)"
                },
                {
                    "name": "Last-Modified",
                    "value": "Wed, 14 May 2014 16:03:36 GMT"
                },
                {
                    "name": "ETag",
                    "value": "\\63d-4f95e52aaa600-gzip\\"
                },
                {
                    "name": "Content-Type",
                    "value": "application/javascript"
                },
                {
                    "name": "X-Akamai-Staging",
                    "value": "EdgeSuite"
                },
                {
                    "name": "X-Akamai-Staging",
                    "value": "EdgeSuite"
                },
                {
                    "name": "X-Akamai-Staging",
                    "value": "EdgeSuite"
                },
                {
                    "name": "X-Akamai-Staging",
                    "value": "EdgeSuite"
                },
                {
                    "name": "Vary",
                    "value": "Accept-Encoding"
                },
                {
                    "name": "Cache-Control",
                    "value": "max-age=82116"
                },
                {
                    "name": "Expires",
                    "value": "Sat, 14 Apr 2018 09:52:07 GMT"
                },
                {
                    "name": "Date",
                    "value": "Fri, 13 Apr 2018 11:03:31 GMT"
                },
                {
                    "name": "Content-Length",
                    "value": "1597"
                },
                {
                    "name": "Connection",
                    "value": "keep-alive"
                },
                {
                    "name": "X-Akamai-Staging",
                    "value": "EdgeSuite"
                }
            ]
        }
    }
}
  1. Run the List test runs operation and store the testCaseExecutionId of the execution of functional test case you want to get the details of.

  2. Make a GET request to /test-management/v2/functional/test-case-executions/{testCaseExecutionId}/raw-request-response.

The operation responds with a FunctionalRawTransaction object.

List test runs

Lists all test runs submitted in your organization. The response is an array of TestRunResponse objects, each keyed by testRunId with details and status of each test run.

GET /test-management/v2/test-runs

Status 200 application/json

Object type: TestRunResponse

Download schema: get-test-runs-response.json

Response body:

[
    {
        "testRunId": 13081,
        "status": "in_progress",
        "targetEnvironment": "production",
        "note": "Config change test",
        "submittedBy": "atctest@akamai.com",
        "submittedDate": "2020-01-08T17:19:19+0000",
        "functional": {
            "status": "in_progress",
            "requirementExecutions": [
                {
                    "requirementId": 22,
                    "status": "in_progress",
                    "testSuiteExecutions": [
                        {
                            "testSuiteId": 33,
                            "testSuiteExecutionId": 46,
                            "status": "in_progress",
                            "testCaseExecutions": [
                                {
                                    "testCaseId": 301,
                                    "testCaseExecutionId": 264,
                                    "status": "in_progress"
                                }
                            ]
                        }
                    ]
                }
            ],
            "configVersionExecutions": [
                {
                    "configVersionId": 919,
                    "status": "in_progress",
                    "testSuiteExecutions": [
                        {
                            "testSuiteId": 79,
                            "testSuiteExecutionId": 45,
                            "status": "in_progress",
                            "testCaseExecutions": [
                                {
                                    "testCaseId": 293,
                                    "testCaseExecutionId": 263,
                                    "status": "in_progress"
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        "comparative": {
            "status": "in_progress",
            "testDefinitionExecutions": [
                {
                    "testDefinitionExecutionId": 17125,
                    "testDefinitionId": 7225,
                    "targetHostname": "www.atcuser8.akamaiu.com",
                    "targetEnvironment": "production",
                    "status": "in_progress",
                    "ipVersions": [
                        "ipv4",
                        "ipv6"
                    ],
                    "testCaseIds": [
                        7832
                    ]
                }
            ]
        }
    },
    {
        "testRunId": 13079,
        "status": "completed",
        "targetEnvironment": "staging",
        "submittedBy": "grevanak",
        "submittedDate": "2019-12-17T11:56:07+0000",
        "completedDate": "2019-12-17T11:57:46+0000",
        "comparative": {
            "status": "completed",
            "testDefinitionExecutions": [
                {
                    "testDefinitionExecutionId": 17123,
                    "testDefinitionId": 4050,
                    "targetHostname": "www.atcuser8.akamaiu.com",
                    "targetEnvironment": "staging",
                    "status": "failed",
                    "completedDate": "2019-12-17T11:57:46+0000",
                    "ipVersions": [
                        "ipv6"
                    ],
                    "testCaseIds": [
                        4551
                    ],
                    "errors": [
                        {
                            "type": "ip.version.not.supported",
                            "title": "Compared websites do not support the specified IP version",
                            "ipVersion": "ipv6"
                        }
                    ]
                },
                {
                    "testDefinitionExecutionId": 17122,
                    "testDefinitionId": 8710,
                    "targetHostname": "www.atcuser8.akamaiu.com",
                    "targetEnvironment": "staging",
                    "status": "completed",
                    "completedDate": "2019-12-17T11:57:46+0000",
                    "ipVersions": [
                        "ipv4",
                        "ipv6"
                    ],
                    "testCaseIds": [
                        9373
                    ],
                    "supportedComparisonSettings": [
                        "cpcode",
                        "cachingOption",
                        "responseHeaders",
                        "cacheKey",
                        "metadataVariables",
                        "originServer",
                        "responseCode"
                    ],
                    "diffCount": {
                        "total": 2,
                        "outstanding": 2
                    },
                    "errors": [
                        {
                            "type": "ip.version.not.supported",
                            "title": "Compared websites do not support the specified IP version",
                            "ipVersion": "ipv6"
                        }
                    ]
                }
            ]
        }
    },
    {
        "testRunId": 13077,
        "status": "completed",
        "targetEnvironment": "staging",
        "submittedBy": "rchenna",
        "submittedDate": "2019-12-16T12:47:23+0000",
        "completedDate": "2019-12-16T12:49:01+0000",
        "functional": {
            "status": "completed",
            "requirementExecutions": [
                {
                    "requirementId": 21,
                    "status": "completed",
                    "testSuiteExecutions": [
                        {
                            "testSuiteId": 30,
                            "testSuiteExecutionId": 42,
                            "status": "completed",
                            "completedDate": "2019-12-16T12:48:50+0000",
                            "testCaseExecutions": [
                                {
                                    "testCaseId": 98,
                                    "testCaseExecutionId": 256,
                                    "status": "completed",
                                    "completedDate": "2019-12-16T12:48:50+0000",
                                    "conditionEvaluationResult": {
                                        "result": "passed",
                                        "actualConditionData": [
                                            {
                                                "name": "cpcode",
                                                "value": "11111"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "testCaseId": 189,
                                    "testCaseExecutionId": 254,
                                    "status": "completed",
                                    "completedDate": "2019-12-16T12:48:50+0000",
                                    "conditionEvaluationResult": {
                                        "result": "passed",
                                        "actualConditionData": [
                                            {
                                                "name": "cachingOption",
                                                "value": "cache"
                                            },
                                            {
                                                "name": "maxAge",
                                                "value": "7 days"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "testCaseId": 94,
                                    "testCaseExecutionId": 252,
                                    "status": "completed",
                                    "completedDate": "2019-12-16T12:48:50+0000",
                                    "conditionEvaluationResult": {
                                        "result": "passed",
                                        "actualConditionData": [
                                            {
                                                "name": "cachingOption",
                                                "value": "no-store"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "testCaseId": 99,
                                    "testCaseExecutionId": 259,
                                    "status": "completed",
                                    "completedDate": "2019-12-16T12:48:50+0000",
                                    "conditionEvaluationResult": {
                                        "result": "passed",
                                        "actualConditionData": [
                                            {
                                                "name": "responseCode",
                                                "value": "200"
                                            }
                                        ]
                                    }
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    }
]

Submit a test run

Submits a test run for comparative or functional testing or both. With one request you can either run the test for only one type of objects (a requirement, config versions, test suites, functional test cases, or test definitions) or you can combine a requirement with config versions, config versions with test definitions, a requirement with test definitions, or a requirement with config versions and test definitions.

POST /test-management/v2/test-runs

Content-Type: application/json

Object type: TestRunRequest

Download schema: create-test-run-request.json

Request body:

{
    "targetEnvironment": "production",
    "note": "Config change test",
    "sendEmailOnCompletion": true,
    "functional": {
        "requirementExecutions": [
            {
                "requirementId": 22,
                "testSuiteExecutions": [
                    {
                        "testSuiteId": 33,
                        "testCaseExecutions": [
                            {
                                "testCaseId": 301
                            }
                        ]
                    }
                ]
            }
        ],
        "configVersionExecutions": [
            {
                "configVersionId": 919,
                "testSuiteExecutions": [
                    {
                        "testSuiteId": 79,
                        "testCaseExecutions": [
                            {
                                "testCaseId": 293
                            }
                        ]
                    }
                ]
            }
        ]
    },
    "comparative": {
        "testDefinitionExecutions": [
            {
                "testDefinitionId": 7225,
                "targetHostname": "www.atcuser8.akamaiu.com",
                "ipVersions": [
                    "ipv4",
                    "ipv6"
                ],
                "testCaseIds": [
                    7832
                ]
            }
        ]
    }
}

Status 202 application/json

Object type: TestRunResponse

Download schema: get-test-run-response.json

Response body:

{
    "testRunId": 13081,
    "status": "in_progress",
    "targetEnvironment": "production",
    "note": "Config change test",
    "submittedBy": "atctest@akamai.com",
    "submittedDate": "2020-01-08T17:19:19+0000",
    "functional": {
        "status": "in_progress",
        "requirementExecutions": [
            {
                "requirementId": 22,
                "status": "in_progress",
                "testSuiteExecutions": [
                    {
                        "testSuiteId": 33,
                        "testSuiteExecutionId": 46,
                        "status": "in_progress",
                        "testCaseExecutions": [
                            {
                                "testCaseId": 301,
                                "testCaseExecutionId": 264,
                                "status": "in_progress"
                            }
                        ]
                    }
                ]
            }
        ],
        "configVersionExecutions": [
            {
                "configVersionId": 919,
                "status": "in_progress",
                "testSuiteExecutions": [
                    {
                        "testSuiteId": 79,
                        "testSuiteExecutionId": 45,
                        "status": "in_progress",
                        "testCaseExecutions": [
                            {
                                "testCaseId": 293,
                                "testCaseExecutionId": 263,
                                "status": "in_progress"
                            }
                        ]
                    }
                ]
            }
        ]
    },
    "comparative": {
        "status": "in_progress",
        "testDefinitionExecutions": [
            {
                "testDefinitionExecutionId": 17125,
                "testDefinitionId": 7225,
                "targetHostname": "www.atcuser8.akamaiu.com",
                "targetEnvironment": "production",
                "status": "in_progress",
                "ipVersions": [
                    "ipv4",
                    "ipv6"
                ],
                "testCaseIds": [
                    7832
                ]
            }
        ]
    }
}
  1. Build a new TestRunRequest object.

  2. POST the object to /test-management/v2/test-runs.

The operation responds with a TestRunResponse object.

Get a test run

Returns details of a test run.

GET /test-management/v2/test-runs/{testRunId}

Sample: /test-management/v2/test-runs/13081

Parameter Type Sample Description
URL path parameters
testRunId Integer 13081 Unique identifier of the test run.

Status 200 application/json

Object type: TestRunResponse

Download schema: get-test-run-response.json

Response body:

{
    "testRunId": 13081,
    "status": "in_progress",
    "targetEnvironment": "production",
    "note": "Config change test",
    "submittedBy": "atctest@akamai.com",
    "submittedDate": "2020-01-08T17:19:19+0000",
    "functional": {
        "status": "in_progress",
        "requirementExecutions": [
            {
                "requirementId": 22,
                "status": "in_progress",
                "testSuiteExecutions": [
                    {
                        "testSuiteId": 33,
                        "testSuiteExecutionId": 46,
                        "status": "in_progress",
                        "testCaseExecutions": [
                            {
                                "testCaseId": 301,
                                "testCaseExecutionId": 264,
                                "status": "in_progress"
                            }
                        ]
                    }
                ]
            }
        ],
        "configVersionExecutions": [
            {
                "configVersionId": 919,
                "status": "in_progress",
                "testSuiteExecutions": [
                    {
                        "testSuiteId": 79,
                        "testSuiteExecutionId": 45,
                        "status": "in_progress",
                        "testCaseExecutions": [
                            {
                                "testCaseId": 293,
                                "testCaseExecutionId": 263,
                                "status": "in_progress"
                            }
                        ]
                    }
                ]
            }
        ]
    },
    "comparative": {
        "status": "in_progress",
        "testDefinitionExecutions": [
            {
                "testDefinitionExecutionId": 17125,
                "testDefinitionId": 7225,
                "targetHostname": "www.atcuser8.akamaiu.com",
                "targetEnvironment": "production",
                "status": "in_progress",
                "ipVersions": [
                    "ipv4",
                    "ipv6"
                ],
                "testCaseIds": [
                    7832
                ]
            }
        ]
    }
}
  1. Run the List test runs operation and store the testRunId of the test run you want to get the details of.

  2. Make a GET request to /test-management/v2/test-runs/{testRunId}.

The operation responds with a TestRunResponse object.

Get transaction details for a test run

Gets a raw request and response for all URLs in a test run.

GET /test-management/v2/test-runs/{testRunId}/raw-request-response

Sample: /test-management/v2/test-runs/13081/raw-request-response

Parameter Type Sample Description
URL path parameters
testRunId Integer 13081 Unique identifier of the test run.

Status 200 application/json

Object type: RawTransactionForTestRun

Download schema: get-test-run-raw-request-response.json

Response body:

{
    "testRunId": 13081,
    "functionalRequestResponse": [
        {
            "testCaseExecutionIds": [
                254
            ],
            "request": {
                "method": "GET",
                "url": "http://www.atcuser3.akamaiu.com/catalog/view/theme/akamai/image/icon_currency.png",
                "httpVersion": "HTTP/1.1",
                "headersSize": 658,
                "bodySize": 0,
                "comment": "",
                "cookies": [],
                "queryString": [],
                "headers": [
                    {
                        "name": "Host",
                        "value": "www.atcuser3.akamaiu.com"
                    },
                    {
                        "name": "Proxy-Connection",
                        "value": "keep-alive"
                    },
                    {
                        "name": "Upgrade-Insecure-Requests",
                        "value": "1"
                    },
                    {
                        "name": "User-Agent",
                        "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36"
                    },
                    {
                        "name": "Accept",
                        "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"
                    },
                    {
                        "name": "Accept-Encoding",
                        "value": "gzip, deflate"
                    },
                    {
                        "name": "Accept-Language",
                        "value": "en-US,en;q=0.9"
                    },
                    {
                        "name": "Content-Length",
                        "value": "0"
                    }
                ]
            },
            "response": {
                "status": 200,
                "statusText": "OK",
                "httpVersion": "HTTP/1.1",
                "redirectURL": "",
                "headersSize": 2147,
                "bodySize": 738,
                "comment": "",
                "cookies": [],
                "content": {
                    "size": 0,
                    "mimeType": "image/png",
                    "comment": "",
                    "text": null,
                    "compression": 0
                },
                "headers": [
                    {
                        "name": "Server",
                        "value": "Apache/2.4.7 (Ubuntu)"
                    },
                    {
                        "name": "Connection",
                        "value": "keep-alive"
                    },
                    {
                        "name": "Last-Modified",
                        "value": "Sat, 26 Sep 2009 07:15:08 GMT"
                    },
                    {
                        "name": "Date",
                        "value": "Mon, 16 Dec 2019 12:48:32 GMT"
                    },
                    {
                        "name": "Accept-Ranges",
                        "value": "bytes"
                    },
                    {
                        "name": "X-Akamai-Staging",
                        "value": "EdgeSuite"
                    },
                    {
                        "name": "X-Akamai-Staging",
                        "value": "EdgeSuite"
                    },
                    {
                        "name": "Cache-Control",
                        "value": "max-age=604800"
                    },
                    {
                        "name": "ETag",
                        "value": "\"2e2-47475d311d700\""
                    },
                    {
                        "name": "Vary",
                        "value": "Accept-Encoding"
                    },
                    {
                        "name": "Expires",
                        "value": "Mon, 23 Dec 2019 12:48:32 GMT"
                    },
                    {
                        "name": "Content-Length",
                        "value": "738"
                    },
                    {
                        "name": "Content-Type",
                        "value": "image/png"
                    }
                ]
            }
        },
        {
            "testCaseExecutionIds": [
                256,
                252
            ],
            "request": {
                "method": "GET",
                "url": "http://www.atcuser3.akamaiu.com/",
                "httpVersion": "HTTP/1.1",
                "headersSize": 609,
                "bodySize": 0,
                "comment": "",
                "cookies": [],
                "queryString": [],
                "headers": [
                    {
                        "name": "Host",
                        "value": "www.atcuser3.akamaiu.com"
                    },
                    {
                        "name": "Proxy-Connection",
                        "value": "keep-alive"
                    },
                    {
                        "name": "Upgrade-Insecure-Requests",
                        "value": "1"
                    },
                    {
                        "name": "User-Agent",
                        "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36"
                    },
                    {
                        "name": "Accept",
                        "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"
                    },
                    {
                        "name": "Accept-Encoding",
                        "value": "gzip, deflate"
                    },
                    {
                        "name": "Accept-Language",
                        "value": "en-US,en;q=0.9"
                    },
                    {
                        "name": "Content-Length",
                        "value": "0"
                    }
                ]
            },
            "response": {
                "status": 200,
                "statusText": "OK",
                "httpVersion": "HTTP/1.1",
                "redirectURL": "",
                "headersSize": 1808,
                "bodySize": 15051,
                "comment": "",
                "cookies": [],
                "content": {
                    "size": 0,
                    "mimeType": "text/html",
                    "comment": "",
                    "text": null,
                    "compression": 0
                },
                "headers": [
                    {
                        "name": "Server",
                        "value": "Apache/2.4.7 (Ubuntu)"
                    },
                    {
                        "name": "Connection",
                        "value": "keep-alive"
                    },
                    {
                        "name": "Last-Modified",
                        "value": "Thu, 12 Feb 2015 15:44:28 GMT"
                    },
                    {
                        "name": "Date",
                        "value": "Mon, 16 Dec 2019 12:48:37 GMT"
                    },
                    {
                        "name": "Accept-Ranges",
                        "value": "bytes"
                    },
                    {
                        "name": "X-Akamai-Staging",
                        "value": "EdgeSuite"
                    },
                    {
                        "name": "ETag",
                        "value": "\"3acb-50ee5fec24f00-gzip\""
                    },
                    {
                        "name": "Vary",
                        "value": "Accept-Encoding"
                    },
                    {
                        "name": "Content-Length",
                        "value": "15051"
                    },
                    {
                        "name": "Content-Type",
                        "value": "text/html"
                    }
                ]
            }
        }
    ],
    "comparativeRequestResponse": [
        {
            "differenceIds": [
                "c5267ce4-89e1-44db-83ec-7d2651330903"
            ],
            "sourceEnvironment": {
                "request": {
                    "method": "GET",
                    "url": "https://www.atcuser20.akamaiu.com/image/cart.png",
                    "httpVersion": "HTTP/1.1",
                    "headersSize": 581,
                    "bodySize": 0,
                    "comment": "",
                    "cookies": [],
                    "queryString": [],
                    "headers": [
                        {
                            "name": "Host",
                            "value": "www.atcuser20.akamaiu.com"
                        },
                        {
                            "name": "Connection",
                            "value": "keep-alive"
                        },
                        {
                            "name": "Sec-Fetch-Mode",
                            "value": "no-cors"
                        },
                        {
                            "name": "User-Agent",
                            "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36"
                        },
                        {
                            "name": "Accept",
                            "value": "image/webp,image/apng,image/*,*/*;q=0.8"
                        },
                        {
                            "name": "Sec-Fetch-Site",
                            "value": "same-origin"
                        },
                        {
                            "name": "Referer",
                            "value": "https://www.atcuser20.akamaiu.com/"
                        },
                        {
                            "name": "Accept-Encoding",
                            "value": "gzip, deflate, br"
                        },
                        {
                            "name": "Accept-Language",
                            "value": "en-US,en;q=0.9"
                        },
                        {
                            "name": "Content-Length",
                            "value": "0"
                        }
                    ]
                },
                "response": {
                    "status": 200,
                    "statusText": "OK",
                    "httpVersion": "HTTP/1.1",
                    "redirectURL": "",
                    "headersSize": 2278,
                    "bodySize": 421,
                    "comment": "",
                    "cookies": [],
                    "content": {
                        "size": 0,
                        "mimeType": "image/png",
                        "comment": "",
                        "text": null,
                        "compression": 0
                    },
                    "headers": [
                        {
                            "name": "Server",
                            "value": "Apache/2.4.7 (Ubuntu)"
                        },
                        {
                            "name": "Connection",
                            "value": "keep-alive"
                        },
                        {
                            "name": "Last-Modified",
                            "value": "Thu, 17 Sep 2009 08:19:00 GMT"
                        },
                        {
                            "name": "Date",
                            "value": "Mon, 16 Dec 2019 12:48:33 GMT"
                        },
                        {
                            "name": "Accept-Ranges",
                            "value": "bytes"
                        },
                        {
                            "name": "Cache-Control",
                            "value": "max-age=604770"
                        },
                        {
                            "name": "ETag",
                            "value": "\"1a5-473c1aae72500\""
                        },
                        {
                            "name": "Expires",
                            "value": "Mon, 23 Dec 2019 12:48:03 GMT"
                        },
                        {
                            "name": "Content-Length",
                            "value": "421"
                        },
                        {
                            "name": "Content-Type",
                            "value": "image/png"
                        }
                    ]
                }
            },
            "targetEnvironment": {
                "request": {
                    "method": "GET",
                    "url": "https://www.atcuser20.akamaiu.com/image/cart.png",
                    "httpVersion": "HTTP/1.1",
                    "headersSize": 581,
                    "bodySize": 0,
                    "comment": "",
                    "cookies": [],
                    "queryString": [],
                    "headers": [
                        {
                            "name": "Host",
                            "value": "www.atcuser20.akamaiu.com"
                        },
                        {
                            "name": "Connection",
                            "value": "keep-alive"
                        },
                        {
                            "name": "Sec-Fetch-Mode",
                            "value": "no-cors"
                        },
                        {
                            "name": "User-Agent",
                            "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36"
                        },
                        {
                            "name": "Accept",
                            "value": "image/webp,image/apng,image/*,*/*;q=0.8"
                        },
                        {
                            "name": "Sec-Fetch-Site",
                            "value": "same-origin"
                        },
                        {
                            "name": "Referer",
                            "value": "https://www.atcuser20.akamaiu.com/"
                        },
                        {
                            "name": "Accept-Encoding",
                            "value": "gzip, deflate, br"
                        },
                        {
                            "name": "Accept-Language",
                            "value": "en-US,en;q=0.9"
                        },
                        {
                            "name": "Content-Length",
                            "value": "0"
                        }
                    ]
                },
                "response": {
                    "status": 0,
                    "statusText": "",
                    "httpVersion": "unknown",
                    "redirectURL": "",
                    "headersSize": -1,
                    "bodySize": -1,
                    "comment": "",
                    "cookies": [],
                    "headers": [],
                    "content": {
                        "size": 0,
                        "mimeType": "",
                        "comment": "",
                        "text": null,
                        "compression": 0
                    }
                }
            }
        }
    ]
}
  1. Run the List test runs operation and store the testRunId of the test run you want to get the details of.

  2. Make a GET request to /test-management/v2/test-runs/{testRunId}/raw-request-response.

The operation responds with a RawTransactionForTestRun object.

List activities

Returns the Test Center activity log for the set filters of operations performed in your organization. Depending on the resource for which you want to get the log, run one of these operations to get the unique identifier of the resource: List client profiles, List test requests, List test suites, List config versions, List requirements, List conditions, List functional test cases, or List test runs.

GET /test-management/v2/activities{?activityResource,resourceId}

Sample: /test-management/v2/activities?activityResource=test_definition&resourceId=12

Parameter Type Sample Description
Optional query parameters
activityResource String test_definition An activityResource for which you want to get the activity log.
resourceId Integer 12 Unique identifier of the resource for which you want to get the activity log.

Status 200 application/json

Object type: Activity

Download schema: get-activities-response.json

Response body:

[
    {
        "createdDate": "2019-12-17T09:11:12+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "test_definition",
        "activityAction": "create",
        "activityAdditionalInfo": {
            "testDefinitionId": 13626,
            "testDefinitionName": "TD / test"
        }
    },
    {
        "createdDate": "2019-12-27T17:37:43+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "test_definition",
        "activityAction": "edit",
        "activityAdditionalInfo": {
            "testDefinitionId": 13634,
            "testDefinitionName": "td refac"
        }
    },
    {
        "createdDate": "2019-12-27T17:58:22+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "test_definition",
        "activityAction": "clone",
        "activityAdditionalInfo": {
            "sourceTestDefinitionId": 13634,
            "sourceTestDefinitionName": "td refac",
            "targetTestDefinitionId": 13638,
            "targetTestDefinitionName": "Copy of td refac"
        }
    },
    {
        "createdDate": "2019-12-28T07:59:51+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "test_definition",
        "activityAction": "delete",
        "activityAdditionalInfo": {
            "testDefinitionId": 13638,
            "testDefinitionName": "Copy of td refac"
        }
    },
    {
        "createdDate": "2019-12-17T09:15:11+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "comparative_test_case",
        "activityAction": "create",
        "activityAdditionalInfo": {
            "testDefinitionId": 13626,
            "testDefinitionName": "TD / test",
            "comparativeTestCaseId": 14506,
            "comparativeTestCaseName": "tc1"
        }
    },
    {
        "createdDate": "2019-12-17T08:44:12+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "test_run",
        "activityAction": "create",
        "activityAdditionalInfo": {
            "note": "Test a change on staging",
            "testRunId": 13078
        }
    },
    {
        "createdDate": "2019-12-16T14:52:32+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "test_difference",
        "activityAction": "accept",
        "activityAdditionalInfo": {
            "testDefinitionId": 13310,
            "testDefinitionName": "Testatcuser20",
            "testDefinitionExecutionId": 17117,
            "testDifferenceId": "c5267ce4-89e1-44db-83ec-7d2651330903",
            "testRunId": 13025
        }
    },
    {
        "createdDate": "2019-12-23T05:27:04+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "requirement",
        "activityAction": "edit",
        "activityAdditionalInfo": {
            "requirementName": "req123",
            "requirementId": 24
        }
    },
    {
        "createdDate": "2020-01-03T11:28:04+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "functional_test_case",
        "activityAction": "create",
        "activityAdditionalInfo": {
            "functionalTestCaseId": 298,
            "testRequestId": 59,
            "conditionId": 42,
            "clientProfileId": 1
        }
    },
    {
        "createdDate": "2020-01-06T19:58:52+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "condition",
        "activityAction": "edit",
        "activityAdditionalInfo": {
            "conditionId": 47
        }
    }
]

List comparison lists

Get the comparison lists for a specific test definition. This includes the Compare All Except list of comparisons and the Compare Only list of comparisons.

GET /test-management/v2/comparison-settings-default-values

Status 200 application/json

Download schema: get-comparison-settings-default-values-response.json

Response body:

{
    "responseHeaders": {
        "compareOnly": [],
        "compareAllExcept": [
            "Age",
            "Date",
            "Expires",
            "Server",
            "Via",
            "Set-Cookie",
            "Cache-Control"
        ]
    },
    "metadataVariables": {
        "compareOnly": [
            "PMUSER_*",
            "AKA_PM_*"
        ],
        "compareAllExcept": []
    }
}

List HTTP headers

Get list of standard HTTP request and response headers. These values can be used to prepopulate the request headers during the creation or modification of a test case.

GET /test-management/v2/http-headers

Status 200 application/json

Download schema: get-http-headers-response.json

Response body:

{
    "requestHeaders": [
        {
            "headerName": "A-IM",
            "possibleValues": [
                "vcdiff, gdiff",
                "vcdiff, gdiff;q=0.3",
                "vcdiff, diffe, gzip"
            ]
        },
        {
            "headerName": "Accept",
            "possibleValues": [
                "audio/*",
                "text/html",
                "text/plain",
                "image/jpeg"
            ]
        },
        {
            "headerName": "Accept-Additions",
            "possibleValues": []
        },
        {
            "headerName": "Accept-Charset",
            "possibleValues": [
                "iso-8859-5",
                "unicode-1-1"
            ]
        },
        {
            "headerName": "Accept-Datetime",
            "possibleValues": []
        },
        {
            "headerName": "Accept-Encoding",
            "possibleValues": [
                "compress",
                "gzip",
                "identity",
                "deflate"
            ]
        },
        {
            "headerName": "Accept-Features",
            "possibleValues": []
        },
        {
            "headerName": "Accept-Language",
            "possibleValues": [
                "en-US",
                "da",
                "en-gb",
                "en"
            ]
        }
    ],
    "responseHeaders": [
        {
            "headerName": "Access-Control",
            "possibleValues": []
        },
        {
            "headerName": "Access-Control-Allow-Credentials",
            "possibleValues": []
        }
    ]
}

Data

This section describes the Test Center API’s data objects.

Download the JSON schemas for this API.

This section’s data schema tables list membership requirements as follows:

Member is required in requests, or always present in responses, even if its value is empty or null.
Member is optional, and may be omitted in some cases.

Requirement

Contains information about a business requirement behind the configuration changes and links it to your ticketing system. When sending the PUT request you need to provide only required members. The optional, missing ones are substituted with their default values.

Download schema: update-requirement-request.json

Sample GET response:

{
    "requirementId": 7,
    "requirementName": "Example.com sanity requirement",
    "requirementDescription": "The basic requirement to test the config changes",
    "createdBy": "atctest@akamai.com",
    "createdDate": "2019-10-30T12:09:37+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2019-10-30T12:09:37+0000",
    "references": [
        {
            "referenceTitle": "Basic",
            "referenceUrl": "http://www.atcuser8.akamaiu.com/reference"
        }
    ]
}

Requirement members

Member Type Required Description
Requirement: Contains information about a business requirement behind the configuration changes and links it to your ticketing system. When sending the PUT request you need to provide only required members. The optional, missing ones are substituted with their default values.
createdBy String Read-only. Username who created the requirement.
createdDate String Read-only. ISO 8601 timestamp indicating when the requirement was created.
modifiedBy String Read-only. Username who last modified the requirement.
modifiedDate String Read-only. ISO 8601 timestamp indicating when the requirement was last modified.
references Requirement.references[] Contains information about external references providing more details about the requirement. The default value for the PUT request is an empty array. See Default values.
requirementDescription String Description you provide for the requirement. The default value for the PUT request is an empty string. See Default values.
requirementId Integer Read-only. Unique identifier of the requirement.
requirementName String Name you provide for the requirement.
Requirement.references[]: Contains information about external references providing more details about the requirement. The default value for the PUT request is an empty array. See Default values.
referenceTitle String Title of the external reference that you provide.
referenceUrl String URL of the reference that you provide. For example, a ticket in your ticketing system with the request for the config changes. The default value for the PUT request is an empty string. See Default values.

ConfigVersion

Contains information about a config version. Config versions refer to Property Manager property versions. All operations performed on config versions are saved only in Test Center and they don’t affect properties in Property Manager.

Download schema: get-config-version-response.json

Sample GET response:

{
    "configVersionId": 919,
    "arlFileId": 424809,
    "propertyName": "atc_test_config",
    "propertyVersion": 6,
    "propertyVersionNote": "Test asset v1",
    "lastSync": "2020-01-04T11:35:30+0000"
}

ConfigVersion members

Member Type Required Description
ConfigVersion: Contains information about a config version. Config versions refer to Property Manager property versions. All operations performed on config versions are saved only in Test Center and they don’t affect properties in Property Manager.
arlFileId Integer Unique identifier of a property that corresponds to the config version.
configVersionId Integer Read-only. Unique identifier for the config version.
lastSync String Read-only. ISO 8601 timestamp indicating when the config version was last synchronized with Property Manager. This is also the date when the config version was added to Test Center.
propertyName String Read-only. Name of the imported property that corresponds to this config version.
propertyVersion Integer Version of the imported property that corresponds to this config version.
propertyVersionNote String Read-only. Notes about the property version that corresponds to this config version imported from Property Manager.

TestSuite

Contains information about a test suite. When sending the PUT request you need to provide only required members. The optional, missing ones are substituted with their default values.

Download schema: update-test-suite-request.json

Sample GET response:

{
    "createdBy": "atctest@akamai.com",
    "createdDate": "2019-10-30T12:09:37+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2019-10-30T12:09:37+0000",
    "testSuiteId": 284,
    "testSuiteName": "www.atcuser8.akamaiu.com sanity test suite",
    "testSuiteDescription": "This test suite performs basic sanity of www.atcuser8.akamaiu.com",
    "locked": false,
    "stateful": false
}

TestSuite members

Member Type Required Description
TestSuite: Contains information about a test suite. When sending the PUT request you need to provide only required members. The optional, missing ones are substituted with their default values.
createdBy String Read-only. Username who created the test suite.
createdDate String Read-only. ISO 8601 timestamp indicating when the test suite was created.
locked Boolean Whether the test suite is locked. While locked, you can’t add test cases to it, reorder or remove those already included.
modifiedBy String Read-only. Username who last modified the test suite.
modifiedDate String Read-only. ISO 8601 timestamp indicating when the test suite was last modified.
stateful Boolean Whether cookies and session information are retained for subsequent test cases within the test suite.
testSuiteDescription String Description you provide for the test suite. The default value for the PUT request is an empty string. See Default values.
testSuiteId Integer Read-only. Unique identifier of the test suite.
testSuiteName String Name you provide for the test suite.

FunctionalTestCase

Contains information about the functional test cases and included objects: conditions, test requests, and client profiles.

Download schema: get-functional-test-case-response.json

Sample GET response:

{
    "testCaseId": 301,
    "createdBy": "atctest@akamai.com",
    "createdDate": "2020-01-07T06:25:07+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2020-01-07T06:25:07+0000",
    "clientProfile": {
        "clientProfileId": 2,
        "geoLocation": "us",
        "ipVersion": "ipv4",
        "browser": {
            "name": "chrome",
            "version": "72"
        }
    },
    "testRequest": {
        "testRequestId": 59,
        "testRequestUrl": "https://www.atcuser8.akamaiu.com/?abc=1234555",
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-12-31T08:52:57+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2020-01-03T09:26:09+0000",
        "requestHeaders": [
            {
                "headerName": "Accept",
                "headerValues": "v1",
                "headerAction": "add"
            }
        ]
    },
    "condition": {
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-12-15T04:30:46+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2020-01-06T19:58:52+0000",
        "conditionId": 47,
        "condition": {
            "conditionNodeId": 1,
            "values": [
                "responseHeader"
            ],
            "conditionNode": {
                "conditionNodeId": 4,
                "values": [
                    "Content-Type"
                ],
                "conditionNode": {
                    "conditionNodeId": 5,
                    "values": [
                        "hasAValue"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 7,
                        "values": [
                            "endsWith"
                        ],
                        "conditionNode": {
                            "conditionNodeId": 4,
                            "values": [
                                "json"
                            ]
                        }
                    }
                }
            }
        }
    }
}

FunctionalTestCase members

Member Type Required Description
FunctionalTestCase: Contains information about the functional test cases and included objects: conditions, test requests, and client profiles.
clientProfile ClientProfile object Contains information about the included client profile.
condition Condition object Contains information about the included condition.
createdBy String Username who created the functional test case.
createdDate String ISO 8601 timestamp indicating when the functional test case was created.
modifiedBy String Username who last modified the functional test case.
modifiedDate String ISO 8601 timestamp indicating when the functional test case was last modified.
testCaseId Integer Unique identifier of the functional test case.
testRequest TestRequest object Contains information about the included test request.

CloneFunctionalTestCase

Contains information about functional test cases and included objects to be cloned. To clone them, you need to change at least one included object, a test request, a condition, or a client profile. See Default values.

Download schema: clone-functional-test-case-request-object.json

Sample POST response:

[
    {
        "testCaseId": 301,
        "clientProfileId": 2
    },
    {
        "testCaseId": 308,
        "conditionId": 47
    }
]

CloneFunctionalTestCase members

Member Type Required Description
CloneFunctionalTestCase: Contains information about functional test cases and included objects to be cloned. To clone them, you need to change at least one included object, a test request, a condition, or a client profile. See Default values.
clientProfileId Integer It identifies any other client profile you want to specify instead of the one in the test case you’re cloning. If not provided, then the functional test case is cloned with the client profile included originally.
conditionId Integer It identifies any other condition you want to specify instead of the one in the test case you’re cloning. If not provided, then the functional test case is cloned with the condition included originally.
testCaseId Integer Unique identifier of the functional test case you want to clone.
testRequestId Integer It identifies any other test request you want to specify instead of the one in the test case you’re cloning. If not provided, then the functional test case is cloned with the test request included originally.

ClientProfile

Contains information about the Akamai-provided client profile.

Download schema: get-client-profile-response.json

Sample GET response:

{
    "clientProfileId": 1,
    "geoLocation": "us",
    "ipVersion": "ipv6",
    "browser": {
        "name": "chrome",
        "version": "72"
    }
}

ClientProfile members

Member Type Description
ClientProfile: Contains information about the Akamai-provided client profile.
browser ClientProfile.browser Contains information about the real browser used to execute the functional test case.
clientProfileId Integer Unique identifier of the client profile.
geoLocation Enumeration Geographic region for which the functional test cases using this client profile would be executed. The only currently available value is us for United States.
ipVersion Enumeration IP versions for which the functional test cases using this client profile are run, either ipv4 or ipv6.
ClientProfile.browser: Contains information about the real browser used to execute the functional test case.
name String Name of the browser used to run functional test cases.
version String Version of the browser used to run functional test cases.

TestRequest

Contains information about a test request. When sending the PUT request you need to provide only required members. The optional, missing ones are substituted with their default values.

Download schema: update-test-request-request.json

Sample GET response:

{
    "testRequestId": 11,
    "testRequestUrl": "http://www.atcuser8.akamaiu.com/images/logo.png",
    "createdBy": "atctest@akamai.com",
    "createdDate": "2019-11-15T15:42:50+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2019-11-15T15:42:50+0000",
    "tags": [
        "images"
    ],
    "requestHeaders": [
        {
            "headerName": "Accept",
            "headerValue": "image/png",
            "headerAction": "modify"
        }
    ]
}

TestRequest members

Member Type Required Description
TestRequest: Contains information about a test request. When sending the PUT request you need to provide only required members. The optional, missing ones are substituted with their default values.
createdBy String Read-only. Username who created the test request.
createdDate String Read-only. ISO 8601 timestamp indicating when the test request was created.
modifiedBy String Read-only. Username who last modified the test request.
modifiedDate String Read-only. ISO 8601 timestamp indicating when the test request was last modified.
requestHeaders TestRequest.requestHeaders[] Contains information about request headers included in the functional test case. The default value for the PUT request is an empty array. See Default values.
tags Array Keywords you associate with the test request. The default value for the PUT request is an empty array. See Default values.
testRequestId Integer Read-only. Unique identifier of the test request.
testRequestUrl String URL of the page or object you want to test. It must be fully qualified: it must contain a protocol, a hostname, and a path, as well as query string parameters, if present. Test Center requests this URL from a browser, as well as any requests triggered by it.
TestRequest.requestHeaders[]: Contains information about request headers included in the functional test case. The default value for the PUT request is an empty array. See Default values.
headerAction Enumeration Your request header settings. Possible values are: add to add the entered request headers, modify to modify the existing request headers, or filter to filter entered request headers from this functional test case.
headerName String Name of the request header that you provide.
headerValue String Value of the request header that you provide.

Condition

Contains information about the condition. Conditions are the criteria to be evaluated on the HTTP response corresponding to the test request or a specific config setting applied to the test request. They have a sentence-like structure and each element of the sentence is a value taken from a condition node.

Download schema: update-condition-request.json

Sample GET response:

{
    "conditionId": 47,
    "createdBy": "atctest@akamai.com",
    "createdDate": "2019-12-15T04:30:46+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2019-12-15T04:30:46+0000",
    "condition": {
        "conditionNodeId": 1,
        "values": [
            "responseCode"
        ],
        "conditionNode": {
            "conditionNodeId": 2,
            "values": [
                "isOneOf"
            ],
            "conditionNode": {
                "conditionNodeId": 3,
                "values": [
                    200,
                    201
                ]
            }
        }
    }
}

Condition members

Member Type Required Description
Condition: Contains information about the condition. Conditions are the criteria to be evaluated on the HTTP response corresponding to the test request or a specific config setting applied to the test request. They have a sentence-like structure and each element of the sentence is a value taken from a condition node.
condition Condition.condition Contains the condition. The condition have sentence-like structure and they are constructed out of values of condition nodes. To get the Akamai-provided list of all condition nodes and the sequence in which they are triggered, run the Get the test catalog template operation.
conditionId Integer Read-only. Unique identifier of the condition.
createdBy String Read-only. Username who created the condition.
createdDate String Read-only. ISO 8601 timestamp indicating when the condition was created.
modifiedBy String Read-only. Username who last modified the condition.
modifiedDate String Read-only. ISO 8601 timestamp indicating when the condition was last modified.
Condition.condition: Contains the condition. The condition have sentence-like structure and they are constructed out of values of condition nodes. To get the Akamai-provided list of all condition nodes and the sequence in which they are triggered, run the Get the test catalog template operation.
conditionNode Condition.condition Specifies the nested condition node. Each conditionNode object may specify its own nested conditionNode, forming a nested tree structure.
conditionNodeId Integer Unique identifier of the condition node taken from the test catalog template.
values Array List of values selected from the condition node or input supported by the node.

TestCatalogTemplate

Contains the test catalog template used for creating conditions. Conditions have a sentence-like structure. The template provides the list of available building blocks, conditionNodes, and combinations in which they can be combined, triggerMappings. See detailed descriptions of Conditions and Test catalog template in the Test Center concepts section.

Download schema: get-test-catalog-template-response.json

Sample GET response:

{
    "triggerMappings": {
        "conditionNodeId": 1,
        "triggers": [
            {
                "triggerValue": "responseHeader",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 4,
                    "triggers": [
                        {
                            "triggerValue": null,
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 5,
                                "triggers": [
                                    {
                                        "triggerValue": "hasAValue",
                                        "validPath": true,
                                        "conditionNode": {
                                            "conditionNodeId": 7,
                                            "triggers": [
                                                {
                                                    "triggerValue": "doesNotEndWith",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "beginsWith",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "doesNotEqual",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "doesNotContain",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "doesNotBeginWith",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "matchesRegex",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "doesNotMatchRegex",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "contains",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "endsWith",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "equals",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "hasNoValue",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "doesNotExist",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "exists",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "sureRoute",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 14,
                    "triggers": [
                        {
                            "triggerValue": "isEnabled",
                            "validPath": true,
                            "conditionNode": null
                        },
                        {
                            "triggerValue": "isNotEnabled",
                            "validPath": true,
                            "conditionNode": null
                        }
                    ]
                }
            },
            {
                "triggerValue": "responseCode",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 2,
                    "triggers": [
                        {
                            "triggerValue": "isOneOf",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 3,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "cacheKeyQueryParameters",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 19,
                    "triggers": [
                        {
                            "triggerValue": "included",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 25,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "notIncluded",
                            "validPath": true,
                            "conditionNode": null
                        }
                    ]
                }
            },
            {
                "triggerValue": "logRequestDetails",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 15,
                    "triggers": [
                        {
                            "triggerValue": "customData",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "isLogged",
                                        "validPath": true,
                                        "conditionNode": {
                                            "conditionNodeId": 6,
                                            "triggers": [
                                                {
                                                    "triggerValue": "value",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 23,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": "is",
                                                                "validPath": false,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 4,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": null,
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "isNotLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "referrerHeader",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "isLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "isNotLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "acceptLanguageHeader",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "isLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "isNotLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "userAgentHeader",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "isLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "isNotLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "hostHeader",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "isLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "isNotLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "cookies",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 24,
                                "triggers": [
                                    {
                                        "triggerValue": "logged",
                                        "validPath": false,
                                        "conditionNode": {
                                            "conditionNodeId": 17,
                                            "triggers": [
                                                {
                                                    "triggerValue": null,
                                                    "validPath": true,
                                                    "conditionNode": null
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "notLogged",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "originServer",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 23,
                    "triggers": [
                        {
                            "triggerValue": "is",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 4,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "lastMileAcceleration",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 22,
                    "triggers": [
                        {
                            "triggerValue": "isGzipped",
                            "validPath": true,
                            "conditionNode": null
                        },
                        {
                            "triggerValue": "isNotGzipped",
                            "validPath": true,
                            "conditionNode": null
                        }
                    ]
                }
            },
            {
                "triggerValue": "cpCode",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 23,
                    "triggers": [
                        {
                            "triggerValue": "is",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 9,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "ignoreCaseInCacheKey",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 14,
                    "triggers": [
                        {
                            "triggerValue": "isEnabled",
                            "validPath": true,
                            "conditionNode": null
                        },
                        {
                            "triggerValue": "isNotEnabled",
                            "validPath": true,
                            "conditionNode": null
                        }
                    ]
                }
            },
            {
                "triggerValue": "redirect",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 2,
                    "triggers": [
                        {
                            "triggerValue": "isOneOf",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 13,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true,
                                        "conditionNode": {
                                            "conditionNodeId": 18,
                                            "triggers": [
                                                {
                                                    "triggerValue": "location",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 23,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": "is",
                                                                "validPath": false,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 4,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": null,
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "prefetchObjects",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 20,
                    "triggers": [
                        {
                            "triggerValue": "isNotTriggered",
                            "validPath": true,
                            "conditionNode": null
                        },
                        {
                            "triggerValue": "isTriggered",
                            "validPath": true,
                            "conditionNode": null
                        }
                    ]
                }
            },
            {
                "triggerValue": "tieredDistribution",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 14,
                    "triggers": [
                        {
                            "triggerValue": "isEnabled",
                            "validPath": true,
                            "conditionNode": null
                        },
                        {
                            "triggerValue": "isNotEnabled",
                            "validPath": true,
                            "conditionNode": null
                        }
                    ]
                }
            },
            {
                "triggerValue": "cachingOption",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 23,
                    "triggers": [
                        {
                            "triggerValue": "is",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 10,
                                "triggers": [
                                    {
                                        "triggerValue": "cache",
                                        "validPath": false,
                                        "conditionNode": {
                                            "conditionNodeId": 11,
                                            "triggers": [
                                                {
                                                    "triggerValue": "seconds",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 9,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": null
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "minutes",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 9,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": null
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "hours",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 9,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": null
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "days",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 9,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": null
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "no-store",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "bypass-cache",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "variable",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 4,
                    "triggers": [
                        {
                            "triggerValue": null,
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 5,
                                "triggers": [
                                    {
                                        "triggerValue": "hasAValue",
                                        "validPath": true,
                                        "conditionNode": {
                                            "conditionNodeId": 7,
                                            "triggers": [
                                                {
                                                    "triggerValue": "doesNotEndWith",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "beginsWith",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "doesNotEqual",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "doesNotContain",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "doesNotBeginWith",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "matchesRegex",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "doesNotMatchRegex",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "contains",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "endsWith",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "equals",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignoreCase",
                                                                            "validPath": true,
                                                                            "conditionNode": null
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "hasNoValue",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "doesNotExist",
                                        "validPath": true,
                                        "conditionNode": null
                                    },
                                    {
                                        "triggerValue": "exists",
                                        "validPath": true,
                                        "conditionNode": null
                                    }
                                ]
                            }
                        }
                    ]
                }
            }
        ]
    },
    "conditionNodes": [
        {
            "conditionNodeId": 7,
            "conditionNodeDescription": "Multiple string test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "doesNotEqual",
                    "doesNotBeginWith",
                    "contains",
                    "endsWith",
                    "beginsWith",
                    "equals",
                    "doesNotContain",
                    "doesNotEndWith",
                    "matchesRegex",
                    "doesNotMatchRegex"
                ]
            }
        },
        {
            "conditionNodeId": 1,
            "conditionNodeDescription": "Root condition nodes",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "responseCode",
                    "originServer",
                    "sureRoute",
                    "ignoreCaseInCacheKey",
                    "cacheKeyQueryParameters",
                    "prefetchObjects",
                    "lastMileAcceleration",
                    "tieredDistribution",
                    "responseHeader",
                    "variable",
                    "logRequestDetails",
                    "cpCode",
                    "cachingOption",
                    "redirect"
                ]
            }
        },
        {
            "conditionNodeId": 16,
            "conditionNodeDescription": "Is and is not logged test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "isLogged",
                    "isNotLogged"
                ]
            }
        },
        {
            "conditionNodeId": 15,
            "conditionNodeDescription": "Log request values",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "hostHeader",
                    "customData",
                    "referrerHeader",
                    "userAgentHeader",
                    "acceptLanguageHeader",
                    "cookies"
                ]
            }
        },
        {
            "conditionNodeId": 11,
            "conditionNodeDescription": "Time units",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "days",
                    "minutes",
                    "hours",
                    "seconds"
                ]
            }
        },
        {
            "conditionNodeId": 24,
            "conditionNodeDescription": "Logged/not logged test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "notLogged",
                    "logged"
                ]
            }
        },
        {
            "conditionNodeId": 10,
            "conditionNodeDescription": "Caching options",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "cache",
                    "no-store",
                    "bypass-cache"
                ]
            }
        },
        {
            "conditionNodeId": 20,
            "conditionNodeDescription": "Is and is not triggered test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "isNotTriggered",
                    "isTriggered"
                ]
            }
        },
        {
            "conditionNodeId": 23,
            "conditionNodeDescription": "Is test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "is"
                ]
            }
        },
        {
            "conditionNodeId": 5,
            "conditionNodeDescription": "Exists or does not exists test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "hasAValue",
                    "hasNoValue",
                    "doesNotExist",
                    "exists"
                ]
            }
        },
        {
            "conditionNodeId": 3,
            "conditionNodeDescription": "User input to select multiple response codes",
            "valueControls": {
                "valueDataType": "integer",
                "valueInputType": "multiple_choice",
                "newValueSupported": true,
                "availableValues": [
                    300,
                    200,
                    400,
                    500
                ]
            }
        },
        {
            "conditionNodeId": 14,
            "conditionNodeDescription": "Is and is not enabled test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "isEnabled",
                    "isNotEnabled"
                ]
            }
        },
        {
            "conditionNodeId": 22,
            "conditionNodeDescription": "Is and is not gzipped test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "isNotGzipped",
                    "isGzipped"
                ]
            }
        },
        {
            "conditionNodeId": 8,
            "conditionNodeDescription": "String ignore case test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "ignoreCase"
                ]
            }
        },
        {
            "conditionNodeId": 6,
            "conditionNodeDescription": "Input value select",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "value"
                ]
            }
        },
        {
            "conditionNodeId": 19,
            "conditionNodeDescription": "Included/not included test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "included",
                    "notIncluded"
                ]
            }
        },
        {
            "conditionNodeId": 2,
            "conditionNodeDescription": "Is one of test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "isOneOf"
                ]
            }
        },
        {
            "conditionNodeId": 13,
            "conditionNodeDescription": "User input to select multiple redirect(3xx) response codes",
            "valueControls": {
                "valueDataType": "integer",
                "valueInputType": "multiple_choice",
                "newValueSupported": true,
                "availableValues": [
                    301,
                    302
                ]
            }
        },
        {
            "conditionNodeId": 12,
            "conditionNodeDescription": "String equals test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "equals"
                ]
            }
        },
        {
            "conditionNodeId": 18,
            "conditionNodeDescription": "Redirect url(location) test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "location"
                ]
            }
        },
        {
            "conditionNodeId": 25,
            "conditionNodeDescription": "User input to enter multiple string in order",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "multiple_choice",
                "newValueSupported": true,
                "availableValues": []
            }
        },
        {
            "conditionNodeId": 17,
            "conditionNodeDescription": "User input to enter multiple string",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "multiple_choice",
                "newValueSupported": true,
                "availableValues": []
            }
        },
        {
            "conditionNodeId": 9,
            "conditionNodeDescription": "User input to enter a integer",
            "valueControls": {
                "valueDataType": "integer",
                "valueInputType": "free_text",
                "newValueSupported": true,
                "availableValues": []
            }
        },
        {
            "conditionNodeId": 4,
            "conditionNodeDescription": "User input to enter a string",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "free_text",
                "newValueSupported": true,
                "availableValues": []
            }
        }
    ]
}

TestCatalogTemplate members

Member Type Description
TestCatalogTemplate: Contains the test catalog template used for creating conditions. Conditions have a sentence-like structure. The template provides the list of available building blocks, conditionNodes, and combinations in which they can be combined, triggerMappings. See detailed descriptions of Conditions and Test catalog template in the Test Center concepts section.
conditionNodes TestCatalogTemplate.conditionNodes[] Contains the Akamai-provided list of available nodes which are the building blocks of the conditions together with their descriptions.
triggerMappings TestCatalogTemplate.triggerMappings Contains the sequence of subsequently triggered condition nodes that you must follow to create a valid condition.
TestCatalogTemplate.conditionNodes[]: Contains the Akamai-provided list of available nodes which are the building blocks of the conditions together with their descriptions.
conditionNodeDescription String Summarizes the purpose of each condition node.
conditionNodeId Integer Identifier of the condition node.
valueControls TestCatalogTemplate.conditionNodes[].valueControls Contains information about values supported by the condition node. It can be either a fixed list of values for you to choose from or information about supported input.
TestCatalogTemplate.conditionNodes[].valueControls: Contains information about values supported by the condition node. It can be either a fixed list of values for you to choose from or information about supported input.
availableValues Array List of predefined values available in the condition node. Depending on the node it can be either an array of strings or integers.
newValueSupported Boolean Whether you can provide your own values or you must select out of those listed in availableValues.
valueDataType Enumeration Specifies whether availableValues are string or integer type.
valueInputType Enumeration Specifies whether the set of values you provide are single_choice, multiple_choice, or free_text that adheres to the condition’s valueDataType.
TestCatalogTemplate.triggerMappings: Contains the sequence of subsequently triggered condition nodes that you must follow to create a valid condition.
conditionNodeId Integer Identifier of the condition node from which the construction of the condition starts.
triggers Trigger array Contains the sequence of subsequently triggered condition nodes that you must follow to create a valid condition. Each value selected from the conditionNodeId of 1 in the conditionNodes array, triggers different order of combining the condition nodes. You must follow the triggerMappings flow, until you construct the needed condition and the validPath for the last triggered conditionNode is true.

Trigger

Contains the sequence of subsequently triggered condition nodes. This object is part of the TestCatalogTemplate object.

Download schema: catalog-template-trigger.json

Trigger members

Member Type Required Description
Trigger: Contains the sequence of subsequently triggered condition nodes. This object is part of the TestCatalogTemplate object.
conditionNode Trigger.conditionNode Contains details of subsequently triggered condition node. Absence of this object member indicates the final node that completes the condition.
triggerValue String Value selected from the condition node. Each value from the array of availableValues in the conditionNodes array becomes a triggerValue.
validPath Boolean Whether at this stage of the flow the condition is valid. If false, you must continue constructing the condition.
Trigger.conditionNode: Contains details of subsequently triggered condition node. Absence of this object member indicates the final node that completes the condition.
conditionNodeId Integer Identifier of the triggered condition node. Depending on whether its validPath is true or false it is either the identifier of the condition node triggering subsequent value or the condition node ending the condition.
triggers Trigger array List of triggers for each available values of the condition node.

TestSuitesAssociation

Contains a list of unique identifiers of associated or dissociated test suites.

Download schema: test-suites-association-dissociation-response.json

Sample POST response:

{
    "successes": [
        77
    ],
    "failures": [
        {
            "type": "resource.not.found",
            "title": "Resource not found",
            "requestField": "testSuiteId",
            "requestValues": [
                122
            ]
        }
    ]
}

TestSuitesAssociation members

Member Type Required Description
TestSuitesAssociation: Contains a list of unique identifiers of associated or dissociated test suites.
failures TestSuitesAssociation.failures[] Contains a list of HTTP Problem Details objects and indicates errors together with unique identifiers of items for which the operation failed.
successes Array List of unique identifiers of successfully associated or dissociated test suites.
TestSuitesAssociation.failures[]: Contains a list of HTTP Problem Details objects and indicates errors together with unique identifiers of items for which the operation failed.
requestField String Request field name. It can be a URL or query parameter or any request payload field name.
requestValues Array Request field values.
title String Title of the error.
type String Type of the error.

TestCasesAssociation

Contains a list of unique identifiers of associated or dissociated functional test cases.

Download schema: test-cases-association-dissociation-response.json

Sample POST response:

{
    "successes": [
        301
    ],
    "failures": [
        {
            "type": "resource.not.found",
            "title": "Resource not found",
            "requestField": "testCaseId",
            "requestValues": [
                122
            ]
        }
    ]
}

TestCasesAssociation members

Member Type Required Description
TestCasesAssociation: Contains a list of unique identifiers of associated or dissociated functional test cases.
failures TestCasesAssociation.failures[] Contains a list of HTTP Problem Details objects and indicates errors together with unique identifiers of items for which the operation failed.
successes Array List of unique identifiers of successfully associated or dissociated functional test cases.
TestCasesAssociation.failures[]: Contains a list of HTTP Problem Details objects and indicates errors together with unique identifiers of items for which the operation failed.
requestField String Request field name. It can be a URL or query parameter or any request payload field name.
requestValues Array Request field values.
title String Title of the error.
type String Type of the error.

TestDefinition

The basic unit of testing in Test Center. A test definition is associated with a hostname and configured with at least one test case for testing that hostname. Status is active by default but once a test definition is removed it becomes inactive and can no longer be made active.

Download schema: get-test-definition-response.json

Sample GET response:

{
    "testDefinitionId": 738,
    "hostname": "www.example-weather.com",
    "testDefinitionName": "Weather Test",
    "testDefinitionDescription": "Testing weather prefetch configurations",
    "createdBy": "atctestuser",
    "modifiedBy": "atctestuser",
    "createdDate": "2018-03-16T10:46:21+0000",
    "modifiedDate": "2018-03-16T10:46:22+0000",
    "status": "active",
    "ipVersions": [
        "ipv6"
    ]
}

TestDefinition members

Member Type Required Description
TestDefinition: The basic unit of testing in Test Center. A test definition is associated with a hostname and configured with at least one test case for testing that hostname. Status is active by default but once a test definition is removed it becomes inactive and can no longer be made active.
createdBy String Read-only. The user who created the test definition.
createdDate String Read-only. ISO 8601 timestamp indicating when the test definition was created.
hostname String Hostname to be tested. Once set, you can’t modify this value.
ipVersions Array Can be ipv4, ipv6, or both.
modifiedBy String Read-only. The user who last modified the test definition.
modifiedDate String Read-only. ISO 8601 timestamp indicating when the test definition was last modified.
status Enumeration Read-only. This field denotes the status of the test definition. If it’s active, you can work with it. If it’s inactive, it means that it was removed and it can’t be used. Removed test definitions have the inactive status for 30 days since their removal. After that, they can’t be retrieved.
testDefinitionDescription String A description about the test definition. 4000-character limit.
testDefinitionId Integer Read-only. Unique identifier for the test definition.
testDefinitionName String A short title for the test definition. 100-character limit.

ComparativeTestCase

An object containing data for a single test case, such as which web pages or objects the test definition compares, which response headers are included, and which comparisons are made. Embedded objects here refers to the entities that get loaded after the initial HTML request that is made.

Download schema: get-test-case-response.json

Sample GET response:

{
    "testCaseId": 1855,
    "testDefinitionId": 738,
    "url": "https://www.example-weather.com/",
    "testCaseName": "Base Page",
    "testCaseDescription": "Base Page Test",
    "createdBy": "atctestuser",
    "modifiedBy": "atctestuser",
    "createdDate": "2018-03-16T10:46:23+0000",
    "modifiedDate": "2018-03-16T10:46:28+0000",
    "runOrder": 1,
    "status": "active",
    "comparisonSettings": {
        "responseCode": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "responseHeaders": {
            "isEnabled": true,
            "includeEmbeddedObjects": true,
            "compareOnly": [],
            "compareAllExcept": [
                "Age",
                "Date",
                "Expires",
                "Server",
                "Via",
                "Set-Cookie",
                "Cache-Control"
            ]
        },
        "cpcode": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "cachingOption": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "cacheKey": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        },
        "metadataVariables": {
            "isEnabled": true,
            "includeEmbeddedObjects": true,
            "compareOnly": [],
            "compareAllExcept": [
                "RUM_IS_IPV6",
                "RUA_OUT_IS_APPLIED",
                "RUM_XHR_TEST",
                "RUM_CLIENT_TO_MAPPING_PCT",
                "RANDOM_SAMPLE",
                "RUM_IMPL_PM_GROUPID",
                "RUM_IMPL_PM_GROUPNAME",
                "RUM_IMPL_PM_PRODUCT",
                "RUM_DEBUG"
            ]
        },
        "originServer": {
            "isEnabled": true,
            "includeEmbeddedObjects": true
        }
    },
    "requestHeaders": [
        {
            "headerName": "Max-Forwards",
            "headerAction": "add",
            "headerValues": "10"
        }
    ]
}

ComparativeTestCase members

Member Type Required Description
ComparativeTestCase: An object containing data for a single test case, such as which web pages or objects the test definition compares, which response headers are included, and which comparisons are made. Embedded objects here refers to the entities that get loaded after the initial HTML request that is made.
comparisonSettings ComparativeTestCase.comparisonSettings Attributes which are used for comparison between different environments.
createdBy String Read-only. The user who created the comparative test case.
createdDate String Read-only. ISO 8601 timestamp indicating when the test definition was created.
modifiedBy String Read-only. The user who last modified the test case.
modifiedDate String Read-only. ISO 8601 timestamp indicating when the test definition was last modified.
requestHeaders ComparativeTestCase.requestHeaders[] Encapsulates the request headers in the test case.
runOrder Integer An integer representing the order in which the test case will be run as part of its parent test definition.
status Enumeration Read-only. This field denotes the status of the comparative test case. If it’s active, you can work with it. If it’s inactive, it means that it was removed and it can’t be used. Removed comparative test cases have the inactive status for 30 days since their removal. After that, they can’t be retrieved.
testCaseDescription String Description about the test case. 4000-character limit.
testCaseId Integer A unique Identifier for test case resource.
testCaseName String A short title for the test case. 100-character limit.
testDefinitionId Integer A unique Identifier for test definition resource.
url String URL of the page to be tested.
ComparativeTestCase.comparisonSettings: Attributes which are used for comparison between different environments.
cacheKey ComparativeTestCase.comparisonSettings.cacheKey The string used by the Akamai Edge Server to identify the requested object in the cache.
cachingOption ComparativeTestCase.comparisonSettings.cachingOption The caching option allows you to specify how long you want to cache everything in your configuration.
cpcode ComparativeTestCase.comparisonSettings.cpcode The CP code with which the content from the Akamai Edge Server is being delivered.
metadataVariables ComparativeTestCase.comparisonSettings.metadataVariables The metadata variables used in the processing of the request.
originServer ComparativeTestCase.comparisonSettings.originServer The hostname of the origin server.
responseCode ComparativeTestCase.comparisonSettings.responseCode The numerical part of the HTTP Status Code.
responseHeaders ComparativeTestCase.comparisonSettings.responseHeaders The response headers of the corresponding HTTP responses.
ComparativeTestCase.comparisonSettings.cacheKey: The string used by the Akamai Edge Server to identify the requested object in the cache.
includeEmbeddedObjects Boolean If true, the embedded objects for the cache key are included in the comparison made by the test run. If false, they are not.
isEnabled Boolean If true, the cache key is compared by the test run. If false, the cache key is not compared by the test run.
ComparativeTestCase.comparisonSettings.cachingOption: The caching option allows you to specify how long you want to cache everything in your configuration.
includeEmbeddedObjects Boolean If true, the embedded objects for the caching option are included in the comparison made by the test run. If false, they are not.
isEnabled Boolean If true, the caching option is compared by the test run. If false, the caching option is not compared by the test run.
ComparativeTestCase.comparisonSettings.cpcode: The CP code with which the content from the Akamai Edge Server is being delivered.
includeEmbeddedObjects Boolean If true, the embedded objects for the CP code are included in the comparison made by the test run. If false, they are not.
isEnabled Boolean If true, the CP code is compared by the test run. If false, the CP code is not compared by the test run.
ComparativeTestCase.comparisonSettings.metadataVariables: The metadata variables used in the processing of the request.
compareAllExcept Array The list of all metadata variables to be ignored, or not compared, by the test run.
compareOnly Array The list of metadata variables to be included, or compared, by the test run.
includeEmbeddedObjects Boolean If true, the embedded objects for the metadata variables are included in the comparison made by the test run. If false, they are not.
isEnabled Boolean If true, the metadata variables are compared by the test run. If false they are not.
ComparativeTestCase.comparisonSettings.originServer: The hostname of the origin server.
includeEmbeddedObjects Boolean If true, the embedded objects for the origin server are compared by the test run. If false, they are not.
isEnabled Boolean If true, the origin server is compared by the test run. If false it is not.
ComparativeTestCase.comparisonSettings.responseCode: The numerical part of the HTTP Status Code.
includeEmbeddedObjects Boolean If true, the embedded objects for the response code are compared by the test run. If false, they are not.
isEnabled Boolean If true, the response code is compared by the test run. If false, it is not.
ComparativeTestCase.comparisonSettings.responseHeaders: The response headers of the corresponding HTTP responses.
compareAllExcept Array The list of all response headers to be ignored, or not compared, by the test run.
compareOnly Array The list of response headers to be included, or compared, by the test run.
includeEmbeddedObjects Boolean If true, the embedded objects of the response headers are compared by the test run. If false, they are not.
isEnabled Boolean If true, the response headers are compared by the test run. If false, they are not.
ComparativeTestCase.requestHeaders[]: Encapsulates the request headers in the test case.
headerAction Enumeration Request header settings. Possible values are: add to the list of request headers, modify existing request headers, or filter request headers belonging to this comparative test case.
headerName String The name of the request header.
headerValues String The value of the request header.

TestRunRequest

Contains information about objects executed during a test run against an environment. You can test each of these objects separately in a request: a requirement, a config version, a test suite, a functional test case, and a test definition. You can also combine objects in a request based on the these constrains: config versions with test definitions, a requirement with test definitions, or a requirement with config versions and test definitions. See Run a functional test and Run a comparative test.

Download schema: create-test-run-request.json

Sample POST request:

{
    "targetEnvironment": "production",
    "note": "Config change test",
    "sendEmailOnCompletion": true,
    "functional": {
        "requirementExecutions": [
            {
                "requirementId": 22,
                "testSuiteExecutions": [
                    {
                        "testSuiteId": 33,
                        "testCaseExecutions": [
                            {
                                "testCaseId": 301
                            }
                        ]
                    }
                ]
            }
        ],
        "configVersionExecutions": [
            {
                "configVersionId": 919,
                "testSuiteExecutions": [
                    {
                        "testSuiteId": 79,
                        "testCaseExecutions": [
                            {
                                "testCaseId": 293
                            }
                        ]
                    }
                ]
            }
        ]
    },
    "comparative": {
        "testDefinitionExecutions": [
            {
                "testDefinitionId": 7225,
                "targetHostname": "www.atcuser8.akamaiu.com",
                "ipVersions": [
                    "ipv4",
                    "ipv6"
                ],
                "testCaseIds": [
                    7832
                ]
            }
        ]
    }
}

TestRunRequest members

Member Type Required Description
TestRunRequest: Contains information about objects executed during a test run against an environment. You can test each of these objects separately in a request: a requirement, a config version, a test suite, a functional test case, and a test definition. You can also combine objects in a request based on the these constrains: config versions with test definitions, a requirement with test definitions, or a requirement with config versions and test definitions. See Run a functional test and Run a comparative test.
comparative TestRunRequest.comparative Contains information about comparative testing objects executed during the test run. This object is optional but either this or the functional object or both must appear in the request, depending on what kind of test you want to run.
functional TestRunRequest.functional Contains information about functional testing objects executed during the test run. Depending on what you want to run the functional test for, it may include: configVersionExecutions, requirementExecutions, testCaseExecutions, or testSuiteExecutions. This object is optional but either this or the comparative object or both must appear in the request, depending on which test you want to run.
note String Notes about the test run.
sendEmailOnCompletion Boolean Whether you get a notification email after the test run is complete.
targetEnvironment Enumeration Environment against which Test Center executes the test run, either production or staging.
TestRunRequest.comparative: Contains information about comparative testing objects executed during the test run. This object is optional but either this or the functional object or both must appear in the request, depending on what kind of test you want to run.
testDefinitionExecutions TestRunRequest.comparative.testDefinitionExecutions[] Contains information about executed test definitions.
TestRunRequest.comparative.testDefinitionExecutions[]: Contains information about executed test definitions.
ipVersions Array IP versions for which the test run is executed. Can be ipv4, ipv6, or both.
targetHostname String Target environment hostname against which the test definition is executed.
testCaseIds Array List of unique identifiers of comparative test cases included in the test definitions.
testDefinitionId Integer Unique identifiers of the executed test definition.
TestRunRequest.functional: Contains information about functional testing objects executed during the test run. Depending on what you want to run the functional test for, it may include: configVersionExecutions, requirementExecutions, testCaseExecutions, or testSuiteExecutions. This object is optional but either this or the comparative object or both must appear in the request, depending on which test you want to run.
configVersionExecutions TestRunRequest.functional.configVersionExecutions[] Contains information about executed config versions.
requirementExecutions TestRunRequest.functional.requirementExecutions[] Contains information about executed requirements.
testCaseExecutions TestRunRequest.functional.testCaseExecutions[] Contains information about executed functional test cases.
testSuiteExecutions TestRunRequest.functional.testSuiteExecutions[] Contains information about executed test suites.
TestRunRequest.functional.configVersionExecutions[]: Contains information about executed config versions.
configVersionId Integer Unique identifier of the config version you want to execute.
testSuiteExecutions TestRunRequest.functional.configVersionExecutions[].testSuiteExecutions[] Contains information about test suites associated to the config version.
TestRunRequest.functional.configVersionExecutions[].testSuiteExecutions[]: Contains information about test suites associated to the config version.
testCaseExecutions TestRunRequest.functional.configVersionExecutions[].testSuiteExecutions[].testCaseExecutions[] Contains information about functional test cases included in the test suite you want to execute.
testSuiteId Integer Unique identifier of the associated test suite you want to execute.
TestRunRequest.functional.configVersionExecutions[].testSuiteExecutions[].testCaseExecutions[]: Contains information about functional test cases included in the test suite you want to execute.
testCaseId Integer Unique identifier of the included functional test case.
TestRunRequest.functional.requirementExecutions[]: Contains information about executed requirements.
requirementId Integer Unique identifier of the requirement you want to execute.
testSuiteExecutions TestRunRequest.functional.requirementExecutions[].testSuiteExecutions[] Contains information about test suites associated to the requirement.
TestRunRequest.functional.requirementExecutions[].testSuiteExecutions[]: Contains information about test suites associated to the requirement.
testCaseExecutions TestRunRequest.functional.requirementExecutions[].testSuiteExecutions[].testCaseExecutions[] Contains information about functional test cases included in the test suite.
testSuiteId Integer Unique identifier of the associated test suite you want to execute.
TestRunRequest.functional.requirementExecutions[].testSuiteExecutions[].testCaseExecutions[]: Contains information about functional test cases included in the test suite.
testCaseId Integer Unique identifier of the included functional test case you want to execute.
TestRunRequest.functional.testCaseExecutions[]: Contains information about executed functional test cases.
testCaseId Integer Unique identifier of the functional test case.
TestRunRequest.functional.testSuiteExecutions[]: Contains information about executed test suites.
testCaseExecutions TestRunRequest.functional.testSuiteExecutions[].testCaseExecutions[] Contains information about functional test cases included in the test suite.
testSuiteId Integer Unique identifier of the test suite.
TestRunRequest.functional.testSuiteExecutions[].testCaseExecutions[]: Contains information about functional test cases included in the test suite.
testCaseId Integer Unique identifier of the included functional test case.

TestRunResponse

Contains information about progress of a test run and its results. It also lists all objects executed during the test run.

Download schema: get-test-run-response.json

Sample GET response:

{
    "testRunId": 13081,
    "status": "in_progress",
    "targetEnvironment": "production",
    "note": "Config change test",
    "submittedBy": "atctest@akamai.com",
    "submittedDate": "2020-01-08T17:19:19+0000",
    "functional": {
        "status": "in_progress",
        "requirementExecutions": [
            {
                "requirementId": 22,
                "status": "in_progress",
                "testSuiteExecutions": [
                    {
                        "testSuiteId": 33,
                        "testSuiteExecutionId": 46,
                        "status": "in_progress",
                        "testCaseExecutions": [
                            {
                                "testCaseId": 301,
                                "testCaseExecutionId": 264,
                                "status": "in_progress"
                            }
                        ]
                    }
                ]
            }
        ],
        "configVersionExecutions": [
            {
                "configVersionId": 919,
                "status": "in_progress",
                "testSuiteExecutions": [
                    {
                        "testSuiteId": 79,
                        "testSuiteExecutionId": 45,
                        "status": "in_progress",
                        "testCaseExecutions": [
                            {
                                "testCaseId": 293,
                                "testCaseExecutionId": 263,
                                "status": "in_progress"
                            }
                        ]
                    }
                ]
            }
        ]
    },
    "comparative": {
        "status": "in_progress",
        "testDefinitionExecutions": [
            {
                "testDefinitionExecutionId": 17125,
                "testDefinitionId": 7225,
                "targetHostname": "www.atcuser8.akamaiu.com",
                "targetEnvironment": "production",
                "status": "in_progress",
                "ipVersions": [
                    "ipv4",
                    "ipv6"
                ],
                "testCaseIds": [
                    7832
                ]
            }
        ]
    }
}

TestRunResponse members

Member Type Required Description
TestRunResponse: Contains information about progress of a test run and its results. It also lists all objects executed during the test run.
comparative TestRunResponse.comparative Contains information about comparative testing executed during the test run. It doesn’t appear if the test was run only for functional testing.
completedDate String ISO 8601 timestamp indicating when the test run was complete.
functional TestRunResponse.functional Contains information about functional testing executed during the test run. Depending on what was the test run for, it may include: configVersionExecutions, requirementExecutions, testCaseExecutions, testSuiteExecutions. It doesn’t appear if the test was run only for comparative testing.
note String Notes about the test run.
sendEmailOnCompletion Boolean Whether you get a notification email after the test run is complete.
status Enumeration Current status of the test run. Possible values are: in_progress, completed, or failed.
submittedBy String Username who submitted the test run.
submittedDate String ISO 8601 timestamp indicating when the test run was submitted.
targetEnvironment Enumeration The environment against which the test run was executed, either production or staging.
testRunId Integer Unique identifier of the test run.
TestRunResponse.comparative: Contains information about comparative testing executed during the test run. It doesn’t appear if the test was run only for functional testing.
status Enumeration Current status of the execution of comparative objects. Possible values are: in_progress, completed, or failed.
testDefinitionExecutions TestDefinitionExecution array Contains information about test definitions executed during the test run.
TestRunResponse.functional: Contains information about functional testing executed during the test run. Depending on what was the test run for, it may include: configVersionExecutions, requirementExecutions, testCaseExecutions, testSuiteExecutions. It doesn’t appear if the test was run only for comparative testing.
configVersionExecutions TestRunResponse.functional.configVersionExecutions[] Contains information about config versions executed during the test run.
requirementExecutions TestRunResponse.functional.requirementExecutions[] Contains information about requirements executed during the test run.
status Enumeration Current status of the execution of functional objects. Possible values are: in_progress, completed, or failed.
testCaseExecutions FunctionalTestCaseExecution array Contains information about functional test cases executed during the test run.
testSuiteExecutions TestSuiteExecution array Contains information about test suites executed during the test run.
TestRunResponse.functional.configVersionExecutions[]: Contains information about config versions executed during the test run.
configVersionId Integer Unique identifier of the config version.
status Enumeration Current status of the execution of config version objects. Possible values are: in_progress, completed, or failed.
testSuiteExecutions TestSuiteExecution array Contains information about test suites executed during the test run.
TestRunResponse.functional.requirementExecutions[]: Contains information about requirements executed during the test run.
requirementId Integer Unique identifier of the requirement.
status Enumeration Current status of the execution of the requirement objects. Possible values are: in_progress, completed, or failed.
testSuiteExecutions TestSuiteExecution array Contains information about test suites executed during the test run.

TestSuiteExecution

Contains information about test suites executed during the test run.

Download schema: get-test-suite-execution-response.json

TestSuiteExecution members

Member Type Required Description
TestSuiteExecution: Contains information about test suites executed during the test run.
status Enumeration The test suite’s current execution status. Possible values are: in_progress, completed, or failed.
testCaseExecutions FunctionalTestCaseExecution array Contains information about functional test cases executed during a test run.
testSuiteExecutionId Integer Unique identifier of the test suite execution.
testSuiteId Integer Unique identifier of the test suite that executed.

FunctionalTestCaseExecution

Contains information about functional test cases executed during a test run.

Download schema: get-functional-test-case-execution-response.json

FunctionalTestCaseExecution members

Member Type Required Description
FunctionalTestCaseExecution: Contains information about functional test cases executed during a test run.
conditionEvaluationResult FunctionalTestCaseExecution.conditionEvaluationResult Contains information about evaluation of conditions. It appears only for executions of functional test cases with the completed status.
errors FunctionalTestCaseExecution.errors[] Contains HTTP Problem Details object indicating occurred errors.
status Enumeration The test case objects’ current execution status. Possible values are: in_progress, completed, or failed.
testCaseExecutionId Integer Unique identifier of the functional test case execution.
testCaseId Integer Unique identifier of the functional test case.
FunctionalTestCaseExecution.conditionEvaluationResult: Contains information about evaluation of conditions. It appears only for executions of functional test cases with the completed status.
actualConditionData FunctionalTestCaseExecution.conditionEvaluationResult.actualConditionData[] Contains condition data required for the evaluation of the condition collected during the execution of the functional test case URL.
result Enumeration Result of the evaluation of conditions. The possible values are: passed for conditions that were detected during the test run, failed for those not detected, or error_occurred, if the test run could not be executed due to a system error.
FunctionalTestCaseExecution.conditionEvaluationResult.actualConditionData[]: Contains condition data required for the evaluation of the condition collected during the execution of the functional test case URL.
name String Name of the condition data.
value String Value of the condition data.
FunctionalTestCaseExecution.errors[]: Contains HTTP Problem Details object indicating occurred errors.
title String Summary of the error.
type String Dot-notation explanation of the type of occurred error.

TestDefinitionExecution

Contains information about test definitions executed during a test run, including their results.

Download schema: get-test-definition-execution-response.json

TestDefinitionExecution members

Member Type Required Description
TestDefinitionExecution: Contains information about test definitions executed during a test run, including their results.
diffCount TestDefinitionExecution.diffCount Contains information about diffs detected during the test run. It appears only when the execution’s status is completed.
errors TestDefinitionExecution.errors[] Contains HTTP Problem Details objects indicating errors occurred during the test run. It appears only when the execution’s status is failed.
ipVersions Array IP versions for which the test run was executed. Can be ipv4, ipv6, or both.
note String Notes about the test definition execution.
status Enumeration The execution’s current status. Possible values are: in_progress, completed, failed, or archived. A value of failed means that the execution could not be run because of an error which details are provided in the errors array. A value of archived means there have been at least five subsequent runs for this test definition.
supportedComparisonSettings Array Attributes set for comparison between environments in the comparisonSettings array of each executed comparative test case. Possible values are: responseCode, responseHeaders, cpcode, cachingOption, cacheKey, metadataVariables, or originServer. See ComparativeTestCase.
targetEnvironment Enumeration Environment against which Test Center executed the test run, either production or staging.
targetHostname String Target environment hostname against which the test definition was executed.
testCaseIds Array List of unique identifiers of comparative test cases that executed.
testDefinitionExecutionId Integer Unique identifier of the test definition execution.
testDefinitionId Integer Unique identifier of the test definition that executed.
TestDefinitionExecution.diffCount: Contains information about diffs detected during the test run. It appears only when the execution’s status is completed.
outstanding Integer Number of not accepted diffs .
total Integer Total number of diffs detected.
TestDefinitionExecution.errors[]: Contains HTTP Problem Details objects indicating errors occurred during the test run. It appears only when the execution’s status is failed.
ipVersion String IP version for which the test definition execution failed.
testCaseId Integer Unique identifier of the comparative test case for which the test definition execution failed. If missing, the execution failed for all test cases for the corresponding IP version.
title String Summary of each error.
type String Dot-notated identifier for each type of error.

Difference

Differences found between the source URL and target URL, under a specific IP version, within a specific geolocation and on a specific browser, as configured in the test cases of the test definition that was run.

Download schema: get-difference-response.json

Sample GET response:

{
    "differenceId": "e52a1b76-d33d-11e7-9296-cec278b6b50a",
    "testCaseId": 1855,
    "sourceUrl": "https://www.example-weather.com/",
    "targetUrl": "https://www.example-weather-production.com/",
    "ipVersion": "ipv6",
    "geoLocation": "us",
    "comparisonAttribute": "responseHeaders",
    "sourceValue": "gzip",
    "targetValue": "deflate",
    "isAccepted": false,
    "parameterNames": [
        "Content-Encoding"
    ],
    "browser": {
        "name": "chrome",
        "version": "62"
    }
}

Difference members

Member Type Description
Difference: Differences found between the source URL and target URL, under a specific IP version, within a specific geolocation and on a specific browser, as configured in the test cases of the test definition that was run.
browser Difference.browser An object containing browser info.
comparisonAttribute Enumeration The comparison setting which the difference object addresses. Can be any comparison setting: cacheKey, cachingOption, cpcode, metadataVariables, originServer, responseCode, responseHeaders.
differenceId String Unique identifier for the difference.
geoLocation String Identifier of the geolocation.
ipVersion Enumeration The IP version used for this execution. Can be either ipv4 or ipv6.
isAccepted Boolean Whether a user accepted the diff as expected.
parameterNames Array A string that represents the parsed response header value.
sourceUrl String URL of the object in source environment.
sourceValue String Value of the comparison attribute for the parameter names in source environment.
targetUrl String URL of the object in target environment.
targetValue String Value of the comparison attribute for the parameter names in target environment.
testCaseId Integer Identifier of the test case the difference belongs to.
Difference.browser: An object containing browser info.
name Enumeration Name of the browser. Must be chrome.
version String Version of the browser.

RawTransactionForTestRun

Contains a raw request and response of a particular test run.

Download schema: get-test-run-raw-request-response.json

Sample GET response:

{
    "testRunId": 13081,
    "functionalRequestResponse": [
        {
            "testCaseExecutionIds": [
                254
            ],
            "request": {
                "method": "GET",
                "url": "http://www.atcuser3.akamaiu.com/catalog/view/theme/akamai/image/icon_currency.png",
                "httpVersion": "HTTP/1.1",
                "headersSize": 658,
                "bodySize": 0,
                "comment": "",
                "cookies": [],
                "queryString": [],
                "headers": [
                    {
                        "name": "Host",
                        "value": "www.atcuser3.akamaiu.com"
                    },
                    {
                        "name": "Proxy-Connection",
                        "value": "keep-alive"
                    },
                    {
                        "name": "Upgrade-Insecure-Requests",
                        "value": "1"
                    },
                    {
                        "name": "User-Agent",
                        "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36"
                    },
                    {
                        "name": "Accept",
                        "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"
                    },
                    {
                        "name": "Accept-Encoding",
                        "value": "gzip, deflate"
                    },
                    {
                        "name": "Accept-Language",
                        "value": "en-US,en;q=0.9"
                    },
                    {
                        "name": "Content-Length",
                        "value": "0"
                    }
                ]
            },
            "response": {
                "status": 200,
                "statusText": "OK",
                "httpVersion": "HTTP/1.1",
                "redirectURL": "",
                "headersSize": 2147,
                "bodySize": 738,
                "comment": "",
                "cookies": [],
                "content": {
                    "size": 0,
                    "mimeType": "image/png",
                    "comment": "",
                    "text": null,
                    "compression": 0
                },
                "headers": [
                    {
                        "name": "Server",
                        "value": "Apache/2.4.7 (Ubuntu)"
                    },
                    {
                        "name": "Connection",
                        "value": "keep-alive"
                    },
                    {
                        "name": "Last-Modified",
                        "value": "Sat, 26 Sep 2009 07:15:08 GMT"
                    },
                    {
                        "name": "Date",
                        "value": "Mon, 16 Dec 2019 12:48:32 GMT"
                    },
                    {
                        "name": "Accept-Ranges",
                        "value": "bytes"
                    },
                    {
                        "name": "X-Akamai-Staging",
                        "value": "EdgeSuite"
                    },
                    {
                        "name": "X-Akamai-Staging",
                        "value": "EdgeSuite"
                    },
                    {
                        "name": "Cache-Control",
                        "value": "max-age=604800"
                    },
                    {
                        "name": "ETag",
                        "value": "\"2e2-47475d311d700\""
                    },
                    {
                        "name": "Vary",
                        "value": "Accept-Encoding"
                    },
                    {
                        "name": "Expires",
                        "value": "Mon, 23 Dec 2019 12:48:32 GMT"
                    },
                    {
                        "name": "Content-Length",
                        "value": "738"
                    },
                    {
                        "name": "Content-Type",
                        "value": "image/png"
                    }
                ]
            }
        },
        {
            "testCaseExecutionIds": [
                256,
                252
            ],
            "request": {
                "method": "GET",
                "url": "http://www.atcuser3.akamaiu.com/",
                "httpVersion": "HTTP/1.1",
                "headersSize": 609,
                "bodySize": 0,
                "comment": "",
                "cookies": [],
                "queryString": [],
                "headers": [
                    {
                        "name": "Host",
                        "value": "www.atcuser3.akamaiu.com"
                    },
                    {
                        "name": "Proxy-Connection",
                        "value": "keep-alive"
                    },
                    {
                        "name": "Upgrade-Insecure-Requests",
                        "value": "1"
                    },
                    {
                        "name": "User-Agent",
                        "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36"
                    },
                    {
                        "name": "Accept",
                        "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"
                    },
                    {
                        "name": "Accept-Encoding",
                        "value": "gzip, deflate"
                    },
                    {
                        "name": "Accept-Language",
                        "value": "en-US,en;q=0.9"
                    },
                    {
                        "name": "Content-Length",
                        "value": "0"
                    }
                ]
            },
            "response": {
                "status": 200,
                "statusText": "OK",
                "httpVersion": "HTTP/1.1",
                "redirectURL": "",
                "headersSize": 1808,
                "bodySize": 15051,
                "comment": "",
                "cookies": [],
                "content": {
                    "size": 0,
                    "mimeType": "text/html",
                    "comment": "",
                    "text": null,
                    "compression": 0
                },
                "headers": [
                    {
                        "name": "Server",
                        "value": "Apache/2.4.7 (Ubuntu)"
                    },
                    {
                        "name": "Connection",
                        "value": "keep-alive"
                    },
                    {
                        "name": "Last-Modified",
                        "value": "Thu, 12 Feb 2015 15:44:28 GMT"
                    },
                    {
                        "name": "Date",
                        "value": "Mon, 16 Dec 2019 12:48:37 GMT"
                    },
                    {
                        "name": "Accept-Ranges",
                        "value": "bytes"
                    },
                    {
                        "name": "X-Akamai-Staging",
                        "value": "EdgeSuite"
                    },
                    {
                        "name": "ETag",
                        "value": "\"3acb-50ee5fec24f00-gzip\""
                    },
                    {
                        "name": "Vary",
                        "value": "Accept-Encoding"
                    },
                    {
                        "name": "Content-Length",
                        "value": "15051"
                    },
                    {
                        "name": "Content-Type",
                        "value": "text/html"
                    }
                ]
            }
        }
    ],
    "comparativeRequestResponse": [
        {
            "differenceIds": [
                "c5267ce4-89e1-44db-83ec-7d2651330903"
            ],
            "sourceEnvironment": {
                "request": {
                    "method": "GET",
                    "url": "https://www.atcuser20.akamaiu.com/image/cart.png",
                    "httpVersion": "HTTP/1.1",
                    "headersSize": 581,
                    "bodySize": 0,
                    "comment": "",
                    "cookies": [],
                    "queryString": [],
                    "headers": [
                        {
                            "name": "Host",
                            "value": "www.atcuser20.akamaiu.com"
                        },
                        {
                            "name": "Connection",
                            "value": "keep-alive"
                        },
                        {
                            "name": "Sec-Fetch-Mode",
                            "value": "no-cors"
                        },
                        {
                            "name": "User-Agent",
                            "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36"
                        },
                        {
                            "name": "Accept",
                            "value": "image/webp,image/apng,image/*,*/*;q=0.8"
                        },
                        {
                            "name": "Sec-Fetch-Site",
                            "value": "same-origin"
                        },
                        {
                            "name": "Referer",
                            "value": "https://www.atcuser20.akamaiu.com/"
                        },
                        {
                            "name": "Accept-Encoding",
                            "value": "gzip, deflate, br"
                        },
                        {
                            "name": "Accept-Language",
                            "value": "en-US,en;q=0.9"
                        },
                        {
                            "name": "Content-Length",
                            "value": "0"
                        }
                    ]
                },
                "response": {
                    "status": 200,
                    "statusText": "OK",
                    "httpVersion": "HTTP/1.1",
                    "redirectURL": "",
                    "headersSize": 2278,
                    "bodySize": 421,
                    "comment": "",
                    "cookies": [],
                    "content": {
                        "size": 0,
                        "mimeType": "image/png",
                        "comment": "",
                        "text": null,
                        "compression": 0
                    },
                    "headers": [
                        {
                            "name": "Server",
                            "value": "Apache/2.4.7 (Ubuntu)"
                        },
                        {
                            "name": "Connection",
                            "value": "keep-alive"
                        },
                        {
                            "name": "Last-Modified",
                            "value": "Thu, 17 Sep 2009 08:19:00 GMT"
                        },
                        {
                            "name": "Date",
                            "value": "Mon, 16 Dec 2019 12:48:33 GMT"
                        },
                        {
                            "name": "Accept-Ranges",
                            "value": "bytes"
                        },
                        {
                            "name": "Cache-Control",
                            "value": "max-age=604770"
                        },
                        {
                            "name": "ETag",
                            "value": "\"1a5-473c1aae72500\""
                        },
                        {
                            "name": "Expires",
                            "value": "Mon, 23 Dec 2019 12:48:03 GMT"
                        },
                        {
                            "name": "Content-Length",
                            "value": "421"
                        },
                        {
                            "name": "Content-Type",
                            "value": "image/png"
                        }
                    ]
                }
            },
            "targetEnvironment": {
                "request": {
                    "method": "GET",
                    "url": "https://www.atcuser20.akamaiu.com/image/cart.png",
                    "httpVersion": "HTTP/1.1",
                    "headersSize": 581,
                    "bodySize": 0,
                    "comment": "",
                    "cookies": [],
                    "queryString": [],
                    "headers": [
                        {
                            "name": "Host",
                            "value": "www.atcuser20.akamaiu.com"
                        },
                        {
                            "name": "Connection",
                            "value": "keep-alive"
                        },
                        {
                            "name": "Sec-Fetch-Mode",
                            "value": "no-cors"
                        },
                        {
                            "name": "User-Agent",
                            "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36"
                        },
                        {
                            "name": "Accept",
                            "value": "image/webp,image/apng,image/*,*/*;q=0.8"
                        },
                        {
                            "name": "Sec-Fetch-Site",
                            "value": "same-origin"
                        },
                        {
                            "name": "Referer",
                            "value": "https://www.atcuser20.akamaiu.com/"
                        },
                        {
                            "name": "Accept-Encoding",
                            "value": "gzip, deflate, br"
                        },
                        {
                            "name": "Accept-Language",
                            "value": "en-US,en;q=0.9"
                        },
                        {
                            "name": "Content-Length",
                            "value": "0"
                        }
                    ]
                },
                "response": {
                    "status": 0,
                    "statusText": "",
                    "httpVersion": "unknown",
                    "redirectURL": "",
                    "headersSize": -1,
                    "bodySize": -1,
                    "comment": "",
                    "cookies": [],
                    "headers": [],
                    "content": {
                        "size": 0,
                        "mimeType": "",
                        "comment": "",
                        "text": null,
                        "compression": 0
                    }
                }
            }
        }
    ]
}

RawTransactionForTestRun members

Member Type Required Description
RawTransactionForTestRun: Contains a raw request and response of a particular test run.
comparativeRequestResponse RawTransactionForTestRun.comparativeRequestResponse[] Contains a raw request and response for the comparative object execution. It doesn’t appear if the test was run only for functional testing.
functionalRequestResponse RawTransactionForTestRun.functionalRequestResponse[] Contains a raw request and response for the functional object execution. It doesn’t appear if the test was run only for comparative testing.
testRunId Integer Unique identifier of the test run.
RawTransactionForTestRun.comparativeRequestResponse[]: Contains a raw request and response for the comparative object execution. It doesn’t appear if the test was run only for functional testing.
differenceIds Array Unique identifiers of diffs detected during the test run. See Get a diff.
sourceEnvironment RawTransactionForTestRun.comparativeRequestResponse[].sourceEnvironment Contains a raw request and response for the comparative object execution on the source environment.
targetEnvironment RawTransactionForTestRun.comparativeRequestResponse[].targetEnvironment Contains a raw request and response for the comparative object execution on the target environment.
RawTransactionForTestRun.comparativeRequestResponse[].sourceEnvironment: Contains a raw request and response for the comparative object execution on the source environment.
request RequestDetails Raw request for the comparative object execution on the source environment.
response ResponseDetails Raw response for the comparative object execution on the source environment.
RawTransactionForTestRun.comparativeRequestResponse[].targetEnvironment: Contains a raw request and response for the comparative object execution on the target environment.
request RequestDetails Raw request for the comparative object execution on the target environment.
response ResponseDetails Raw response for the comparative object execution on the target environment.
RawTransactionForTestRun.functionalRequestResponse[]: Contains a raw request and response for the functional object execution. It doesn’t appear if the test was run only for comparative testing.
request RequestDetails Raw request for the functional object execution.
response ResponseDetails Contains a raw response for the functional object execution.
testCaseExecutionIds Array Unique identifiers of associated functional test cases.

FunctionalRawTransaction

Contains a raw request and response for a functional test case.

Download schema: get-functional-raw-request-response.json

Sample GET response:

{
    "request": {
        "method": "GET",
        "url": "http://www.atcuser3.akamaiu.com/catalog/view/theme/akamai/image/icon_currency.png",
        "httpVersion": "HTTP/1.1",
        "headersSize": 658,
        "bodySize": 0,
        "comment": "",
        "cookies": [],
        "queryString": [],
        "headers": [
            {
                "name": "Host",
                "value": "www.atcuser3.akamaiu.com"
            },
            {
                "name": "Proxy-Connection",
                "value": "keep-alive"
            },
            {
                "name": "Upgrade-Insecure-Requests",
                "value": "1"
            },
            {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36"
            },
            {
                "name": "Accept",
                "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"
            },
            {
                "name": "Accept-Encoding",
                "value": "gzip, deflate"
            },
            {
                "name": "Accept-Language",
                "value": "en-US,en;q=0.9"
            },
            {
                "name": "Content-Length",
                "value": "0"
            }
        ]
    },
    "response": {
        "status": 200,
        "statusText": "OK",
        "httpVersion": "HTTP/1.1",
        "redirectURL": "",
        "headersSize": 2147,
        "bodySize": 738,
        "comment": "",
        "cookies": [],
        "content": {
            "size": 0,
            "mimeType": "image/png",
            "comment": "",
            "text": null,
            "compression": 0
        },
        "headers": [
            {
                "name": "Server",
                "value": "Apache/2.4.7 (Ubuntu)"
            },
            {
                "name": "Connection",
                "value": "keep-alive"
            },
            {
                "name": "Last-Modified",
                "value": "Sat, 26 Sep 2009 07:15:08 GMT"
            },
            {
                "name": "Date",
                "value": "Mon, 16 Dec 2019 12:48:32 GMT"
            },
            {
                "name": "Accept-Ranges",
                "value": "bytes"
            },
            {
                "name": "X-Akamai-Staging",
                "value": "EdgeSuite"
            },
            {
                "name": "X-Akamai-Staging",
                "value": "EdgeSuite"
            },
            {
                "name": "Cache-Control",
                "value": "max-age=604800"
            },
            {
                "name": "ETag",
                "value": "\"2e2-47475d311d700\""
            },
            {
                "name": "Vary",
                "value": "Accept-Encoding"
            },
            {
                "name": "Expires",
                "value": "Mon, 23 Dec 2019 12:48:32 GMT"
            },
            {
                "name": "Content-Length",
                "value": "738"
            },
            {
                "name": "Content-Type",
                "value": "image/png"
            }
        ]
    }
}

FunctionalRawTransaction members

Member Type Required Description
FunctionalRawTransaction: Contains a raw request and response for a functional test case.
request RequestDetails Contains a raw request for a functional test case.
response ResponseDetails Contains a raw response for a functional test case.

RequestDetails

Contains information about a request.

Download schema: get-test-url-request-response.json

RequestDetails members

Member Type Description
RequestDetails: Contains information about a request.
bodySize Integer Size of the body of the request.
comment String Comments for the request.
cookies Array Request cookies.
headers RequestDetails.headers[] Contains information about standard and customized headers of the request.
headerSize Integer Header size of the request.
httpVersion String HTTP version of the request.
method Enumeration Standard HTTP method. Possible values are: GET, POST, DELETE, PUT, or PATCH.
queryString Array Query string of the request.
url String URL of the request.
RequestDetails.headers[]: Contains information about standard and customized headers of the request.
name String Name of the customized header.
value String Value of the customized header.

ResponseDetails

Contains information about a response.

Download schema: get-test-url-response.json

ResponseDetails members

Member Type Required Description
ResponseDetails: Contains information about a response.
bodySize Integer Size of the body of the response in bytes.
comment String Comments to the response.
content ResponseDetails.content Contains information about content-type header of the response.
cookies Array Response cookies.
headers ResponseDetails.headers[] Contains information about headers of the response.
headerSize Integer Header size of the response.
httpVersion String HTTP version of the response.
redirectURL String Redirection URL of the response.
status Number HTTP status code of the response.
statusText String HTTP status code text of the response.
ResponseDetails.content: Contains information about content-type header of the response.
comment String Comments about the resource.
compression String Compression applied to the resource.
mimeType String Media type of the resource.
size Number Size of the resource in bytes.
text String Text of the resource.
ResponseDetails.headers[]: Contains information about headers of the response.
name String Name of the response header.
value String Value of the response header.

Activity

Contains information about all activity in your organization for the last 30 days.

Download schema: get-activity-response.json

Sample GET response:

[
    {
        "createdDate": "2019-12-17T09:11:12+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "test_definition",
        "activityAction": "create",
        "activityAdditionalInfo": {
            "testDefinitionId": 13626,
            "testDefinitionName": "TD / test"
        }
    },
    {
        "createdDate": "2019-12-27T17:37:43+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "test_definition",
        "activityAction": "edit",
        "activityAdditionalInfo": {
            "testDefinitionId": 13634,
            "testDefinitionName": "td refac"
        }
    },
    {
        "createdDate": "2019-12-27T17:58:22+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "test_definition",
        "activityAction": "clone",
        "activityAdditionalInfo": {
            "sourceTestDefinitionId": 13634,
            "sourceTestDefinitionName": "td refac",
            "targetTestDefinitionId": 13638,
            "targetTestDefinitionName": "Copy of td refac"
        }
    },
    {
        "createdDate": "2019-12-28T07:59:51+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "test_definition",
        "activityAction": "delete",
        "activityAdditionalInfo": {
            "testDefinitionId": 13638,
            "testDefinitionName": "Copy of td refac"
        }
    },
    {
        "createdDate": "2019-12-17T09:15:11+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "comparative_test_case",
        "activityAction": "create",
        "activityAdditionalInfo": {
            "testDefinitionId": 13626,
            "testDefinitionName": "TD / test",
            "comparativeTestCaseId": 14506,
            "comparativeTestCaseName": "tc1"
        }
    },
    {
        "createdDate": "2019-12-17T08:44:12+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "test_run",
        "activityAction": "create",
        "activityAdditionalInfo": {
            "note": "Test a change on staging",
            "testRunId": 13078
        }
    },
    {
        "createdDate": "2019-12-16T14:52:32+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "test_difference",
        "activityAction": "accept",
        "activityAdditionalInfo": {
            "testDefinitionId": 13310,
            "testDefinitionName": "Testatcuser20",
            "testDefinitionExecutionId": 17117,
            "testDifferenceId": "c5267ce4-89e1-44db-83ec-7d2651330903",
            "testRunId": 13025
        }
    },
    {
        "createdDate": "2019-12-23T05:27:04+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "requirement",
        "activityAction": "edit",
        "activityAdditionalInfo": {
            "requirementName": "req123",
            "requirementId": 24
        }
    },
    {
        "createdDate": "2020-01-03T11:28:04+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "functional_test_case",
        "activityAction": "create",
        "activityAdditionalInfo": {
            "functionalTestCaseId": 298,
            "testRequestId": 59,
            "conditionId": 42,
            "clientProfileId": 1
        }
    },
    {
        "createdDate": "2020-01-06T19:58:52+0000",
        "createdBy": "atctest@akamai.com",
        "activityResource": "condition",
        "activityAction": "edit",
        "activityAdditionalInfo": {
            "conditionId": 47
        }
    }
]

Activity members

Member Type Required Description
Activity: Contains information about all activity in your organization for the last 30 days.
activityAction Enumeration Action or type of activity. For possible values, see Activity.activityAction values.
activityAdditionalInfo Activity.activityAdditionalInfo Additional information about the resources involved in the activity. The included objects depend on the activityResource value.
activityResource Enumeration Resource on which the activity was performed. Possible values are: config_version, requirement, test_suite, functional_test_case, test_request, condition, client_profile, test_definition, comparative_test_case, test_run, test_definition_execution, test_difference, or test_difference_note.
createdBy String Username who performed the activity.
createdDate String ISO 8601 timestamp indicating when the activity took place.
Activity.activityAdditionalInfo: Additional information about the resources involved in the activity. The included objects depend on the activityResource value.
clientProfileId Number Unique identifier of the client profile.
comparativeTestCaseId Number Unique identifier of comparative test case.
comparativeTestCaseName String Name of the comparative test case.
conditionId Number Unique identifier of the condition.
configVersionId Number Unique identifier of the config version.
functionalSourceTestCaseId Number Unique identifier of the cloned functional test case.
functionalTargetTestCaseId Number Unique identifier of the new functional test case created from the source functional test case by cloning.
functionalTestCaseId Number Unique identifier of the functional test case.
note String Notes about particular resource.
propertyName String Name of the property from Property Manager.
propertyVersion Number Version of the property from Property Manager.
requirementId Number Unique identifier of the requirement.
requirementName String Name of the requirement.
sourceClientProfileId Number Unique identifier of the cloned client profile.
sourceComparativeTestCaseId Number Unique identifier of the cloned comparative test case.
sourceComparativeTestCaseName String Name of the cloned comparative test case.
sourceConditionId Number Unique identifier of the cloned condition.
sourceRequirementId Number Unique identifier of the cloned requirement.
sourceTestDefinitionId Number Unique identifier of the cloned test definition.
sourceTestDefinitionName String Name of the cloned test definition.
sourceTestRequestId Number Unique identifier of the cloned test request.
sourceTestSuiteId Number Unique identifier of the cloned test suite.
targetClientProfileId Number Unique identifier of the new client profile created from the source client profile by cloning.
targetComparativeTestCaseId Number Unique identifier of the new comparative test case created from the source comparative test case by cloning.
targetComparativeTestCaseName String Name of the new comparative test case created from the source comparative test case by cloning.
targetConditionId Number Unique identifier of the new condition created from the source condition by cloning.
targetRequirementId Number Unique identifier of the new requirement created from the source requirement by cloning.
targetTestDefinitionId Number Unique identifier of the new test definition created from the source test definition by cloning.
targetTestDefinitionName String Name of the new test definition created from the source test definition by cloning.
targetTestRequestId Number Unique identifier of the new test request created from the source test request by cloning.
targetTestSuiteId Number Unique identifier of the new test suite created from the source test suite by cloning.
testDefinitionExecutionId Number Unique identifier of the test definition execution.
testDefinitionId Number Unique identifier of the test definition.
testDefinitionName String Name of the test definition.
testDifferenceId String Unique identifier of the comparative test diff.
testRequestId Number Unique identifier of the test request.
testRunId Number Unique identifier of the test run.
testSuiteId Number Unique identifier of the test suite.
testSuiteName String Name of the test suite.

Activity.activityAction values

These values indicate each available activityAction:

Value Description
create Occurs for requirements, test suites, conditions, test requests, test definitions, functional and comparative test cases.
edit Occurs for requirements, test suites, conditions, test requests, test definitions, functional and comparative test cases.
delete Occurs for config versions, requirements, test suites, conditions, test requests, test definitions, functional and comparative test cases.
run Occurs for test runs.
clone Occurs for test suites, test definitions, functional and comparative test cases.
start Occurs for test runs.
accept Occurs for test difference.
unaccept Occurs for test difference.
associate Occurs for config versions, requirements, test suites, functional and comparative test cases.
dissociate Occurs for config versions, requirements, test suites, functional and comparative test cases.

Errors

This section provides details on the data object that reflects the API’s common response to error cases, and lists the API’s range of response status codes for both error and success cases.

Error responses

This API responds with JSON objects that adhere to the HTTP Problem Details standard.

The top-level error object contains type, title, instance, status, and optionally, errors. The second-level error objects contain type and title. Additional fields for debugging may be included in both top- and sub-level error objects where applicable.

{
  "type": "validation.error",
  "title": "Validation error",
  "instance": "d0597988-27fa-4c18-a302-63e594167010",
  "status": 400,
  "errors": [
    {
      "type": "required.field.missing",
      "title": "Required field missing",
      "field": "requirementName"
    }
  ]
}

HTTP status codes

This section lists the full range of response codes the API may generate.

Code Description
200 Operation successfully run.
201 Resource successfully created.
202 Resource successfully accepted.
204 Resource successfully deleted.
207 Multi-status response. See Partial success responses.
400 Bad request.
401 Authentication failure.
403 Access forbidden.
404 Resource not found.
423 Requested resource locked.
429 Too many requests. See Resource limiting.
500 Internal server error.