API reference
Every operation. Made from the code.
Built from the engine’s own OpenAPI file at each build of the site, so it says what the code says. Each operation needs a bearer token with its scope.
275operations that work
13in the contract, not built yet
33scopes
256paths
Base path /api/v1/. Header Authorization: Bearer <token>. The machine-readable file is at GET /api/v1/openapi.json on every store, with no token.
Announcements1 operations
Catalogue88 operations
Clients4 operations
Content4 operations
Customers4 operations
Drafts10 operations
Events1 operations
Feeds1 operations
Forms12 operations
Mail39 operations
Me1 operations
Orders40 operations
Payments8 operations
Promotions5 operations
Reviews2 operations
Shipping16 operations
Stock18 operations
Store5 operations
Subscriptions7 operations
Supplier orders0 of 6 work
Suppliers0 of 5 work
Supply0 of 2 work
Webhooks9 operations
All operations
- GETannouncements.progress
/api/v1/announcements - POSTcatalogue.accept-description
/api/v1/catalogue/review/{slug}/description - POSTcatalogue.add-variant
/api/v1/catalogue/products/{slug}/variants - POSTcatalogue.answer-question
/api/v1/catalogue/review/{slug}/questions/{id} - POSTcatalogue.approve-product
/api/v1/catalogue/review/{slug}/approve - POSTcatalogue.archive-variant
/api/v1/catalogue/variants/{sku}/archive - POSTcatalogue.ask-photo
/api/v1/catalogue/review/{slug}/ask-photo - POSTcatalogue.attach-image
/api/v1/catalogue/media/{name}/attach - POSTcatalogue.bulk-set-variants
/api/v1/catalogue/products/{slug}/variants/bulk - GETcatalogue.categories
/api/v1/catalogue/categories - POSTcatalogue.clear-sale
/api/v1/catalogue/variants/{sku}/sale/clear - GETcatalogue.collection-products
/api/v1/catalogue/collections/{slug}/products - GETcatalogue.collections
/api/v1/catalogue/collections - POSTcatalogue.create-product
/api/v1/catalogue/products - POSTcatalogue.decide-held
/api/v1/catalogue/review/{slug}/held/{id} - POSTcatalogue.decide-retire
/api/v1/catalogue/review/{slug}/retire/decide - POSTcatalogue.delete-category
/api/v1/catalogue/categories/{slug}/delete - POSTcatalogue.delete-collection
/api/v1/catalogue/collections/{slug}/delete - POSTcatalogue.delete-field
/api/v1/catalogue/fields/{key}/delete - POSTcatalogue.delete-image
/api/v1/catalogue/images/{name}/delete - POSTcatalogue.delete-media
/api/v1/catalogue/media/{name}/delete - POSTcatalogue.delete-variant
/api/v1/catalogue/variants/{sku}/delete - GETcatalogue.fields
/api/v1/catalogue/fields - GETcatalogue.image-history
/api/v1/catalogue/images/{name}/history - GETcatalogue.images
/api/v1/catalogue/products/{slug}/images - POSTcatalogue.import
/api/v1/catalogue/imports - POSTcatalogue.import-preview
/api/v1/catalogue/imports/preview - GETcatalogue.media
/api/v1/catalogue/media - POSTcatalogue.open-again
/api/v1/catalogue/review/{slug}/open-again - GETcatalogue.option-pictures
/api/v1/catalogue/products/{slug}/option-pictures - POSTcatalogue.order-categories
/api/v1/catalogue/categories/order - POSTcatalogue.order-images
/api/v1/catalogue/products/{slug}/images/order - GETcatalogue.picture-settings
/api/v1/catalogue/picture-settings - GETcatalogue.pictures-to-review
/api/v1/catalogue/pictures/to-review - POSTcatalogue.preview-collection-rules
/api/v1/catalogue/collection-rules/preview - GETcatalogue.price-changes
/api/v1/catalogue/variants/{sku}/price-changes - GETcatalogue.products
/api/v1/catalogue/products - GETcatalogue.products-by-slug
/api/v1/catalogue/products-by-slug - POSTcatalogue.propose-retire
/api/v1/catalogue/review/{slug}/retire - POSTcatalogue.publish
/api/v1/catalogue/products/{slug}/publish - POSTcatalogue.publish-collection
/api/v1/catalogue/collections/{slug}/publish - POSTcatalogue.remove-variant-file
/api/v1/catalogue/variants/{sku}/file/remove - POSTcatalogue.request-version
/api/v1/catalogue/images/{name}/request-version - GETcatalogue.review-classes
/api/v1/catalogue/review-classes - GETcatalogue.review-list
/api/v1/catalogue/review - GETcatalogue.review-setting
/api/v1/catalogue/review-setting - POSTcatalogue.review-version
/api/v1/catalogue/images/{name}/review - GETcatalogue.review-workspace
/api/v1/catalogue/review/{slug} - POSTcatalogue.save-category
/api/v1/catalogue/categories - POSTcatalogue.save-collection
/api/v1/catalogue/collections - POSTcatalogue.save-field
/api/v1/catalogue/fields - GETcatalogue.search
/api/v1/catalogue/search - POSTcatalogue.send-back
/api/v1/catalogue/review/{slug}/send-back - POSTcatalogue.set-categories
/api/v1/catalogue/products/{slug}/categories - POSTcatalogue.set-choices
/api/v1/catalogue/products/{slug}/choices - POSTcatalogue.set-collection-products
/api/v1/catalogue/collections/{slug}/products - POSTcatalogue.set-collection-rules
/api/v1/catalogue/collections/{slug}/rules - POSTcatalogue.set-compare-at
/api/v1/catalogue/variants/{sku}/compare-at - POSTcatalogue.set-details
/api/v1/catalogue/products/{slug}/details - POSTcatalogue.set-enquiry
/api/v1/catalogue/products/{slug}/enquiry - POSTcatalogue.set-image-alt
/api/v1/catalogue/images/{name}/alt - POSTcatalogue.set-image-note
/api/v1/catalogue/images/{name}/note - POSTcatalogue.set-links
/api/v1/catalogue/products/{slug}/links - POSTcatalogue.set-made-to-order
/api/v1/catalogue/products/{slug}/made-to-order - POSTcatalogue.set-option-pictures
/api/v1/catalogue/products/{slug}/option-pictures - POSTcatalogue.set-options
/api/v1/catalogue/products/{slug}/options - POSTcatalogue.set-price
/api/v1/catalogue/variants/{sku}/price - POSTcatalogue.set-product-classes
/api/v1/catalogue/review/{slug}/classes - POSTcatalogue.set-product-fields
/api/v1/catalogue/products/{slug}/fields - POSTcatalogue.set-retired
/api/v1/catalogue/products/{slug}/retired - POSTcatalogue.set-review
/api/v1/catalogue/review-setting - POSTcatalogue.set-review-classes
/api/v1/catalogue/review-classes - POSTcatalogue.set-sale
/api/v1/catalogue/variants/{sku}/sale - POSTcatalogue.set-slug
/api/v1/catalogue/products/{slug}/slug - POSTcatalogue.set-stock
/api/v1/catalogue/variants/{sku}/stock - POSTcatalogue.set-variant-details
/api/v1/catalogue/variants/{sku}/details - POSTcatalogue.set-variant-fields
/api/v1/catalogue/variants/{sku}/fields - POSTcatalogue.set-variant-images
/api/v1/catalogue/variants/{sku}/images - GETcatalogue.stock-alert-counts
/api/v1/catalogue/stock-alerts - GETcatalogue.stock-levels
/api/v1/catalogue/stock-levels - POSTcatalogue.unpublish
/api/v1/catalogue/products/{slug}/unpublish - POSTcatalogue.unpublish-collection
/api/v1/catalogue/collections/{slug}/unpublish - POSTcatalogue.unretire
/api/v1/catalogue/products/{slug}/unretire - POSTcatalogue.upload-image
/api/v1/catalogue/products/{slug}/images - POSTcatalogue.upload-media
/api/v1/catalogue/media - POSTcatalogue.upload-variant-file
/api/v1/catalogue/variants/{sku}/file - POSTcatalogue.upload-version
/api/v1/catalogue/images/{name}/versions - POSTcatalogue.use-version
/api/v1/catalogue/images/{name}/use - GETcatalogue.versions
/api/v1/catalogue/images/{name}/versions - POSTclients.delete
/api/v1/clients/{id}/delete - GETclients.get
/api/v1/clients/{id} - GETclients.list
/api/v1/clients - POSTclients.save
/api/v1/clients - POSTcontent.delete-page
/api/v1/content/pages/{slug}/delete - GETcontent.pages
/api/v1/content/pages - POSTcontent.save-page
/api/v1/content/pages - POSTcontent.set-page-published
/api/v1/content/pages/{slug}/published - POSTcustomers.create
/api/v1/customers - GETcustomers.get
/api/v1/customers/{email} - GETcustomers.list
/api/v1/customers - POSTcustomers.withdraw-consent
/api/v1/customers/{email}/consents/{topic}/withdraw - POSTdrafts.accept
/api/v1/drafts/{id}/accept - POSTdrafts.create
/api/v1/drafts - POSTdrafts.edit
/api/v1/drafts/{id}/edit - GETdrafts.get
/api/v1/drafts/{id} - GETdrafts.list
/api/v1/drafts - POSTdrafts.reject
/api/v1/drafts/{id}/reject - POSTdrafts.save-settings
/api/v1/drafts/settings - GETdrafts.settings
/api/v1/drafts/settings - POSTdrafts.test-connection
/api/v1/drafts/test - GETdrafts.usage
/api/v1/drafts/usage - GETevents.list
/api/v1/events - GETfeeds.status
/api/v1/feeds/status - POSTforms.add-enquiry-note
/api/v1/forms/enquiries/{id}/notes - GETforms.enquiries
/api/v1/forms/enquiries - GETforms.enquiry
/api/v1/forms/enquiries/{id} - GETforms.enquiry-counts
/api/v1/forms/enquiries/counts - GETforms.forms
/api/v1/forms/forms - POSTforms.mark-submission-read
/api/v1/forms/submissions/{number}/read - POSTforms.set-enquiry-status
/api/v1/forms/enquiries/{id}/status - POSTforms.set-submission-note
/api/v1/forms/submissions/{number}/note - POSTforms.set-submission-status
/api/v1/forms/submissions/{number}/status - GETforms.submission-file
/api/v1/forms/files/{id} - GETforms.submissions
/api/v1/forms/submissions - GETforms.unread-count
/api/v1/forms/submissions/unread-count - GETmail.blocks
/api/v1/mail/blocks - GETmail.calendar
/api/v1/mail/calendar - POSTmail.cancel-mailing
/api/v1/mail/mailings/{id}/cancel - GETmail.contacts
/api/v1/mail/contacts - POSTmail.copy-mailing
/api/v1/mail/mailings/{id}/copy - GETmail.dmarc
/api/v1/mail/dmarc - GETmail.flow-report
/api/v1/mail/flows/{kind}/report - GETmail.flow-runs
/api/v1/mail/flows/{kind}/runs - POSTmail.flow-save
/api/v1/mail/flows/{kind} - GETmail.flows
/api/v1/mail/flows - POSTmail.import
/api/v1/mail/imports - POSTmail.import-preview
/api/v1/mail/imports/preview - GETmail.imports
/api/v1/mail/imports - POSTmail.kind-set
/api/v1/mail/kinds - GETmail.kinds
/api/v1/mail/kinds - POSTmail.lift-suppression
/api/v1/mail/suppressions/{hash}/lift - GETmail.mailing
/api/v1/mail/mailings/{id} - GETmail.mailing-report
/api/v1/mail/mailings/{id}/report - GETmail.mailings
/api/v1/mail/mailings - GETmail.next-allowed
/api/v1/mail/next-allowed - POSTmail.pause-mailing
/api/v1/mail/mailings/{id}/pause - POSTmail.preview
/api/v1/mail/preview - POSTmail.resume-mailing
/api/v1/mail/mailings/{id}/resume - GETmail.rules
/api/v1/mail/rules - POSTmail.save-mailing
/api/v1/mail/mailings - POSTmail.save-segment
/api/v1/mail/segments - POSTmail.save-topic
/api/v1/mail/topics - GETmail.schedule-check
/api/v1/mail/schedule-check - POSTmail.schedule-mailing
/api/v1/mail/mailings/{id}/schedule - POSTmail.segment-count
/api/v1/mail/segments/count - GETmail.segments
/api/v1/mail/segments - POSTmail.send-test
/api/v1/mail/tests - GETmail.setup
/api/v1/mail/setup - GETmail.suppression-imports
/api/v1/mail/suppressions/imports - GETmail.suppressions
/api/v1/mail/suppressions - GETmail.tests
/api/v1/mail/tests - GETmail.topics
/api/v1/mail/topics - GETmail.transactional
/api/v1/mail/transactional - POSTmail.unschedule-mailing
/api/v1/mail/mailings/{id}/unschedule - GETme.get
/api/v1/me - POSTorders.add-note
/api/v1/orders/{number}/notes - GETorders.attention
/api/v1/orders/attention - GETorders.attention-items
/api/v1/orders/attention/items - POSTorders.book-courier
/api/v1/orders/{number}/book-courier - POSTorders.cancel
/api/v1/orders/{number}/cancel - POSTorders.cancel-courier
/api/v1/orders/{number}/shipments/{id}/cancel - GETorders.cancel-reasons
/api/v1/orders/cancel-reasons - POSTorders.check
/api/v1/orders/check - POSTorders.collect-cash
/api/v1/orders/{number}/collect-cash - POSTorders.confirm-courier
/api/v1/orders/{number}/shipments/{id}/reference - POSTorders.correct-shipment
/api/v1/orders/{number}/shipment - GETorders.counts
/api/v1/orders/counts - GETorders.courier-label
/api/v1/orders/{number}/shipments/{id}/label - POSTorders.courier-not-booked
/api/v1/orders/{number}/shipments/{id}/not-booked - GETorders.courier-rates
/api/v1/orders/{number}/courier-rates - POSTorders.deliver
/api/v1/orders/{number}/deliver - POSTorders.dismiss-attention
/api/v1/orders/{number}/attention/dismiss - GETorders.export
/api/v1/orders/export - GETorders.get
/api/v1/orders/{number} - POSTorders.grant-more-downloads
/api/v1/orders/{number}/downloads/{sku} - GETorders.list
/api/v1/orders - POSTorders.mark-backordered
/api/v1/orders/{number}/mark-backordered - POSTorders.mark-collected
/api/v1/orders/{number}/mark-collected - POSTorders.mark-paid
/api/v1/orders/{number}/mark-paid - POSTorders.mark-ready-for-collection
/api/v1/orders/{number}/mark-ready-for-collection - POSTorders.pack
/api/v1/orders/{number}/pack - POSTorders.place
/api/v1/orders/place - POSTorders.record-payment
/api/v1/orders/{number}/record-payment - POSTorders.refund
/api/v1/orders/{number}/refund - GETorders.replies
/api/v1/orders/{number}/replies - POSTorders.reply-mark-read
/api/v1/orders/{number}/replies/{id}/read - POSTorders.resend-receipt
/api/v1/orders/{number}/resend-receipt - GETorders.sales-summary
/api/v1/orders/sales-summary - GETorders.search
/api/v1/orders/search - POSTorders.settle-charge
/api/v1/orders/{number}/settle-charge - POSTorders.ship
/api/v1/orders/{number}/ship - GETorders.shipments
/api/v1/orders/{number}/shipments - GETorders.till-held
/api/v1/orders/till-held - POSTorders.till-held-close
/api/v1/orders/{number}/till-held/close - GETorders.unread-replies
/api/v1/orders/replies/unread - POSTpayments.clear-gateway-logo
/api/v1/payments/gateways/{gateway}/logo/delete - GETpayments.gateways
/api/v1/payments/gateways - POSTpayments.set-gateway
/api/v1/payments/gateways/{gateway} - POSTpayments.set-gateway-key
/api/v1/payments/gateways/{gateway}/key - POSTpayments.set-gateway-logo
/api/v1/payments/gateways/{gateway}/logo - POSTpayments.set-live
/api/v1/payments/live - GETpayments.settings
/api/v1/payments/settings - GETpayments.unmatched
/api/v1/payments/unmatched - POSTpromotions.create
/api/v1/promotions - POSTpromotions.end
/api/v1/promotions/{id}/end - GETpromotions.list
/api/v1/promotions - POSTpromotions.update
/api/v1/promotions/{id} - GETpromotions.uses
/api/v1/promotions/{id}/uses - POSTreviews.approve
/api/v1/reviews/{id}/approve - GETreviews.list
/api/v1/reviews - POSTshipping.add-zone
/api/v1/shipping/zones - GETshipping.connector-services
/api/v1/shipping/connectors/{connector}/services - GETshipping.connectors
/api/v1/shipping/connectors - GETshipping.couriers
/api/v1/shipping/couriers - POSTshipping.desk-quote
/api/v1/shipping/desk-quote - POSTshipping.keep-quote
/api/v1/shipping/quotes - GETshipping.quote
/api/v1/shipping/quotes/{id} - POSTshipping.quote-again
/api/v1/shipping/quotes/{id}/again - GETshipping.quotes
/api/v1/shipping/quotes - POSTshipping.remove-zone
/api/v1/shipping/zones/{id}/remove - POSTshipping.save-couriers
/api/v1/shipping/couriers - POSTshipping.set-boxes
/api/v1/shipping/boxes - POSTshipping.set-options
/api/v1/shipping/options - POSTshipping.set-zone
/api/v1/shipping/zones/{id} - GETshipping.test-quote
/api/v1/shipping/connectors/{connector}/test-quote - GETshipping.zones
/api/v1/shipping/zones - POSTstock.damage
/api/v1/stock/damage - GETstock.levels
/api/v1/stock/levels/{sku} - GETstock.location-levels
/api/v1/stock/locations/{key}/levels - GETstock.locations
/api/v1/stock/locations - GETstock.low
/api/v1/stock/low - GETstock.movements
/api/v1/stock/movements - POSTstock.receive
/api/v1/stock/receipts - GETstock.report
/api/v1/stock/report - POSTstock.save-location
/api/v1/stock/locations - POSTstock.sell
/api/v1/stock/sales - POSTstock.set-reorder
/api/v1/stock/levels/{sku}/reorder - GETstock.take
/api/v1/stock/takes/{id} - POSTstock.take-abandon
/api/v1/stock/takes/{id}/abandon - POSTstock.take-apply
/api/v1/stock/takes/{id}/apply - POSTstock.take-count
/api/v1/stock/takes/{id}/count - POSTstock.take-open
/api/v1/stock/takes - GETstock.takes
/api/v1/stock/takes - POSTstock.transfer
/api/v1/stock/transfers - GETstore.backup-status
/api/v1/store/backup-status - POSTstore.clear-logo
/api/v1/store/logo/delete - POSTstore.save-settings
/api/v1/store/settings - POSTstore.set-logo
/api/v1/store/logo - GETstore.settings
/api/v1/store/settings - POSTsubscriptions.cancel
/api/v1/subscriptions/{number}/cancel - POSTsubscriptions.change
/api/v1/subscriptions/{number}/change - GETsubscriptions.get
/api/v1/subscriptions/{number} - GETsubscriptions.list
/api/v1/subscriptions - POSTsubscriptions.pause
/api/v1/subscriptions/{number}/pause - POSTsubscriptions.resume
/api/v1/subscriptions/{number}/resume - POSTsubscriptions.skip
/api/v1/subscriptions/{number}/skip - GETsupplier-orders.get
/api/v1/supplier-orders/{id}Contract only - GETsupplier-orders.list
/api/v1/supplier-ordersContract only - POSTsupplier-orders.make
/api/v1/orders/{number}/supplier-ordersContract only - POSTsupplier-orders.send
/api/v1/supplier-orders/{id}/sendContract only - POSTsupplier-orders.set-state
/api/v1/supplier-orders/{id}/stateContract only - GETsupplier-orders.to-send
/api/v1/supplier-orders/to-sendContract only - POSTsuppliers.archive
/api/v1/suppliers/{key}/archiveContract only - POSTsuppliers.delete
/api/v1/suppliers/{key}/deleteContract only - GETsuppliers.get
/api/v1/suppliers/{key}Contract only - GETsuppliers.list
/api/v1/suppliersContract only - POSTsuppliers.save
/api/v1/suppliersContract only - POSTsupply.save-settings
/api/v1/supply/settingsContract only - GETsupply.settings
/api/v1/supply/settingsContract only - POSTwebhooks.delete-endpoint
/api/v1/webhooks/endpoints/{id}/delete - GETwebhooks.get-delivery
/api/v1/webhooks/deliveries/{id} - GETwebhooks.list-deliveries
/api/v1/webhooks/deliveries - GETwebhooks.list-endpoints
/api/v1/webhooks/endpoints - POSTwebhooks.replay
/api/v1/webhooks/replay - POSTwebhooks.rotate-secret
/api/v1/webhooks/endpoints/{id}/rotate-secret - POSTwebhooks.save-endpoint
/api/v1/webhooks/endpoints - POSTwebhooks.send-test
/api/v1/webhooks/endpoints/{id}/test - POSTwebhooks.set-enabled
/api/v1/webhooks/endpoints/{id}/enabled
Common parameters
Idempotency-Keyheader | Makes the write once. The key is the token's own: 1 to 255 visible ASCII characters. The same method, path, query and body bytes with the same key again within 24 hours get the first answer, marked Idempotent-Replay: true; another request with the same key is 409. A 5xx and a 429 are not kept, and the key is free again. While the first call runs, the answer is 409 with Retry-After: ask again with the same key. |
afterquery | The cursor of the page: Next-Cursor of the page before, as it is (opaque: follow the Link); the first page when left out. |
pagequery | The number of the page, from 1; the first when left out. |
Errors
Every error has one body: error, message, code, field and request_id. Use code: the list only grows.
BadPage | The cursor is no cursor of this list or names an item that is gone (web.api_cursor), or the limit is out of its bounds (web.api_limit). |
Conflict | The object is not as the call expects (a revision that is no longer current, or a state that does not allow the change); or, of a write with an Idempotency-Key: the key was used for another request (web.api_idempotency_differs); its first call is still being made (web.api_idempotency_busy, with Retry-After: ask again with the same key); or the outcome of its first call is not known, so it is never made again (web.api_idempotency_unknown: send a new key). |
ConflictWrite | The object is not as the call expects (a revision that is no longer current, or a state that does not allow the change); or, of a write with an Idempotency-Key: the key was used for another request (web.api_idempotency_differs); its first call is still being made (web.api_idempotency_busy, with Retry-After: ask again with the same key); or the outcome of its first call is not known, so it is never made again (web.api_idempotency_unknown: send a new key). |
Forbidden | The token does not hold the scope of the operation's group. |
ForbiddenWrite | The token does not hold the scope of the operation's group. |
Invalid | An argument is wrong; the Problem names it in field. |
InvalidWrite | An argument is wrong; the Problem names it in field. |
MethodNotAllowed | The path takes other methods than the one called; Allow says them. |
NotFound | The object the path names does not exist. |
NotFoundWrite | The object the path names does not exist. |
RateLimited | The token made more calls than its limit in the minute; Retry-After says when to call again. |
TooLarge | The body is larger than the operation takes. |
TooLargeWrite | The body is larger than the operation takes. |
Unauthorized | The call has no live token: none, unknown, revoked or expired. |
Problem is the JSON the API door answers a refusal, and any failure, with.
coderequired | string |
errorrequired | string |
field | string |
messagerequired | string |
request_idrequired | string |
Made from engine/internal/openapi/openapi.json at commit 6c4cbd921. The contract-only operations come from the engine’s stub file, engine/internal/ops.