Cloud API for integrating inventory and asynchronous store/retrieve operations
with provisioned Openshelf devices. Device IDs and API keys are supplied during onboarding;
this API does not expose device administration or low-level hardware controls.
Base URL: https://api.opshelf.com. Append the documented /v1/... path
(or /healthz for the service health check).
First integration
- Exchange your provisioned
X-API-Key at POST /v1/auth/token.
- Send
Authorization: Bearer <access_token> on subsequent /v1 requests.
- Check your device, create/read its inventory item, then submit a command
with a stable
request_id.
- Save the accepted
command_id and poll its result, or register a webhook before submission.
Inventory records and physical storage are distinct: creating a record does not move an
item. Successful submission means acceptance, not completion. Bin-managed items are
visible but cannot be retrieved through the direct command API.
Errors and limits
Errors contain code, message, and correlation_id. Preserve the response
X-Correlation-ID for support; you may supply a 1–128 character ID using letters, digits,
dot, underscore, or hyphen. Unknown and unauthorized devices both return 404.
Authenticated routes share a per-key limit of five requests/second with a burst of 20.
Token exchange allows a burst of five per source IP, replenishing at five/minute.
Mutation bodies are limited to 64 KiB. On 429, honor Retry-After when present;
otherwise back off. Retry uncertain commands with the same request ID and payload.
Resolve 409/423 state conflicts before retrying; do not blindly replay physical work.
Dimensions are millimeters, weight is grams, and location indices are zero-based.
The local engineering API is documented separately at
Local API. Schemas here describe the cloud contract;
not every local field or command is exposed.