OptiWMS API
Changelog and versioning
URL versioning and the 1.0.0 contract.
Changelog and versioning
Versioning policy
The OptiWMS API is versioned in the URL (/store/v1/). Breaking changes ship under a new version path. Additive fields, new optional properties and new error details may appear on v1 without a version bump. Clients must ignore unknown JSON fields.
The OpenAPI document in the repository (docs/store-api/openapi.yaml, version in info.version) is the contract. Public pages at www.optiwms.com/developers are built from that document and these markdown pages. Every request and response example on these pages is one the OptiWMS test suite exercises.
Notification webhooks (dashboard subscriptions) use X-OptiWMS-Webhook-Version: 1 and are versioned separately from the OptiWMS API path.
1.0.0
Initial public OptiWMS API:
- Inbound:
GET /ping,PUT /products,POST /products/delete,PUT /orders/{orderId},GET /orders/{orderId},POST /orders/{orderId}/cancel - Outbound to the store base URL:
stock,shipments,shipmentTracking,orderCancel - HMAC signing over
timestamp.method.path.body, 15-minute window, path includes percent-encoding and any base URL path prefix - Order decision table with
created,unchanged,stale,updated,canceled, and 409 codesORDER_IN_FULFILLMENT,ORDER_SHIPPED,ORDER_CANCELED - Release-the-pick flow and GET statuses including
picking,packing,partially_shipped,shipped,pending,canceled - Dashboard Recent activity and signature checker for remote ecommerce integrations
- Dashboard notification webhooks remain body-only
X-OptiWMS-Hmac-Sha256; order topics carry astoreobject when the order has a channel integration
Sets (additive, still v1)
PUT /productsvariantcomponents:{sku, quantity}pairs. Omit the field to leave a stored set.[]clears a set this integration defined.OrderLinesetIdandsetTitlefor a set the store has already split into its products.- Shipment lines and
GET /orders/{orderId}report a set as the number of sets, not the component units.
Connect your own store
Register the integration in the dashboard, then start with GET /ping.