Gremlin health checks API

Create, read, update, delete health checks as well as test health check endpoint and evaluation configuration

OpenAPI Specification

gremlin-health-checks-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Gremlin agents health checks 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: health checks
  description: Create, read, update, delete health checks as well as test health check endpoint and evaluation configuration
paths:
  /status-checks:
    get:
      tags:
      - health checks
      summary: Retrieve status checks by Id (or all if the query param is empty)
      description: Requires the privilege [`MINIMUM_TEAM_PRIVILEGES`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
      operationId: getStatusChecks
      parameters:
      - name: statusCheckIds
        in: query
        schema:
          type: array
          items:
            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/StatusCheck'
        '403':
          description: 'User requires privilege for target team: MINIMUM_TEAM_PRIVILEGES'
        '401':
          description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
      security:
      - privilege:
        - MINIMUM_TEAM_PRIVILEGES
    post:
      tags:
      - health checks
      summary: Creates a new Status Check
      description: Requires the privilege [`INTEGRATIONS_WRITE`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
      operationId: createWebhook
      parameters:
      - name: teamId
        in: query
        description: Required when using company session token.
        required: true
        schema:
          type: string
      requestBody:
        description: status check to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StatusCheckRequest'
        required: true
      responses:
        default:
          description: default response
          content:
            text/plain: {}
        '403':
          description: 'User requires privilege for target team: INTEGRATIONS_WRITE'
        '401':
          description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
      security:
      - privilege:
        - INTEGRATIONS_WRITE
  /status-checks/{identifier}:
    get:
      tags:
      - health checks
      summary: retrieve a status check by id
      description: Requires the privilege [`MINIMUM_TEAM_PRIVILEGES`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
      operationId: getStatusCheck
      parameters:
      - name: identifier
        in: path
        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:
                $ref: '#/components/schemas/StatusCheck'
        '403':
          description: 'User requires privilege for target team: MINIMUM_TEAM_PRIVILEGES'
        '401':
          description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
      security:
      - privilege:
        - MINIMUM_TEAM_PRIVILEGES
    put:
      tags:
      - health checks
      summary: Update a given status check
      description: Requires the privilege [`INTEGRATIONS_WRITE`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
      operationId: update_3
      parameters:
      - name: identifier
        in: path
        required: true
        schema:
          type: string
      - name: teamId
        in: query
        description: Required when using company session token.
        required: true
        schema:
          type: string
      requestBody:
        description: update status check request
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StatusCheckRequest'
        required: true
      responses:
        default:
          description: default response
          content:
            application/json: {}
        '403':
          description: 'User requires privilege for target team: INTEGRATIONS_WRITE'
        '401':
          description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
      security:
      - privilege:
        - INTEGRATIONS_WRITE
    delete:
      tags:
      - health checks
      summary: Delete a given statuscheck by id
      description: Requires the privilege [`INTEGRATIONS_WRITE`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
      operationId: delete_5
      parameters:
      - name: identifier
        in: path
        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: {}
        '403':
          description: 'User requires privilege for target team: INTEGRATIONS_WRITE'
        '401':
          description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
      security:
      - privilege:
        - INTEGRATIONS_WRITE
  /status-checks/{runTestEndpoint}:
    post:
      tags:
      - health checks
      summary: Test a status check endpoint configuration.
      description: Requires the privilege [`MINIMUM_TEAM_PRIVILEGES`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
      operationId: testEndpointConfiguration_1
      parameters:
      - name: teamId
        in: query
        description: Required when using company session token.
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TestEndpointConfigurationRequest'
        required: true
      responses:
        '400':
          description: Bad Request
        '403':
          description: 'User requires privilege for target team: MINIMUM_TEAM_PRIVILEGES'
        '401':
          description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
      security:
      - privilege:
        - MINIMUM_TEAM_PRIVILEGES
  /status-checks/{runTestEvaluation}:
    post:
      tags:
      - health checks
      summary: Test a status check evaluation configuration.
      description: Requires the privilege [`MINIMUM_TEAM_PRIVILEGES`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
      operationId: testEvaluationConfiguration_1
      parameters:
      - name: teamId
        in: query
        description: Required when using company session token.
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TestEvaluationConfigurationRequest'
        required: true
      responses:
        '400':
          description: Bad Request
        '403':
          description: 'User requires privilege for target team: MINIMUM_TEAM_PRIVILEGES'
        '401':
          description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
      security:
      - privilege:
        - MINIMUM_TEAM_PRIVILEGES
  /status-checks/{identifier}/tags:
    put:
      tags:
      - health checks
      summary: Update a given status check tags
      description: Requires the privilege [`INTEGRATIONS_WRITE`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
      operationId: updateTags
      parameters:
      - name: identifier
        in: path
        required: true
        schema:
          type: string
      - name: teamId
        in: query
        description: Required when using company session token.
        required: true
        schema:
          type: string
      requestBody:
        description: update status check tags request
        content:
          application/json:
            schema:
              type: object
              additionalProperties:
                type: array
                items:
                  type: string
      responses:
        default:
          description: default response
          content:
            application/json: {}
        '403':
          description: 'User requires privilege for target team: INTEGRATIONS_WRITE'
        '401':
          description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
      security:
      - privilege:
        - INTEGRATIONS_WRITE
components:
  schemas:
    EndpointResponse:
      required:
      - httpStatusCode
      - requestLatencyMs
      - responseBody
      type: object
      properties:
        httpStatusCode:
          type: integer
          format: int32
        requestLatencyMs:
          type: integer
          format: int32
        contentType:
          type: string
        responseBody:
          type: string
    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
    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
    TestEvaluationConfigurationRequest:
      required:
      - evaluationConfiguration
      type: object
      properties:
        endpointConfiguration:
          $ref: '#/components/schemas/EndpointConfiguration'
        evaluationConfiguration:
          $ref: '#/components/schemas/EvaluationConfiguration'
        testEndpointResponse:
          $ref: '#/components/schemas/EndpointResponse'
        teamExternalIntegration:
          $ref: '#/components/schemas/TeamExternalIntegrationReference'
    TestEndpointConfigurationRequest:
      required:
      - endpointConfiguration
      type: object
      properties:
        endpointConfiguration:
          $ref: '#/components/schemas/EndpointConfiguration'
        teamExternalIntegration:
          $ref: '#/components/schemas/TeamExternalIntegrationReference'
        webhookId:
          type: string
        integrationSpecificValues:
          type: object
          additionalProperties:
            type: string
            description: Map of values required for a specific integration, for example AWS credentials AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
          description: Map of values required for a specific integration, for example AWS credentials AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
    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
    TeamExternalIntegrationReference:
      title: StatusCheckRequest.TeamExternalIntegrationReference
      required:
      - name
      type: object
      properties:
        type:
          type: string
          description: The type of the external integration for the health check to be created/updated
          enum:
          - JIRA
          - DATADOG
          - DATADOG_EU
          - DATADOG_US3
          - DATADOG_US5
          - DATADOG_US1_FED
          - PAGERDUTY
          - NEWRELIC
          - GRAFANA
          - DYNATRACE
          - APPDYNAMICS
          - PROMETHEUS
          - CUSTOM
          - K6
          - LOAD_GENERATOR_CUSTOM
          - AWS
          - AZURE
        observabilityToolType:
          type: string
          description: The observability tool type of the external integration for the health check to be created/updated
          enum:
          - DATADOG
          - PAGERDUTY
          - NEWRELIC
          - GRAFANA
          - DYNATRACE
          - APPDYNAMICS
          - PROMETHEUS
          - CUSTOM
          - AWS
          - AZURE
        domain:
          type: string
          description: The domain of the observability tool type of the external integration for the health check to be created/updated
        name:
          type: string
          description: The name of the external integration for the health check to be created/updated
      description: Represents the configuration for referencing an external integration
    StatusCheck:
      type: object
      properties:
        teamId:
          type: string
          description: The identifier of the team to which this status check belongs
        identifier:
          type: string
          description: The identifier of this status check
        isContinuous:
          type: boolean
          description: Is this status check continuous
        isPrivateNetwork:
          type: boolean
          description: Is this status check executed in a private network
        endpointConfiguration:
          $ref: '#/components/schemas/EndpointConfiguration'
        evaluationConfiguration:
          $ref: '#/components/schemas/EvaluationConfiguration'
        rawEndpointConfiguration:
          $ref: '#/components/schemas/EndpointConfiguration'
        name:
          type: string
          description: The name of this status check
        description:
          type: string
          description: The description of this status check
        thirdPartyPresets:
          type: string
          readOnly: true
        createdBy:
          type: string
          description: The identifier of the user that created this status check
        createdAt:
          type: string
          description: The time of creation of this status check
          format: date-time
        updatedBy:
          type: string
          description: The time of the most recent update for this status check (if applicable)
        updatedAt:
          type: string
          description: The identifier of the user that most recently updated this status check (if applicable)
          format: date-time
        teamExternalIntegration:
          $ref: '#/components/schemas/TeamExternalIntegrationReference'
        pollingIntervalSeconds:
          type: integer
          description: The frequency to poll in seconds, 15s to 60s inclusive
          format: int32
        requestParams:
          type: object
          additionalProperties:
            type: string
            description: The request parameters for this status check
          description: The request parameters for this status check
        multiSelectTags:
          type: object
          additionalProperties:
            type: array
            description: The tags associated with this status check
            items:
              type: string
              description: The tags associated with this status check
          description: The tags associated with this status check
    HasCompareFunctionObject:
      type: object
    StatusCheckRequest:
      required:
      - endpointConfiguration
      - evaluationConfiguration
      - name
      type: object
      properties:
        isContinuous:
          type: boolean
        isPrivateNetwork:
          type: boolean
        name:
          type: string
          description: The name of the status check to be created/updated
        description:
          type: string
          description: The description of the status check to be created/updated
        thirdPartyPresets:
          type: string
          readOnly: true
        endpointConfiguration:
          $ref: '#/components/schemas/EndpointConfiguration'
        rawEndpointConfiguration:
          $ref: '#/components/schemas/EndpointConfiguration'
        evaluationConfiguration:
          $ref: '#/components/schemas/EvaluationConfiguration'
        teamExternalIntegration:
          $ref: '#/components/schemas/TeamExternalIntegrationReference'
        pollingIntervalSeconds:
          type: integer
          description: The frequency to poll in seconds, 15s to 60s inclusive
          format: int32
        category:
          type: string
          description: Status Check category can be one of ERRORS, LATENCY, REQUESTS OR UNKNOWN. The default category will be UNKNOWN.
          enum:
          - ERRORS
          - LATENCY
          - REQUESTS
          - UNKNOWN
        multiSelectTags:
          type: object
          additionalProperties:
            type: array
            description: The tags associated with this status check
            items:
              type: string
              description: The tags associated with this status check
          description: The tags associated with this status check
    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