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.

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.

All Test Center requests are automatically allowed. You don’t need to manually allow them, even if you apply access control lists or strip headers.

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. This means that you can only test sites that use China CDN Manager 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’re 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. 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’re saying that the functional test cases in the test suite are regression test cases for the property version. To use a property in Test Center, you need to add it first to Property Manager. To learn how to do it, check the 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, a test run executes included test cases in the set order. Cookies and session information are retained for subsequent test cases.

  • Locked test suites. Locked test suites can be modified only by their editors and owners. Test Center users who create locked test suites automatically become their owners, but they can also designate other owners. Editors can modify locked test suites (except for the Locked status), add new functional test cases to it, and remove those already included. If the test suites are also stateful, editors can reorder included test cases. Owners can additionally manage the locked test suites’ edit access and remove them. Every Test Center user can send a request for edit access to test suite’s owners. Owners are notified about the request with an email. Once they approve or reject the request, the user also gets a notification email.

  • 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 use Chrome 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 you want to evaluate on the HTTP response. They correspond 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. You can find all nodes and their descriptions including available values 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 it is. You need to accept the expected diffs that are not likely to cause problems once you activate the changes. 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 used in a test run.

  • Test results. Test results for comparative testing list diffs found in how a hostname serves out to end users. For functional testing the results show you the 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 you’ve already created the test requests, 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 you’ve already created the conditions, 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 you’ve already created the requirement, 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

Once a requirement test passes and you know that the config changes met the business goal, you can run a regression test. Regression tests check whether the changes didn’t cause problems in other places of the configuration.

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

  2. If there’s a previous version of this config in 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’s no previous version of this config 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 you’ve already created the test requests, 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 you’ve already created the conditions, 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 you’ve already created the test requests, 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 you’ve already created the conditions, 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 you’ve already created the test requests, 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 you’ve already created the conditions, 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": [
          "last_mile_acceleration",
          "ignore_case_in_cache_key",
          "origin_server_cache_key_hostname",
          "sure_route",
          "tiered_distribution",
          "response_code",
          "log_request_details",
          "caching_option",
          "variable",
          "cp_code",
          "redirect",
          "prefetch_objects",
          "response_header",
          "cache_key_query_parameters"
        ]
      }
    }
    
  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 response_header, which is the first element of the condition. Enter the values into the request body.

    {
      "condition": {
        "conditionNodeId": 1,
        "values": [
          "response_header"
        ]
      }
    }
    
  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 response_header. Check the conditionNodeId for conditionNode. This is the node triggered by the selection of response_header 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": [
          "response_header"
        ],
        "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 has_a_value. Update the request body. Because the validPath for has_a_value 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": [
          "response_header"
        ],
        "conditionNode": {
          "conditionNodeId": 4,
          "values": [
            "Content-Type"
          ],
          "conditionNode": {
            "conditionNodeId": 5,
            "values": [
              "has_a_value"
            ]
          }
        }
      }
    }
    
  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 ends_with. Update the request body.

    {
      "condition": {
        "conditionNodeId": 1,
        "values": [
          "response_header"
        ],
        "conditionNode": {
          "conditionNodeId": 4,
          "values": [
            "Content-Type"
          ],
          "conditionNode": {
            "conditionNodeId": 5,
            "values": [
              "has_a_value"
            ],
            "conditionNode": {
              "conditionNodeId": 7,
              "values": [
                "ends_with"
              ]
            }
          }
        }
      }
    }
    
  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 ends_with 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": [
          "response_header"
        ],
        "conditionNode": {
          "conditionNodeId": 4,
          "values": [
            "Content-Type"
          ],
          "conditionNode": {
            "conditionNodeId": 5,
            "values": [
              "has_a_value"
            ],
            "conditionNode": {
              "conditionNodeId": 7,
              "values": [
                "ends_with"
              ],
              "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 you expected as the result of the configuration changes. 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. You can use this operation when you want to associate the same test suites with 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 content of the successes array differs depending on the operation. For the majority of the operations it is either a list of unique identifiers of items for which the operation was successful or whole objects created successfully. The failures array contains a list of HTTP Problem Details objects organized by a type of problem 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}/associations/test-cases/associate
Remove functional test cases from a test suite POST /test-management/v2/functional/test-suites/{testSuiteId}/associations/test-cases/dissociate
List order of functional test cases in a stateful test suite GET /test-management/v2/functional/test-suites/{testSuiteId}/associations/test-cases/order
Include ordered functional test cases in a test suite POST /test-management/v2/functional/test-suites/{testSuiteId}/associations/test-cases/order
Get access lists of a locked test suite GET /test-management/v2/functional/test-suites/{testSuiteId}/access-control
Give access to a locked test suite POST /test-management/v2/functional/test-suites/{testSuiteId}/access-control
Request edit access POST /test-management/v2/functional/test-suites/{testSuiteId}/access-control/request
Update an access list PUT /test-management/v2/functional/test-suites/{testSuiteId}/access-control/{accessControlId}
Delete an access list DELETE /test-management/v2/functional/test-suites/{testSuiteId}/access-control/{accessControlId}
Approve an edit access request POST /test-management/v2/functional/test-suites/{testSuiteId}/access-control/{accessControlId}/approve
Reject an edit access request POST /test-management/v2/functional/test-suites/{testSuiteId}/access-control/{accessControlId}/reject
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 for each 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 for each 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 for each requirement.

Status 204

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

  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 for each 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 an array of TestSuite objects.

Associate test suites with a requirement

Associates a list of test suites with a requirement. You can associate a test suite with either a requirement or a config version. It can’t be associated with both of them at the same time. If you need 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 unique identifiers of test suites associated successfully, whereas the failures array provides details on any remainders that failed.

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

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

Request body:

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

Status 207 application/json

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 207 response object includes unique identifiers of associated test suites within its successes array. Details about any failed request objects appear in the failures array.

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 unique identifiers of test suites dissociated successfully, whereas the failures array provides details on any remainders that failed.

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

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

Request body:

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

Status 207 application/json

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 207 response object includes unique identifiers of dissociated test suites within its successes array. Details about any failed request objects appear in the failures array.

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. You can perform this operation only for properties added to Property Manager. If they’re not added, see the Property Manager API documentation or the Property Manager webhelp to learn how to do it.

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 the created 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 for each 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 for each config version.

Status 204

  1. Run the List config versions operation and store the configVersionId of the config version you want to delete 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 for each 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 an array of TestSuite objects.

Associate test suites with a config version

Associates a list of test suites with a config version. You can associate a test suite with either a requirement or a config version. It can’t be associated with both of them at the same time. If you need 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 unique identifiers of test suites associated successfully, whereas the failures array provides details on any remainders that failed.

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

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

Request body:

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

Status 207 application/json

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 207 response object includes unique identifiers of associated test suites within its successes array. Details about any failed request objects appear in the failures array.

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 unique identifiers of test suites dissociated successfully, whereas the failures array provides details on any remainders that failed.

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

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

Request body:

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

Status 207 application/json

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 207 response object includes unique identifiers of dissociated test suites within its successes array. Details about any failed request objects appear in the failures array.

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 for each 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 for each 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 for each test suite.

Status 204

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

  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 for each 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 an array of Requirement objects.

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 for each 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 an array of ConfigVersion objects.

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 for each 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": [
                    "response_header"
                ],
                "conditionNode": {
                    "conditionNodeId": 4,
                    "values": [
                        "Content-Type"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 5,
                        "values": [
                            "has_a_value"
                        ],
                        "conditionNode": {
                            "conditionNodeId": 7,
                            "values": [
                                "ends_with"
                            ],
                            "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 an array of FunctionalTestCase objects.

Include functional test cases in a test suite

Includes a list of functional test cases in a test suite. If the test suite is locked, you can call this operation only if you have the owner or edit access. The operation responds with a partial-success 207 response that consists of two arrays, successes and failures. The successes array lists unique identifiers of functional test cases included successfully, whereas the failures array provides details on any remainders that failed.

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

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

Content-Type: application/json

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

Request body:

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

Status 207 application/json

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 207 response object includes unique identifiers of included functional test cases within its successes array. Details about any failed request objects appear in the failures array.

Remove functional test cases from a test suite

Removes a list of functional test cases from a test suite. If the test suite is locked, you can call this operation only if you have the owner or edit access. The operation responds with a partial-success 207 response that consists of two arrays, successes and failures. The successes array lists unique identifiers of functional test cases removed successfully, whereas the failures array provides details on any remainders that failed.

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

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

Content-Type: application/json

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

Request body:

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

Status 207 application/json

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 remove functional test cases.

  2. Run the List functional test cases operation and store testCaseId values of functional test cases you want to remove 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 207 response object includes unique identifiers of removed functional test cases within its successes array. Details about any failed request objects appear in the failures array.

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}/associations/test-cases/order

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

Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier for each test suite.

Status 200 application/json

Object type: FunctionalTestCase

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 functional test cases 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. A test run executes the functional test cases in the set order only if you include them in a stateful test suite.

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

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

Content-Type: application/json

Object type: FunctionalTestCase

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 for each test suite.

Status 200 application/json

Object type: FunctionalTestCase

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.

Get access lists of a locked test suite

Lists Test Center users or groups of users with the owner or edit access to a locked test suite.

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

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

Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier for each test suite.

Status 200 application/json

Object type: AccessList

Download schema: get-access-controls-response.json

Response body:

[
    {
        "accessControlId": 111,
        "accessorId": "atctest@akamai.com",
        "type": "user",
        "role": "owner",
        "status": "active",
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-11-15T15:42:50+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-11-15T15:42:50+0000"
    },
    {
        "accessControlId": 112,
        "accessorId": "users_in_this_account",
        "type": "group",
        "role": "editor",
        "status": "active",
        "createdBy": "atctest@akamai.com",
        "createdDate": "2019-11-15T15:44:50+0000",
        "modifiedBy": "atctest@akamai.com",
        "modifiedDate": "2019-11-15T15:44:50+0000"
    }
]
  1. Run the List test suites operation and store the testSuiteId of the locked test suite for which you want to get access lists.

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

The operation responds with an array of AccessList objects.

Give access to a locked test suite

Gives the owner or edit access to a locked test suite. You can call this operation only if you’re a test suite’s owner. The operation responds with a partial-success 207 response that consists of two arrays, successes and failures. The successes array consists of AccessList objects created successfully, whereas the failures array provides details on any remainders that failed.

POST /test-management/v2/functional/test-suites/{testSuiteId}/access-control

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

Content-Type: application/json

Object type: GrantAccess

Download schema: grant-access-control-request.json

Request body:

[
    {
        "accessorId": "atctest@akamai.com",
        "type": "user",
        "role": "owner"
    },
    {
        "accessorId": "users_in_this_account",
        "type": "group",
        "role": "editor"
    },
    {
        "accessorId": "user1",
        "type": "user",
        "role": "owner"
    }
]
Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier for each test suite.

Status 207 application/json

Object type: AccessList

Download schema: grant-access-controls-response.json

Response body:

{
    "successes": [
        {
            "accessControlId": 111,
            "accessorId": "atctest@akamai.com",
            "type": "user",
            "role": "owner",
            "status": "active",
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-11-15T15:42:50+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2019-11-15T15:42:50+0000"
        },
        {
            "accessControlId": 112,
            "accessorId": "users_in_this_account",
            "type": "group",
            "role": "editor",
            "status": "active",
            "createdBy": "atctest@akamai.com",
            "createdDate": "2019-11-15T15:44:50+0000",
            "modifiedBy": "atctest@akamai.com",
            "modifiedDate": "2019-11-15T15:44:50+0000"
        }
    ],
    "failures": [
        {
            "type": "resource.not.found",
            "title": "Resource not found",
            "requestField": "user",
            "requestValues": [
                "user1"
            ]
        }
    ]
}
  1. Run the List test suites operation and store the testSuiteId of the locked test suite to which you want give the edit or owner access.

  2. Build an array of GrantAccess objects.

  3. POST the array to /test-management/v2/functional/test-suites/{testSuiteId}/access-control.

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

Request edit access

Sends a request for the edit access to a locked test suite to its owners.

POST /test-management/v2/functional/test-suites/{testSuiteId}/access-control/request

Sample: /test-management/v2/functional/test-suites/284/access-control/request

Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier for each test suite.

Status 200

  1. Run the List test suites operation and store the testSuiteId of the locked test suite to which you want to get the edit access.

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

Your request is sent to test suite’s owners. You will be notified about whether they approved or declined the request with an email.

Update an access list

Updates a role assigned to a user or a group in an access list. You can call this operation only if you’re a test suite’s owner.

PUT /test-management/v2/functional/test-suites/{testSuiteId}/access-control/{accessControlId}

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

Content-Type: application/json

Object type: AccessList

Download schema: update-access-control-request.json

Request body:

{
    "role": "owner"
}
Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier for each test suite.
accessControlId Integer 284 Unique identifier of each access control.

Status 200 application/json

Object type: AccessList

Download schema: get-access-control-response.json

Response body:

{
    "accessControlId": 111,
    "accessorId": "atctest@akamai.com",
    "type": "user",
    "role": "owner",
    "status": "active",
    "createdBy": "atctest@akamai.com",
    "createdDate": "2019-11-15T15:42:50+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2019-11-15T15:44:50+0000"
}
  1. Run the List test suites operation and store the testSuiteId of the locked test suite for which you want to update the access list’s role.

  2. Run the Get an access list to a locked test suite operation and store the accessControlId value of the access list you want to update.

  3. Build an object containing the role value you want to assign to access list’s users.

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

The operation responds with the modified AccessList object.

Delete an access list

Deletes an access list. The user or the group of users from the list will no longer be able to edit the locked test suite. You can call this operation only if you’re a test suite’s owner.

DELETE /test-management/v2/functional/test-suites/{testSuiteId}/access-control/{accessControlId}

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

Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier for each test suite.
accessControlId Integer 284 Unique identifier of each access control.

Status 204

  1. Run the List test suites operation and store the testSuiteId value of the locked test suite for which you want to delete the access list.

  2. Run the Get an access list to a locked test suite operation and store the accessControlId value of the access list you want to delete.

  3. Make a DELETE request to /test-management/v2/functional/test-suites/{testSuiteId}/access-control/{accessControlId}.

Approve an edit access request

Approves a Test Center user’s edit access request to a locked test suite. You can call this operation only if you’re a test suite’s owner.

POST /test-management/v2/functional/test-suites/{testSuiteId}/access-control/{accessControlId}/approve

Sample: /test-management/v2/functional/test-suites/284/access-control/284/approve

Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier for each test suite.
accessControlId Integer 284 Unique identifier of each access control.

Status 200

  1. Run the List test suites operation and store the testSuiteId value of the locked test suite for which you want to approve the edit access request.

  2. Run the Get access lists of a locked test suite operation and store the accessControlId value of the access list with the pending status you want to approve.

  3. Make a POST request to /test-management/v2/functional/test-suites/{testSuiteId}/access-control/{accessControlId}/approve.

Reject an edit access request

Rejects a Test Center user’s edit access request to a locked test suite. You can call this operation only if you’re a test suite’s owner.

POST /test-management/v2/functional/test-suites/{testSuiteId}/access-control/{accessControlId}/reject

Sample: /test-management/v2/functional/test-suites/284/access-control/284/reject

Parameter Type Sample Description
URL path parameters
testSuiteId Integer 284 Unique identifier for each test suite.
accessControlId Integer 284 Unique identifier of each access control.

Status 200

  1. Run the List test suites operation and store the testSuiteId value of the locked test suite for which you want to reject the edit access request.

  2. Run the Get access lists of a locked test suite operation and store the accessControlId value of the access list with the pending status you want to reject.

  3. Make a POST request to /test-management/v2/functional/test-suites/{testSuiteId}/access-control/{accessControlId}/reject.

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 consists of TestSuite objects cloned successfully, whereas the failures array provides details on any remainders that failed.

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

Content-Type: application/json

Object type: TestSuite

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.

The 207 response object includes cloned TestSuite objects within its successes array. Details about any failed request objects appear in the failures array.

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": [
                    "response_header"
                ],
                "conditionNode": {
                    "conditionNodeId": 4,
                    "values": [
                        "Content-Type"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 5,
                        "values": [
                            "has_a_value"
                        ],
                        "conditionNode": {
                            "conditionNodeId": 7,
                            "values": [
                                "ends_with"
                            ],
                            "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 consists of FunctionalTestCase objects created successfully, whereas the failures array provides details on any remainders that failed.

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": [
                        "response_header"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 4,
                        "values": [
                            "Content-Type"
                        ],
                        "conditionNode": {
                            "conditionNodeId": 5,
                            "values": [
                                "has_a_value"
                            ],
                            "conditionNode": {
                                "conditionNodeId": 7,
                                "values": [
                                    "ends_with"
                                ],
                                "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 isn’t 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 isn’t 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.

The 207 response object includes the newly created FunctionalTestCase objects 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 for each 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": [
                    "response_header"
                ],
                "conditionNode": {
                    "conditionNodeId": 4,
                    "values": [
                        "Content-Type"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 5,
                        "values": [
                            "has_a_value"
                        ],
                        "conditionNode": {
                            "conditionNodeId": 7,
                            "values": [
                                "ends_with"
                            ],
                            "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 for each 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": [
                "response_header"
            ],
            "conditionNode": {
                "conditionNodeId": 4,
                "values": [
                    "Content-Type"
                ],
                "conditionNode": {
                    "conditionNodeId": 5,
                    "values": [
                        "has_a_value"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 7,
                        "values": [
                            "ends_with"
                        ],
                        "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 for each 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 delete.

  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 that include 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 for each 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 an array of TestSuite objects.

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 unique identifiers of test suites assigned successfully, whereas the failures array provides details on any remainders that failed.

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

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

Request body:

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

Status 207 application/json

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 207 response object includes unique identifiers of assigned test suites within its successes array. Details about any failed request objects appear in the failures array.

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.

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

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

Request body:

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

Status 207 application/json

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 207 response object includes unique identifiers of removed test suites within its successes array. Details about any failed request objects appear in the failures array.

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 FunctionalTestCase objects cloned successfully, whereas the failures array provides details on any remainders that failed.

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

Content-Type: application/json

Object type: CloneFunctionalTestCase

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

Request body:

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

Status 207 application/json

Object type: FunctionalTestCase

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": [
                        "response_header"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 4,
                        "values": [
                            "Content-Type"
                        ],
                        "conditionNode": {
                            "conditionNodeId": 5,
                            "values": [
                                "has_a_value"
                            ],
                            "conditionNode": {
                                "conditionNodeId": 7,
                                "values": [
                                    "ends_with"
                                ],
                                "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.

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

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 for each 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 for each 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": [
                    "response_header"
                ],
                "conditionNode": {
                    "conditionNodeId": 4,
                    "values": [
                        "Content-Type"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 5,
                        "values": [
                            "has_a_value"
                        ],
                        "conditionNode": {
                            "conditionNodeId": 7,
                            "values": [
                                "ends_with"
                            ],
                            "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 an array of FunctionalTestCase objects.

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 TestRequest objects created successfully, whereas the failures array provides details on any remainders that failed.

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 207 response object includes the created TestRequest objects within its successes array. Details about any failed request objects appear in the failures array.

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 for each 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 for each 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 for each test request.

Status 204

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

  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 FunctionalTestCase objects, each keyed by testCaseId.

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 for each 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": [
                    "response_header"
                ],
                "conditionNode": {
                    "conditionNodeId": 4,
                    "values": [
                        "Content-Type"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 5,
                        "values": [
                            "has_a_value"
                        ],
                        "conditionNode": {
                            "conditionNodeId": 7,
                            "values": [
                                "ends_with"
                            ],
                            "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 an array of FunctionalTestCase objects.

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": "response_header",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 4,
                    "triggers": [
                        {
                            "triggerValue": null,
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 5,
                                "triggers": [
                                    {
                                        "triggerValue": "has_a_value",
                                        "validPath": true,
                                        "conditionNode": {
                                            "conditionNodeId": 7,
                                            "triggers": [
                                                {
                                                    "triggerValue": "does_not_end_with",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "begins_with",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "does_not_equal",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "does_not_contain",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "does_not_begin_with",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "matches_regex",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "does_not_match_regex",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "contains",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "ends_with",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "equals",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "has_no_value",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "does_not_exist",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "exists",
                                        "validPath": true
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "sure_route",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 14,
                    "triggers": [
                        {
                            "triggerValue": "is_enabled",
                            "validPath": true
                        },
                        {
                            "triggerValue": "is_not_enabled",
                            "validPath": true
                        }
                    ]
                }
            },
            {
                "triggerValue": "response_code",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 2,
                    "triggers": [
                        {
                            "triggerValue": "is_one_of",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 3,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "cache_key_query_parameters",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 19,
                    "triggers": [
                        {
                            "triggerValue": "included",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 25,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "not_included",
                            "validPath": true
                        }
                    ]
                }
            },
            {
                "triggerValue": "log_request_details",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 15,
                    "triggers": [
                        {
                            "triggerValue": "custom_data",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "is_logged",
                                        "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
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "is_not_logged",
                                        "validPath": true
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "referrer_header",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "is_logged",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "is_not_logged",
                                        "validPath": true
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "accept_language_header",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "is_logged",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "is_not_logged",
                                        "validPath": true
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "user_agent_header",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "is_logged",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "is_not_logged",
                                        "validPath": true
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "host_header",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "is_logged",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "is_not_logged",
                                        "validPath": true
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "cookies",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 24,
                                "triggers": [
                                    {
                                        "triggerValue": "logged",
                                        "validPath": false,
                                        "conditionNode": {
                                            "conditionNodeId": 17,
                                            "triggers": [
                                                {
                                                    "triggerValue": null,
                                                    "validPath": true
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "not_logged",
                                        "validPath": true
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "origin_server_cache_key_hostname",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 23,
                    "triggers": [
                        {
                            "triggerValue": "is",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 4,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "last_mile_acceleration",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 22,
                    "triggers": [
                        {
                            "triggerValue": "is_gzipped",
                            "validPath": true
                        },
                        {
                            "triggerValue": "is_not_gzipped",
                            "validPath": true
                        }
                    ]
                }
            },
            {
                "triggerValue": "cp_code",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 23,
                    "triggers": [
                        {
                            "triggerValue": "is",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 9,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "ignore_case_in_cache_key",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 14,
                    "triggers": [
                        {
                            "triggerValue": "is_enabled",
                            "validPath": true
                        },
                        {
                            "triggerValue": "is_not_enabled",
                            "validPath": true
                        }
                    ]
                }
            },
            {
                "triggerValue": "redirect",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 2,
                    "triggers": [
                        {
                            "triggerValue": "is_one_of",
                            "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
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "prefetch_objects",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 20,
                    "triggers": [
                        {
                            "triggerValue": "is_not_triggered",
                            "validPath": true
                        },
                        {
                            "triggerValue": "is_triggered",
                            "validPath": true
                        }
                    ]
                }
            },
            {
                "triggerValue": "tiered_distribution",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 14,
                    "triggers": [
                        {
                            "triggerValue": "is_enabled",
                            "validPath": true
                        },
                        {
                            "triggerValue": "is_not_enabled",
                            "validPath": true
                        }
                    ]
                }
            },
            {
                "triggerValue": "caching_option",
                "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
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "minutes",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 9,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "hours",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 9,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "days",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 9,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "no-store",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "bypass-cache",
                                        "validPath": true
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "variable",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 4,
                    "triggers": [
                        {
                            "triggerValue": null,
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 5,
                                "triggers": [
                                    {
                                        "triggerValue": "has_a_value",
                                        "validPath": true,
                                        "conditionNode": {
                                            "conditionNodeId": 7,
                                            "triggers": [
                                                {
                                                    "triggerValue": "does_not_end_with",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "begins_with",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "does_not_equal",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "does_not_contain",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "does_not_begin_with",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "matches_regex",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "does_not_match_regex",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "contains",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "ends_with",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "equals",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "has_no_value",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "does_not_exist",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "exists",
                                        "validPath": true
                                    }
                                ]
                            }
                        }
                    ]
                }
            }
        ]
    },
    "conditionNodes": [
        {
            "conditionNodeId": 7,
            "conditionNodeDescription": "Multiple string test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "does_not_begin_with",
                    "ends_with",
                    "does_not_equal",
                    "does_not_contain",
                    "does_not_end_with",
                    "matches_regex",
                    "contains",
                    "does_not_match_regex",
                    "begins_with",
                    "equals"
                ]
            }
        },
        {
            "conditionNodeId": 1,
            "conditionNodeDescription": "Root condition nodes",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "last_mile_acceleration",
                    "ignore_case_in_cache_key",
                    "origin_server_cache_key_hostname",
                    "sure_route",
                    "tiered_distribution",
                    "response_code",
                    "log_request_details",
                    "caching_option",
                    "variable",
                    "cp_code",
                    "redirect",
                    "prefetch_objects",
                    "response_header",
                    "cache_key_query_parameters"
                ]
            }
        },
        {
            "conditionNodeId": 16,
            "conditionNodeDescription": "Is and is not logged test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "is_logged",
                    "is_not_logged"
                ]
            }
        },
        {
            "conditionNodeId": 15,
            "conditionNodeDescription": "Log request values",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "custom_data",
                    "referrer_header",
                    "host_header",
                    "accept_language_header",
                    "user_agent_header",
                    "cookies"
                ]
            }
        },
        {
            "conditionNodeId": 11,
            "conditionNodeDescription": "Time units",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "seconds",
                    "days",
                    "hours",
                    "minutes"
                ]
            }
        },
        {
            "conditionNodeId": 24,
            "conditionNodeDescription": "Logged/not logged test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "not_logged",
                    "logged"
                ]
            }
        },
        {
            "conditionNodeId": 10,
            "conditionNodeDescription": "Caching options",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "no-store",
                    "cache",
                    "bypass-cache"
                ]
            }
        },
        {
            "conditionNodeId": 20,
            "conditionNodeDescription": "Is and is not triggered test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "is_triggered",
                    "is_not_triggered"
                ]
            }
        },
        {
            "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": [
                    "does_not_exist",
                    "has_no_value",
                    "has_a_value",
                    "exists"
                ]
            }
        },
        {
            "conditionNodeId": 3,
            "conditionNodeDescription": "User input to select multiple response codes",
            "valueControls": {
                "valueDataType": "integer",
                "valueInputType": "multiple_choice",
                "newValueSupported": true,
                "availableValues": [
                    400,
                    300,
                    500,
                    200
                ]
            }
        },
        {
            "conditionNodeId": 14,
            "conditionNodeDescription": "Is and is not enabled test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "is_enabled",
                    "is_not_enabled"
                ]
            }
        },
        {
            "conditionNodeId": 22,
            "conditionNodeDescription": "Is and is not gzipped test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "is_not_gzipped",
                    "is_gzipped"
                ]
            }
        },
        {
            "conditionNodeId": 8,
            "conditionNodeDescription": "String ignore case test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "ignore_case"
                ]
            }
        },
        {
            "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",
                    "not_included"
                ]
            }
        },
        {
            "conditionNodeId": 2,
            "conditionNodeDescription": "Is one of test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "is_one_of"
                ]
            }
        },
        {
            "conditionNodeId": 13,
            "conditionNodeDescription": "User input to select multiple redirect(3xx) response codes",
            "valueControls": {
                "valueDataType": "integer",
                "valueInputType": "multiple_choice",
                "newValueSupported": true,
                "availableValues": [
                    302,
                    301
                ]
            }
        },
        {
            "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": [
                "response_code"
            ],
            "conditionNode": {
                "conditionNodeId": 2,
                "values": [
                    "is_one_of"
                ],
                "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": [
                "response_header"
            ],
            "conditionNode": {
                "conditionNodeId": 4,
                "values": [
                    "Content-Type"
                ],
                "conditionNode": {
                    "conditionNodeId": 5,
                    "values": [
                        "has_a_value"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 7,
                        "values": [
                            "ends_with"
                        ],
                        "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": [
            "response_code"
        ],
        "conditionNode": {
            "conditionNodeId": 2,
            "values": [
                "is_one_of"
            ],
            "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": [
            "response_code"
        ],
        "conditionNode": {
            "conditionNodeId": 2,
            "values": [
                "is_one_of"
            ],
            "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 for each 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": [
            "response_code"
        ],
        "conditionNode": {
            "conditionNodeId": 2,
            "values": [
                "is_one_of"
            ],
            "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": [
            "response_header"
        ],
        "conditionNode": {
            "conditionNodeId": 4,
            "values": [
                "Content-Type"
            ],
            "conditionNode": {
                "conditionNodeId": 5,
                "values": [
                    "has_a_value"
                ],
                "conditionNode": {
                    "conditionNodeId": 7,
                    "values": [
                        "ends_with"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 4,
                        "values": [
                            "json"
                        ]
                    }
                }
            }
        }
    }
}
Parameter Type Sample Description
URL path parameters
conditionId Integer 47 Unique identifier for each 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": [
            "response_header"
        ],
        "conditionNode": {
            "conditionNodeId": 4,
            "values": [
                "Content-Type"
            ],
            "conditionNode": {
                "conditionNodeId": 5,
                "values": [
                    "has_a_value"
                ],
                "conditionNode": {
                    "conditionNodeId": 7,
                    "values": [
                        "ends_with"
                    ],
                    "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 for each condition.

Status 204

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

  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 for each 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": [
                    "response_code"
                ],
                "conditionNode": {
                    "conditionNodeId": 2,
                    "values": [
                        "is_one_of"
                    ],
                    "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": [
                    "response_code"
                ],
                "conditionNode": {
                    "conditionNodeId": 2,
                    "values": [
                        "is_one_of"
                    ],
                    "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 an array of FunctionalTestCase objects.

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 for each 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 functional 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 don’t 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 each 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 each 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 each 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 each 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 the cloned 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 each 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 each 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 the comparative test case.

  2. Build a ComparativeTestCase object.

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

The operation responds with the created 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 each test definition.
testCaseId Integer 1855 Unique identifier for each comparative 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.

  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 each test definition.
testCaseId Integer 1855 Unique identifier for each comparative 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 each test definition.
testCaseId Integer 1855 Unique identifier for each comparative 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 each test definition.
testCaseId Integer 1855 Unique identifier for each comparative 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 the cloned ComparativeTestCase object.

List executions

Lists all test definition executions.

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 Whether the response includes only the latest test definition execution for each passed valid test definition identifier.
testDefinitionIds String 738,740 List of comma-delimited test definition identifiers for which you want to filter executions’ details.

Status 200 application/json

Object type: TestDefinitionExecution

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 an array of TestDefinitionExecution objects.

Get an execution

Returns details of a test definition execution. The response includes identifiers of comparative test cases that belong to the test definition. It also includes details about the test run in which the test definition was executed, including target hostname, target environment, IP versions, and notes. Depending on the execution’s status, the response includes different objects. For the completed status, there’s a diffCount object. For the failed status, there’s an errors array. If the test run is in progress when you call this operation, it 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 Unique identifier for each test definition execution.

Status 200 application/json

Object type: TestDefinitionExecution

Download schema: get-comparative-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 diffs found for a test definition execution. The response is an array of Diff objects. 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 Unique identifier for each test definition execution.

Status 200 application/json

Object type: Diff

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 an array of Diff objects.

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.

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: Diff

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 Unique identifier for each test definition execution.

Status 207 application/json

Object type: Diff

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 207 response object includes array of objects with differenceId of updated diffs within its successes array. Details about any failed request objects appear in the failures array.

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

Object type: Diff

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 Unique identifier for each 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 diff.

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 Unique identifier for each test definition execution.
differenceId String e52a1b76-d33d-11e7-9296-cec278b6b50a Unique identifier for each diff.

Status 200 application/json

Object type: Diff

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 Diff 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 Unique identifier for each test definition execution.
differenceId String e52a1b76-d33d-11e7-9296-cec278b6b50a Unique identifier for each diff.

Status 200 application/json

Object type: ComparativeRawTransaction

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 executions operation and store the testDefinitionExecutionId of the execution for which you want to get the diffs.

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

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

The operation responds with a ComparativeRawTransaction 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 of them. With one request you can run the test for one type of object (a requirement, config versions, test suites, functional test cases, or test definitions). You can also combine a requirement with config versions, config versions with test definitions, a requirement with test definitions, or a requirement with both 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 the submitted 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 for each 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 for each 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.

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 A resource you want to get the activity log for.
resourceId Integer 12 Unique identifier for each resource you want to get the activity log for.

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
        }
    }
]
  1. Depending on the resource you want to get the log for, 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.

  2. Go to Activity members and check available activityResource values.

  3. Make a GET request to /test-management/v2/activities{?activityResource,resourceId}.

The operation responds with a Activity object.

List comparison lists

Returns the comparison lists for a specific test definition. This includes the compareAllExcept and compareOnly lists 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

Returns the list of standard HTTP request and response headers. You can use these values 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.
requirementDescription String Description you provide for the requirement. The default value for the PUT request is an empty string.
requirementId Integer Read-only. Unique identifier for each 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.
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.

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 each 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. If it’s locked, only designated owners or editors can modify it.
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.
testSuiteId Integer Read-only. Unique identifier for each test suite.
testSuiteName String Name you provide for the test suite.

AccessList

Contains an access list. Access lists provide details about Test Center users who have the edit access to a locked test suite, range of allowed actions, and test suite’s owner who granted the access.

Download schema: get-access-control-response.json

Sample GET response:

{
    "accessControlId": 111,
    "accessorId": "atctest@akamai.com",
    "type": "user",
    "role": "owner",
    "status": "active",
    "createdBy": "atctest@akamai.com",
    "createdDate": "2019-11-15T15:42:50+0000",
    "modifiedBy": "atctest@akamai.com",
    "modifiedDate": "2019-11-15T15:44:50+0000"
}

AccessList members

Member Type Required Description
AccessList: Contains an access list. Access lists provide details about Test Center users who have the edit access to a locked test suite, range of allowed actions, and test suite’s owner who granted the access.
accessControlId Integer Unique identifier for each access list.
accessorId String Depending on the type value, the accessorId value can be either a unique identifier for a user or a group of users. The two groups available are: users_in_this_account and internal_users for all Akamai users who have access to the account.
createdBy String Username who created the access control.
createdDate String ISO 8601 timestamp indicating when the access list was created.
modifiedBy String Username who last modified the access list.
modifiedDate String ISO 8601 timestamp indicating when the access list was last modified.
role Enumeration User’s or group’s test suite role, either owner or editor. The editor can only include new functional test cases and remove those already included. The owner can also edit the test cases and remove them.
status Enumeration Access list’s status, either pending or active. The pending status means that user’s edit access request waits for owners’ decision. The active status means that the request was approved and the user can work on the test suite.
type Enumeration Whether the access list refers to a single user or a group of users.

GrantAccess

Contains details about a Test Center user or a group you want to grant the edit access to a locked test suite and range of actions you want to allow.

Download schema: grant-access-control-request.json

Sample POST request:

[
    {
        "accessorId": "atctest@akamai.com",
        "type": "user",
        "role": "owner"
    },
    {
        "accessorId": "users_in_this_account",
        "type": "group",
        "role": "editor"
    },
    {
        "accessorId": "user1",
        "type": "user",
        "role": "owner"
    }
]

GrantAccess members

Member Type Required Description
GrantAccess: Contains details about a Test Center user or a group you want to grant the edit access to a locked test suite and range of actions you want to allow.
accessorId String Depending on the type value, the accessorId value can be either a unique identifier for a user or a group of users. The two groups available are: users_in_this_account and internal_users for all Akamai users who have access to the account.
role Enumeration User’s or group’s test suite role, either owner or editor. The editor can only include new functional test cases and remove those already included. The owner can also edit the test cases and remove them.
type Enumeration Whether the access list refers to a single user or a group of users.

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": [
                "response_header"
            ],
            "conditionNode": {
                "conditionNodeId": 4,
                "values": [
                    "Content-Type"
                ],
                "conditionNode": {
                    "conditionNodeId": 5,
                    "values": [
                        "has_a_value"
                    ],
                    "conditionNode": {
                        "conditionNodeId": 7,
                        "values": [
                            "ends_with"
                        ],
                        "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 for each functional test case.
testRequest TestRequest object Contains information about the included test request.

CloneFunctionalTestCase

Contains information about functional test cases you want to clone. 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 you want to clone. 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 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 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 for each functional test case you want to clone.
testRequestId Integer 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.
tags Array Keywords you assign to the test request. The default value for the PUT request is an empty array.
testRequestId Integer Read-only. Unique identifier for each test request.
testRequestUrl String Fully qualified URL of the page or object you want to test. It needs to 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.
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 you want to evaluate on the HTTP response. They correspond 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": [
            "response_code"
        ],
        "conditionNode": {
            "conditionNodeId": 2,
            "values": [
                "is_one_of"
            ],
            "conditionNode": {
                "conditionNodeId": 3,
                "values": [
                    200,
                    201
                ]
            }
        }
    }
}

Condition members

Member Type Required Description
Condition: Contains information about the condition. Conditions are the criteria you want to evaluate on the HTTP response. They correspond 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 has a sentence-like structure that you construct 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 for each 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 has a sentence-like structure that you construct 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 for each 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 you can combine them, 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": "response_header",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 4,
                    "triggers": [
                        {
                            "triggerValue": null,
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 5,
                                "triggers": [
                                    {
                                        "triggerValue": "has_a_value",
                                        "validPath": true,
                                        "conditionNode": {
                                            "conditionNodeId": 7,
                                            "triggers": [
                                                {
                                                    "triggerValue": "does_not_end_with",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "begins_with",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "does_not_equal",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "does_not_contain",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "does_not_begin_with",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "matches_regex",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "does_not_match_regex",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "contains",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "ends_with",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "equals",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "has_no_value",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "does_not_exist",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "exists",
                                        "validPath": true
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "sure_route",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 14,
                    "triggers": [
                        {
                            "triggerValue": "is_enabled",
                            "validPath": true
                        },
                        {
                            "triggerValue": "is_not_enabled",
                            "validPath": true
                        }
                    ]
                }
            },
            {
                "triggerValue": "response_code",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 2,
                    "triggers": [
                        {
                            "triggerValue": "is_one_of",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 3,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "cache_key_query_parameters",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 19,
                    "triggers": [
                        {
                            "triggerValue": "included",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 25,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "not_included",
                            "validPath": true
                        }
                    ]
                }
            },
            {
                "triggerValue": "log_request_details",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 15,
                    "triggers": [
                        {
                            "triggerValue": "custom_data",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "is_logged",
                                        "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
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "is_not_logged",
                                        "validPath": true
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "referrer_header",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "is_logged",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "is_not_logged",
                                        "validPath": true
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "accept_language_header",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "is_logged",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "is_not_logged",
                                        "validPath": true
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "user_agent_header",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "is_logged",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "is_not_logged",
                                        "validPath": true
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "host_header",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 16,
                                "triggers": [
                                    {
                                        "triggerValue": "is_logged",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "is_not_logged",
                                        "validPath": true
                                    }
                                ]
                            }
                        },
                        {
                            "triggerValue": "cookies",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 24,
                                "triggers": [
                                    {
                                        "triggerValue": "logged",
                                        "validPath": false,
                                        "conditionNode": {
                                            "conditionNodeId": 17,
                                            "triggers": [
                                                {
                                                    "triggerValue": null,
                                                    "validPath": true
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "not_logged",
                                        "validPath": true
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "origin_server_cache_key_hostname",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 23,
                    "triggers": [
                        {
                            "triggerValue": "is",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 4,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "last_mile_acceleration",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 22,
                    "triggers": [
                        {
                            "triggerValue": "is_gzipped",
                            "validPath": true
                        },
                        {
                            "triggerValue": "is_not_gzipped",
                            "validPath": true
                        }
                    ]
                }
            },
            {
                "triggerValue": "cp_code",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 23,
                    "triggers": [
                        {
                            "triggerValue": "is",
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 9,
                                "triggers": [
                                    {
                                        "triggerValue": null,
                                        "validPath": true
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "ignore_case_in_cache_key",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 14,
                    "triggers": [
                        {
                            "triggerValue": "is_enabled",
                            "validPath": true
                        },
                        {
                            "triggerValue": "is_not_enabled",
                            "validPath": true
                        }
                    ]
                }
            },
            {
                "triggerValue": "redirect",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 2,
                    "triggers": [
                        {
                            "triggerValue": "is_one_of",
                            "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
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "prefetch_objects",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 20,
                    "triggers": [
                        {
                            "triggerValue": "is_not_triggered",
                            "validPath": true
                        },
                        {
                            "triggerValue": "is_triggered",
                            "validPath": true
                        }
                    ]
                }
            },
            {
                "triggerValue": "tiered_distribution",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 14,
                    "triggers": [
                        {
                            "triggerValue": "is_enabled",
                            "validPath": true
                        },
                        {
                            "triggerValue": "is_not_enabled",
                            "validPath": true
                        }
                    ]
                }
            },
            {
                "triggerValue": "caching_option",
                "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
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "minutes",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 9,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "hours",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 9,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "days",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 9,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "no-store",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "bypass-cache",
                                        "validPath": true
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            {
                "triggerValue": "variable",
                "validPath": false,
                "conditionNode": {
                    "conditionNodeId": 4,
                    "triggers": [
                        {
                            "triggerValue": null,
                            "validPath": false,
                            "conditionNode": {
                                "conditionNodeId": 5,
                                "triggers": [
                                    {
                                        "triggerValue": "has_a_value",
                                        "validPath": true,
                                        "conditionNode": {
                                            "conditionNodeId": 7,
                                            "triggers": [
                                                {
                                                    "triggerValue": "does_not_end_with",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "begins_with",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "does_not_equal",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "does_not_contain",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "does_not_begin_with",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "matches_regex",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "does_not_match_regex",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "contains",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "ends_with",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "triggerValue": "equals",
                                                    "validPath": false,
                                                    "conditionNode": {
                                                        "conditionNodeId": 4,
                                                        "triggers": [
                                                            {
                                                                "triggerValue": null,
                                                                "validPath": true,
                                                                "conditionNode": {
                                                                    "conditionNodeId": 8,
                                                                    "triggers": [
                                                                        {
                                                                            "triggerValue": "ignore_case",
                                                                            "validPath": true
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "triggerValue": "has_no_value",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "does_not_exist",
                                        "validPath": true
                                    },
                                    {
                                        "triggerValue": "exists",
                                        "validPath": true
                                    }
                                ]
                            }
                        }
                    ]
                }
            }
        ]
    },
    "conditionNodes": [
        {
            "conditionNodeId": 7,
            "conditionNodeDescription": "Multiple string test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "does_not_begin_with",
                    "ends_with",
                    "does_not_equal",
                    "does_not_contain",
                    "does_not_end_with",
                    "matches_regex",
                    "contains",
                    "does_not_match_regex",
                    "begins_with",
                    "equals"
                ]
            }
        },
        {
            "conditionNodeId": 1,
            "conditionNodeDescription": "Root condition nodes",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "last_mile_acceleration",
                    "ignore_case_in_cache_key",
                    "origin_server_cache_key_hostname",
                    "sure_route",
                    "tiered_distribution",
                    "response_code",
                    "log_request_details",
                    "caching_option",
                    "variable",
                    "cp_code",
                    "redirect",
                    "prefetch_objects",
                    "response_header",
                    "cache_key_query_parameters"
                ]
            }
        },
        {
            "conditionNodeId": 16,
            "conditionNodeDescription": "Is and is not logged test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "is_logged",
                    "is_not_logged"
                ]
            }
        },
        {
            "conditionNodeId": 15,
            "conditionNodeDescription": "Log request values",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "custom_data",
                    "referrer_header",
                    "host_header",
                    "accept_language_header",
                    "user_agent_header",
                    "cookies"
                ]
            }
        },
        {
            "conditionNodeId": 11,
            "conditionNodeDescription": "Time units",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "seconds",
                    "days",
                    "hours",
                    "minutes"
                ]
            }
        },
        {
            "conditionNodeId": 24,
            "conditionNodeDescription": "Logged/not logged test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "not_logged",
                    "logged"
                ]
            }
        },
        {
            "conditionNodeId": 10,
            "conditionNodeDescription": "Caching options",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "no-store",
                    "cache",
                    "bypass-cache"
                ]
            }
        },
        {
            "conditionNodeId": 20,
            "conditionNodeDescription": "Is and is not triggered test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "is_triggered",
                    "is_not_triggered"
                ]
            }
        },
        {
            "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": [
                    "does_not_exist",
                    "has_no_value",
                    "has_a_value",
                    "exists"
                ]
            }
        },
        {
            "conditionNodeId": 3,
            "conditionNodeDescription": "User input to select multiple response codes",
            "valueControls": {
                "valueDataType": "integer",
                "valueInputType": "multiple_choice",
                "newValueSupported": true,
                "availableValues": [
                    400,
                    300,
                    500,
                    200
                ]
            }
        },
        {
            "conditionNodeId": 14,
            "conditionNodeDescription": "Is and is not enabled test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "is_enabled",
                    "is_not_enabled"
                ]
            }
        },
        {
            "conditionNodeId": 22,
            "conditionNodeDescription": "Is and is not gzipped test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "is_not_gzipped",
                    "is_gzipped"
                ]
            }
        },
        {
            "conditionNodeId": 8,
            "conditionNodeDescription": "String ignore case test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "ignore_case"
                ]
            }
        },
        {
            "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",
                    "not_included"
                ]
            }
        },
        {
            "conditionNodeId": 2,
            "conditionNodeDescription": "Is one of test",
            "valueControls": {
                "valueDataType": "string",
                "valueInputType": "single_choice",
                "newValueSupported": false,
                "availableValues": [
                    "is_one_of"
                ]
            }
        },
        {
            "conditionNodeId": 13,
            "conditionNodeDescription": "User input to select multiple redirect(3xx) response codes",
            "valueControls": {
                "valueDataType": "integer",
                "valueInputType": "multiple_choice",
                "newValueSupported": true,
                "availableValues": [
                    302,
                    301
                ]
            }
        },
        {
            "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 you can combine them, 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 need to 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 each 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 need to 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 need to 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 need to 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 need to 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.

TestDefinition

Contains information about a test definition.

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: Contains information about a test definition.
createdBy String Read-only. Username 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 IP version you want to run the test for. Possible values are: ipv4, ipv6, or both.
modifiedBy String Read-only. Username 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. Test definition’s status. Possible values are: active or inactive. The inactive status means the test definition was removed and you can’t use it.
testDefinitionDescription String Description of the test definition.
testDefinitionId Integer Read-only. Unique identifier for each test definition.
testDefinitionName String Name of the test definition.

ComparativeTestCase

Contains information about the comparative test case, including response headers and comparisons you want test. The embedded objects refer to the entities that get loaded after the initial HTML request 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: Contains information about the comparative test case, including response headers and comparisons you want test. The embedded objects refer to the entities that get loaded after the initial HTML request is made.
comparisonSettings ComparativeTestCase.comparisonSettings Attributes compared between different environments.
createdBy String Read-only. Username who created the comparative test case.
createdDate String Read-only. ISO 8601 timestamp indicating when the test definition was created.
modifiedBy String Read-only. Username who last modified the comparative test case.
modifiedDate String Read-only. ISO 8601 timestamp indicating when the test definition was last modified.
requestHeaders ComparativeTestCase.requestHeaders[] Contains request headers in the comparative test case.
runOrder Integer Integer representing the order in which the test run executes the test case as part of its parent test definition.
status Enumeration Read-only. Comparative test case’s status. Possible values are: active or inactive. The inactive status means the test case was removed and you can’t use it.
testCaseDescription String Description of the comparative test case.
testCaseId Integer Unique identifier for each comparative test case resource.
testCaseName String Name of the comparative test case.
testDefinitionId Integer Unique identifier for each test definition resource.
url String URL of the tested page.
ComparativeTestCase.comparisonSettings: Attributes compared between different environments.
cacheKey ComparativeTestCase.comparisonSettings.cacheKey String used by the Akamai Edge Server to identify the requested object in the cache.
cachingOption ComparativeTestCase.comparisonSettings.cachingOption Caching option allows you to specify how long you want to cache everything in your configuration.
cpcode ComparativeTestCase.comparisonSettings.cpcode CP code used to deliver the content from the Akamai Edge Server.
metadataVariables ComparativeTestCase.comparisonSettings.metadataVariables Metadata variables used in the processing of the request.
originServer ComparativeTestCase.comparisonSettings.originServer Hostname of the origin server.
responseCode ComparativeTestCase.comparisonSettings.responseCode Numerical part of the HTTP Status Code.
responseHeaders ComparativeTestCase.comparisonSettings.responseHeaders Response headers of the corresponding HTTP responses.
ComparativeTestCase.comparisonSettings.cacheKey: String used by the Akamai Edge Server to identify the requested object in the cache.
includeEmbeddedObjects Boolean Whether the test run comparison includes embedded objects for the cache key.
isEnabled Boolean Whether the test run compares the cache key.
ComparativeTestCase.comparisonSettings.cachingOption: Caching option allows you to specify how long you want to cache everything in your configuration.
includeEmbeddedObjects Boolean Whether the test run comparison includes the embedded objects for the caching option.
isEnabled Boolean Whether the test run compares the caching option.
ComparativeTestCase.comparisonSettings.cpcode: CP code used to deliver the content from the Akamai Edge Server.
includeEmbeddedObjects Boolean Whether the test run comparison includes embedded objects for the CP code.
isEnabled Boolean Whether the test run compares the CP code.
ComparativeTestCase.comparisonSettings.metadataVariables: Metadata variables used in the processing of the request.
compareAllExcept Array List of all metadata variables the test run ignores or doesn’t compare.
compareOnly Array List of metadata variables the test run includes or compares.
includeEmbeddedObjects Boolean Whether the test run comparison includes embedded objects for the metadata variables.
isEnabled Boolean Whether the test run compares the metadata variables.
ComparativeTestCase.comparisonSettings.originServer: Hostname of the origin server.
includeEmbeddedObjects Boolean Whether the test run comparison included the embedded objects for the origin server.
isEnabled Boolean Whether the test run compares the origin server.
ComparativeTestCase.comparisonSettings.responseCode: Numerical part of the HTTP Status Code.
includeEmbeddedObjects Boolean Whether the test run comparison includes embedded objects for the response code.
isEnabled Boolean Whether the test run compares the response code.
ComparativeTestCase.comparisonSettings.responseHeaders: Response headers of the corresponding HTTP responses.
compareAllExcept Array List of all response headers the test run ignores or doesn’t compare.
compareOnly Array List of response headers the test run includes or doesn’t compares.
includeEmbeddedObjects Boolean Whether the test run comparison includes embedded objects of the response headers.
isEnabled Boolean Whether the test run compares the response headers.
ComparativeTestCase.requestHeaders[]: Contains request headers in the comparative 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 Name of the request header.
headerValues String Value of the request header.

TestRunRequest

Contains information about objects you want a test run to execute 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 you want a test run to execute 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 you want the test run to execute. 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 you want the test run to execute. 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 the test run executes the request, either production or staging.
TestRunRequest.comparative: Contains information about comparative testing objects you want the test run to execute. 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 test definitions you want to execute.
TestRunRequest.comparative.testDefinitionExecutions[]: Contains information about test definitions you want to execute.
ipVersions Array IP versions for which you want to execute the test run. Possible values are: ipv4, ipv6, or both.
targetHostname String Target environment hostname against which you want to execute the test definition.
testCaseIds Array List of unique identifiers of comparative test cases included in the test definitions. To get details of a test case, run the Get a comparative test case operation.
testDefinitionId Integer Unique identifier of each test definition you want to execute.
TestRunRequest.functional: Contains information about functional testing objects you want the test run to execute. 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 config versions you want to execute.
requirementExecutions TestRunRequest.functional.requirementExecutions[] Contains information about requirements you want to execute.
testCaseExecutions TestRunRequest.functional.testCaseExecutions[] Contains information about functional test cases you want to execute.
testSuiteExecutions TestRunRequest.functional.testSuiteExecutions[] Contains information about test suites you want to execute.
TestRunRequest.functional.configVersionExecutions[]: Contains information about config versions you want to execute.
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 requirements you want to execute.
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 functional test cases you want to execute.
testCaseId Integer Unique identifier of the functional test case.
TestRunRequest.functional.testSuiteExecutions[]: Contains information about test suites you want to execute.
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 Test run’s status. 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 Environment against which the test run was executed, either production or staging.
testRunId Integer Unique identifier for each 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 Comparative objects’ execution status. 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 Functional objects’ execution status. 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 for each config version.
status Enumeration Config version’s execution status. 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 for each requirement.
status Enumeration Requirement’s execution status. 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 Test suite’s execution status. Possible values are: in_progress, completed, or failed.
testCaseExecutions FunctionalTestCaseExecution array Contains information about functional test cases executed during the test run.
testSuiteExecutionId Integer Unique identifier for each test suite execution.
testSuiteId Integer Unique identifier for each 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 Test case objects’ 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. Possible values are: passed for conditions detected during the test run, failed for those not detected, or error_occurred, if the test run couldn’t 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

The test definition execution is a component of a test run. A test run can have multiple executions, one for each test definition included in the test run. A test definition execution contains the subset of test cases, IP versions, target hostname, and target environment of the test definition it belongs to.

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

Sample GET response:

{
    "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
    }
}

TestDefinitionExecution members

Member Type Required Description
TestDefinitionExecution: The test definition execution is a component of a test run. A test run can have multiple executions, one for each test definition included in the test run. A test definition execution contains the subset of test cases, IP versions, target hostname, and target environment of the test definition it belongs to.
completedDate String ISO 8601 timestamp indicating when the test definition execution was completed.
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. Possible values are: ipv4, ipv6, or both.
note String Notes about the test definition execution.
status Enumeration Execution’s status. Possible values are: in_progress, completed, failed, or archived. A value of failed means that the execution couldn’t be run because of an error. You can check its details in the errors array. A value of archived means there have been at least five subsequent runs for this test definition.
submittedBy String Username who initiated the test definition execution.
submittedDate String ISO 8601 timestamp indicating when the test definition execution was submitted.
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. To get details of a test case, run the Get a comparative test case operation.
testDefinitionExecutionId Integer Unique identifier for each test definition execution.
testDefinitionId Integer Unique identifier for each test definition that executed.
testRunId Integer Identifier of the test run.
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 for each 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.

Diff

Contains information about the diff 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"
    }
}

Diff members

Member Type Description
Diff: Contains information about the diff 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 Diff.browser Object containing browser info.
comparisonAttribute Enumeration Comparison setting which the diff object addresses. Can be any comparison setting: cacheKey, cachingOption, cpcode, metadataVariables, originServer, responseCode, responseHeaders.
differenceId String Unique identifier for each diff.
geoLocation String Identifier of the geolocation.
ipVersion Enumeration IP version used for this execution, either ipv4 or ipv6.
isAccepted Boolean Whether the diff is accepted.
parameterNames Array 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 parameterNames in source environment.
targetUrl String URL of the object in target environment.
targetValue String Value of the comparison attribute for the parameterNames in target environment.
testCaseId Integer Unique identifier of comparative test case the diff belongs to.
Diff.browser: Object containing browser info.
name Enumeration Name of the browser. The only available value is 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 for each 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 List of uniquely identifiers of diffs detected during the test run. To get details of a diff, run the Get a diff operation.
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 identifier of associated functional test cases. To get details of a test case, run the Get a functional test case operation.

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.

ComparativeRawTransaction

Contains a raw request and response for a diff.

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

Sample GET response:

{
    "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"
                }
            ]
        }
    }
}

ComparativeRawTransaction members

Member Type Required Description
ComparativeRawTransaction: Contains a raw request and response for a diff.
sourceEnvironment RequestDetails Contains a raw request for a diff.
targetEnvironment ResponseDetails Contains a raw response for a diff.

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 the 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 the 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 diffs.
unaccept Occurs for diffs.
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 Multistatus 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.