Invendor Devices API
The Devices API from Invendor — 10 operation(s) for devices.
The Devices API from Invendor — 10 operation(s) for devices.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/invendor-devices-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 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