Gremlin health checks API
Create, read, update, delete health checks as well as test health check endpoint and evaluation configuration
Create, read, update, delete health checks as well as test health check endpoint and evaluation configuration
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