openapi: 3.0.1 info: title: Gremlin agents load-generators 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: load-generators description: Create, read, update, and delete LoadGenerators paths: /load-generator: post: tags: - load-generators summary: Create Load Generator description: Requires the privilege [`WEBHOOKS_WRITE`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: createLoadGenerator parameters: - name: serviceId in: query description: Filter LoadGenerator by service id required: true schema: type: string - name: teamId in: query description: Required when using company session token. required: true schema: type: string requestBody: description: LoadGenerator to create content: application/json: schema: $ref: '#/components/schemas/LoadGeneratorRequest' required: true responses: default: description: default response content: '*/*': {} '403': description: 'User requires privilege for target team: WEBHOOKS_WRITE' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - WEBHOOKS_WRITE /load-generator/{guid}: get: tags: - load-generators summary: Retrieve Load Generator by id description: Requires the privilege [`WEBHOOKS_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: getLoadGenerators parameters: - name: guid in: path description: This value represents the globally unique identifier of the record to fetch. required: true schema: type: string - name: serviceId in: query description: Filter LoadGenerator by service id 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/LoadGeneratorResponse' '403': description: 'User requires privilege for target team: WEBHOOKS_READ' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - WEBHOOKS_READ put: tags: - load-generators summary: Update a given Load Generator description: Requires the privilege [`WEBHOOKS_WRITE`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: updateLoadGenerator parameters: - name: guid in: path description: This value represents the globally unique identifier of the record to fetch. required: true schema: type: string - name: serviceId in: query description: Filter LoadGenerator by service id required: true schema: type: string - name: teamId in: query description: Required when using company session token. required: true schema: type: string requestBody: description: LoadGenerator to create content: application/json: schema: $ref: '#/components/schemas/LoadGeneratorRequest' required: true responses: default: description: default response content: '*/*': {} '403': description: 'User requires privilege for target team: WEBHOOKS_WRITE' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - WEBHOOKS_WRITE delete: tags: - load-generators summary: Delete a given LoadGenerator description: Requires the privilege [`WEBHOOKS_WRITE`](https://www.gremlin.com/docs/user-management/access-control/#privileges) operationId: deleteLoadGenerator parameters: - name: guid in: path description: This value represents the globally unique identifier of the record to fetch. required: true schema: type: string - name: serviceId in: query description: Filter LoadGenerator by service id 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: '*/*': {} '403': description: 'User requires privilege for target team: WEBHOOKS_WRITE' '401': description: Authorization header missing or malformed. Please provide proper credentials in the authorization header. security: - privilege: - WEBHOOKS_WRITE components: schemas: LoadGeneratorResponse: required: - name - webhookStartLoadTrigger type: object properties: identifier: type: string description: The identifier of this load generator name: type: string description: The name of the load generator to be created/updated webhookStartLoadTrigger: $ref: '#/components/schemas/Webhook' webhookStatusCheck: $ref: '#/components/schemas/Webhook' webhookStopLoadTrigger: $ref: '#/components/schemas/Webhook' active: type: boolean description: Load generator is active 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 Webhook: type: object properties: teamId: type: string description: The identifier of the team to which this webhook belongs identifier: type: string description: The identifier of this webhook type: type: string description: The type of this webhook enum: - TASK - STATUS_CHECK - LOAD_GENERATOR_TRIGGER - LOAD_GENERATOR_STATUS_CHECK - PREREQUISITE webhookEndpoint: $ref: '#/components/schemas/WebhookEndpoint' name: type: string description: The name of this webhook description: type: string description: The description of this webhook createdBy: type: string description: The identifier of the user that created this webhook createdAt: type: string description: The time of creation of this webhook format: date-time updatedBy: type: string description: The identifier of the user that most recently updated this webhook (if applicable) updatedAt: type: string description: The time of the most recent update for this webhook (if applicable) format: date-time isPrivateNetwork: type: boolean description: Is this webhook executed in a private network triggerEvents: type: array description: The types of events that will trigger this webhook to fire items: type: string description: The types of events that will trigger this webhook to fire enum: - INITIALIZING - RUNNING - FINISHED state: type: string description: The state of this webhook (ACTIVE / DEACTIVATED enum: - ACTIVE - DEACTIVATED payload: type: string description: The payload to be sent when the webhook is invoked teamExternalIntegration: $ref: '#/components/schemas/TeamExternalIntegrationReference' evaluationConfiguration: $ref: '#/components/schemas/EvaluationConfiguration' multiSelectTags: type: object additionalProperties: type: array description: The tags associated with this webhook items: type: string description: The tags associated with this webhook description: The tags associated with this webhook WebhookRequest: required: - method - name - uri type: object properties: identifier: type: string description: The identifier of this webhook name: type: string description: The name of the webhook to be created/updated description: type: string description: The description of the webhook to be created/updated isPrivateNetwork: type: boolean uri: type: string description: The URI of the webhook format: url method: type: string description: The HTTP request method to use when the webhook is invoked enum: - GET - POST - PUT - PATCH headers: type: object additionalProperties: type: string description: Optional request headers to be used when the webhook is invoked description: Optional request headers to be used when the webhook is invoked triggerEvents: type: array description: The list of attack events that should cause the webhook to be invoked items: type: string description: The list of attack events that should cause the webhook to be invoked enum: - INITIALIZING - RUNNING - FINISHED state: type: string description: State (active/deactivated) of the webhook enum: - ACTIVE - DEACTIVATED payload: type: string description: The payload to be sent when the webhook is invoked teamExternalIntegration: $ref: '#/components/schemas/TeamExternalIntegrationReference' evaluationConfiguration: $ref: '#/components/schemas/EvaluationConfiguration' type: type: string description: The type of this webhook enum: - TASK - STATUS_CHECK - LOAD_GENERATOR_TRIGGER - LOAD_GENERATOR_STATUS_CHECK - PREREQUISITE multiSelectTags: type: object additionalProperties: type: array description: The tags associated with this webhook items: type: string description: The tags associated with this webhook description: The tags associated with this webhook 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 HasCompareFunctionObject: type: object LoadGeneratorRequest: required: - name - webhookStartLoadTrigger type: object properties: identifier: type: string description: The identifier of this load generator name: type: string description: The name of the load generator to be created/updated webhookStartLoadTrigger: $ref: '#/components/schemas/WebhookRequest' webhookStatusCheck: $ref: '#/components/schemas/WebhookRequest' webhookStopLoadTrigger: $ref: '#/components/schemas/WebhookRequest' active: type: boolean WebhookEndpoint: type: object properties: uri: type: string description: The uri of this webhook endpoint format: url headers: type: object additionalProperties: type: string description: The request headers to be included when invoking this webhook endpoint description: The request headers to be included when invoking this webhook endpoint method: type: string description: The request method to be used when invoking this webhook endpoint enum: - GET - POST - PUT - PATCH description: The webhook endpoint configuration for this webhook