OpenAPI Specification
openapi: 3.0.1
info:
title: Gremlin agents clients 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: clients
description: List and modify all clients
paths:
/clients/{identifier}/activate:
put:
tags:
- clients
summary: Activate a client.
description: Requires the privilege [`CLIENTS_WRITE`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
operationId: activate
parameters:
- name: identifier
in: path
description: The identifier of the client to activate
required: true
schema:
type: string
- name: teamId
in: query
description: Required when using company session token.
required: true
schema:
type: string
responses:
'200':
description: Client successfully activated.
'400':
description: Bad Request
'402':
description: Payment Required
'404':
description: Not Found
'403':
description: 'User requires privilege for target team: CLIENTS_WRITE'
'401':
description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
security:
- privilege:
- CLIENTS_WRITE
/clients/active:
get:
tags:
- clients
summary: Return all active clients within a team
description: Requires the privilege [`CLIENTS_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
operationId: active_2
parameters:
- name: teamId
in: query
description: Required when using company session token.
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Client'
'403':
description: 'User requires privilege for target team: CLIENTS_READ'
'401':
description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
security:
- privilege:
- CLIENTS_READ
/clients:
get:
tags:
- clients
summary: Returns all clients within a team.
description: 'This operation will return all active, idle, and recently inactive clients.
Requires the privilege [`CLIENTS_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges)'
operationId: all_2
parameters:
- name: teamId
in: query
description: The identifier of the team for which to retrieve clients
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Client'
'403':
description: 'User requires privilege for target team: CLIENTS_READ'
'401':
description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
security:
- privilege:
- CLIENTS_READ
/clients/{identifier}:
get:
tags:
- clients
summary: Get a client by identifier
description: Requires the privilege [`CLIENTS_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
operationId: getClientByIdentifier
parameters:
- name: identifier
in: path
description: The identifier of the client to get
required: true
schema:
type: string
- name: teamId
in: query
description: Required when using company session token.
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Client'
'403':
description: 'User requires privilege for target team: CLIENTS_READ'
'401':
description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
security:
- privilege:
- CLIENTS_READ
delete:
tags:
- clients
summary: Deactivate a client
description: Requires the privilege [`CLIENTS_WRITE`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
operationId: revoke_1
parameters:
- name: identifier
in: path
description: The identifier of the client to revoke
required: true
schema:
type: string
- name: teamId
in: query
description: Required when using company session token.
required: true
schema:
type: string
responses:
'200':
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/Client'
'400':
description: Bad Request
'404':
description: Not Found
'403':
description: 'User requires privilege for target team: CLIENTS_WRITE'
'401':
description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
security:
- privilege:
- CLIENTS_WRITE
components:
schemas:
VersionInfo:
type: object
properties:
gremlind:
$ref: '#/components/schemas/SemanticVersion'
gremlin:
$ref: '#/components/schemas/SemanticVersion'
NetworkInterfaceData:
type: object
properties:
interfaces:
type: array
items:
$ref: '#/components/schemas/NetworkInterface'
NetworkInterface:
required:
- ip_addresses
type: object
properties:
name:
type: string
ip_addresses:
type: array
items:
$ref: '#/components/schemas/IPAddress'
is_default:
type: boolean
is_physical:
type: boolean
is_virtual:
type: boolean
SemanticVersion:
type: object
properties:
major:
type: integer
format: int32
minor:
type: integer
format: int32
patch:
type: integer
format: int32
Client:
type: object
properties:
orgId:
type: string
identifier:
type: string
lastSeen:
type: string
format: date-time
state:
type: string
enum:
- ACTIVE
- IDLE
- REVOKED
- INVITED
tags:
type: object
additionalProperties:
type: string
revokedBy:
type: string
authType:
type: string
enum:
- SECRET
- CERTIFICATE
containerHash:
type: integer
format: int32
networkInterfaceDataHash:
type: integer
format: int32
networkInterfaceData:
$ref: '#/components/schemas/NetworkInterfaceData'
osName:
type: string
osVersion:
type: string
dockerVersion:
type: string
containerDriver:
type: string
containerRuntime:
type: string
containerRuntimeVersion:
type: string
containerRuntimeApiVersion:
type: string
containers:
type: array
items:
$ref: '#/components/schemas/Container'
kubernetesVersion:
type: string
metricsEnabled:
type: boolean
processCollectionEnabled:
type: boolean
collectDnsEnabled:
type: boolean
usedProxy:
type: boolean
hardwareInfo:
$ref: '#/components/schemas/HardwareInfo'
instanceStartTime:
type: string
offsetInMinutesAfterBucketStart:
type: integer
format: int32
validationResults:
$ref: '#/components/schemas/ValidationAttack'
targetType:
type: string
enum:
- Host
- Container
- Docker
- Kubernetes
lastActiveEmitted:
type: string
format: date-time
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
companyId:
type: string
versionInfo:
$ref: '#/components/schemas/VersionInfo'
dnsServers:
type: array
items:
type: string
proxyUrl:
type: string
warnings:
type: array
items:
$ref: '#/components/schemas/Warning'
pushPodCidrTags:
type: boolean
pushZoneCidrTags:
type: boolean
osType:
type: string
enum:
- Linux
- Windows
HardwareInfo:
type: object
properties:
cpu_data:
type: array
items:
$ref: '#/components/schemas/CpuInfo'
memory_size:
type: integer
format: int64
gpu_data:
type: array
items:
$ref: '#/components/schemas/GpuInfo'
ValidationAttack:
type: object
properties:
agentTimestamp:
type: integer
format: int64
clientVersion:
type: string
results:
type: array
items:
$ref: '#/components/schemas/ValidationAttackResult'
clientStatus:
type: string
enum:
- HEALTHY
- IMPAIRED
- UNHEALTHY
GpuInfo:
type: object
properties:
name:
type: string
driver:
type: string
memory_size:
type: integer
format: int64
Warning:
type: object
properties:
key:
type: string
enum:
- W000
- W001
- W002
- W003
- Unknown
link:
type: string
summary:
type: string
CpuInfo:
type: object
properties:
name:
type: string
IPAddress:
type: object
properties:
ip:
type: string
protocolFamily:
type: string
enum:
- INET
- INET6
- UNIX
Container:
required:
- id
type: object
properties:
id:
type: string
name:
type: string
image:
type: string
labels:
type: object
additionalProperties:
type: string
dns_servers:
type: array
writeOnly: true
items:
type: string
dnsServers:
type: array
items:
type: string
ValidationAttackResult:
type: object
properties:
attackType:
type: string
status:
type: string
enum:
- SUCCESS
- ERROR
rawErrors:
type: array
items:
type: string
targeting:
type: string
enum:
- CONTAINER
- HOST