Download OpenAPI specification:
Standardized B2B order intake with Pexagon-controlled artwork upload.
Release candidate contract for owner-controlled intake. The owner uploads exact final JPEG bytes, poll until ready, then submit immutable orders that assign opaque upload IDs to mapping-authorized imprint locations.
Plugin code implements Schema Six direct-upload/order intake and gated Schema Seven HPOS order behavior with guarded Live registration. S10-49/S10-50 accepted the core fictional-order flow on the then-installed Standard staging runtime, and S10-52 accepted that runtime's unattended processing boundary. S10-88 later accepted Standard-staging artwork access on exact S10-90 alpha.18/Schema Seven, documented in the S10-91 record in docs/decisions.md. The staging portal remains enabled by owner decision; external API and processing gates remain absent. Production remains undeployed and unaccepted; source publication alone proves neither deployment nor production readiness.
Requires artwork:write. The body is the client's declared final JPEG. The
authenticated client, idempotency key, exact server-observed bytes, and
profile define retry identity. Same identity returns the existing
upload; changed bytes or profile returns 409. A 202 response means
the complete immutable original is already durably stored with matching
server-observed size and SHA-256. JPEG structure and decodability are
not decided synchronously; inspection and preview remain async, and
malformed/non-JPEG bytes later produce failed upload status.
| Idempotency-Key required | string [ 16 .. 128 ] characters ^[A-Za-z0-9._~-]+$ Example: upkey_01K0SYNTHETICRETRY Client-scoped upload retry key. The server stores only the SHA-256 digest of the exact accepted Idempotency-Key bytes; never use an order ID or filename as storage authority. |
| X-Pexagon-Artwork-Profile required | string Value: "PRINT_WRAP_JPEG_3000X2700_V1" |
| X-Pexagon-Filename | string [ 1 .. 180 ] characters ^(?!.*[\\/])(?!.*\.\.)(?!.*[\u0000-\u001F\u00... Example: synthetic-wrap.jpg Bounded advisory display/audit value; not upload identity or storage authority. |
| X-Request-Id | string <= 100 characters |
Client-declared final JPEG bytes; nonempty and maximum 5 MiB. Structural JPEG validation is asynchronous after durable receipt.
| X-Request-Id | string Correlation identifier safe to provide to support. |
| success required | any Value: true | ||||||||||||||||||||||||||||||||||
| request_id required | string | ||||||||||||||||||||||||||||||||||
| duplicate required | boolean | ||||||||||||||||||||||||||||||||||
required | object (ArtworkUpload) | ||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||
| X-Request-Id | string Correlation identifier safe to provide to support. |
| Location | string Example: "/artwork-uploads/upl_01K0SYNTHETIC001" Authenticated status reference for this upload. |
| success required | any Value: true | ||||||||||||||||||||||||||||||||||
| request_id required | string | ||||||||||||||||||||||||||||||||||
| duplicate required | boolean | ||||||||||||||||||||||||||||||||||
required | object (ArtworkUpload) | ||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||
| X-Request-Id | string Correlation identifier safe to provide to support. |
| success required | any | ||||||||||||
| request_id required | string | ||||||||||||
required | object (Error) | ||||||||||||
| |||||||||||||
| X-Request-Id | string Correlation identifier safe to provide to support. |
| success required | any | ||||||||||||
| request_id required | string | ||||||||||||
required | object (Error) | ||||||||||||
| |||||||||||||
| X-Request-Id | string Correlation identifier safe to provide to support. |
| success required | any | ||||||||||||
| request_id required | string | ||||||||||||
required | object (Error) | ||||||||||||
| |||||||||||||
{- "success": true,
- "request_id": "string",
- "duplicate": true,
- "upload": {
- "upload_id": "upl_01K0SYNTHETIC001",
- "profile": "PRINT_WRAP_JPEG_3000X2700_V1",
- "status": "processing",
- "availability": "unsealed",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "ready_at": "2019-08-24T14:15:22Z",
- "expires_at": "2019-08-24T14:15:22Z",
- "byte_size": 1,
- "sha256": "string",
- "status_reference": "string",
- "current_issue": {
- "code": "string",
- "message": "string",
- "retryable": true,
- "recovery_classification": "platform_retrying"
}
}
}Requires artwork:read. Returns only uploads owned by the authenticated
client. Nonexistent and wrong-client IDs use the same privacy-safe 404.
| upload_id required | string (UploadId) ^upl_[A-Za-z0-9]{12,64}$ Example: upl_01K0SYNTHETIC001 |
| X-Request-Id | string <= 100 characters |
| X-Request-Id | string Correlation identifier safe to provide to support. |
| success required | any Value: true | ||||||||||||||||||||||||||||||||||
| request_id required | string | ||||||||||||||||||||||||||||||||||
required | object (ArtworkUpload) | ||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||
{- "success": true,
- "request_id": "req_01K0READY",
- "upload": {
- "upload_id": "upl_01K0SYNTHETIC001",
- "profile": "PRINT_WRAP_JPEG_3000X2700_V1",
- "status": "ready",
- "availability": "unsealed",
- "created_at": "2026-08-07T14:00:00Z",
- "updated_at": "2026-08-07T14:00:03Z",
- "ready_at": "2026-08-07T14:00:03Z",
- "expires_at": "2026-08-14T14:00:03Z",
- "byte_size": 3145728,
- "sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
- "status_reference": "/artwork-uploads/upl_01K0SYNTHETIC001",
- "current_issue": null
}
}Requires orders:write. After static validation, the server normalizes
and hashes the request and looks up (client_id, external_order_id)
before consulting mutable upload, mapping, product, readiness, expiry,
profile, or sealing state. Identical canonical data returns the existing
submission and attachments without mutation or current-authority
revalidation. Changed data returns 409 before mutable validation.
Only a new submission validates current ownership, readiness, failure,
expiry, sealing availability, mapped locations/products, and profile
compatibility, then atomically creates the submission, assignments,
attachments, and seals. Line order is meaningful. Assignment order is
not: after duplicate-location rejection, canonicalization sorts it by
imprint_location_code. Limits are 8 assignments per line and 100 per
order; product configuration may impose lower limits.
| X-Request-Id | string <= 100 characters |
| external_order_id required | string (ExternalOrderId) [ 1 .. 100 ] characters ^[A-Za-z0-9][A-Za-z0-9._:/-]*$ | ||||||||||||||||||||||
| purchase_order | string or null <= 100 characters | ||||||||||||||||||||||
| in_hands_date | string or null <date> | ||||||||||||||||||||||
required | object (ShippingAddress) | ||||||||||||||||||||||
| |||||||||||||||||||||||
required | Array of objects (OrderItemRequest) [ 1 .. 40 ] items | ||||||||||||||||||||||
Array ([ 1 .. 40 ] items)
| |||||||||||||||||||||||
| X-Request-Id | string Correlation identifier safe to provide to support. |
| success required | any Value: true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| request_id required | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| duplicate required | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
required | object (PublicOrder) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| X-Request-Id | string Correlation identifier safe to provide to support. |
| Location | string Example: "/orders/SYN-UPLOAD-ONE" Order lookup reference. |
| success required | any Value: true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| request_id required | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| duplicate required | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
required | object (PublicOrder) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| X-Request-Id | string Correlation identifier safe to provide to support. |
| success required | any | ||||||||||||
| request_id required | string | ||||||||||||
required | object (Error) | ||||||||||||
| |||||||||||||
| X-Request-Id | string Correlation identifier safe to provide to support. |
| success required | any | ||||||||||||
| request_id required | string | ||||||||||||
required | object (Error) | ||||||||||||
| |||||||||||||
| X-Request-Id | string Correlation identifier safe to provide to support. |
| success required | any | ||||||||||||
| request_id required | string | ||||||||||||
required | object (Error) | ||||||||||||
| |||||||||||||
{- "external_order_id": "SYN-UPLOAD-ONE",
- "shipping": {
- "first_name": "Morgan",
- "last_name": "Example",
- "address_1": "100 Example Avenue",
- "city": "Exampletown",
- "state": "NH",
- "postcode": "03101",
- "country": "US"
}, - "items": [
- {
- "external_line_item_id": "line-1",
- "product_code": "SAMPLE-BOTTLE-01",
- "quantity": 1,
- "artwork_assignments": [
- {
- "imprint_location_code": "wrap",
- "upload_id": "upl_01K0SYNTHETIC001"
}
]
}
]
}{- "success": true,
- "request_id": "string",
- "duplicate": true,
- "order": {
- "external_order_id": "SYN-UPLOAD-ONE",
- "submission_id": "sub_01K0SYNTHETIC001",
- "status": "received",
- "submitted_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "pexagon_order_number": "string",
- "artwork": {
- "total": 0,
- "ready": 0,
- "processing": 0,
- "failed": 0,
- "held": 0
}, - "lines": [
- {
- "external_line_item_id": "string",
- "product_code": "string",
- "quantity": 0,
- "artwork_status": "pending",
- "production_hold": true,
- "assignments": [
- {
- "imprint_location_code": "string",
- "artwork_status": "pending",
- "production_hold": true,
- "active_revision": 1,
- "current_issue": {
- "code": "string",
- "message": "string",
- "recovery_classification": "platform_retrying"
}
}
], - "current_issue": {
- "code": "string",
- "message": "string",
- "recovery_classification": "platform_retrying"
}
}
], - "current_issue": {
- "code": "string",
- "message": "string",
- "recovery_classification": "platform_retrying"
}, - "shipping_progress": "not_recorded",
- "shipments": [
- {
- "shipment_id": "string",
- "carrier": "string",
- "service": "string",
- "tracking_number": "string",
}
]
}
}Requires orders:read and returns only the authenticated client's order.
| external_order_id required | string (ExternalOrderId) [ 1 .. 100 ] characters ^[A-Za-z0-9][A-Za-z0-9._:/-]*$ Example: SYN-UPLOAD-ONE |
| X-Request-Id | string <= 100 characters |
| X-Request-Id | string Correlation identifier safe to provide to support. |
| success required | any Value: true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| request_id required | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
required | object (PublicOrder) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{- "success": true,
- "request_id": "req_01K0ROLLUP",
- "order": {
- "external_order_id": "SYN-ROLLUP-001",
- "submission_id": "sub_01K0SYNTHETIC900",
- "status": "action_required",
- "submitted_at": "2026-08-07T16:00:00Z",
- "updated_at": "2026-08-07T16:05:00Z",
- "pexagon_order_number": null,
- "artwork": {
- "total": 5,
- "ready": 2,
- "processing": 1,
- "failed": 2,
- "held": 2
}, - "lines": [
- {
- "external_line_item_id": "ready-line",
- "product_code": "SAMPLE-DUAL-LOCATION-01",
- "quantity": 1,
- "artwork_status": "ready",
- "production_hold": false,
- "assignments": [
- {
- "imprint_location_code": "front",
- "artwork_status": "ready",
- "production_hold": false,
- "active_revision": 1,
- "current_issue": null
}, - {
- "imprint_location_code": "back",
- "artwork_status": "ready",
- "production_hold": false,
- "active_revision": 1,
- "current_issue": null
}
], - "current_issue": null
}, - {
- "external_line_item_id": "processing-line",
- "product_code": "SAMPLE-DUAL-LOCATION-01",
- "quantity": 1,
- "artwork_status": "processing",
- "production_hold": false,
- "assignments": [
- {
- "imprint_location_code": "front",
- "artwork_status": "ready",
- "production_hold": false,
- "active_revision": 1,
- "current_issue": null
}, - {
- "imprint_location_code": "back",
- "artwork_status": "processing",
- "production_hold": false,
- "active_revision": null,
- "current_issue": null
}
], - "current_issue": null
}, - {
- "external_line_item_id": "failed-line",
- "product_code": "SAMPLE-DUAL-LOCATION-01",
- "quantity": 1,
- "artwork_status": "failed",
- "production_hold": false,
- "assignments": [
- {
- "imprint_location_code": "front",
- "artwork_status": "failed",
- "production_hold": false,
- "active_revision": null,
- "current_issue": null
}, - {
- "imprint_location_code": "back",
- "artwork_status": "processing",
- "production_hold": false,
- "active_revision": null,
- "current_issue": null
}
], - "current_issue": null
}, - {
- "external_line_item_id": "ready-held-line",
- "product_code": "SAMPLE-BOTTLE-01",
- "quantity": 1,
- "artwork_status": "ready",
- "production_hold": true,
- "assignments": [
- {
- "imprint_location_code": "wrap",
- "artwork_status": "ready",
- "production_hold": true,
- "active_revision": 2,
- "current_issue": null
}
], - "current_issue": null
}, - {
- "external_line_item_id": "failed-held-line",
- "product_code": "SAMPLE-BOTTLE-01",
- "quantity": 1,
- "artwork_status": "failed",
- "production_hold": true,
- "assignments": [
- {
- "imprint_location_code": "wrap",
- "artwork_status": "failed",
- "production_hold": true,
- "active_revision": 1,
- "current_issue": null
}
], - "current_issue": null
}
], - "current_issue": null,
- "shipping_progress": "not_recorded",
- "shipments": [ ]
}
}Future at-least-once event after real WooCommerce order creation.
| event_id required | string | ||||||
| event_type required | string Enum: "order.accepted" "order.rejected" "artwork.failed" "order.shipped" Value: "order.accepted" | ||||||
| api_version required | any Value: "v1" | ||||||
| created_at required | string <date-time> | ||||||
required | object | ||||||
| |||||||
{- "event_id": "string",
- "event_type": "order.accepted",
- "api_version": "v1",
- "created_at": "2019-08-24T14:15:22Z",
- "data": {
- "external_order_id": "SYN-UPLOAD-ONE",
- "pexagon_order_number": "string",
- "status": "accepted"
}
}Future at-least-once normalized shipment event.
| event_id required | string | ||||||||||||||||||
| event_type required | string Enum: "order.accepted" "order.rejected" "artwork.failed" "order.shipped" Value: "order.shipped" | ||||||||||||||||||
| api_version required | any Value: "v1" | ||||||||||||||||||
| created_at required | string <date-time> | ||||||||||||||||||
required | object | ||||||||||||||||||
| |||||||||||||||||||
{- "event_id": "string",
- "event_type": "order.shipped",
- "api_version": "v1",
- "created_at": "2019-08-24T14:15:22Z",
- "data": {
- "external_order_id": "SYN-UPLOAD-ONE",
- "pexagon_order_number": "string",
- "shipment": {
- "shipment_id": "string",
- "carrier": "string",
- "service": "string",
- "tracking_number": "string",
}
}
}