Endpoints
Partner API endpoint map: the live RFQ contract and the fail-closed estimate and order capabilities.
Endpoints
This page provides a human-readable map of the current Partner API routes. The machine-readable
source of truth remains /docs/api/openapi.yaml.
Base URL
https://api.nowtoprint.com/api/v1
Estimate
| Method | Path | Purpose |
|---|---|---|
POST | /api/v1/estimate | Auth then 503 PARTNER_ESTIMATE_CAPABILITY_UNAVAILABLE |
RFQs
RFQ create and read are live and frozen under the marketplace-partner-api.v1 contract,
published at /api/v1/marketplace/openapi.json.
| Method | Path | Purpose |
|---|---|---|
POST | /api/v1/rfq | Open a request for quotes (rfq:create) |
GET | /api/v1/rfq?id= | Read one RFQ owned by your organization (rfq:read) |
GET | /api/v1/rfq/{id}/quotes | Read the supplier quotes that RFQ received (quotes:read) |
Three things this contract deliberately does not do:
- It does not derive a catalog product from your free-text category.
catalogProductUidis required; when its published projection cannot be resolved the write is refused with503 PARTNER_RFQ_CATALOG_CONTEXT_UNAVAILABLE. That is a readiness state for that product, not a permanent capability gap.categoryis also required and names the buyer-selected Marketplace presentation group. The server validates that group against the L2 leaf resolved from the same catalog projection; a mismatch is rejected rather than silently rewritten. - It does not list RFQs. Pass
?id=. A missing RFQ and an RFQ belonging to another organization return the same404, so an id cannot be probed for existence. - It does not accept quotes or place orders. Those require a NowToPrint account and a human action, and are not part of v1.
Quote acceptance and order routes remain Launch-disabled (HTTP 503). Treat any route listed in
neither /docs/api/openapi.yaml nor the live contract above as
unavailable for public client generation.
Quote and order flow boundaries
Order and batch capabilities are launch-disabled and remain fail-closed boundaries. They return
PARTNER_ORDER_CAPABILITY_UNAVAILABLE or PARTNER_BATCH_ORDER_CAPABILITY_UNAVAILABLE
with RFC 9457 503 after auth and permission checks. No order or batch item is created, listed, or
attempted; these non-public routes are not advertised here.
Preflight from Partner API
| Method | Path | Purpose |
|---|---|---|
POST | /api/v1/preflight | Submit a file for commercial-side preflight analysis |
Use the dedicated preflight contract from
/docs/api/preflight-openapi.yaml when you need the queued v3
validation surface directly.
Webhooks
Webhook management and event delivery are not public-current production enablements for every
Partner API key. The /api/v1/webhooks management route is a private-beta control-plane surface
that requires an active registry key with webhooks:manage; quote/order event delivery also depends
on contract, entitlement, and rollout state.
Master Data
Master Data is internal-only for external partners unless a private-beta contract and rollout explicitly enable a sanitized read projection. External GA is not enabled. Public Partner API access does not currently include externally enabled Master Data data-product endpoints, partner reads, or canonical write authority.
Master Data external-dark
Do not treat Master Data contract IDs or API key records as live public endpoints. They stay
runtime-dark for external partners until route exposure, authorization, audit, quota, onboarding,
legal controls, certification controls, and production evidence are complete. Public/partner
routes cannot write canonical L2 truth and must return sanitized projections without private
payload fields. Catalog projection data-products also pass the @nowtoprint/catalog positive
allowlist and contract-shape guard before quota reservation or response serialization, so
sanitized optionPolicy.*[].sourceRef refs can expose only collection/id/version/role, and
unexpected metadata fields, ref paths, signed URLs, Firestore paths, cost, margin, billing, and
private evidence fail closed.
Request guidance
- use bearer auth for public Partner OpenAPI requests
- send
Idempotency-Keyon metered reads or writes that may be retried;X-Idempotency-Keyremains accepted for older clients. Keep the value 160 characters or shorter; longer values are rejected, not truncated - live RFQ create reserves the transactional daily quota only after catalog context and its L2 leaf resolve. An unavailable product does not consume quota; repeated identical requests reuse the durable reservation receipt. Disabled estimate/order capabilities do not consume quota
- prefer webhooks only for approved event-delivery pilots; do not assume webhook availability from key format alone
Related docs
War dieser Artikel hilfreich?
Verwandte Artikel
Last updated on