openapi: 3.0.3
info:
  title: Invary Runtime Integrity
  description: |-
    <img src="assets/invary.svg" alt="Invary" width="400"/>
    
    ### Overview
    The Invary API is organized around REST.  The majority of operations accept JSON-encoded request bodies,
    return JSON-encoded responses, and use standard HTTP response codes and verbs.  The primary resources
    exposed by the API are Endpoint and Appraisal.  An Endpoint represents a single bare-metal machine, virtual 
    machine, or container that has been registered with the Invary platform.  An Appraisal represents a single
    Runtime Integrity check on an endpoint.
    
    ### Organizations
    The basic unit of organization and authorization for resources in the Invary platform is the Organization.
    Each Invary platform account comprises one or more organizations.  In order to authorize access to a resource,
    the id of the owning organization must be provided.
    
    ### Authentication
    Authentication for the Invary API is via a JWT bearer token presented in the Authorization header.  These API tokens
    can be created in the Account Settings section of the Invary console. 
    
    ### Invary Webhooks
    This API specification also documents the payload of Invary webhooks.  Outbound webhooks can be configured in the
    Invary platform using the Account Settings section of the console.  When configured, these webhooks will POST to your
    configured URL to deliver lightweight appraisal events in the form of Appraisal Reports.  See the response for
    the [Get Appraisal Report](#responses-Appraisal-getAppraisalReport-200-schema) for documentation of the Appraisal Report
    object.
    
    ### Additional Information
    - [Invary Developers site](https://developers.invary.com)
    - [OpenAPI spec for the Invary API](https://developers.invary.com/invary-1_0-openapi.yml)
  
  #termsOfService: http://invary.com/developer/terms/
  contact:
    email: support@invary.com
  version: 1.0.0

externalDocs:
  description: Invary developer documentation
  url: https://developers.invary.com


servers:
  - url: https://api.invary.com/api
    description: Production environment
#  - url: https://dev1-api.invary.dev/api
#    description: Development environment

tags:
  - name: endpoint
    description: Endpoint management
  - name: appraisal
    description: Appraisal information

paths:
  /org/{orgId}/endpoint:
    get:
      tags:
        - endpoint
      summary: List Endpoints
      description: Lists the endpoints that have been provisioned under the given organization.  For each call, at most `page_size` results are returned.
        If there are additional pages of results, the `offset` field will be returned containing a key that can be provided in a new request to 
        fetch the next page.  When the optional `os` parameter is returned, results will also include information about the operating system installed
        on the endpoint.  Results can be sorted with the optional `sort` parameter.
      operationId: listEndpoints
      parameters:
        - name: orgId
          in: path
          description: Id of the owning organization
          schema:
            type: string
            format: invaryId
          required: true
        - name: page_size
          in: query
          description: Maximum number of endpoints to return per page
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
          required: false
        - name: sort
          in: query
          description: "Sort order to be applied to results.  The value is in the form of `+/-` + `field` where
          field is one of [id, created, modified, organization, state, stateChangedAt, lastConnect, lastSeen, lastMeasurement,
          lastAppraisal, lastAppraisalResult, provisioningToken].  When the value starts with `-`, results
            will be sorted in descending order, `+` returns results sorted in ascending order."
          example: "-lastAppraisal"
          schema:
            type: string
            enum:
              - "-id"
              - "+id"
              - "-created"
              - "+created"
              - "-modified"
              - "+modified"
              - "-organization"
              - "+organization"
              - "-state"
              - "+state"
              - "-stateChangedAt"
              - "+stateChangedAt"
              - "-lastConnect"
              - "+lastConnect"
              - "-lastSeen"
              - "+lastSeen"
              - "-lastMeasurement"
              - "+lastMeasurement"              
              - "-lastAppraisal"
              - "+lastAppraisal"
              - "-lastAppraisalResult"
              - "+lastAppraisalResult"              
              - "-provisioningToken"
              - "+provisioningToken"
            default: "-created"
          required: false
        - name: os
          in: query
          description: Return OSInfo for endpoints in the response
          schema:
            type: boolean
            default: false
          required: false
        - name: offset
          in: query
          description: Offset key from the previous page of results
          schema:
            type: string
          required: false
      
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EndpointList'
      security:
        - bearer_token: []

  /org/{orgId}/endpoint/{endpointId}:
    get:
      tags:
        - endpoint
      summary: Get Endpoint
      description: Retrieves an endpoint by id
      operationId: getEndpoint
      parameters:
        - name: orgId
          in: path
          description: Id of the owning organization
          schema:
            type: string
            format: invaryId
          required: true
          example: 6ph6yrsfsavua4wu57zff5hb3

        - name: endpointId
          in: path
          description: Id of the endpoint to retrieve
          schema:
            type: string
            format: invaryId
          required: true
          example: ust1639fct23cwmg2xug5x78v

      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EndpointList'
      security:
        - bearer_token: [ ]

  /org/{orgId}/endpoint/{endpointId}/deprovision:
    post:
      tags:
        - endpoint
      summary: Deprovision Endpoint
      description: Changes the state of an endpoint to `DEPROVISIONED` so it will no longer be appraised
      operationId: deprovisionEndpoint
      parameters:
        - name: orgId
          in: path
          description: Id of the owning organization
          schema:
            type: string
            format: invaryId
          required: true
          example: 6ph6yrsfsavua4wu57zff5hb3
        - name: endpointId
          in: path
          description: Id of the endpoint to deprovision
          schema:
            type: string
            format: invaryId
          required: true
          example: ust1639fct23cwmg2xug5x78v
      requestBody:
        description: Empty object request body
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmptyObject'

      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Endpoint'
              example:
                id: ust1639fct23cwmg2xug5x78v
                organization: 6ph6yrsfsavua4wu57zff5hb3
                provisioningToken: 9c1zz6n88mebdppfxwbgae24x
                created: 2023-07-11T15:33:56.401745Z
                modified: 2023-07-11T16:24:57.974587818Z
                state: DEPROVISIONED
                stateChangedAt: 2023-07-11T16:24:57.974587818Z
                tags: [
                  "tag1",
                  "tag2"
                ]
                machineId: [ ]
                lastConnect: 2023-07-11T15:33:56.533046Z
                lastSeen: 2023-07-11T15:56:59.477235Z
                lastMeasurement: 2023-07-11T15:56:46.277564Z
                lastAppraisal: 2023-07-11T15:56:48.227897Z
                lastAppraisalResult: SUCCESSFUL
      security:
        - bearer_token: [ ]

  /org/{orgId}/endpoint/{endpointId}/reactivate:
    post:
      tags:
        - endpoint
      summary: Reactivate Endpoint
      description: Changes the state of an deprovisioned endpoint from `DEPROVISIONED` to `ACTIVE` so it will once again be appraised
      operationId: reactivateEndpoint
      parameters:
        - name: orgId
          in: path
          description: Id of the owning organization
          schema:
            type: string
            format: invaryId
          required: true
          example: 6ph6yrsfsavua4wu57zff5hb3
        - name: endpointId
          in: path
          description: Id of the endpoint to reactivate
          schema:
            type: string
            format: invaryId
          required: true
          example: ust1639fct23cwmg2xug5x78v
      requestBody:
        description: Empty object request body
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmptyObject'

      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Endpoint'
              example:
                id: ust1639fct23cwmg2xug5x78v
                organization: 6ph6yrsfsavua4wu57zff5hb3
                provisioningToken: 9c1zz6n88mebdppfxwbgae24x
                created: 2023-07-11T15:33:56.401745Z
                modified: 2023-07-11T16:24:57.974587818Z
                state: ACTIVE
                stateChangedAt: 2023-07-11T16:24:57.974587818Z
                tags: [
                  "tag1",
                  "tag2"
                ]
                machineId: [ ]
                lastConnect: 2023-07-11T15:33:56.533046Z
                lastSeen: 2023-07-11T15:56:59.477235Z
                lastMeasurement: 2023-07-11T15:56:46.277564Z
                lastAppraisal: 2023-07-11T15:56:48.227897Z
                lastAppraisalResult: SUCCESSFUL
      security:
        - bearer_token: [ ]

  /org/{orgId}/appraisal:
    get:
      tags:
        - appraisal
      summary: List Appraisals
      description: Lists the appraisals under the given organization.  
      operationId: listAppraisals
      parameters:
        - name: orgId
          in: path
          description: Id of the owning organization
          schema:
            type: string
            format: invaryId
          required: true
        - name: page_size
          in: query
          description: Maximum number of appraisals to return per page
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
          required: false
        - name: sort
          in: query
          description: "Sort order to be applied to results.  The value is in the form of `+/-` + `field` where
          field is one of [id, measurement, endpoint, organization, created, status, kernelName, kernelRelease, 
          kernelVersion, processor, nodeName, lsbDistributor, lsbRelease, lsbCodename, graphNodes, graphEdges, 
          errorCode, errorPhase].  When the value starts with `-`, results will be sorted in descending order,
          `+` returns results sorted in ascending order."
          example: "-status"
          schema:
            type: string
            enum:
              - "id"
              - "+id"
              - "-measurement"
              - "+measurement"
              - "-endpoint"
              - "+endpoint"
              - "-organization"
              - "+organization"
              - "-created"
              - "+created"
              - "-status"
              - "+status"
              - "-kernelName"
              - "+kernelName"
              - "-kernelRelease"
              - "+kernelRelease"
              - "-kernelVersion"
              - "+kernelVersion"
              - "-processor"
              - "+processor"
              - "-nodeName"
              - "+nodeName"
              - "-lsbDistributor"
              - "+lsbDistributor"
              - "-lsbRelease"
              - "+lsbRelease"
              - "-lsbCodename"
              - "+lsbCodename"
              - "-graphNodes"
              - "+graphNodes"
              - "-graphEdges"
              - "+graphEdges"
              - "-errorCode"
              - "+errorCode"
              - "-errorPhase"
              - "+errorPhase"
            default: "-created"
          required: false
        - name: offset
          in: query
          description: Offset key from the previous page of results
          schema:
            type: string
          required: false

      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppraisalList'
      security:
        - bearer_token: []

  /org/{orgId}/appraisal/{appraisalId}:
    get:
      tags:
        - appraisal
      summary: Get Appraisal Report
      description: Retrieves the report of an appraisal by id
      operationId: getAppraisalReport
      parameters:
        - name: orgId
          in: path
          description: Id of the owning organization
          schema:
            type: string
            format: invaryId
          required: true
          example: 6ph6yrsfsavua4wu57zff5hb3

        - name: appraisalId
          in: path
          description: Id of the appraisal to retrieve
          schema:
            type: string
            format: invaryId
          required: true
          example: yfbq34r59aq1a83usemkvzmtk

      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppraisalReport'
      security:
        - bearer_token: [ ]




components:
  schemas:

    EmptyObject:
      type: object
      example:

    AppraisalList:
      type: object
      description: Represents a page of list appraisals results
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Appraisal'
        offset:
          type: string
          example: Zj56sPIvviD5IhmxSKqRyqBLABfbulymL949082oarhAo3gPynjwJjBhBiQqtOcFdIcsAt7H9yfUMQTYWX8=

    Appraisal:
      type: object
      description: An appraisal of an endpoint
      properties:
        id:
          type: string
          format: invaryId
          description: Id of the appraisal
          example: yfbq34r59aq1a83usemkvzmtk
        measurement:
          type: string
          format: invaryId
          description: Id of the endpoint measurement that was appraised
          example: gv3pnqqge17hd2ahdr3k484qv
        endpoint:
          type: string
          format: invaryId
          description: Id of the endpoint that that was measured and appraised
          example: dqcam653hsdrd2g31qnsqy6ak
        organization:
          type: string
          format: invaryId
          description: Id of the organization that owns the appraisal
          example: 8z2xfqppx4xfa0fnm40ee063d
        created:
          type: string
          format: date-time
          description: Date and time of the appraisal
          example: 2023-07-11T15:45:23.851517Z
        status:
          type: string
          enum:
            - UNKNOWN
            - SUCCESSFUL
            - FAILED
            - ERRORED
          description: Status of the appraisal
          example: SUCCESSFUL
        passed:
          type: array
          description: The set of appraisal areas that passed
          items:
            type: string
            description: A passing appraisal area
          example: [
            "required.nodes",
            "jump.tables",
            "task.gates",
            "task.tree",
            "data.nodes",
            "nops.table"
          ]
        failed:
          type: array
          description: The set of appraisal areas that failed
          items:
            type: string
            description: A failing appraisal area
          example: [
            "function.pointers"
          ]
        graphNodes:
          type: integer
          description: Number of kernel graph nodes in the measurement
          example: 101623
        graphEdges:
          type: integer
          description: Number of kernel graph edges in the measurement
          example: 355197
        tags:
          type: array
          description: The set of tags applied to the endpoint
          items:
            type: string
            description: A tag that has been applied to the endpoint
          example: [ tag1, tag2 ]
        kernelName:
          type: string
          description: Name of the operating system kernel on the endpoint during appraisal
          example: Linux
        kernelRelease:
          type: string
          description: Operating system kernel release on the endpoint during appraisal
          example: 5.15.0-67-generic
        kernelVersion:
          type: string
          description: Operating system kernel version on the endpoint during appraisal
          example: "#74~20.04.1-Ubuntu SMP Wed Feb 22 14:52:34 UTC 2023"
        processor:
          type: string
          description: Endpoint processor family during appraisal
          example: x86_64
        nodeName:
          type: string
          description: Endpoint hostname during appraisal
          example: hostname
        lsbDistributor:
          type: string
          description: Operating system distribution during appraisal
          example: Ubuntu
        lsbRelease:
          type: string
          description: Operating system distribution release during appraisal
          example: 20.04
        lsbCodename:
          type: string
          description: Operating system distribution release code name during appraisal
          example: focal
        lsbDescription:
          type: string
          description: Description of the operating system release during appraisal
          example: Ubuntu 20.04.6 LTS

    AppraisalReport:
      type: object
      description: The findings of an appraisal on an endpoint
      properties:
        id:
          type: string
          format: invaryId
          description: Id of the appraisal report
          example: mh02ckw0e10kczu7adkz0r5yp
        organization:
          type: string
          format: invaryId
          description: Id of the organization that owns the appraisal report
          example: 8z2xfqppx4xfa0fnm40ee063d
        created:
          type: string
          format: date-time
          description: Date and time when the appraisal report was created
          example: 2023-07-05T21:47:55.264395Z
        status:
          type: string
          enum:
            - UNKNOWN
            - SUCCESSFUL
            - FAILED
            - ERRORED
          description: Status of the appraisal report
          example: SUCCESSFUL
        passed:
          type: array
          description: The set of appraisal areas that passed
          items:
            type: string
            description: A passing appraisal area
          example: [
            "required.nodes",
            "function.pointers",
            "task.gates",
            "task.tree",
            "data.nodes",
            "nops.table"
          ]
        failed:
          type: array
          description: The set of appraisal areas that failed
          items:
            type: string
            description: A failing appraisal area
          example: [
            "jump.tables"
          ]
        measurement:
          description: Information about the measurement this appraisal was based upon
          $ref: '#/components/schemas/MeasurementInfo'
        kernel:
          description: Information about the operating system kernel this appraisal was based upon
          $ref: '#/components/schemas/KernelInfo'
        node:
          description: Information about the endpoint this appraisal was based upon
          $ref: '#/components/schemas/NodeInfo'
        distribution:
          description: Information about the operating system distribution this appraisal was based upon
          $ref: '#/components/schemas/DistributionInfo'
        endpoint:
          type: string
          format: invaryId
          description: Id of the endpoint that was appraised
          example: dqcam653hsdrd2g31qnsqy6ak
        checks:
          type: array
          description: The set of checks performed during this appraisal
          items:
            $ref: '#/components/schemas/Check'

    MeasurementInfo:
      type: object
      description: Information about the measurement that an appraisal was based upon
      properties:
        nodes:
          type: integer
          description: Number of kernel graph nodes in the measurement
        edges:
          type: integer
          description: Number of kernel graph edges in the measurement
        modules:
          type: integer
          description: Number of kernel loadable modules in the measurement
      example:
        nodes: 101623
        edges: 355197
        modules: 52

    KernelInfo:
      type: object
      description: Information about the operating system kernel that was appraised
      properties:
        name:
          type: string
          description: Operating system kernel name
        release:
          type: string
          description: Operating system kernel release
        version:
          type: string
          description: Operating system kernel version
      example:
        name: Linux
        release: 5.15.0-67-generic
        version: "#74~20.04.1-Ubuntu SMP Wed Feb 22 14:52:34 UTC 2023"

    NodeInfo:
      type: object
      description: Additional information about the endpoint
      properties:
        processor:
          type: string
          description: Endpoint processor family
        name:
          type: string
          description: Endpoint hostname
        uptime:
          type: integer
          description: Endpoint uptime in seconds
        tags:
          type: array
          description: The set of tags applied to this endpoint
          items:
            type: string
            description: A tag that has been applied to this endpoint
          example: [ tag1, tag2 ]
      example:
        processor: x86_64
        name: ubuntu-20-04
        uptime: 692
        tags: [ tag1 , tag2 ]


    DistributionInfo:
      type: object
      description: Information about the operating system distribution that was appraised
      properties:
        vendor:
          type: string
          description: Operating system distribution vendor
        release:
          type: string
          description: Operating system distribution release
        codename:
          type: string
          description: Operating system distribution code name for the release
      example:
        vendor: Ubuntu
        release: 20.04
        codename: focal

    Check:
      type: object
      description: A check that was performed as part of an appraisal
      properties:
        name:
          type: string
          description: The name of the check
          example: function.pointers
        result:
          type: string
          description: Outcome of the check
          enum:
            - UNKNOWN
            - SUCCESSFUL
            - FAILED
            - ERRORED
          example: SUCCESSFUL
        failureDetails:
          type: array
          items:
            $ref: '#/components/schemas/Failure'
      example:
        name: jump.tables,
        result: FAILED,
        failureDetails:
          - atNode: sys_call_table
            reason: Matching sys_call_table entry could not be found in baseline
            value: [
              "Missing kernel__x64_sys_read, found rogue:840 instead.",
              "Missing kernel__x64_sys_open, found rogue:460 instead.",
              "Missing kernel__x64_sys_close, found rogue:90 instead.",
              "Missing kernel__x64_sys_kill, found rogue:19d4 instead.",
              "Missing kernel__x64_sys_getdents, found rogue:560 instead.",
              "Missing kernel__x64_sys_getdents64, found rogue:9a0 instead.",
              "Missing kernel__x64_sys_openat, found rogue:3c0 instead.",
            ]

    Failure:
      type: object
      description: Detailed information about an unsuccessful check performed during an appraisal
      properties:
        atNode:
          type: string
          description: Location of the failure
          example:
        reason:
          type: string
          description: Reason for the failure
          example:
        value:
          type: array
          description: Values related to the failure
          items:
            type: string
          example: []
      example:
        atNode: sys_call_table
        reason: Matching sys_call_table entry could not be found in baseline
        value: [
          "Missing kernel__x64_sys_read, found rogue:840 instead.",
          "Missing kernel__x64_sys_open, found rogue:460 instead.",
          "Missing kernel__x64_sys_close, found rogue:90 instead.",
          "Missing kernel__x64_sys_kill, found rogue:19d4 instead.",
          "Missing kernel__x64_sys_getdents, found rogue:560 instead.",
          "Missing kernel__x64_sys_getdents64, found rogue:9a0 instead.",
          "Missing kernel__x64_sys_openat, found rogue:3c0 instead.",
        ]

    EndpointList:
      type: object
      description: Represents a page of list endpoints results
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/EndpointListEntry'
        offset:
          type: string
          example: hSYxP49qy3wKvTsbcjHQ7h50RpUHYwBzv_oy9xrLTCwWEptMI8Z70azCWCZ_ezOFTmTaS6L60tFeZcT6Yeh6QevzdRquOB4JgIqIjFpPE_uBIiQJI4KRQOnlN7yEEKc=


    EndpointListEntry:
      type: object
      description: An endpoint with optional additional metadata
      properties:
        endpoint:
          description: The endpoint
          $ref: '#/components/schemas/Endpoint'
        osInfo:
          description: Additional operating system metadata for the endpoint
          $ref: '#/components/schemas/OSInfo'
        routeTable:
          description: Reserved for future use
          type: array
          items:
            type: string
          example: []


    Endpoint:
      description: An endpoint for which appraisals are generated
      type: object
      properties:
        id:
          type: string
          format: invaryId
          description: Id of the endpoint object
          example: mh02ckw0e10kczu7adkz0r5yp
        organization:
          type: string
          format: invaryId
          description: Id of the organization that owns the endpoint
          example: 8z2xfqppx4xfa0fnm40ee063d
        provisioningToken:
          type: string
          format: invaryId
          description: Provisioning token used to provision the endpoint
          example: pqdwsnzsu437a51h05419p63v
        created:
          type: string
          format: date-time
          description: Date and time when the endpoint was first provisioned
          example: 2023-07-05T21:47:55.264395Z
        modified:
          type: string
          format: date-time
          description: Date and time when the endpoint was last modified
          example: 2023-07-05T21:47:55.264395Z
        state:
          type: string
          enum: 
            - UNKNOWN
            - PROVISIONED
            - ACTIVE
            - DEPROVISIONED
            - DELETED
          description: Current state of the endpoint
          example: ACTIVE
        stateChangedAt:
          type: string
          format: date-time
          description: Date and time when the endpoint state was last changed
          example: 2023-07-05T21:47:55.264395Z
        tags:
          type: array
          items:
            type: string
            description: A tag that has been applied to this endpoint
          example: [ tag1, tag2 ]
        machineId:
          type: string
        lastConnect:
          type: string
          format: date-time
          description: Date and time when this endpoint last initiated a connection with the platform
          example: 2023-07-05T21:47:55.264395Z
        lastSeen:
          type: string
          format: date-time
          description: Date and time when this endpoint last sent a check-in status to the platform
          example: 2023-07-05T21:47:55.264395Z
        lastMeasurement:
          type: string
          format: date-time
          description: Date and time when this endpoint last posted a measurement
          example: 2023-07-05T21:47:55.264395Z
        lastAppraisal:
          type: string
          format: date-time
          description: Date and time of the last appraisal for this endpoint
          example: 2023-07-05T21:47:55.264395Z
        lastAppraisalResult:
          type: string
          enum:
            - APPRAISAL_STATUS_UNKNOWN
            - SUCCESSFUL
            - FAILED
            - ERRORED
          description: Result of the last appraisal for this endpoint
          example: SUCCESSFUL
      example:
        id: ust1639fct23cwmg2xug5x78v
        organization: 6ph6yrsfsavua4wu57zff5hb3
        provisioningToken: 9c1zz6n88mebdppfxwbgae24x
        created: 2023-07-10T17:01:41.872605Z
        modified: 2023-07-10T17:01:42.099456Z
        state: ACTIVE
        stateChangedAt: 2023-07-10T17:02:44.007548Z
        tags: [
          "tag1",
          "tag2"
        ]
        machineId: []
        lastConnect: 2023-07-10T17:01:42.099456Z
        lastSeen: 2023-07-11T12:43:31.982721Z
        lastMeasurement: 2023-07-11T12:43:01.547930Z
        lastAppraisal: 2023-07-11T12:43:04.118361Z
        lastAppraisalResult: FAILED
        
    OSInfo:
      type: object
      description: Additional metadata about the operating system running on an endpoint
      properties:
        id:
          type: string
          format: invaryId
          description: Id of this os info object
          example: trvfkzszh9wsc81crb13y9cew
        endpointId:
          type: string
          format: invaryId
          description: Id of the endpoint that this os info applies to
          example: mh02ckw0e10kczu7adkz0r5yp
        created:
          type: string
          format: date-time
          description: Date and time when this os info object was created
          example: 2023-07-05T21:47:55.544388Z
        kernelName:
          type: string
          description: Name of the os kernel
          example: Linux
        kernelRelease:
          type: string
          description: Release of the os kernel
          example: 5.15.0-71-generic
        kernelVersion:
          type: string
          description: Version of the os kernel
          example: "#78~20.04.1-Ubuntu SMP Wed Apr 19 11:26:48 UTC 2023"
        processor:
          type: string
          description: Endpoint processor family
          example: x86_64
        nodeName:
          type: string
          description: Endpoint node or host name
          example: server1
        lsbDistributor:
          type: string
          description: Distribution name
          example: Ubuntu
        lsbRelease:
          type: string
          description: Distribution release
          example: "20.04"
        lsbCodename:
          type: string
          description: Distribution release codename
          example: focal
      example: 
        id: trvfkzszh9wsc81crb13y9cew
        endpointId: mh02ckw0e10kczu7adkz0r5yp
        created: 2023-07-05T21:47:55.544388Z
        kernelName: Linux
        kernelRelease: 5.15.0-71-generic
        kernelVersion: "#78~20.04.1-Ubuntu SMP Wed Apr 19 11:26:48 UTC 2023"
        processor: x86_64
        nodeName: nucit
        lsbDistributor: Ubuntu
        lsbRelease: "20.04"
        lsbCodename: focal
        
  securitySchemes:
    bearer_token:
      type: http
      scheme: bearer
      bearerFormat: JWT
