---
title: "Marks a disaster recovery test for a company as completed, generating a report"
method: POST
path: "/disaster-recovery-tests/{identifier}/complete"
tags: ["disaster-recovery-tests"]
---

# Marks a disaster recovery test for a company as completed, generating a report

`POST /disaster-recovery-tests/{identifier}/complete`

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

## Path parameters

- `identifier` string, required

## 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/versions/70fe938a0b35/schema)
