Gremlin clients API

List and modify all clients

OpenAPI Specification

gremlin-clients-api-openapi.yml Raw ↑
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