openapi: 3.0.1 info: title: Gremlin agents disaster-recovery-test-reports API description: The API for interacting with the Gremlin Failure-as-a-Service platform termsOfService: https://www.gremlin.com/terms_of_service_2017_03_24 contact: name: Gremlin Support email: support@gremlin.com license: name: Gremlin License url: https://www.gremlin.com/license_2017_03_24 version: '1.0' servers: - url: https://api.gremlin.com/v1 description: Gremlin API v1 tags: - name: disaster-recovery-test-reports description: Get and list disaster recovery test reports paths: /disaster-recovery-test-reports/{identifier}: get: tags: - disaster-recovery-test-reports summary: Gets a disaster recovery test report description: Requires the privilege [`DISASTER_RECOVERY_TESTS_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: getLargeScaleTest parameters: - name: identifier in: path required: true schema: type: string responses: default: description: default response content: application/json: schema: $ref: '#/components/schemas/LargeScaleTestReportResponse' '403': description: 'User requires privilege: DISASTER_RECOVERY_TESTS_READ' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - DISASTER_RECOVERY_TESTS_READ /disaster-recovery-test-reports/{identifier}/pdf: get: tags: - disaster-recovery-test-reports summary: Gets a disaster recovery test report as PDF description: Requires the privilege [`DISASTER_RECOVERY_TESTS_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: getLargeScaleTestPDF parameters: - name: identifier in: path required: true schema: type: string responses: default: description: default response content: application/octet-stream: {} '403': description: 'User requires privilege: DISASTER_RECOVERY_TESTS_READ' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - DISASTER_RECOVERY_TESTS_READ /disaster-recovery-test-reports: get: tags: - disaster-recovery-test-reports summary: Gets a page of disaster recovery test reports description: Requires the privilege [`DISASTER_RECOVERY_TESTS_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: getLargeScaleTests parameters: - name: pageToken in: query schema: type: string - name: pageSize in: query description: This value determines how many results will be returned per call. schema: maximum: 100 type: integer format: int32 responses: default: description: default response content: application/json: schema: $ref: '#/components/schemas/PagedResponseLargeScaleTestReportResponse' '403': description: 'User requires privilege: DISASTER_RECOVERY_TESTS_READ' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - DISASTER_RECOVERY_TESTS_READ components: schemas: ExternalActionNode: type: object allOf: - $ref: '#/components/schemas/GraphNodeObject' - type: object properties: externalActionRequest: $ref: '#/components/schemas/ExternalActionRequest' state: $ref: '#/components/schemas/State' stateDetails: $ref: '#/components/schemas/ExternalCallFailedException' ResponseBodyEvaluation: required: - op - predicates type: object properties: op: type: string description: The operation to logically combine predicates into a success or failure enum: - AND - OR predicates: type: array description: The list of predicates to evaluate against the status check response body items: $ref: '#/components/schemas/PredicateObject' description: The configuration for evaluating the success of a response body StatusCheckNodeRequest: type: object properties: type: type: string discriminator: propertyName: type HasCompareFunctionObject: type: object LargeScaleTestReportResponse: type: object properties: companyId: type: string identifier: type: string name: type: string reliabilityTest: $ref: '#/components/schemas/ReliabilityTestResponse' actualTestDurationMillis: type: integer format: int64 startTime: type: string format: date-time endTime: type: string format: date-time sortedRunResults: type: array items: $ref: '#/components/schemas/ServiceRunDetails' participationSummary: type: object additionalProperties: type: integer format: int64 statusChecks: type: array items: $ref: '#/components/schemas/StatusCheckNode' scenarioOverrides: $ref: '#/components/schemas/ScenarioOverrides' PagedResponseLargeScaleTestReportResponse: type: object properties: pageNumber: type: integer format: int32 pageSize: type: integer description: 'The size of the page requested. If none was supplied this is a default value (depending on the endpoint). If the length of items is less than this number that means there are _no_ more pages to request. NOTE: if the length *is* equal there may or may not be additional pages to request, it is unknowable until they are requested ' format: int32 pageToken: type: string description: Supply this token on successive requests to retrieve the next page if there is one items: type: array items: $ref: '#/components/schemas/LargeScaleTestReportResponse' ServiceRunDetails: type: object properties: teamId: type: string teamName: type: string serviceId: type: string serviceName: type: string multiSelectTags: type: object additionalProperties: type: array items: type: string scenarioRunId: type: string scenarioRunNumber: type: integer format: int64 scenarioRunStage: type: string scenarioPassCriteria: type: string enum: - ALL_PASS - AT_LEAST_ONE_FAILED scenarioRunStatus: type: string scenarioRunStartTime: type: string format: date-time scenarioRunEndTime: type: string format: date-time EndpointConfiguration: required: - url type: object properties: url: type: string description: The URL of the status check format: url method: type: string description: The method type of the status check enum: - GET - POST - PUT - PATCH headers: type: object additionalProperties: type: string description: Optional request headers to be used when the status check is invoked description: Optional request headers to be used when the status check is invoked payload: type: string description: Payload for POST type of request headersArn: type: string description: Optional request headers pulled from a remote AWS resource holding JSON-encoded key-values that make up the headers ExternalActionRequest: required: - type type: object properties: semanticType: type: string type: type: string discriminator: propertyName: type ReliabilityTestResponse: type: object properties: accessType: type: string enum: - Global - Company - Team guid: type: string scenario: $ref: '#/components/schemas/ScenarioResponse' StatusCheckNode: type: object allOf: - $ref: '#/components/schemas/GraphNodeObject' - type: object properties: state: $ref: '#/components/schemas/State' name: type: string description: type: string thirdPartyPresets: type: string category: type: string enum: - ERRORS - LATENCY - REQUESTS - UNKNOWN requestConfiguration: $ref: '#/components/schemas/StatusCheckNodeRequest' endpointConfiguration: $ref: '#/components/schemas/EndpointConfiguration' rawEndpointConfiguration: $ref: '#/components/schemas/EndpointConfiguration' evaluationConfiguration: $ref: '#/components/schemas/EvaluationConfiguration' statusCheckId: type: string externalIntegrationId: type: string statusCheckReferenceId: type: string isPrivateNetwork: type: boolean isHaltable: type: boolean payload: type: string isAutoGenerated: type: boolean autoGeneratedStatusCheckId: type: string resourceIdentifier: type: string statusCheckRequest: $ref: '#/components/schemas/StatusCheckNodeRequest' intervalSeconds: type: integer format: int32 additionalTimeInSecsToRunAfterCompletion: type: integer format: int32 ScenarioOverrides: type: object properties: zones: type: array items: type: string dns: type: string failureFlag: $ref: '#/components/schemas/Selector' RollbackExternalActionNode: type: object allOf: - $ref: '#/components/schemas/GraphNodeObject' - type: object properties: referenceExternalActionId: type: string state: $ref: '#/components/schemas/State' stateDetails: $ref: '#/components/schemas/ExternalCallFailedException' externalActionRequest: $ref: '#/components/schemas/ExternalActionRequest' externalActionLifecycle: type: string enum: - NotStarted - Active - HaltRequested - Successful - Halted - Failed didExternalActionNoOp: type: boolean GraphNodeObject: type: object properties: type: type: string enum: - Concurrent - ContinuousStatusCheck - StatusCheckNode - Delay - InfraAttack - SynchronousStatusCheck - Continuous - FailureFlag - ExternalAction - RollbackExternalAction id: type: string state: type: object readOnly: true guid: type: string next: type: string discriminator: propertyName: type State: type: object properties: lifecycle: type: string enum: - NotStarted - Active - HaltRequested - Successful - Halted - Failed startTime: type: string format: date-time endTime: type: string format: date-time failedReason: type: string nodeHaltedByGuid: type: string nodeHaltedById: type: string readOnly: true EvaluationConfiguration: required: - okStatusCodes type: object properties: okLatencyMaxMs: type: integer description: The maximum latency in milliseconds for a successful status check format: int32 okStatusCodes: type: array description: The list of successful response status codes for a successful status check items: type: string description: The list of successful response status codes for a successful status check responseBodyEvaluation: $ref: '#/components/schemas/ResponseBodyEvaluation' description: The configuration for evaluating the success/failure of a status check Selector: required: - labels - name type: object properties: name: type: string labels: type: object additionalProperties: type: array description: Label selectors for matching resources example: foo: - bar - baz items: type: string description: Label selectors for matching resources example: '{"foo":["bar","baz"]}' description: Label selectors for matching resources example: foo: - bar - baz ScenarioResponse: type: object properties: orgId: type: string guid: type: string name: type: string description: type: string hypothesis: type: string steps: type: array items: type: object additionalProperties: type: object graph: $ref: '#/components/schemas/ScenarioGraph' state: type: string createSource: type: string createdBy: type: string updatedBy: type: string createdAt: type: string updatedAt: type: string lastRunAt: type: string recommendedScenarioId: type: string multiSelectTags: type: object additionalProperties: type: array items: type: string createdFromType: type: string enum: - Recommended - Shared createdFromId: type: string editCounter: type: integer format: int32 version: type: integer format: int64 passCriteria: type: string enum: - ALL_PASS - AT_LEAST_ONE_FAILED eligibleForServiceCreation: type: boolean ExternalCallFailedException: type: object properties: cause: type: object properties: stackTrace: type: array items: type: object properties: classLoaderName: type: string moduleName: type: string moduleVersion: type: string methodName: type: string fileName: type: string lineNumber: type: integer format: int32 className: type: string nativeMethod: type: boolean message: type: string localizedMessage: type: string stackTrace: type: array items: type: object properties: classLoaderName: type: string moduleName: type: string moduleVersion: type: string methodName: type: string fileName: type: string lineNumber: type: integer format: int32 className: type: string nativeMethod: type: boolean errorCode: type: string requestId: type: string statusCode: type: integer format: int32 message: type: string suppressed: type: array items: type: object properties: stackTrace: type: array items: type: object properties: classLoaderName: type: string moduleName: type: string moduleVersion: type: string methodName: type: string fileName: type: string lineNumber: type: integer format: int32 className: type: string nativeMethod: type: boolean message: type: string localizedMessage: type: string localizedMessage: type: string PredicateObject: required: - jpQuery - rValue - type type: object properties: comparator: $ref: '#/components/schemas/HasCompareFunctionObject' type: type: string description: The type of primitive this predicate operates on enum: - String - Number - Boolean jpQuery: type: string description: The json path query to run to read from the response body rValue: type: object description: The right hand value of the predicate description: The list of predicates to evaluate against the status check response body discriminator: propertyName: type ScenarioGraph: type: object properties: nodes: type: object additionalProperties: $ref: '#/components/schemas/GraphNodeObject' startId: type: string observers: type: array items: $ref: '#/components/schemas/StatusCheckNode' externalActions: type: array items: $ref: '#/components/schemas/ExternalActionNode' externalRollbacks: type: array readOnly: true items: $ref: '#/components/schemas/RollbackExternalActionNode' nodesRecursive: type: array items: $ref: '#/components/schemas/GraphNodeObject' expectedLengthWithDelays: type: integer format: int32 readOnly: true eligibleForServiceCreation: type: boolean expectedLength: type: integer format: int32 readOnly: true attackTypeQuantity: type: object additionalProperties: type: integer format: int64 readOnly: true readOnly: true providersCountForNodes: type: object additionalProperties: type: integer format: int32 readOnly: true readOnly: true