---
title: "Creates a disaster recovery test for a company"
method: POST
path: "/disaster-recovery-tests"
tags: ["disaster-recovery-tests"]
---

# Creates a disaster recovery test for a company

`POST /disaster-recovery-tests`

Requires the privilege [`DISASTER_RECOVERY_TESTS_WRITE`](https://www.gremlin.com/docs/user-management/access-control/#privileges)

## Request body

- CreateOrUpdateLargeScaleTestRequest — Create a request to create or update a disaster recovery test for a company
  - `identifier` string
  - `companyId` string
  - `name` string, required
  - `scenario` TestSuiteScenario
    - `name` string, required
    - `description` string, required
    - `policyCategory` 'OTHER' | 'REDUNDANCY' | 'SCALABILITY' | 'DEPENDENCIES' | 'RISKS' | 'EXTRA_CREDIT', required
    - `scenarioToPromote` ScenarioToPromote, required
      - `scenarioId` string, required
      - `scenarioType` 'RECOMMENDED' | 'SHARED' | 'GENERAL', required
      - `teamId` string
  - `reliabilityTestId` string
  - `scenarioOverrides` ScenarioOverrides
    - `zones` string[]
    - `dns` string
    - `failureFlag` Selector
      - `name` string, required
      - `labels` object, required — Label selectors for matching resources
      - `runtimeLabels` object — Labels for matching resources resolved at runtime (e.g., "zones" are resolved and added to the label "ips")
  - `statusChecks` StatusCheckInput[], required
    - `teamId` string
    - `statusCheck` StatusCheckNode, required
      - `type` 'Concurrent' | 'ContinuousStatusCheck' | 'StatusCheckNode' | 'Delay' | 'InfraAttack' | 'SynchronousStatusCheck' | 'Continuous' | 'FailureFlag' | 'ExternalAction' | 'RollbackExternalAction'
      - `id` string
      - `state` object
        - `lifecycle` 'NotStarted' | 'Active' | 'HaltRequested' | 'Successful' | 'Halted' | 'Failed'
        - `startTime` string, date-time
        - `endTime` string, date-time
        - `failedReason` string
        - `nodeHaltedByGuid` string
        - `nodeHaltedById` string
      - `guid` string
      - `next` string
      - `name` string
      - `description` string
      - `thirdPartyPresets` string
      - `category` 'ERRORS' | 'LATENCY' | 'REQUESTS' | 'UNKNOWN'
      - `requestConfiguration` StatusCheckNodeRequest
        - `type` string
      - `endpointConfiguration` EndpointConfiguration
        - `url` string, url, required — The URL of the status check
        - `method` 'GET' | 'POST' | 'PUT' | 'PATCH' — The method type of the status check
        - `headers` object — Optional request headers to be used when the status check is invoked
        - `payload` string — Payload for POST type of request
        - `headersArn` string — Optional request headers pulled from a remote AWS resource holding JSON-encoded key-values that make up the headers
      - `rawEndpointConfiguration` EndpointConfiguration
        - `url` string, url, required — The URL of the status check
        - `method` 'GET' | 'POST' | 'PUT' | 'PATCH' — The method type of the status check
        - `headers` object — Optional request headers to be used when the status check is invoked
        - `payload` string — Payload for POST type of request
        - `headersArn` string — Optional request headers pulled from a remote AWS resource holding JSON-encoded key-values that make up the headers
      - `evaluationConfiguration` EvaluationConfiguration — The configuration for evaluating the success/failure of a status check
        - `okLatencyMaxMs` integer — The maximum latency in milliseconds for a successful status check
        - `okStatusCodes` string[], required — The list of successful response status codes for a successful status check
        - `responseBodyEvaluation` ResponseBodyEvaluation — The configuration for evaluating the success of a response body
          - `op` 'AND' | 'OR', required — The operation to logically combine predicates into a success or failure
          - `predicates` PredicateObject[], required — The list of predicates to evaluate against the status check response body
            - `comparator` HasCompareFunctionObject
            - `type` 'String' | 'Number' | 'Boolean', required — The type of primitive this predicate operates on
            - `jpQuery` string, required — The json path query to run to read from the response body
            - `rValue` object, required — The right hand value of the predicate
      - `statusCheckId` string
      - `externalIntegrationId` string
      - `statusCheckReferenceId` string
      - `isPrivateNetwork` boolean
      - `isHaltable` boolean
      - `payload` string
      - `isAutoGenerated` boolean
      - `autoGeneratedStatusCheckId` string
      - `resourceIdentifier` string
      - `statusCheckRequest` StatusCheckNodeRequest
        - `type` string
      - `intervalSeconds` integer
      - `additionalTimeInSecsToRunAfterCompletion` integer
  - `serviceKeys` TeamServiceKey[], required
    - `teamId` string
    - `serviceId` string

## Response `default`

default response

- LargeScaleTestResponse
  - `companyId` string
  - `identifier` string
  - `name` string
  - `state` 'DRAFT' | 'ACTIVE' | 'COMPLETED'
  - `reliabilityTestId` string
  - `reliabilityTestName` string
  - `estimatedDuration` integer
  - `startDateTime` string, date-time
  - `endDateTime` string, date-time
  - `latestServiceRuns` ServiceRunDetails[]
    - `teamId` string
    - `teamName` string
    - `serviceId` string
    - `serviceName` string
    - `multiSelectTags` object
    - `scenarioRunId` string
    - `scenarioRunNumber` integer
    - `scenarioRunStage` string
    - `scenarioPassCriteria` 'ALL_PASS' | 'AT_LEAST_ONE_FAILED'
    - `scenarioRunStatus` string
    - `scenarioRunStartTime` string, date-time
    - `scenarioRunEndTime` string, date-time
  - `statusChecks` StatusCheckNode[]
    - `type` 'Concurrent' | 'ContinuousStatusCheck' | 'StatusCheckNode' | 'Delay' | 'InfraAttack' | 'SynchronousStatusCheck' | 'Continuous' | 'FailureFlag' | 'ExternalAction' | 'RollbackExternalAction'
    - `id` string
    - `state` object
      - `lifecycle` 'NotStarted' | 'Active' | 'HaltRequested' | 'Successful' | 'Halted' | 'Failed'
      - `startTime` string, date-time
      - `endTime` string, date-time
      - `failedReason` string
      - `nodeHaltedByGuid` string
      - `nodeHaltedById` string
    - `guid` string
    - `next` string
    - `name` string
    - `description` string
    - `thirdPartyPresets` string
    - `category` 'ERRORS' | 'LATENCY' | 'REQUESTS' | 'UNKNOWN'
    - `requestConfiguration` StatusCheckNodeRequest
      - `type` string
    - `endpointConfiguration` EndpointConfiguration
      - `url` string, url, required — The URL of the status check
      - `method` 'GET' | 'POST' | 'PUT' | 'PATCH' — The method type of the status check
      - `headers` object — Optional request headers to be used when the status check is invoked
      - `payload` string — Payload for POST type of request
      - `headersArn` string — Optional request headers pulled from a remote AWS resource holding JSON-encoded key-values that make up the headers
    - `rawEndpointConfiguration` EndpointConfiguration
      - `url` string, url, required — The URL of the status check
      - `method` 'GET' | 'POST' | 'PUT' | 'PATCH' — The method type of the status check
      - `headers` object — Optional request headers to be used when the status check is invoked
      - `payload` string — Payload for POST type of request
      - `headersArn` string — Optional request headers pulled from a remote AWS resource holding JSON-encoded key-values that make up the headers
    - `evaluationConfiguration` EvaluationConfiguration — The configuration for evaluating the success/failure of a status check
      - `okLatencyMaxMs` integer — The maximum latency in milliseconds for a successful status check
      - `okStatusCodes` string[], required — The list of successful response status codes for a successful status check
      - `responseBodyEvaluation` ResponseBodyEvaluation — The configuration for evaluating the success of a response body
        - `op` 'AND' | 'OR', required — The operation to logically combine predicates into a success or failure
        - `predicates` PredicateObject[], required — The list of predicates to evaluate against the status check response body
          - `comparator` HasCompareFunctionObject
          - `type` 'String' | 'Number' | 'Boolean', required — The type of primitive this predicate operates on
          - `jpQuery` string, required — The json path query to run to read from the response body
          - `rValue` object, required — The right hand value of the predicate
    - `statusCheckId` string
    - `externalIntegrationId` string
    - `statusCheckReferenceId` string
    - `isPrivateNetwork` boolean
    - `isHaltable` boolean
    - `payload` string
    - `isAutoGenerated` boolean
    - `autoGeneratedStatusCheckId` string
    - `resourceIdentifier` string
    - `statusCheckRequest` StatusCheckNodeRequest
      - `type` string
    - `intervalSeconds` integer
    - `additionalTimeInSecsToRunAfterCompletion` integer
  - `scenarioOverrides` ScenarioOverrides
    - `zones` string[]
    - `dns` string
    - `failureFlag` Selector
      - `name` string, required
      - `labels` object, required — Label selectors for matching resources
      - `runtimeLabels` object — Labels for matching resources resolved at runtime (e.g., "zones" are resolved and added to the label "ips")

## Other responses

- `401` — Authorization header missing or malformed. Please provide proper credentials in the authorization header.
- `403` — User requires privilege: DISASTER_RECOVERY_TESTS_WRITE

---

[API](https://skmtc.net/gremlin/apis/gremlin-api.md) · [All operations](https://skmtc.net/gremlin/apis/gremlin-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/gremlin/gremlin-api/revisions/3225dd997dbc/schema)
