Submit a Draft for review (Draft → Submitted)
POST/api/v1/products/:id/submit
Required scope: dpp:submit. A WRITE (HMAC + Idempotency-Key), bodyless.
Runs the publish gate; on failure returns 422 SUBMIT_BLOCKED with the
gap list. Can only ever set status to Submitted — never Approved or
Published (structural firewall; the human-publish step stays in the UI).
Request
Responses
- 200
- 401
- 403
- 404
- 422
- 429
- 503
Submitted for review
401 — INVALID_SIGNATURE or SIGNING_NOT_CONFIGURED (or bearer auth failure).
403 — missing scope (FORBIDDEN_SCOPE) or module (FORBIDDEN_MODULE).
404 — not found OR owned by another tenant (NOT_FOUND; IDOR-safe).
SUBMIT_BLOCKED — compliance gaps block submission (the response
error.missingFields lists them); or SUBMIT_REJECTED — the entity
can't be submitted (wrong status, demo product).
429 — RATE_LIMITED (per-key limit, reads and writes alike; fails closed,
so a limiter outage also returns 429). A limiter-down 429 is deliberately
indistinguishable from a quota 429. Carries Retry-After (seconds).
Response Headers
Seconds to wait before retrying (429 only).
Per-minute request ceiling for this key's tier.
Requests left in the current window (floored at 0).
Seconds until the window resets.
503 — the API is not enabled on this environment (FEATURE_DISABLED).