openapi: 3.0.1 info: title: Gremlin agents reliability-tests 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: reliability-tests description: Get and run reliability tests paths: /reliability-tests/active: get: tags: - reliability-tests summary: Get active reliability tests. description: Requires the privilege [`SERVICES_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: getActiveReliabilityTests parameters: - name: teamId in: query description: Required when using company session token. required: true schema: type: string responses: default: description: default response content: application/json: schema: type: array items: $ref: '#/components/schemas/ReliabilityTestRunResponse' '403': description: 'User requires privilege for target team: SERVICES_READ' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - SERVICES_READ /reliability-tests/runs: get: tags: - reliability-tests summary: Get all reliability test runs ordered by createdDate desc. description: Requires the privilege [`SERVICES_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: getAllReliabilityRuns parameters: - name: serviceId in: query description: serviceId for which to look for runs required: true schema: type: string - name: pageSize in: query description: This value determines how many results will be returned per call. schema: type: integer format: int32 example: None (unlimited) - name: teamId in: query description: Required when using company session token. required: true schema: type: string responses: default: description: default response content: application/json: schema: $ref: '#/components/schemas/PagedResponseReliabilityTestRunResponse' '403': description: 'User requires privilege for target team: SERVICES_READ' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - SERVICES_READ /reliability-tests/{reliabilityTestId}/runs: get: tags: - reliability-tests summary: Get all reliability test runs for a reliabilityTest ordered by createdDate desc. description: Requires the privilege [`SERVICES_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: getAllReliabilityRunsForReliabilityTest parameters: - name: reliabilityTestId in: path required: true schema: type: string - name: serviceId in: query description: serviceId for which to look for runs required: true schema: type: string - name: dependencyId in: query description: dependency for which to look for runs schema: type: string - name: failureFlagName in: query description: failureFlagName for which to look for runs schema: type: string - name: pageSize in: query description: This value determines how many results will be returned per call. schema: type: integer format: int32 example: None (unlimited) - name: teamId in: query description: Required when using company session token. required: true schema: type: string responses: default: description: default response content: application/json: schema: $ref: '#/components/schemas/PagedResponseReliabilityTestRunResponse' '403': description: 'User requires privilege for target team: SERVICES_READ' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - SERVICES_READ post: tags: - reliability-tests summary: Run a reliability test for a service. description: Requires the privilege [`SERVICES_RUN`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: runReliabilityTestForService parameters: - name: reliabilityTestId in: path required: true schema: type: string - name: teamId in: query description: Required when using company session token. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ReliabilityTestRunParameters' required: true responses: default: description: default response content: application/json: schema: $ref: '#/components/schemas/ReliabilityTestRunResponse' '403': description: 'User requires privilege for target team: SERVICES_RUN' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - SERVICES_RUN /reliability-tests: get: tags: - reliability-tests summary: Get all reliability tests. description: Requires the privilege [`SERVICES_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: getAllReliabilityTests parameters: - name: teamId in: query description: Required when using company session token. required: true schema: type: string responses: default: description: default response content: application/json: schema: $ref: '#/components/schemas/ReliabilityResponse' '403': description: 'User requires privilege for target team: SERVICES_READ' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - SERVICES_READ /reliability-tests/notifications: get: tags: - reliability-tests summary: Get all notifications for a team description: Requires the privilege [`SERVICES_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: getNotificationsForTeam parameters: - name: sinceDays in: query description: Notifications since days schema: type: integer format: int32 example: 7 - name: teamId in: query description: Required when using company session token. required: true schema: type: string responses: default: description: default response content: application/json: schema: $ref: '#/components/schemas/NotificationResponse' '403': description: 'User requires privilege for target team: SERVICES_READ' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - SERVICES_READ /reliability-tests/active/paged: get: tags: - reliability-tests summary: Get a team's active reliability tests in descending order by start time. description: Requires the privilege [`SERVICES_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: getPaginatedActiveReliabilityTests parameters: - name: pageSize in: query description: This value determines how many results will be returned per call. schema: type: integer format: int32 default: 1000 example: None (defaults to 1000) - name: pageToken in: query description: Pass the pageToken to get the next page of active reliability test runs schema: type: string example: None (returns first page) - name: teamId in: query description: Required when using company session token. required: true schema: type: string responses: default: description: default response content: application/json: schema: $ref: '#/components/schemas/PagedResponseReliabilityTestRunResponse' '403': description: 'User requires privilege for target team: SERVICES_READ' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - SERVICES_READ /reliability-tests/completed/paged: get: tags: - reliability-tests summary: Get a team's completed reliability test runs ordered by start time desc. description: Requires the privilege [`SERVICES_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: getPaginatedCompletedReliabilityTestRuns parameters: - name: pageSize in: query description: This value determines how many results will be returned per call. schema: type: integer format: int32 default: 1000 example: None (defaults to 1000) - name: pageToken in: query description: Pass the pageToken to get the next page of completed reliability test runs schema: type: string example: None (returns first page) - name: teamId in: query description: Required when using company session token. required: true schema: type: string responses: default: description: default response content: application/json: schema: $ref: '#/components/schemas/PagedResponseCompletedReliabilityTestRunResponse' '403': description: 'User requires privilege for target team: SERVICES_READ' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - SERVICES_READ /reliability-tests/next-runs: get: tags: - reliability-tests summary: Get pending reliability test runs for service, ordered by expected trigger time via schedule or Run All. description: Requires the privilege [`SERVICES_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: getPendingServiceReliabilityRuns parameters: - name: serviceId in: query description: serviceId for which to look for runs required: true schema: type: string - name: teamId in: query description: Required when using company session token. required: true schema: type: string responses: default: description: default response content: application/json: schema: type: array items: $ref: '#/components/schemas/PendingReliabilityTestRunResponse' '403': description: 'User requires privilege for target team: SERVICES_READ' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - SERVICES_READ /reliability-tests/recent-runs: get: tags: - reliability-tests summary: Get recently completed reliability test runs ordered by endDate desc. for a service description: Requires the privilege [`SERVICES_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: getRecentReliabilityTestRuns parameters: - name: serviceId in: query description: serviceId for which to look for runs required: true schema: type: string - name: pageSize in: query description: This value determines how many results will be returned per call. schema: type: integer format: int32 default: 1000 example: None (defaults to 1000) - name: teamId in: query description: Required when using company session token. required: true schema: type: string responses: default: description: default response content: application/json: schema: type: array items: $ref: '#/components/schemas/CompletedReliabilityTestRunResponse' '403': description: 'User requires privilege for target team: SERVICES_READ' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - SERVICES_READ /reliability-tests/{reliabilityTestId}: get: tags: - reliability-tests summary: Get a single company-scoped reliability test. description: Requires the privilege [`TEST_SUITES_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: getReliabilityTest parameters: - name: reliabilityTestId in: path required: true schema: type: string responses: default: description: default response content: application/json: schema: $ref: '#/components/schemas/ReliabilityTestResponse' '403': description: 'User requires privilege: TEST_SUITES_READ' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - TEST_SUITES_READ /reliability-tests/preview: get: tags: - reliability-tests summary: Takes a given scenario and transforms it for turning into a reliability test description: 'This endpoint provides a preview of the translation between scenarios and ReliabilityTests. As such it can be used to understand what modifications are made when a given Scenario is promoted to a ReliabilityTest and debug them Requires the privilege [`TEST_SUITES_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges)' operationId: previewGraph parameters: - name: scenarioType in: query required: true schema: type: string enum: - RECOMMENDED - SHARED - GENERAL - name: scenarioId in: query required: true schema: type: string - name: policyCategory in: query required: true schema: type: string enum: - OTHER - REDUNDANCY - SCALABILITY - DEPENDENCIES - RISKS - EXTRA_CREDIT responses: default: description: default response content: application/json: schema: $ref: '#/components/schemas/GraphPreviewResponse' '403': description: 'User requires privilege: TEST_SUITES_READ' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - TEST_SUITES_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 ScenarioRunResults: type: object properties: status: type: string enum: - Passed - Failed - Unsure incidentDetected: type: boolean incidentMitigated: type: boolean ScenarioRunResponse: type: object properties: scenarioId: type: string runNumber: type: integer format: int64 orgId: type: string name: type: string description: type: string hypothesis: type: string stageInfo: type: object additionalProperties: type: object createdBy: type: string createdByFirstName: type: string createdByLastName: type: string createdAt: type: string format: date-time updatedAt: type: string format: date-time endTime: type: string format: date-time createSource: type: string triggerSource: type: string enum: - MANUAL - RUN_ALL - SCHEDULED - RECURRING_SCHEDULE graph: $ref: '#/components/schemas/ScenarioRunGraph' resultNotes: type: string resultFlags: type: object additionalProperties: type: boolean results: $ref: '#/components/schemas/ScenarioRunResults' scheduleId: type: string scenarioEditCounterAtRunTime: type: integer format: int32 scenarioRunImages: type: array items: type: string gameDayInfo: $ref: '#/components/schemas/GameDayInfo' passCriteria: type: string enum: - ALL_PASS - AT_LEAST_ONE_FAILED largeScaleTestId: type: string HasCompareFunctionObject: type: object NotificationElement: type: object properties: reliabilityTestId: type: string dependencyId: type: string runNumber: type: integer format: int64 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 PendingReliabilityTestRunResponse: type: object properties: reliabilityTestId: type: string reliabilityTestName: type: string dependencyId: type: string dependencyName: type: string failureFlagName: type: string triggerSource: type: string enum: - MANUAL - RUN_ALL - SCHEDULED - RECURRING_SCHEDULE triggeredBy: type: string expectedTriggerTime: type: string format: date-time ReliabilityTestResponse: type: object properties: accessType: type: string enum: - Global - Company - Team guid: type: string scenario: $ref: '#/components/schemas/ScenarioResponse' ReliabilityResponse: type: object properties: reliabilityTestResponses: type: array items: $ref: '#/components/schemas/ReliabilityTestResponse' 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 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 PagedResponseCompletedReliabilityTestRunResponse: 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/CompletedReliabilityTestRunResponse' ScenarioRunGraph: type: object properties: nodes: type: object additionalProperties: $ref: '#/components/schemas/GraphNodeObject' start_id: type: string writeOnly: true observers: type: array items: $ref: '#/components/schemas/StatusCheckNode' current_id: type: string writeOnly: true external_actions: type: array writeOnly: true items: $ref: '#/components/schemas/ExternalActionNode' external_rollbacks: type: array writeOnly: true items: $ref: '#/components/schemas/RollbackExternalActionNode' startId: type: string externalActions: type: array items: $ref: '#/components/schemas/ExternalActionNode' externalRollbacks: type: array readOnly: true items: $ref: '#/components/schemas/RollbackExternalActionNode' currentId: type: string readOnly: true next: $ref: '#/components/schemas/GraphNodeObject' nextId: type: string 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 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 PagedResponseReliabilityTestRunResponse: 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/ReliabilityTestRunResponse' GameDayInfo: type: object properties: guid: type: string name: type: string 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 ReliabilityTestRunParameters: title: ReliabilityTestRunParameters required: - serviceId type: object properties: serviceId: type: string dependencyId: type: string failureFlagName: type: string description: Represents a request with parameters necessary to run a reliability test for a service, dependency (optional) or failure flag name (optional) CompletedReliabilityTestRunResponse: type: object properties: serviceId: type: string reliabilityTestId: type: string reliabilityTestName: type: string dependencyId: type: string dependencyName: type: string failureFlagName: type: string runNumber: type: integer format: int64 triggerSource: type: string enum: - MANUAL - RUN_ALL - SCHEDULED - RECURRING_SCHEDULE triggeredBy: type: string status: type: string enum: - Passed - Failed - Unsure passCriteria: type: string enum: - ALL_PASS - AT_LEAST_ONE_FAILED endTime: type: string format: date-time createdAt: type: string format: date-time diagnosisAvailable: type: boolean NotificationResponse: type: object properties: sinceDays: type: integer format: int32 totalNotifications: type: integer format: int32 title: type: string subHeading: type: string notifications: type: array items: $ref: '#/components/schemas/NotificationDetail' 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 NotificationDetail: type: object properties: text: type: string notificationType: type: string enum: - ScheduleTestFailure - NewDependencyDiscovery serviceId: type: string path: type: string elements: type: array items: $ref: '#/components/schemas/NotificationElement' GraphPreviewResponse: type: object properties: metadata: type: object additionalProperties: type: array items: type: string graph: $ref: '#/components/schemas/ScenarioGraph' ReliabilityTestRunResponse: type: object properties: guid: type: string serviceId: type: string dependencyId: type: string dependencyName: type: string failureFlagName: type: string isDependencySpof: type: boolean runNumber: type: integer format: int64 run: $ref: '#/components/schemas/ScenarioRunResponse' 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