Invendor Devices API

The Devices API from Invendor — 10 operation(s) for devices.

Operations 12

GET /v1/Devices/commands Returns list of available device commands #
GET /v1/Devices Returns list of devices for the tenant #
GET /v1/Devices/{deviceId} Returns device details #
PUT /v1/Devices/{deviceId} Update tenant device information #
DELETE /v1/Devices/{deviceId} Delete tenant device #
POST /v1/Devices/{deviceId}/command Send FireBase command to the device #
GET /v1/Devices/{deviceId}/heartbeats Returns list of device heartbeats #
GET /v1/Devices/{deviceId}/events Returns list of device events #
POST /v1/Devices/dedicated/register/pre Pre register tenant dedicated device
POST /v1/Devices/{deviceId}/regen Authorise dedicated device to aquire new secret
GET /v1/Devices/free-cabinets Returns list of free cabinets for the tenant, optionally filtered by cabinet type #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/invendor-devices-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

invendor-devices-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: IO.Common Accounts Devices API
  version: '1.0'
servers:
- url: https://api.invendor.com
  description: Base URL declared by the provider in apis.yml (roadmap#122).
security:
- OAuth2: []
tags:
- name: Devices
paths:
  /v1/Devices/commands:
    get:
      tags:
      - Devices
      summary: Returns list of available device commands
      operationId: Device commands
      parameters:
      - name: Account
        in: query
        description: Account
        schema:
          title: Account
          type: int
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - OAuth2:
        - io.common
  /v1/Devices:
    get:
      tags:
      - Devices
      summary: Returns list of devices for the tenant
      operationId: Devices list
      parameters:
      - name: status
        in: query
        description: ''
        schema:
          type: string
      - name: Filter
        in: query
        schema:
          type: string
      - name: Page
        in: query
        schema:
          type: integer
          format: int32
      - name: PageSize
        in: query
        schema:
          type: integer
          format: int32
      - name: SortColumn
        in: query
        schema:
          type: string
      - name: SortOrder
        in: query
        schema:
          type: string
      - name: Account
        in: query
        description: Account
        schema:
          title: Account
          type: int
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceResponseIPagedResult'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - OAuth2:
        - io.common
  /v1/Devices/{deviceId}:
    get:
      tags:
      - Devices
      summary: Returns device details
      operationId: Device details
      parameters:
      - name: deviceId
        in: path
        description: ''
        required: true
        schema:
          type: string
          format: uuid
      - name: Account
        in: query
        description: Account
        schema:
          title: Account
          type: int
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - OAuth2:
        - io.common
    put:
      tags:
      - Devices
      summary: Update tenant device information
      operationId: Update tenant device information
      parameters:
      - name: deviceId
        in: path
        description: ''
        required: true
        schema:
          type: string
          format: uuid
      - name: Account
        in: query
        description: Account
        schema:
          title: Account
          type: int
      requestBody:
        description: ''
        content:
          application/json-patch+json; x-api-version=1.0:
            schema:
              $ref: '#/components/schemas/DeviceUpdateRequest'
          application/json; x-api-version=1.0:
            schema:
              $ref: '#/components/schemas/DeviceUpdateRequest'
          text/json; x-api-version=1.0:
            schema:
              $ref: '#/components/schemas/DeviceUpdateRequest'
          application/*+json; x-api-version=1.0:
            schema:
              $ref: '#/components/schemas/DeviceUpdateRequest'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - OAuth2:
        - io.common
    delete:
      tags:
      - Devices
      summary: Delete tenant device
      operationId: Delete tenant device
      parameters:
      - name: deviceId
        in: path
        description: ''
        required: true
        schema:
          type: string
          format: uuid
      - name: Account
        in: query
        description: Account
        schema:
          title: Account
          type: int
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - OAuth2:
        - io.common
  /v1/Devices/{deviceId}/command:
    post:
      tags:
      - Devices
      summary: Send FireBase command to the device
      operationId: Send command to the device
      parameters:
      - name: deviceId
        in: path
        description: ''
        required: true
        schema:
          type: string
          format: uuid
      - name: Account
        in: query
        description: Account
        schema:
          title: Account
          type: int
      requestBody:
        description: ''
        content:
          application/json-patch+json; x-api-version=1.0:
            schema:
              $ref: '#/components/schemas/SendDeviceCommandRequest'
          application/json; x-api-version=1.0:
            schema:
              $ref: '#/components/schemas/SendDeviceCommandRequest'
          text/json; x-api-version=1.0:
            schema:
              $ref: '#/components/schemas/SendDeviceCommandRequest'
          application/*+json; x-api-version=1.0:
            schema:
              $ref: '#/components/schemas/SendDeviceCommandRequest'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - OAuth2:
        - io.common
  /v1/Devices/locations/{locationId}/sync_users:
    post:
      tags:
      - Devices
      summary: Notifies all devices in the location to sync users
      operationId: Sync location users in related devices
      parameters:
      - name: locationId
        in: path
        description: ''
        required: true
        schema:
          type: integer
          format: int32
      - name: Account
        in: query
        description: Account
        schema:
          title: Account
          type: int
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '422':
          description: Client Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - OAuth2:
        - io.common
  /v1/Devices/{deviceId}/heartbeats:
    get:
      tags:
      - Devices
      summary: Returns list of device heartbeats
      operationId: Device heartbeats list
      parameters:
      - name: deviceId
        in: path
        description: ''
        required: true
        schema:
          type: string
          format: uuid
      - name: Filter
        in: query
        schema:
          type: string
      - name: Page
        in: query
        schema:
          type: integer
          format: int32
      - name: PageSize
        in: query
        schema:
          type: integer
          format: int32
      - name: SortColumn
        in: query
        schema:
          type: string
      - name: SortOrder
        in: query
        schema:
          type: string
      - name: Account
        in: query
        description: Account
        schema:
          title: Account
          type: int
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeviceHeartbeatResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - OAuth2:
        - io.common
  /v1/Devices/{deviceId}/events:
    get:
      tags:
      - Devices
      summary: Returns list of device events
      operationId: Device events list
      parameters:
      - name: deviceId
        in: path
        description: ''
        required: true
        schema:
          type: string
          format: uuid
      - name: Filter
        in: query
        schema:
          type: string
      - name: Page
        in: query
        schema:
          type: integer
          format: int32
      - name: PageSize
        in: query
        schema:
          type: integer
          format: int32
      - name: SortColumn
        in: query
        schema:
          type: string
      - name: SortOrder
        in: query
        schema:
          type: string
      - name: Account
        in: query
        description: Account
        schema:
          title: Account
          type: int
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeviceEventsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - OAuth2:
        - io.common
  /v1/Devices/dedicated/register/pre:
    post:
      tags:
      - Devices
      summary: Pre register tenant dedicated device
      parameters:
      - name: Account
        in: query
        description: Account
        schema:
          title: Account
          type: int
      requestBody:
        description: DedicatedDevicePreRegistrationRequest
        content:
          application/json-patch+json; x-api-version=1.0:
            schema:
              $ref: '#/components/schemas/DedicatedDevicePreRegistrationRequest'
          application/json; x-api-version=1.0:
            schema:
              $ref: '#/components/schemas/DedicatedDevicePreRegistrationRequest'
          text/json; x-api-version=1.0:
            schema:
              $ref: '#/components/schemas/DedicatedDevicePreRegistrationRequest'
          application/*+json; x-api-version=1.0:
            schema:
              $ref: '#/components/schemas/DedicatedDevicePreRegistrationRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DedicatedDevicePreRegistrationResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - OAuth2:
        - io.common
  /v1/Devices/{deviceId}/regen:
    post:
      tags:
      - Devices
      summary: Authorise dedicated device to aquire new secret
      parameters:
      - name: deviceId
        in: path
        description: ''
        required: true
        schema:
          type: string
          format: uuid
      - name: Account
        in: query
        description: Account
        schema:
          title: Account
          type: int
      responses:
        '200':
          description: Success
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - OAuth2:
        - io.common
  /v1/Devices/free-cabinets:
    get:
      tags:
      - Devices
      summary: Returns list of free cabinets for the tenant, optionally filtered by cabinet type
      operationId: Free cabinets list
      parameters:
      - name: tenantId
        in: query
        description: ''
        schema:
          type: string
          format: uuid
      - name: cabinetType
        in: query
        description: ''
        schema:
          $ref: '#/components/schemas/CabinetType'
      - name: Account
        in: query
        description: Account
        schema:
          title: Account
          type: int
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProvisioningCabinetResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - OAuth2:
        - io.common
components:
  schemas:
    DeviceHeartbeatUserinfoResponse:
      type: object
      properties:
        heartbeatId:
          type: integer
          format: int32
        unfinishedScans:
          type: integer
          format: int32
        unfinishedSessions:
          type: integer
          format: int32
        unsentSessions:
          type: integer
          format: int32
        unsentScans:
          type: integer
          format: int32
        username:
          type:
          - string
          - 'null'
      additionalProperties: false
    ProvisioningCabinetResponse:
      type: object
      properties:
        deviceId:
          type: string
          format: uuid
        customerTenantId:
          type:
          - string
          - 'null'
          format: uuid
        customerTenantName:
          type:
          - string
          - 'null'
        sbNumber:
          type:
          - string
          - 'null'
        deviceName:
          type:
          - string
          - 'null'
        state:
          type:
          - integer
          - 'null'
          format: int32
        verdinSN:
          type:
          - string
          - 'null'
        cabinetType:
          $ref: '#/components/schemas/CabinetType'
        comment:
          type:
          - string
          - 'null'
        region:
          type:
          - string
          - 'null'
      additionalProperties: false
    TenantDevice:
      type: object
      properties:
        tenantId:
          type: string
          format: uuid
        deviceId:
          type: string
          format: uuid
        device:
          $ref: '#/components/schemas/Device'
      additionalProperties: false
    CabinetProdData:
      type: object
      properties:
        id:
          type: integer
          format: int32
          readOnly: true
        domainEvents:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IDomainEvent'
          readOnly: true
        deviceId:
          type: string
          format: uuid
        batchNumber:
          type:
          - string
          - 'null'
          readOnly: true
        verdinSN:
          type:
          - string
          - 'null'
          readOnly: true
        cabinetType:
          $ref: '#/components/schemas/CabinetType'
        comment:
          type:
          - string
          - 'null'
          readOnly: true
        region:
          type:
          - string
          - 'null'
          readOnly: true
      additionalProperties: false
    DeviceHeartbeat:
      type: object
      properties:
        id:
          type: integer
          format: int32
          readOnly: true
        domainEvents:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IDomainEvent'
          readOnly: true
        deviceId:
          type: string
          format: uuid
        osVersion:
          type:
          - string
          - 'null'
        appVersion:
          type:
          - string
          - 'null'
        batteryPercentage:
          type: integer
          format: int32
        batteryCurrentNow:
          type: integer
          format: int32
        batteryCurrentAverage:
          type: integer
          format: int32
        batteryVoltage:
          type: integer
          format: int32
        batteryStatus:
          type:
          - string
          - 'null'
        unsentSessions:
          type: integer
          format: int32
        unfinishedSessions:
          type: integer
          format: int32
        received:
          type: string
          format: date-time
        device:
          $ref: '#/components/schemas/Device'
        ioid:
          type:
          - string
          - 'null'
        userInfo:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DeviceHeartbeatUserInfo'
          readOnly: true
        linkedDevices:
          type:
          - array
          - 'null'
          items:
            type: string
      additionalProperties: false
    DeviceHeartbeatUserInfo:
      type: object
      properties:
        id:
          type: integer
          format: int32
          readOnly: true
        domainEvents:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IDomainEvent'
          readOnly: true
        heartbeatId:
          type: integer
          format: int32
        unfinishedScans:
          type: integer
          format: int32
        unfinishedSessions:
          type: integer
          format: int32
        unsentSessions:
          type: integer
          format: int32
        unsentScans:
          type: integer
          format: int32
        username:
          type:
          - string
          - 'null'
        deviceHeartbeat:
          $ref: '#/components/schemas/DeviceHeartbeat'
      additionalProperties: false
    DevicePreRegistrationStatus:
      enum:
      - 0
      - 1
      - 2
      - 3
      - 4
      type: integer
      format: int32
    DeviceShelfStatus:
      type: object
      properties:
        id:
          type: integer
          format: int32
          readOnly: true
        domainEvents:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IDomainEvent'
          readOnly: true
        deviceId:
          type: string
          format: uuid
        spineHWVer:
          type:
          - string
          - 'null'
        shelfHWVer:
          type:
          - string
          - 'null'
        pcbhwVer:
          type:
          - string
          - 'null'
        compartment:
          type: integer
          format: int32
        slot:
          type: integer
          format: int32
        binCount:
          type: integer
          format: int32
        statusDate:
          type: string
          format: date-time
      additionalProperties: false
    DeviceResponseIPagedResult:
      type: object
      properties:
        pageSize:
          type: integer
          format: int32
          readOnly: true
        page:
          type: integer
          format: int32
          readOnly: true
        totalCount:
          type: integer
          format: int32
          readOnly: true
        filteredCount:
          type: integer
          format: int32
          readOnly: true
        data:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DeviceResponse'
          readOnly: true
      additionalProperties: false
    SendDeviceCommandRequest:
      type: object
      properties:
        command:
          type:
          - string
          - 'null'
      additionalProperties: false
    DeviceSIMStatus:
      type: object
      properties:
        id:
          type: integer
          format: int32
          readOnly: true
        domainEvents:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IDomainEvent'
          readOnly: true
        iccid:
          maxLength: 21
          minLength: 0
          type:
          - string
          - 'null'
        dataLimit:
          type: number
          format: double
        dataUsage:
          type: number
          format: double
        statusDate:
          type: string
          format: date-time
      additionalProperties: false
    DeviceEventNotification:
      type: object
      properties:
        id:
          type: integer
          format: int32
        deviceId:
          type: string
          format: uuid
        eventName:
          type:
          - string
          - 'null'
        eventContent:
          type:
          - string
          - 'null'
        receivers:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/NotificationsReceiver'
          readOnly: true
      additionalProperties: false
    NotificationsReceiver:
      type: object
      properties:
        id:
          type: integer
          format: int32
        notificationId:
          type: integer
          format: int32
        value:
          type:
          - string
          - 'null'
        type:
          type: integer
          format: int32
        deviceEventNotification:
          $ref: '#/components/schemas/DeviceEventNotification'
      additionalProperties: false
    IDomainEvent:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        occurredOn:
          type: string
          format: date-time
          readOnly: true
      additionalProperties: false
    DeviceUpdateRequest:
      type: object
      properties:
        name:
          type:
          - string
          - 'null'
        token:
          type:
          - string
          - 'null'
      additionalProperties: false
    CabinetType:
      enum:
      - 0
      - 1
      type: integer
      format: int32
    DeviceEvent:
      type: object
      properties:
        deviceId:
          type: string
          format: uuid
          readOnly: true
        name:
          type:
          - string
          - 'null'
          readOnly: true
        content:
          type:
          - string
          - 'null'
          readOnly: true
        received:
          type: string
          format: date-time
          readOnly: true
        domainEvents:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IDomainEvent'
          readOnly: true
      additionalProperties: false
    DedicatedDevicePreRegistrationResponse:
      type: object
      properties:
        deviceId:
          type: string
          format: uuid
        deviceName:
          type:
          - string
          - 'null'
        pairingCode:
          type:
          - string
          - 'null'
        serialNumber:
          type:
          - string
          - 'null'
          readOnly: true
          deprecated: true
      additionalProperties: false
    DeviceEventsResponse:
      type: object
      properties:
        deviceId:
          type: string
          format: uuid
        name:
          type:
          - string
          - 'null'
        content:
          type:
          - string
          - 'null'
        received:
          type: string
          format: date-time
      additionalProperties: false
    DeviceType:
      enum:
      - 0
      - 1
      - 2
      - 3
      - 4
      type: integer
      format: int32
    DeviceHeartbeatResponse:
      type: object
      properties:
        id:
          type: integer
          format: int32
        deviceId:
          type: string
          format: uuid
        osVersion:
          type:
          - string
          - 'null'
        appVersion:
          type:
          - string
          - 'null'
        batteryPercentage:
          type: integer
          format: int32
        batteryCurrentNow:
          type: integer
          format: int32
        batteryCurrentAverage:
          type: integer
          format: int32
        batteryVoltage:
          type: integer
          format: int32
        batteryStatus:
          type:
          - string
          - 'null'
        unsentSessions:
          type: integer
          format: int32
        unfinishedSessions:
          type: integer
          format: int32
        ioid:
          type:
          - string
          - 'null'
        received:
          type: string
          format: date-time
        heartbeatUserInfo:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DeviceHeartbeatUserinfoResponse'
      additionalProperties: false
    Error:
      type: object
      properties:
        code:
          type:
          - string
          - 'null'
        message:
          type:
          - string
          - 'null'
      additionalProperties: false
    DedicatedDevicePreRegistrationRequest:
      required:
      - deviceName
      type: object
      properties:
        deviceName:
          minLength: 1
          type: string
      additionalProperties: false
    Device:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        domainEvents:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IDomainEvent'
          readOnly: true
        createdOn:
          type:
          - string
          - 'null'
          format: date-time
          readOnly: true
        modifiedOn:
          type:
          - string
          - 'null'
          format: date-time
          readOnly: true
        name:
          type:
          - string
          - 'null'
          readOnly: true
        token:
          type:
          - string
          - 'null'
          readOnly: true
        iccid:
          type:
          - string
          - 'null'
          readOnly: true
        dedicatedDeviceId:
          type:
          - string
          - 'null'
          format: uuid
          readOnly: true
        sbNumber:
          type:
          - string
          - 'null'
          readOnly: true
        ioid:
          type:
          - string
          - 'null'
          readOnly: true
        externalId:
          type:
          - string
          - 'null'
          readOnly: true
        isDeleted:
          type: boolean
          readOnly: true
        type:
          $ref: '#/components/schemas/DeviceType'
        deletedOn:
          type:
          - string
          - 'null'
          format: date-time
          readOnly: true
        deviceTenants:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/TenantDevice'
          readOnly: true
        deviceEvents:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DeviceEvent'
          readOnly: true
        deviceHeartbeats:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DeviceHeartbeat'
          readOnly: true
        deviceEventNotifications:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DeviceEventNotification'
          readOnly: true
        deviceRegistrationStates:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DeviceRegistrationState'
          readOnly: true
        deviceSIMStatuses:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DeviceSIMStatus'
          readOnly: true
        deviceShelfStatuses:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DeviceShelfStatus'
          readOnly: true
        cabinetProdData:
          $ref: '#/components/schemas/CabinetProdData'
        currentRegistrationState:
          $ref: '#/components/schemas/DeviceRegistrationState'
      additionalProperties: false
    ApiErrorResponse:
      type: object
      properties:
        errors:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Error'
      additionalProperties: false
    DeviceRegistrationState:
      type: object
      properties:
        id:
          type: integer
          format: int32
          readOnly: true
        domainEvents:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IDomainEvent'
          readOnly: true
        createdOn:
          type:
          - string
          - 'null'
          format: date-time
          readOnly: true
        modifiedOn:
          type:
          - string
          - 'null'
          format: date-time
          readOnly: true
        deviceId:
          type: string
          format: uuid
        pairingCode:
          type:
          - string
          - 'null'
        state:
          $ref: '#/components/schemas/DevicePreRegistrationStatus'
        tenantId:
          type:
          - string
          - 'null'
          format: uuid
        deviceName:
          type:
          - string
          - 'null'
      additionalProperties: false
    DeviceResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type:
          - string
          - 'null'
        ioid:
          type:
          - string
          - 'null'
        type:
          $ref: '#/components/schemas/DeviceType'
        token:
          type:
          - string
          - 'null'
        osVersion:
          type:
          - string
          - 'null'
        appVersion:
          type:
          - string
          - 'null'
        received:
          type:
          - string
          - 'null'
          format: date-time
        batteryPercentage:
          type:
          - integer
          - 'null'
          format: int32
        batteryStatus:
          type:
          - string
          - 'null'
        unsentSessions:
          type:
          - integer
          - 'null'
          format: int32
        unfinishedSessions:
          type:
          - integer
          - 'null'
          format: int32
        status:
          type:
          - string
          - 'null'
        lastSeenSecAgo:
          type:
          - integer
       

# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/invendor/refs/heads/main/openapi/invendor-devices-api-openapi.yml