Gremlin reliability-tests API

Get and run reliability tests

OpenAPI Specification

gremlin-reliability-tests-api-openapi.yml Raw ↑
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
        reliabilityTestI

# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/gremlin/refs/heads/main/openapi/gremlin-reliability-tests-api-openapi.yml