
- Overview
- Resources
- API summary
- List requirements
- Create a requirement
- Get a requirement
- Update a requirement
- Delete a requirement
- Restore a requirement
- List test suites associated with a requirement
- Associate test suites with a requirement
- Dissociate test suites from a requirement
- List config versions
- Add a config version
- Get a config version
- Delete a config version
- Restore a config version
- List test suites associated with a config version
- Associate test suites with a config version
- Dissociate test suites from a config version
- List test suites
- Create a test suite
- Get a test suite
- Update a test suite
- Delete a test suite
- Restore a test suite
- Update test cases in a test suite
- List requirements associated with a test suite
- List config versions associated with a test suite
- List functional test cases included in a test suite
- Include functional test cases in a test suite
- Remove functional test cases from a test suite
- List order of functional test cases in a stateful test suite
- Include ordered functional test cases in a test suite
- Get access lists of a locked test suite
- Give access to a locked test suite
- Request edit access
- Update an access list
- Delete an access list
- Approve an edit access request
- Reject an edit access request
- Clone test suites
- List functional test cases
- Create functional test cases
- Get a functional test case
- Update a functional test case
- Delete a functional test case
- Restore a functional test case
- List test suites with a functional test case
- Assign test suites to a functional test case
- Remove test suites from a functional test case
- Clone functional test cases
- List client profiles
- Get a client profile
- List functional test cases that use a client profile
- List test requests
- Create test requests
- Get a test request
- Update a test request
- Delete a test request
- Restore a test request
- List functional test cases that use a test request
- Get the test catalog template
- List conditions
- Create a condition
- Get a condition
- Update a condition
- Delete a condition
- Restore a condition
- List functional test cases that use a condition
- Get transaction details for a functional test case
- List test definitions
- Create a new test definition
- Get a test definition
- Update a test definition
- Delete a test definition
- Restore a test definition
- Remove a test definition
- Clone a test definition
- List comparative test cases included in a test definition
- Create a comparative test case
- Get a comparative test case
- Update a comparative test case
- Delete a comparative test case
- Restore a comparative test case
- Remove a comparative test case
- Clone a comparative test case
- List executions
- Get an execution
- List diffs
- Update diffs
- Create notes for a set of diffs
- Get a diff
- Get transaction details for a diff
- List test runs
- Submit a test run
- Get a test run
- Get transaction details for a test run
- List activities
- List comparison lists
- List HTTP headers
- Data
- Requirement
- ConfigVersion
- TestSuite
- AccessList
- GrantAccess
- FunctionalTestCase
- CloneFunctionalTestCase
- ClientProfile
- TestRequest
- Condition
- TestCatalogTemplate
- Trigger
- TestDefinition
- ComparativeTestCase
- TestRunRequest
- TestRunResponse
- TestSuiteExecution
- FunctionalTestCaseExecution
- TestDefinitionExecution
- Diff
- RawTransactionForTestRun
- FunctionalRawTransaction
- ComparativeRawTransaction
- RequestDetails
- ResponseDetails
- Activity
- Activity.activityAction values
- Errors
Test Center API v2
Run functional and comparative tests to check configuration changes before activating.
Learn more:
- Test Center
- Download this API’s RAML and JSON schema descriptors.
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.
Run a functional test
You can run three types of functional test:
Test whether implemented configuration changes meet your business needs. You can do it by running the test for a requirement.
Test whether changes work on the previous configuration version. You can do it by running the regression test.
Execute single object. You can do it by running the test for a test suite or running the test for a functional test case.
Run a test for a requirement
Run a test for a requirement to check if the implemented changes meet your business requirements.
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.
Run the List client profiles operation to get the identifier of the client profile you want to use in functional test cases.
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.
Create functional test cases. To do it, you need unique identifiers of the created test requests, conditions, and client profiles.
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.
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.
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.
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.
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.
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.
Run the List client profiles operation to get the identifier of the client profile you want to use in functional test cases.
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.
Clone test suites from the requirement for which you run the test.
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.
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.
Run the List client profiles operation to get the identifier of the client profile you want to use in functional test cases.
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.
Create functional test cases. To do it, you need identifiers of the test requests, conditions, and client profiles you want to include.
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.
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.
Run the List client profiles operation to get the identifier of the client profile you want to use in functional test cases.
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.
Create functional test cases. To do it, you need identifiers of the test requests, conditions, and client profiles you want to include.
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:
Run the Get the test catalog template operation. The test catalog template’s response object consists of the
conditionNodes
array and thetriggerMappings
object. This is a fragment of theconditionNodes
array for theconditionId
of1
.{ "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" ] } }
To create the condition, start from the
conditionNodes
array andconditionId
of1
of the test catalog template’s response object. One of available values of the node isresponse_header
, which is the first element of the condition. Enter the values into the request body.{ "condition": { "conditionNodeId": 1, "values": [ "response_header" ] } }
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 thetriggerValue
forresponse_header
. Check theconditionNodeId
forconditionNode
. This is the node triggered by the selection ofresponse_header
in the first node. In this case it’s the node withconditionNodeId
of4
.In the test catalog template’s response object, go back to the
conditionNodes
array andconditionNodeId
of4
. The description of the node states that it needs input from you. For this example it’sContent-Type
. Update the request body.{ "condition": { "conditionNodeId": 1, "values": [ "response_header" ], "conditionNode": { "conditionNodeId": 4, "values": [ "Content-Type" ] } } }
Go back to the test catalog template’s response object and the
triggerMappings
array to check which node is triggered next. The consecutiveconditionNodeId
is5
.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’shas_a_value
. Update the request body. Because thevalidPath
forhas_a_value
istrue
you could finish the condition here, but then it would be just Response headerContent-Type
has a value.{ "condition": { "conditionNodeId": 1, "values": [ "response_header" ], "conditionNode": { "conditionNodeId": 4, "values": [ "Content-Type" ], "conditionNode": { "conditionNodeId": 5, "values": [ "has_a_value" ] } } } }
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 consecutiveconditionNodeId
is7
. The description of the node in theconditionNodes
array states that it requires a single selection out of the listed values. For this example it’sends_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" ] } } } } }
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 findtriggerValue
forends_with
and find triggeredconditionNodeId
. It’s4
. This node was used before, so you known that it requires a single input from you. For this example it’sjson
. Update the request body. The condition Response headerContent-Type
has a value that ends withjson
is ready. ThevalidPath
for the last node istrue
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.
Create comparative test cases for the created test definition.
When the test run is complete, list differences.
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 restore or delete operations and batch operations such as associating or dissociating test suites with requirements, or creating functional test cases.
The HTTP response code for batch 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 most operations it is a list of unique identifiers of items for which the operation was successful. The failures
array contains a list of HTTP
Problem Details objects organized by a type of problem. It 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.
For delete and restore operations the HTTP response code is 207
or 200
. The outcome depends on
your set of query parameters. The 207
response works exactly the same as for the batch operations. The 200
response, on the other hand, is returned only if the operation was
fully successful. The restored or deleted object is returned in the successes
array. Instead of the
failures
array with a reason for the operation’s failure, you get a 4XX
status.
This sample error response shows mixed results when trying to associate a test suite with a requirement. It tells you that
the test suite with the testSuiteId
of 77
was successfully associated with the requirement. The
operation was unsuccessful for the test suite with the testSuiteId
of 122
because the test suite
no longer exists.
{
"successes":[
77
],
"failures":[
{
"type":"resource.not.found",
"title":"Resource not found",
"requestField":"testSuiteId",
"requestValues":[
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/ |
Create a requirement | POST | /test-management/ |
Get a requirement | GET | /test-management/ |
Update a requirement | PUT | /test-management/ |
Delete a requirement | DELETE | /test-management/ |
Restore a requirement | POST | /test-management/ |
List test suites associated with a requirement | GET | /test-management/ |
Associate test suites with a requirement | POST | /test-management/ |
Dissociate test suites from a requirement | POST | /test-management/ |
Functional testing: config versions | ||
List config versions | GET | /test-management/ |
Add a config version | POST | /test-management/ |
Get a config version | GET | /test-management/ |
Delete a config version | DELETE | /test-management/ |
Restore a config version | POST | /test-management/ |
List test suites associated with a config version | GET | /test-management/ |
Associate test suites with a config version | POST | /test-management/ |
Dissociate test suites from a config version | POST | /test-management/ |
Functional testing: test suites | ||
List test suites | GET | /test-management/ |
Create a test suite | POST | /test-management/ |
Get a test suite | GET | /test-management/ |
Update a test suite | PUT | /test-management/ |
Delete a test suite | DELETE | /test-management/ |
Restore a test suite | POST | /test-management/ |
Update test cases in a test suite | PUT | /test-management/ |
List requirements associated with a test suite | GET | /test-management/ |
List config versions associated with a test suite | GET | /test-management/ |
List functional test cases included in a test suite | GET | /test-management/ |
Include functional test cases in a test suite | POST | /test-management/ |
Remove functional test cases from a test suite | POST | /test-management/ |
List order of functional test cases in a stateful test suite | GET | /test-management/ |
Include ordered functional test cases in a test suite | POST | /test-management/ |
Get access lists of a locked test suite | GET | /test-management/ |
Give access to a locked test suite | POST | /test-management/ |
Request edit access | POST | /test-management/ |
Update an access list | PUT | /test-management/ |
Delete an access list | DELETE | /test-management/ |
Approve an edit access request | POST | /test-management/ |
Reject an edit access request | POST | /test-management/ |
Clone test suites | POST | /test-management/ |
Functional testing: test cases | ||
List functional test cases | GET | /test-management/ |
Create functional test cases | POST | /test-management/ |
Get a functional test case | GET | /test-management/ |
Update a functional test case | PUT | /test-management/ |
Delete a functional test case | DELETE | /test-management/ |
Restore a functional test case | POST | /test-management/ |
List test suites with a functional test case | GET | /test-management/ |
Assign test suites to a functional test case | POST | /test-management/ |
Remove test suites from a functional test case | POST | /test-management/ |
Clone functional test cases | POST | /test-management/ |
Functional testing: client profiles | ||
List client profiles | GET | /test-management/ |
Get a client profile | GET | /test-management/ |
List functional test cases that use a client profile | GET | /test-management/ |
Functional testing: test requests | ||
List test requests | GET | /test-management/ |
Create test requests | POST | /test-management/ |
Get a test request | GET | /test-management/ |
Update a test request | PUT | /test-management/ |
Delete a test request | DELETE | /test-management/ |
Restore a test request | POST | /test-management/ |
List functional test cases that use a test request | GET | /test-management/ |
Functional testing: conditions | ||
Get the test catalog template | GET | /test-management/ |
List conditions | GET | /test-management/ |
Create a condition | POST | /test-management/ |
Get a condition | GET | /test-management/ |
Update a condition | PUT | /test-management/ |
Delete a condition | DELETE | /test-management/ |
Restore a condition | POST | /test-management/ |
List functional test cases that use a condition | GET | /test-management/ |
Functional testing: executions | ||
Get transaction details for a functional test case | GET | /test-management/ |
Comparative testing: test definitions | ||
List test definitions | GET | /test-management/ |
Create a new test definition | POST | /test-management/ |
Get a test definition | GET | /test-management/ |
Update a test definition | PUT | /test-management/ |
Delete a test definition | DELETE | /test-management/ |
Restore a test definition | POST | /test-management/ |
Remove a test definition | POST | /test-management/ |
Clone a test definition | POST | /test-management/ |
List comparative test cases included in a test definition | GET | /test-management/ |
Create a comparative test case | POST | /test-management/ |
Get a comparative test case | GET | /test-management/ |
Update a comparative test case | PUT | /test-management/ |
Delete a comparative test case | DELETE | /test-management/ |
Restore a comparative test case | POST | /test-management/ |
Remove a comparative test case | POST | /test-management/ |
Clone a comparative test case | POST | /test-management/ |
Comparative testing: executions | ||
List executions | GET | /test-management/ |
Get an execution | GET | /test-management/ |
List diffs | GET | /test-management/ |
Update diffs | PUT | /test-management/ |
Create notes for a set of diffs | POST | /test-management/ |
Get a diff | GET | /test-management/ |
Get transaction details for a diff | GET | /test-management/ |
Common operations | ||
List test runs | GET | /test-management/ |
Submit a test run | POST | /test-management/ |
Get a test run | GET | /test-management/ |
Get transaction details for a test run | GET | /test-management/ |
List activities | GET | /test-management/ |
List comparison lists | GET | /test-management/ |
List HTTP headers | GET | /test-management/ |
List requirements
Lists all requirements created in your organization. You can choose to list only requirements ready to be used or also deleted requirements that you can restore. The response is an array of Requirement objects, each keyed by requirementId
.
GET /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
Optional query parameters | |||
includeRecentlyDeleted |
Boolean | false |
Whether to list deleted requirements that you can restore. |
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/
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"
}
]
}
Build a new Requirement object.
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/
Sample: /test-management/
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"
}
]
}
Run the List requirements operation and store the
requirementId
of the requirement you want to get the details of.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/
Sample: /test-management/
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"
}
]
}
Run the List requirements operation and store the
requirementId
of the requirement you want to update.Run the Get a requirement operation.
Modify the returned Requirement object.
PUT the object to
/test-management/
.v2/ functional/ requirements/ {requirementId}
The operation responds with the modified Requirement object.
Delete a requirement
Deletes a requirement. You can delete either a requirement or a requirement with all included objects, test suites, functional test cases, test requests, and conditions. The operation has three possible outcomes.
When deleteChildResources
is false
, the operation responds with the 200 status and the requirement’s unique identifier in the successes
array. When
deleteChildResources
is true
, the operation responds with the partial-success 207 response and unique identifiers of each type of object in the appropriate successes
or failures
arrays.
Regardless of the deleteChildResources
value, if there is a problem with deleting the requirement object, the operation responds with a 4XX status.
You can restore requirements within 30 days of deleting them.
DELETE /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
requirementId |
Integer | 7 |
Unique identifier for each requirement. |
Optional query parameters | |||
deleteChildResources |
Boolean | true |
Whether to delete the requirement with all included objects, test suites, functional test cases, test requests, and conditions. |
Status 200
application/json
Download schema: get-deleted-requirement-response.json
Response body:
{
"requirements": {
"successes": [
7
],
"failures": []
}
}
Status 207
application/json
Download schema: get-deleted-requirements-response.json
Response body:
{
"requirements": {
"successes": [
7
],
"failures": []
},
"testSuites": {
"successes": [
4531
],
"failures": []
},
"testCases": {
"successes": [
6593
],
"failures": []
},
"testRequests": {
"successes": [
4853
],
"failures": []
},
"conditions": {
"successes": [
3566
],
"failures": []
}
}
Run the List requirements operation and store the
requirementId
of the requirement you want to delete.Make a DELETE request to
/test-management/
.v2/ functional/ requirements/ {requirementId}{?deleteChildResources}
With deleteChildResources
disabled, the operation responds with the 200 status and the
requirement’s unique identifier in the successes
array. With deleteChildResources
enabled, the operation responds with the
207 response and unique identifiers of each type of object in the appropriate successes
or failures
arrays.
Restore a requirement
Restores a deleted requirement. You can restore either an empty requirement or a requirement together with all the
included objects, test suites, functional test cases, test requests, and conditions. The operation has three possible outcomes. When restoreChildResources
is false
, a 200 response provides the restored Requirement
object in the successes
array. When restoreChildResources
is true
, the operation responds with the
partial-success 207 response and Requirement, TestSuite, FunctionalTestCase, Condition, and TestRequest
objects in the appropriate successes
or failures
arrays. Regardless of the restoreChildResources
value, if there is a problem with restoring the requirement object, the operation responds with a 4XX status.
POST /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
requirementId |
Integer | 7 |
Unique identifier for each requirement. |
Optional query parameters | |||
restoreChildResources |
Boolean | true |
Whether to restore the requirement with all included objects, test suites, functional test cases, test requests, and conditions. |
Status 200
application/json
Object type: Requirement
Download schema: get-restored-requirement-response.json
Response body:
{
"requirements": {
"failures": [],
"successes": [
{
"requirementId": 7,
"requirementName": "atc_test",
"requirementDescription": "atc_test",
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:03:20+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T06:05:57+0000"
}
]
}
}
Status 207
application/json
Object type: Requirement
Download schema: get-restored-requirements-response.json
Response body:
{
"requirements": {
"failures": [],
"successes": [
{
"requirementId": 7,
"requirementName": "atc_test",
"requirementDescription": "atc_test",
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:03:20+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T06:36:32+0000"
}
]
},
"testSuites": {
"failures": [],
"successes": [
{
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:03:40+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T06:36:33+0000",
"testSuiteId": 4531,
"testSuiteName": "atc_test",
"testSuiteDescription": "atc_test",
"locked": false,
"stateful": false
}
]
},
"testCases": {
"failures": [],
"successes": [
{
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:02:54+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T06:36:33+0000",
"testCaseId": 6593,
"clientProfile": {
"clientProfileId": 2,
"geoLocation": "us",
"ipVersion": "ipv4",
"browser": {
"name": "chrome",
"version": "65.0"
}
},
"testRequest": {
"testRequestId": 4853,
"testRequestUrl": "http://ab.fail.www.akamaiflowershop.com/atc-qa-1600393947647",
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:01:56+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T06:36:33+0000",
"tags": [
"atc_test"
]
},
"condition": {
"conditionId": 3566,
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:00:55+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T06:36:33+0000",
"condition": {
"conditionNodeId": 1,
"values": [
"response_header"
],
"conditionNode": {
"conditionNodeId": 4,
"values": [
"atc_test"
],
"conditionNode": {
"conditionNodeId": 5,
"values": [
"has_a_value"
]
}
}
}
}
}
]
},
"testRequests": {
"failures": [],
"successes": [
{
"testRequestId": 4853,
"testRequestUrl": "http://ab.fail.www.akamaiflowershop.com/atc-qa-1600393947647",
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:01:56+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T06:36:33+0000",
"tags": [
"atc_test"
]
}
]
},
"conditions": {
"failures": [],
"successes": [
{
"conditionId": 3566,
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:00:55+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T06:36:33+0000",
"condition": {
"conditionNodeId": 1,
"values": [
"response_header"
],
"conditionNode": {
"conditionNodeId": 4,
"values": [
"atc_test"
],
"conditionNode": {
"conditionNodeId": 5,
"values": [
"has_a_value"
]
}
}
}
}
]
}
}
Run the List requirements operation with the
includeRecentlyDeleted
parameter set totrue
. Store therequirementId
of the test suite you want to restore.Make a POST request to
/test-management/
.v2/ functional/ requirements/ {requirementId}/ restore{?restoreChildResources}
With restoreChildResources
disabled, the operation responds with the 200 status and the restored Requirement object in the successes
array. With restoreChildResources
enabled, the operation responds with the
207 response and Requirement, TestSuite, FunctionalTestCase, Condition, and TestRequest
objects in the appropriate successes
or failures
arrays.
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/
Sample: /test-management/
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
}
]
Run the List requirements operation and store the
requirementId
of the requirements for which you want to get a list of associated test suites.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/
Sample: /test-management/
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
]
}
]
}
Run the List requirements operation and store the
requirementId
of the requirement with which you want associate test suites.Run the List test suites operation and store
testSuiteId
values of test suites you want to associate with the requirement.Enter the stored
testSuiteId
values into an array in the body of your request.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/
Sample: /test-management/
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
]
}
]
}
Run the List requirements operation and store the
requirementId
of the requirement from which you want to dissociate test suites.Run the List test suites operation and store
testSuiteId
values of test suites you want to dissociate from the requirement.Enter the stored
testSuiteId
values into the array in the body of your request.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. You can choose to list only config versions ready to be used or also deleted config versions that you can restore. The response is an array of ConfigVersion objects, each keyed by configVersionId
.
GET /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
Optional query parameters | |||
includeRecentlyDeleted |
Boolean | false |
Whether to list deleted config versions that you can restore. |
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",
"modifiedBy": null,
"modifiedDate": null
},
{
"configVersionId": 920,
"arlFileId": 424820,
"propertyName": "atc_test_config2",
"propertyVersion": 2,
"lastSync": "2020-01-04T11:45:30+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-01-04T11:50:00+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/
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",
"modifiedBy": "atc_test",
"modifiedDate": "2020-01-04T11:35:30+0000"
}
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 numericarlFileId
for your request object. For more details about Property Manager prefixes, see ID prefixes.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 aversion
for your request object.Build a request object that specifies the
arlFileId
andversions
.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/
Sample: /test-management/
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",
"modifiedBy": "atc_test",
"modifiedDate": "2020-01-04T11:35:30+0000"
}
Run the List config versions operation and store the
configVersionId
of the config version you want to get details of.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. You can delete either a config version or a config version with all included objects, test suites, functional test cases, test requests, and conditions.
The operation has three possible outcomes. When deleteChildResources
is false
, the operation responds with the 200 status and the config version’s unique identifier in the successes
array. When
deleteChildResources
is true
, the operation responds with the partial-success 207 response and unique identifiers of each type of object in the appropriate successes
or failures
arrays.
Regardless of the deleteChildResources
value, if there is a problem with deleting the config version object, the operation responds with a 4XX status.
You can restore config versions within 30 days of deleting them.
DELETE /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
configVersionId |
Integer | 919 |
Unique identifier for each config version. |
Optional query parameters | |||
deleteChildResources |
Boolean | true |
Whether to delete the config version with all included objects, test suites, functional test cases, test requests, and conditions. |
Status 200
application/json
Download schema: get-deleted-config-version-response.json
Response body:
{
"configVersions": {
"successes": [
919
],
"failures": []
}
}
Status 207
application/json
Download schema: get-deleted-config-versions-response.json
Response body:
{
"configVersions": {
"successes": [
919
],
"failures": []
},
"testSuites": {
"successes": [
4490
],
"failures": []
},
"testCases": {
"successes": [
6552
],
"failures": []
},
"testRequests": {
"successes": [
4788
],
"failures": []
},
"conditions": {
"successes": [
3539
],
"failures": []
}
}
Run the List config versions operation and store the
configVersionId
of the config version you want to delete from Test Center.Make a DELETE request to
/test-management/
.v2/ functional/ config-versions/ {configVersionId}{?deleteChildResources}
With deleteChildResources
disabled, the operation responds with the 200 status and the
config version’s unique identifier in the successes
array. With deleteChildResources
enabled, the operation responds with the
207 response and unique identifiers of each type of object in the appropriate successes
or failures
arrays.
Restore a config version
Restores a deleted config version in Test Center. You can restore either an empty config version or a config version together with all the
included objects, test suites, functional test cases, test requests, and conditions. The operation has three possible outcomes. When restoreChildResources
is false
, a 200 response provides the restored ConfigVersion
object in the successes
array. When restoreChildResources
is true
, the operation responds with the
partial-success 207 response and ConfigVersion, TestSuite, FunctionalTestCase, Condition, and TestRequest
objects in the appropriate successes
or failures
arrays. Regardless of the restoreChildResources
value, if there is a problem with restoring the config version object, the operation responds with a 4XX status.
POST /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
configVersionId |
Integer | 919 |
Unique identifier for each config version. |
Optional query parameters | |||
restoreChildResources |
Boolean | true |
Whether to restore the config version with all included objects, test suites, functional test cases, test requests, and conditions. |
Status 200
application/json
Object type: ConfigVersion
Download schema: get-restored-config-version-response.json
Response body:
{
"configVersions": {
"failures": [],
"successes": [
{
"configVersionId": 919,
"arlFileId": 483684,
"propertyName": "Api_Test",
"propertyVersion": 7,
"lastSync": "2020-09-17T11:07:45+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-17T11:07:45+0000"
}
]
}
}
Status 207
application/json
Object type: ConfigVersion
Download schema: get-restored-config-versions-response.json
Response body:
{
"configVersions": {
"failures": [],
"successes": [
{
"configVersionId": 919,
"arlFileId": 483684,
"propertyName": "Api_Test",
"propertyVersion": 7,
"lastSync": "2020-09-17T11:07:45+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-17T11:07:45+0000"
}
]
},
"testSuites": {
"failures": [],
"successes": [
{
"createdBy": "atc_test",
"createdDate": "2020-09-17T10:41:39+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-17T11:07:46+0000",
"testSuiteId": 4490,
"testSuiteName": "Ap test",
"locked": false,
"stateful": true
}
]
},
"testCases": {
"failures": [],
"successes": [
{
"createdBy": "atc_test",
"createdDate": "2020-09-17T11:06:32+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-17T11:07:46+0000",
"testCaseId": 6552,
"clientProfile": {
"clientProfileId": 2,
"geoLocation": "us",
"ipVersion": "ipv4",
"browser": {
"name": "chrome",
"version": "65.0"
}
},
"testRequest": {
"testRequestId": 4788,
"testRequestUrl": "http://atc.atctest.com/atc-qa-1600307608680",
"createdBy": "atc_test",
"createdDate": "2020-09-17T01:53:33+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-17T11:07:46+0000",
"tags": [
"ATC_Automation-Tag"
],
"requestHeaders": [
{
"headerName": "Accept-ATC_Automation-1600307592247",
"headerValue": "Application/html",
"headerAction": "add"
}
]
},
"condition": {
"conditionId": 3539,
"createdBy": "atc_test",
"createdDate": "2020-09-17T11:06:19+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-17T11:07:46+0000",
"condition": {
"conditionNodeId": 1,
"values": [
"response_code"
],
"conditionNode": {
"conditionNodeId": 2,
"values": [
"is_one_of"
],
"conditionNode": {
"conditionNodeId": 3,
"values": [
200
]
}
}
}
}
}
]
},
"testRequests": {
"failures": [],
"successes": [
{
"testRequestId": 4788,
"testRequestUrl": "http://atc.atctest.com/atc-qa-1600307608680",
"createdBy": "atc_test",
"createdDate": "2020-09-17T01:53:33+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-17T11:07:46+0000",
"tags": [
"ATC_Automation-Tag"
],
"requestHeaders": [
{
"headerName": "Accept-ATC_Automation-1600307592247",
"headerValue": "Application/html",
"headerAction": "add"
}
]
}
]
},
"conditions": {
"failures": [],
"successes": [
{
"conditionId": 3539,
"createdBy": "atc_test",
"createdDate": "2020-09-17T11:06:19+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-17T11:07:46+0000",
"condition": {
"conditionNodeId": 1,
"values": [
"response_code"
],
"conditionNode": {
"conditionNodeId": 2,
"values": [
"is_one_of"
],
"conditionNode": {
"conditionNodeId": 3,
"values": [
200
]
}
}
}
}
]
}
}
Run the List config versions operation with the
includeRecentlyDeleted
parameter set totrue
. Store theconfigVersionId
of the test suite you want to restore.Make a POST request to
/test-management/
.v2/ functional/ config-versions/ {configVersionId}/ restore{?restoreChildResources}
With restoreChildResources
disabled, the operation responds with the 200 status and the restored ConfigVersion object in the successes
array. With restoreChildResources
enabled, the operation responds with the
207 response and ConfigVersion, TestSuite, FunctionalTestCase, Condition, and TestRequest
objects in the appropriate successes
or failures
arrays.
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/
Sample: /test-management/
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
}
]
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.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/
Sample: /test-management/
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
]
}
]
}
Run the List config versions operation and store the
configVersionId
of the config version with which you want associate test suites.Run the List test suites operation and store the
testSuiteId
of test suites you want to associate with the config version.Enter the stored
testSuiteId
values into an array in the body of your request.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/
Sample: /test-management/
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
]
}
]
}
Run the List config versions operation and store the
configVersionId
of the config version from which you want to dissociate test suites.Run the List test suites operation and store
testSuiteId
values of test suites you want to dissociate from the config version.Enter the stored
testSuiteId
values into an array in the body of your request.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. You can choose to list only test suites ready to be used or also deleted test suites that you can restore. The response is an array of TestSuite objects, each keyed by testSuiteId
.
GET /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
Optional query parameters | |||
includeRecentlyDeleted |
Boolean | false |
Whether to list deleted test suites that you can restore. |
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/
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
}
Get a test suite
Returns details of a test suite.
GET /test-management/
Sample: /test-management/
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
}
Run the List test suites operation and store the
testSuiteId
of the test suite you want to get the details of.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/
Sample: /test-management/
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
}
Run the List test suites operation and store the
testSuiteId
of the test suite you want to update.Run the Get a test suite operation.
Modify the returned TestSuite object.
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. You can delete either just a test suite or a test suite with all included objects, functional test cases, test requests, and conditions.
The operation has three possible outcomes. When deleteChildResources
is false
, the operation responds with the 200 status and the test suite’s unique identifier in the successes
array. When
deleteChildResources
is true
, the operation responds with the partial-success 207 response and each type of object with their unique identifiers in the appropriate successes
or failures
arrays.
Regardless of the deleteChildResources
value, if there is a problem with deleting the test suite object, the operation responds with a 4XX status.
You can restore test suites within 30 days of deleting them.
DELETE /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
testSuiteId |
Integer | 284 |
Unique identifier for each test suite. |
Optional query parameters | |||
deleteChildResources |
Boolean | true |
Whether to delete the test suite with all included objects, functional test cases, test requests, and conditions. |
Status 200
application/json
Download schema: get-deleted-test-suite-response.json
Response body:
{
"testSuites": {
"successes": [
284
],
"failures": []
}
}
Status 207
application/json
Download schema: get-deleted-test-suites-response.json
Response body:
{
"testSuites": {
"successes": [
284
],
"failures": []
},
"testCases": {
"successes": [
6593
],
"failures": []
},
"testRequests": {
"successes": [
4853
],
"failures": []
},
"conditions": {
"successes": [
3566
],
"failures": []
}
}
Run the List test suites operation and store the
testSuiteId
of the test suite you want to delete.Make a DELETE request to
/test-management/
.v2/ functional/ test-suites/ {testSuiteId}{?deleteChildResources}
With deleteChildResources
disabled, the operation responds with the 200 status and the test suite’s unique identifier
in the successes
array. With deleteChildResources
enabled, the operation responds with the 207 response and each type of object with their unique identifiers either in the successes
or failures
arrays.
Restore a test suite
Restores a deleted test suite. You can restore either an empty test suite or a test suite together with all the
included objects, functional test cases, test requests, and conditions. The operation has three possible outcomes. When restoreChildResources
is false
, a 200 response provides the restored TestSuite
object in the successes
array. When restoreChildResources
is true
, the operation responds with the
partial-success 207 response and TestSuite, FunctionalTestCase, Condition, and TestRequest
objects in the appropriate successes
or failures
arrays. Regardless of the restoreChildResources
value, if there is a problem with restoring the test suite object, the operation responds with a 4XX status.
POST /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
testSuiteId |
Integer | 284 |
Unique identifier for each test suite. |
Optional query parameters | |||
restoreChildResources |
Boolean | true |
Whether to restore the test suite with all included objects, functional test cases, test requests, and conditions. |
Status 200
application/json
Object type: TestSuite
Download schema: get-restored-test-suite-response.json
Response body:
{
"testSuites": {
"failures": [],
"successes": [
{
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:03:40+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T07:46:54+0000",
"testSuiteId": 284,
"testSuiteName": "atc_test",
"testSuiteDescription": "atc_test",
"locked": false,
"stateful": false
}
]
}
}
Status 207
application/json
Object type: TestSuite
Download schema: get-restored-test-suites-response.json
Response body:
{
"testSuites": {
"failures": [],
"successes": [
{
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:03:40+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T07:48:37+0000",
"testSuiteId": 284,
"testSuiteName": "atc_test",
"testSuiteDescription": "atc_test",
"locked": false,
"stateful": false
}
]
},
"testCases": {
"failures": [],
"successes": [
{
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:02:54+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T07:48:38+0000",
"testCaseId": 6593,
"clientProfile": {
"clientProfileId": 2,
"geoLocation": "us",
"ipVersion": "ipv4",
"browser": {
"name": "chrome",
"version": "65.0"
}
},
"testRequest": {
"testRequestId": 4853,
"testRequestUrl": "http://ab.fail.www.akamaiflowershop.com/atc-qa-1600393947647",
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:01:56+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T07:48:38+0000",
"tags": [
"atc_test"
]
},
"condition": {
"conditionId": 3566,
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:00:55+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T07:48:38+0000",
"condition": {
"conditionNodeId": 1,
"values": [
"response_header"
],
"conditionNode": {
"conditionNodeId": 4,
"values": [
"atc_test"
],
"conditionNode": {
"conditionNodeId": 5,
"values": [
"has_a_value"
]
}
}
}
}
}
]
},
"testRequests": {
"failures": [],
"successes": [
{
"testRequestId": 4853,
"testRequestUrl": "http://ab.fail.www.akamaiflowershop.com/atc-qa-1600393947647",
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:01:56+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T07:48:38+0000",
"tags": [
"atc_test"
]
}
]
},
"conditions": {
"failures": [],
"successes": [
{
"conditionId": 3566,
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:00:55+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T07:48:38+0000",
"condition": {
"conditionNodeId": 1,
"values": [
"response_header"
],
"conditionNode": {
"conditionNodeId": 4,
"values": [
"atc_test"
],
"conditionNode": {
"conditionNodeId": 5,
"values": [
"has_a_value"
]
}
}
}
}
]
}
}
Run the List test suites operation with the
includeRecentlyDeleted
parameter set totrue
. Store thetestSuiteId
of the test suite you want to restore.Make a POST request to
/test-management/
.v2/ functional/ test-suites/ {testSuiteId}/ restore{?restoreChildResources}
With restoreChildResources
disabled, the operation responds with the 200 status and the restored TestSuite object in the successes
array. With restoreChildResources
enabled, the operation responds with the
partial-success 207 response and TestSuite, FunctionalTestCase, Condition, and TestRequest
objects in the appropriate successes
or failures
arrays.
Update test cases in a test suite
Updates functional test cases in the context of a test suite. The operation responds with a partial-success 207 response that consists of two arrays, successes
and failures
. The successes
array lists all FunctionalTestCase objects updated successfully, whereas the failures
array provides details on any remainders that failed.
PUT /test-management/
Sample: /test-management/
Content-Type: application/json
Object type: FunctionalTestCase
Download schema: update-functional-test-cases-for-test-suite-request.json
Request body:
[
{
"testCaseId": 301,
"testRequestId": 59,
"conditionId": 47,
"clientProfileId": 1
},
{
"testCaseId": 432,
"testRequestId": 59111,
"conditionId": 47,
"clientProfileId": 1
}
]
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
testSuiteId |
Integer | 284 |
Unique identifier for each test suite. |
Status 207
application/json
Object type: FunctionalTestCase
Download schema: update-functional-test-cases-for-test-suite-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-14T22:12:43+0000",
"clientProfile": {
"clientProfileId": 1,
"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
]
}
]
}
Run the List test suites operation and store the
testSuiteId
of the test suite that includes functional test cases you want to update.Run the List functional test cases included in a test suite operation and store the
testCaseId
of functional test cases you want to update.Run the List client profiles operation and store the
clientProfileId
of client profiles you want to include in the updated functional test cases.Run the List conditions operation and store the
conditionId
of conditions you want to include in the updated functional test cases.Run the List test requests operation and store the
testRequestId
of test requests you want to include in the updated functional test cases.Build an array of consisting of objects with
testCaseId
you want to update together withclientProfileId
,conditionId
, andtestRequestId
values you want to include.PUT the object to
/test-management/
.v2/ functional/ test-suites/ {testSuiteId}/ test-cases
The 207 response object includes the modified FunctionalTestCase objects within its successes
array. Details about any failed request objects appear in the failures
array.
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/
Sample: /test-management/
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"
}
]
Run the List test suites operation and store the
testSuiteId
of the test suite for which you want to get associated requirements.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/
Sample: /test-management/
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",
"modifiedBy": null,
"modifiedDate": null
},
{
"configVersionId": 920,
"arlFileId": 424820,
"propertyName": "atc_test_config2",
"propertyVersion": 2,
"lastSync": "2020-01-04T11:45:30+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-01-04T11:50:00+0000"
}
]
Run the List test suites operation and store the
testSuiteId
of the test suite for which you want to get associated config versions.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/
Sample: /test-management/
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"
]
}
}
}
}
}
]
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.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/
Sample: /test-management/
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
]
}
]
}
Run the List test suites operation and store the
testSuiteId
of the test suite in which you want to include functional test cases.Run the List functional test cases operation and store the
testCaseId
of functional test cases you want to include in the test suite.Enter the stored
testCaseId
values into an array in the body of your request.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/
Sample: /test-management/
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
]
}
]
}
Run the List test suites operation and store the
testSuiteId
of the test suite from which you want to remove functional test cases.Run the List functional test cases operation and store
testCaseId
values of functional test cases you want to remove from the test suite.Enter the stored
testCaseId
values into an array in the body of your request.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/
Sample: /test-management/
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
}
]
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.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/
Sample: /test-management/
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
}
]
Run the List test suites operation and store the
testSuiteId
of the test suite in which you want to include ordered functional test cases.Run the List functional test cases operation and store
testCaseId
values of functional test cases you want to include in the test suite.In the body of your request, create an array of objects consisting of the stored
testCaseId
and the numericorder
in which you want them to appear.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/
Sample: /test-management/
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"
}
]
Run the List test suites operation and store the
testSuiteId
of the locked test suite for which you want to get access lists.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/
Sample: /test-management/
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"
]
}
]
}
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.Build an array of GrantAccess objects.
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/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
testSuiteId |
Integer | 284 |
Unique identifier for each test suite. |
Status 200
Run the List test suites operation and store the
testSuiteId
of the locked test suite to which you want to get the edit access.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/
Sample: /test-management/
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"
}
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.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.Build an object containing the
role
value you want to assign to access list’s users.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/
Sample: /test-management/
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
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.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.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/
Sample: /test-management/
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
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.Run the Get access lists of a locked test suite operation and store the
accessControlId
value of the access list with thepending
status you want to approve.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/
Sample: /test-management/
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
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.Run the Get access lists of a locked test suite operation and store the
accessControlId
value of the access list with thepending
status you want to reject.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/
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
]
}
]
}
Run the List test suites operation and store
testSuiteId
values of test suites you want to clone.Build an array of objects. In each object include
testSuiteId
and optionally, members you want to override.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. You can choose to list only test cases ready to be used or also deleted test cases that you can restore. The response is an array of FunctionalTestCase objects, each keyed by testCaseId
.
GET /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
Optional query parameters | |||
includeRecentlyDeleted |
Boolean | false |
Whether to list deleted functional test cases that you can restore. |
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/
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
]
}
]
}
Run the List client profiles operation and store the
clientProfileId
of client profiles you want to include in functional test cases.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.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.Build an array of FunctionalTestCase objects. Specify a set of
clientProfileId
,conditionId
,testRequestId
for each object.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/
Sample: /test-management/
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"
]
}
}
}
}
}
]
Run the List functional test cases operation and store the
testCaseId
of the functional test case which you want to get the details of.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/
Sample: /test-management/
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"
]
}
}
}
}
}
}
}
Run the List functional test cases operation and store the
testCaseId
of the functional test case you want to update.Run the Get a functional test case operation.
Modify the returned FunctionalTestCase object.
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. You can delete either a functional test case or a functional test case with all included objects, test requests, and conditions.
The operation has three possible outcomes. When deleteChildResources
is false
, the operation responds with the 200 status and the functional test case’s unique identifier in the successes
array. When
deleteChildResources
is true
, the operation responds with the partial-success 207 response and unique identifiers of each type of object in the appropriate successes
or failures
arrays.
Regardless of the deleteChildResources
value, if there is a problem with deleting the functional test case object, the operation responds with a 4XX status.
You can restore test cases within 30 days of deleting them.
DELETE /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
testCaseId |
Integer | 301 |
Unique identifier for each functional test case. |
Optional query parameters | |||
deleteChildResources |
Boolean | true |
Whether to delete the functional test case with all included objects, test requests, and conditions. |
Status 200
application/json
Download schema: get-deleted-functional-test-case-response.json
Response body:
{
"testCases": {
"successes": [
301
],
"failures": []
}
}
Status 207
application/json
Download schema: get-deleted-functional-test-cases-response.json
Response body:
{
"testCases": {
"successes": [
301
],
"failures": []
},
"testRequests": {
"successes": [
4853
],
"failures": []
},
"conditions": {
"successes": [
3566
],
"failures": []
}
}
Run the List functional test cases operation and store the
testCaseId
of the functional test case you want to delete.Make a DELETE request to
/test-management/
.v2/ functional/ test-cases/ {testCaseId}{?deleteChildResources}
With deleteChildResources
disabled, the operation responds with the 200 status and the functional test case’s unique identifier in the successes
array. With deleteChildResources
enabled, the operation responds with the 207 response and each type of object with their unique identifiers either in the successes
or failures
arrays.
Restore a functional test case
Restores a deleted functional test case. You can restore either an empty functional test case or a functional test case together with all the
included objects, test requests, and conditions. The operation has three possible outcomes. When restoreChildResources
is false
, a 200 response provides the restored FunctionalTestCase
object in the successes
array. When restoreChildResources
is true
, the operation responds with the
partial-success 207 response and FunctionalTestCase, Condition, and TestRequest
objects in the appropriate successes
or failures
arrays. Regardless of the restoreChildResources
value, if there is a problem with restoring the functional test case object, the operation responds with a 4XX status.
POST /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
testCaseId |
Integer | 301 |
Unique identifier for each functional test case. |
Optional query parameters | |||
restoreChildResources |
Boolean | true |
Whether to restore the functional test case with all included objects, test requests, and conditions. |
Status 200
application/json
Object type: FunctionalTestCase
Download schema: get-restored-functional-test-case-response.json
Response body:
{
"testCases": {
"failures": [],
"successes": [
{
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:02:54+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T09:04:35+0000",
"testCaseId": 301,
"clientProfile": {
"clientProfileId": 2,
"geoLocation": "us",
"ipVersion": "ipv4",
"browser": {
"name": "chrome",
"version": "65.0"
}
},
"testRequest": {
"testRequestId": 4853,
"testRequestUrl": "http://ab.fail.www.akamaiflowershop.com/atc-qa-1600393947647",
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:01:56+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T07:48:38+0000",
"tags": [
"atc_test"
]
},
"condition": {
"conditionId": 3566,
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:00:55+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T07:48:38+0000",
"condition": {
"conditionNodeId": 1,
"values": [
"response_header"
],
"conditionNode": {
"conditionNodeId": 4,
"values": [
"atc_test"
],
"conditionNode": {
"conditionNodeId": 5,
"values": [
"has_a_value"
]
}
}
}
}
}
]
}
}
Status 207
application/json
Object type: FunctionalTestCase
Download schema: get-restored-functional-test-cases-response.json
Response body:
{
"testCases": {
"failures": [],
"successes": [
{
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:02:54+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T09:06:45+0000",
"testCaseId": 301,
"clientProfile": {
"clientProfileId": 2,
"geoLocation": "us",
"ipVersion": "ipv4",
"browser": {
"name": "chrome",
"version": "65.0"
}
},
"testRequest": {
"testRequestId": 4853,
"testRequestUrl": "http://ab.fail.www.akamaiflowershop.com/atc-qa-1600393947647",
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:01:56+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T09:06:45+0000",
"tags": [
"atc_test"
]
},
"condition": {
"conditionId": 3566,
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:00:55+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T09:06:45+0000",
"condition": {
"conditionNodeId": 1,
"values": [
"response_header"
],
"conditionNode": {
"conditionNodeId": 4,
"values": [
"atc_test"
],
"conditionNode": {
"conditionNodeId": 5,
"values": [
"has_a_value"
]
}
}
}
}
}
]
},
"testRequests": {
"failures": [],
"successes": [
{
"testRequestId": 4853,
"testRequestUrl": "http://ab.fail.www.akamaiflowershop.com/atc-qa-1600393947647",
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:01:56+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T09:06:45+0000",
"tags": [
"atc_test"
]
}
]
},
"conditions": {
"failures": [],
"successes": [
{
"conditionId": 3566,
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:00:55+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T09:06:45+0000",
"condition": {
"conditionNodeId": 1,
"values": [
"response_header"
],
"conditionNode": {
"conditionNodeId": 4,
"values": [
"atc_test"
],
"conditionNode": {
"conditionNodeId": 5,
"values": [
"has_a_value"
]
}
}
}
}
]
}
}
Run the List functional test cases operation with the
includeRecentlyDeleted
parameter set totrue
. Store thetestCaseId
of the functional test case you want to restore.Make a POST request to
/test-management/
.v2/ functional/ test-cases/ {testCaseId}/ restore{?restoreChildResources}
With restoreChildResources
disabled, the operation responds with the 200 status and the restored FunctionalTestCase object in the successes
array. With restoreChildResources
enabled, the operation responds with the
partial-success 207 response and FunctionalTestCase, Condition, and TestRequest
objects in the appropriate successes
or failures
arrays.
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/
Sample: /test-management/
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
}
]
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.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/
Sample: /test-management/
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
]
}
]
}
Run the List functional test cases operation and store the
testCaseId
of the functional test case to which you want to assign test suites.Run the List test suites operation and store the
testSuiteId
of test suites you want to assign to the functional test case.Enter the stored
testSuiteId
values into an array in the body of your request.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/
Sample: /test-management/
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
]
}
]
}
Run the List functional test cases operation and store the
testCaseId
of the functional test case from which you want to remove test suites.Run the List test suites operation and store
testSuiteId
values of test suites you want to remove from the functional test case.Enter the stored
testSuiteId
values into an array in the body of your request.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/
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
]
}
]
}
Run the List functional test cases operation and store
testCaseId
values of functional test cases you want to clone.Build an array of objects. In each object include
testCaseId
and optionally, members you want to override.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/
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/
Sample: /test-management/
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"
}
}
Run the List client profiles operation and store the
clientProfileId
of the client profile you want to get details of.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/
Sample: /test-management/
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"
]
}
}
}
}
}
]
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.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. You can choose to list only test requests ready to be used or also deleted test requests that you can restore. The response is an array of TestRequest objects, each keyed by testRequestId
.
GET /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
Optional query parameters | |||
includeRecentlyDeleted |
Boolean | false |
Whether to list deleted test requests that you can restore. |
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/
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"
}
]
}
]
}
Build an array of TestRequest objects.
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/
Sample: /test-management/
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"
}
]
}
Run the List test requests operation and store the
testRequestId
of the test request you want to get the details of.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/
Sample: /test-management/
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"
}
]
}
Run the List test requests operation and store the
testRequestId
of the test request you want to update.Run the Get a test request operation.
Modify the returned TestRequest object.
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. You can restore test requests within 30 days of deleting them.
DELETE /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
testRequestId |
Integer | 11 |
Unique identifier for each test request. |
Status 204
Run the List test requests operation and store the
testRequestId
of the test request you want to delete.Make a DELETE request to
/test-management/
.v2/ functional/ test-requests/ {testRequestId}
Restore a test request
Restores a deleted test request. A successful operation responds with the 200 status and the restored TestRequest object in the successes
array.
POST /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
testRequestId |
Integer | 11 |
Unique identifier for each test request. |
Status 200
application/json
Download schema: get-restored-test-request-response.json
Response body:
{
"testRequests": {
"failures": [],
"successes": [
{
"testRequestId": 11,
"testRequestUrl": "http://www.atcuser8.akamaiu.com/images/logo.png",
"createdBy": "atc_test",
"createdDate": "2020-09-18T01:52:30+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T09:34:32+0000",
"tags": [
"ATC_Automation-1600393945474-Tag"
],
"requestHeaders": [
{
"headerName": "Accept-ATC_Automation-1600393945474",
"headerValue": "Application/html",
"headerAction": "add"
}
]
}
]
}
}
Run the List test requests operation with the
includeRecentlyDeleted
parameter set totrue
. Store thetestRequestId
of the test request you want to restore.Make a POST request to
/test-management/
.v2/ functional/ test-requests/ {testRequestId}/ restore
The operation responds with the 200 status and the restored TestRequest object in the successes
array.
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/
Sample: /test-management/
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"
]
}
}
}
}
}
]
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.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/
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. You can choose to list only conditions ready to be used or also deleted conditions that you can restore. The response is an array of Condition objects, each keyed by conditionId
.
GET /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
Optional query parameters | |||
includeRecentlyDeleted |
Boolean | false |
Whether to list deleted conditions that you can restore. |
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/
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
]
}
}
}
}
Run the Get test catalog template operation.
In the template, go to the
conditionNodes
array, search for theconditionNodeId
of1
, and store one of the values fromavailableValues
.Build the Condition object and enter the stored value in the first
values
member of your request. Note that the subsequentconditionNode
objects depend on the selected value.Refer to the template’s
triggerMappings
array, search for thetriggerValue
member matching the previously selected value, and store itsconditionNodeId
.In the template’s
conditionNodes
array, search for theconditionNodeId
of the triggered value.Based on the description from the
conditionNode
array for the triggeredconditionNodeId
, enter proper values into the subsequentvalues
member of your request.Continue creating the condition until
validPath
for thetriggerValue
istrue
.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/
Sample: /test-management/
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
]
}
}
}
}
Run the List conditions operation and store the
conditionId
of the condition you want to get details of.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/
Sample: /test-management/
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"
]
}
}
}
}
}
}
Run the List conditions operation and store the
conditionId
of the condition you want to update.Run the Get a condition operation.
Modify the returned Condition object.
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. You can restore conditions within 30 days of deleting them.
DELETE /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
conditionId |
Integer | 47 |
Unique identifier for each condition. |
Status 204
Run the List conditions operation and store
conditionId
values of the conditions you want to delete.Make a DELETE request to
/test-management/
.v2/ functional/ test-catalog/ conditions/ {conditionId}
Restore a condition
Restores a deleted condition. A successful operation responds with the 200 status and the restored Condition object in the successes
array.
POST /test-management/
Sample: /test-management/
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-restored-condition-response.json
Response body:
{
"conditions": {
"failures": [],
"successes": [
{
"conditionId": 47,
"createdBy": "atc_test",
"createdDate": "2020-09-18T06:00:55+0000",
"modifiedBy": "atc_test",
"modifiedDate": "2020-09-18T07:48:38+0000",
"condition": {
"conditionNodeId": 1,
"values": [
"response_header"
],
"conditionNode": {
"conditionNodeId": 4,
"values": [
"atc_test"
],
"conditionNode": {
"conditionNodeId": 5,
"values": [
"has_a_value"
]
}
}
}
}
]
}
}
Run the List conditions operation with the
includeRecentlyDeleted
parameter set totrue
. Store theconditionId
of the condition you want to restore.Make a POST request to
/test-management/
.v2/ functional/ test-catalog/ conditions/ {conditionId}/ restore
The operation responds with the 200 status and the restored Condition object in the successes
array.
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/
Sample: /test-management/
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
]
}
}
}
}
}
]
Run the List conditions operation and store the
conditionId
of the condition for which you want to get a list of functional test cases.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/
Sample: /test-management/
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"
}
]
}
}
Run the List test runs operation and store the
testCaseExecutionId
of the functional test case execution you want to get the details of.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. You can choose to list only test definitions ready to be used or also deleted test definitions that you can restore. The response is an array of TestDefinition objects, each keyed by testDefinitionId
.
GET /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
Optional query parameters | |||
includeRecentlyDeleted |
Boolean | false |
Whether to list deleted test definitions that you can restore. |
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/
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"
]
}
Build a new TestDefinition object.
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/
Sample: /test-management/
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"
]
}
Run the List test definitions operation and store the
testDefinitionId
of the test definition which you want to get the details of.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/
Sample: /test-management/
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"
]
}
Run the List test definitions operation and store the
testDefinitionId
of the test definition which you want to update.Run the Get a test definition operation.
Modify the returned TestDefinition object. You can’t modify the
hostname
value.PUT the object to
/test-management/
.v2/ comparative/ test-definitions/ {testDefinitionId}
The operation responds with the modified TestDefinition object.
Delete a test definition
Deletes a test definition. You can restore test definitions within 30 days of deleting them.
DELETE /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
testDefinitionId |
Integer | 738 |
Unique identifier for each test definition. |
Status 204
Run the List test definitions operation and store the
testDefinitionId
of the test definition you want to delete.Make a DELETE request to
/test-management/
.v2/ comparative/ test-definitions/ {testDefinitionId}
Restore a test definition
Restores a deleted test definition. A successful operation responds with the 200 status and the restored TestDefinition object in the successes
array.
POST /test-management/
Sample: /test-management/
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"
]
}
Run the List test definitions operation with the
includeRecentlyDeleted
parameter set totrue
. Store thetestDefinitionId
of the test definition you want to restore.Make a POST request to
/test-management/
.v2/ comparative/ test-definitions/ {testDefinitionId}/ restore
The operation responds with the 200 status and the restored TestDefinition object in the successes
array.
Remove a test definition
Deprecated 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/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
testDefinitionId |
Integer | 738 |
Unique identifier for each test definition. |
Status 204
Run the List test definitions operation and store the
testDefinitionId
of the test definition which you want to remove.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/
Sample: /test-management/
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"
]
}
Run the List test definitions operation and store the
testDefinitionId
of the test definition which you want to clone.Build an object specifying the stored
testDefinitionId
and optionally, members you want to override.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. You can choose to list only test cases ready to be used or also deleted test cases that you can restore. The response is an array of ComparativeTestCase objects, each keyed by testCaseId
.
GET /test-management/
Sample: /test-management/
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
testDefinitionId |
Integer | 738 |
Unique identifier for each test definition. |
Optional query parameters | |||
includeRecentlyDeleted |
Boolean | false |
Whether to list deleted comparative test cases that you can restore. |
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"
]
}
}
}
]
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.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/
Sample: /test-management/
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"
}
]
}
Run the List test definitions operation and store the
testDefinitionId
of the test definition in which you want to include the comparative test case.Build a ComparativeTestCase object.
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/
Sample: /test-management/
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"
}
]
}
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.Run the List comparative test cases included in a test definition operation and store the
testCaseId
of the comparative test case.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/
Sample: /test-management/
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
}
}
}
Run the List test definitions operation and store the
testDefinitionId
of the test definition which includes the comparative test case you want to update.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.Run the Get a comparative test case operation.
Modify the returned ComparativeTestCase object.
PUT the object to
/test-management/
.v2/ comparative/ test-definitions/ {testDefinitionId}/ test-cases/ {testCaseId}
The operation responds with the modified ComparativeTestCase object.
Delete a comparative test case
Deletes a comparative test case. You can restore test cases within 30 days of deleting them.
DELETE /test-management/
Sample: /test-management/
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
Run the List test definitions operation and store the
testDefinitionId
of the test definition that includes the test case you want to delete.Run the List comparative test cases included in a test definition operation and store the
testCaseId
of the test case you want to delete.Make a DELETE request to
/test-management/
.v2/ comparative/ test-definitions/ {testDefinitionId}/ test-cases/ {testCaseId}
Restore a comparative test case
Restores a deleted comparative test case. A successful operation responds with the 200 status and the restored ComparativeTestCase object in the successes
array.
POST /test-management/
Sample: /test-management/
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"
}
]
}
Run the List test definitions operation and store the
testDefinitionId
of the test definition that included the test case you want to restore.Run the List comparative test cases included in a test definition with the
includeRecentlyDeleted
parameter set totrue
. Store thetestCaseId
of the test case you want to restore.Make a POST request to
/test-management/
.v2/ comparative/ test-definitions/ {testDefinitionId}/ test-cases/ {testCaseId}/ restore
The operation responds with the 200 status and the restored ComparativeTestCase object in the successes
array.
Remove a comparative test case
Deprecated 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/
Sample: /test-management/
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
Run the List test definitions operation and store the
testDefinitionId
of the test definition with the comparative test case you want to remove.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.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/
Sample: /test-management/
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"
]
}
}
}
Run the List test definitions operation and store the
testDefinitionId
of the test definition which includes the comparative test case you want to clone.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.Build an object that includes the stored values of
testDefinitionId
andtestCaseId
and optionally, members you want to override.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/
Sample: /test-management/
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"
}
]
}
]
Run the List test definitions operation and store the
testDefinitionId
values of test definitions for which you want to get the list of executions.Join all the
testDefinitionId
values into a comma-separatedtestDefinitionIds
value.If you want to view only the latest execution for each definition, enable the
latestPerTestDefinition
query parameter.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/
Sample: /test-management/
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
}
}
Run the List executions operation and store the
testDefinitionExecutionId
of the execution you want to get the details of.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/
Sample: /test-management/
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"
}
}
]
Run the List executions operation and store the
testDefinitionExecutionId
of the execution for which you want to get the list of diffs.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/
Sample: /test-management/
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"
}
]
}
]
}
Run the List executions operation and store the
testDefinitionExecutionId
of the execution for which you want to update the status of diffs.Run the List diffs operation and store
differenceId
values of diffs you want to change the status.Create an array of objects. Specify the
differenceId
of the diff you want to change the status and theisAccepted
member with eithertrue
orfalse
value for each object.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/
Sample: /test-management/
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
Run the List executions operation and store the
testDefinitionExecutionId
of the execution which includes the diffs to which you want to add notes.Run the List diffs operation and store
differenceId
values of diffs to which you want to add a note.Create an array of objects, each containing the
differenceId
you want to modify, along with a newnote
value.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/
Sample: /test-management/
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"
}
}
Run the List executions operation and store the
testDefinitionExecutionId
of the execution which includes the diff you want to get the details of.Run the List diffs operation and store the
differenceId
of the diff you want to get the details of.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/
Sample: /test-management/
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"
}
]
}
}
}
Run the List executions operation and store the
testDefinitionExecutionId
of the execution for which you want to get the diffs.Run the List diffs operation and store the
differenceId
of the diff for which you want to get the transaction details.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/
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/
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
]
}
]
}
}
Build a new TestRunRequest object.
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/
Sample: /test-management/
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
]
}
]
}
}
Run the List test runs operation and store the
testRunId
of the test run you want to get the details of.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/
Sample: /test-management/
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
}
}
}
}
]
}
Run the List test runs operation and store the
testRunId
of the test run you want to get the details of.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/
Sample: /test-management/
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
}
}
]
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.
Go to Activity members and check available
activityResource
values.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/
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/
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. |
○ | Contains information about external references providing more details about the requirement. The default value for the PUT request is an empty array. |
requirement |
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",
"modifiedBy": "atc_test",
"modifiedDate": "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. |
deletedBy |
String | ○ | Username who last deleted the config version from Test Center. |
deletedDate |
String | ○ | ISO 8601 timestamp indicating when the config version was last deleted from Test Center. |
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. |
modifiedBy |
String | ○ | Username who last modified the config version. |
modifiedDate |
String | ○ | ISO 8601 timestamp indicating when the config version was last modified. |
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. |
property |
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. |
test |
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. |
deletedBy |
String | ○ | Username who last deleted the access control. |
deletedDate |
String | ○ | ISO 8601 timestamp indicating when the access control was last deleted. |
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 |
Client |
✓ | 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. |
deletedBy |
String | ○ | Username who last deleted the functional test case. |
deletedDate |
String | ○ | ISO 8601 timestamp indicating when the functional test case was last deleted. |
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 |
Test |
✓ | 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 |
Client |
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 |
Test |
○ | 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. |
✓ | 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 |
Test |
Contains the Akamai-provided list of available nodes which are the building blocks of the conditions together with their descriptions. | |
triggerMappings |
Test |
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. |
|||
condition |
String | Summarizes the purpose of each condition node. | |
conditionNodeId |
Integer | Identifier of each condition node. | |
valueControls |
Test |
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. | |
new |
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. |
○ | 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. |
deletedBy |
String | ○ | Username who last deleted the test definition. |
deletedDate |
String | ○ | ISO 8601 timestamp indicating when the test definition was last deleted. |
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. |
test |
String | ○ | Description of the test definition. |
testDefinitionId |
Integer | ✓ | Read-only. Unique identifier for each test definition. |
test |
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. |
|||
comparison |
Comparative |
✓ | 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. |
deletedBy |
String | ○ | Username who last deleted the test case. |
deletedDate |
String | ○ | ISO 8601 timestamp indicating when the test case was last deleted. |
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 |
Comparative |
✓ | 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. |
test |
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 |
Comparative |
✓ | String used by the Akamai Edge Server to identify the requested object in the cache. |
cachingOption |
Comparative |
✓ | Caching option allows you to specify how long you want to cache everything in your configuration. |
cpcode |
Comparative |
✓ | CP code used to deliver the content from the Akamai Edge Server. |
metadata |
Comparative |
✓ | Metadata variables used in the processing of the request. |
originServer |
Comparative |
✓ | Hostname of the origin server. |
responseCode |
Comparative |
✓ | Numerical part of the HTTP Status Code. |
responseHeaders |
Comparative |
✓ | 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. |
|||
include |
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. |
|||
include |
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. |
|||
include |
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. |
include |
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. |
|||
include |
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. |
|||
include |
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. |
include |
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 |
Test |
○ | 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 |
Test |
○ | 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. |
send |
Boolean | ○ | Whether you get a notification email after the test run is complete. |
target |
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. |
|||
test |
Test |
✓ | 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. |
|||
config |
Test |
○ | Contains information about config versions you want to execute. |
requirement |
Test |
○ | Contains information about requirements you want to execute. |
test |
Test |
○ | Contains information about functional test cases you want to execute. |
test |
Test |
○ | 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. |
test |
Test |
✓ | Contains information about test suites associated to the config version. |
TestRunRequest.functional.configVersionExecutions[].testSuiteExecutions[] : Contains information about test suites associated to the config version. |
|||
test |
Test |
✓ | 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. |
test |
Test |
✓ | Contains information about test suites associated to the requirement. |
TestRunRequest.functional.requirementExecutions[].testSuiteExecutions[] : Contains information about test suites associated to the requirement. |
|||
test |
Test |
✓ | 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. |
|||
test |
Test |
✓ | 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 |
Test |
○ | 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 |
Test |
○ | 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. |
send |
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. |
target |
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 . |
test |
Test |
✓ | 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. |
|||
config |
Test |
○ | Contains information about config versions executed during the test run. |
requirement |
Test |
○ | Contains information about requirements executed during the test run. |
status |
Enumeration | ✓ | Functional objects’ execution status. Possible values are: in_progress , completed , or failed . |
test |
Functional |
○ | Contains information about functional test cases executed during the test run. |
test |
Test |
○ | 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 . |
test |
Test |
✓ | 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 . |
test |
Test |
✓ | 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 . |
test |
Functional |
✓ | Contains information about functional test cases executed during the test run. |
test |
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. |
|||
condition |
Functional |
○ | Contains information about evaluation of conditions. It appears only for executions of functional test cases with the completed status. |
errors |
Functional |
○ | Contains HTTP Problem Details object indicating occurred errors. |
status |
Enumeration | ✓ | Test case objects’ execution status. Possible values are: in_progress , completed , or failed . |
test |
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. |
|||
actual |
Functional |
✓ | 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 |
Test |
○ | Contains information about diffs detected during the test run. It appears only when the execution’s status is completed . |
errors |
Test |
✓ | 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. |
supported |
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. |
target |
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. |
test |
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. |
Object containing browser info. | |
comparison |
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. |
|||
comparative |
Raw |
○ | Contains a raw request and response for the comparative object execution. It doesn’t appear if the test was run only for functional testing. |
functional |
Raw |
○ | 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. |
source |
Raw |
✓ | Contains a raw request and response for the comparative object execution on the source environment. |
target |
Raw |
✓ | 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 |
Request |
✓ | Raw request for the comparative object execution on the source environment. |
response |
Response |
✓ | 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 |
Request |
✓ | Raw request for the comparative object execution on the target environment. |
response |
Response |
✓ | 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 |
Request |
✓ | Raw request for the functional object execution. |
response |
Response |
✓ | Contains a raw response for the functional object execution. |
test |
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 |
Request |
✓ | Contains a raw request for a functional test case. |
response |
Response |
✓ | 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. |
|||
source |
Request |
✓ | Contains a raw request for a diff. |
target |
Response |
✓ | 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 |
Request |
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 |
Response |
✓ | Contains information about content-type header of the response. |
cookies |
Array | ✓ | Response cookies. |
headers |
Response |
✓ | 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. |
activity |
Activity. |
✓ | 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. |
comparative |
Number | ○ | Unique identifier of the comparative test case. |
comparative |
String | ○ | Name of the comparative test case. |
conditionId |
Number | ○ | Unique identifier of the condition. |
configVersionId |
Number | ○ | Unique identifier of the config version. |
functional |
Number | ○ | Unique identifier of the cloned functional test case. |
functional |
Number | ○ | Unique identifier of the new functional test case created from the source functional test case by cloning. |
functional |
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. |
source |
Number | ○ | Unique identifier of the cloned client profile. |
source |
Number | ○ | Unique identifier of the cloned comparative test case. |
source |
String | ○ | Name of the cloned comparative test case. |
source |
Number | ○ | Unique identifier of the cloned condition. |
source |
Number | ○ | Unique identifier of the cloned requirement. |
source |
Number | ○ | Unique identifier of the cloned test definition. |
source |
String | ○ | Name of the cloned test definition. |
source |
Number | ○ | Unique identifier of the cloned test request. |
source |
Number | ○ | Unique identifier of the cloned test suite. |
target |
Number | ○ | Unique identifier of the new client profile created from the source client profile by cloning. |
target |
Number | ○ | Unique identifier of the new comparative test case created from the source comparative test case by cloning. |
target |
String | ○ | Name of the new comparative test case created from the source comparative test case by cloning. |
target |
Number | ○ | Unique identifier of the new condition created from the source condition by cloning. |
target |
Number | ○ | Unique identifier of the new requirement created from the source requirement by cloning. |
target |
Number | ○ | Unique identifier of the new test definition created from the source test definition by cloning. |
target |
String | ○ | Name of the new test definition created from the source test definition by cloning. |
target |
Number | ○ | Unique identifier of the new test request created from the source test request by cloning. |
target |
Number | ○ | Unique identifier of the new test suite created from the source test suite by cloning. |
test |
Number | ○ | Unique identifier of the test definition execution. |
testDefinitionId |
Number | ○ | Unique identifier of the test definition. |
test |
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. |