Overview
SAAVI API is the buyer-facing API surface for a supplier tenant. Enterprise buyers submit purchase orders, look up status, and receive acknowledgements. Accepted POs are promoted into the downstream supplier system via the SAAVI OrderFlow bridge.
The API is REST/JSON over HTTPS, uses OAuth 2.0 client credentials, and enforces per-request idempotency and correlation. All endpoints are versioned under/api/supplier/v1.
Getting Started
- Request onboarding via your SAAVI account manager.
- Buyer profile, tenant map, and adapter configuration are provisioned for you.
- Receive your client credentials and tenant identifiers.
- Integrate against the base URL using the examples below.
- Escalate via the standard SAAVI support path for reason-code triage.
Authentication
Buyer-facing auth uses OAuth 2.0 client credentials issuing short-lived bearer tokens (RS256, standard iss/aud/scopes/exp/jti). All state-changing calls requireIdempotency-Key and echoX-Correlation-Id.
Internal service-to-service calls use a separate JWT verified server-side. No client-side secrets are ever required.
Environments
Two logical environments: sandbox and production. Both are served from https://api.saavi.com.au and selected via theenvironment field on the request payload and the credentials issued to your client.
Submit PO
POST /purchase-orders validates the canonical PO, applies mappings, and submits it downstream via the OrderFlow bridge.
curl -X POST https://api.saavi.com.au/api/supplier/v1/purchase-orders \
-H "Authorization: Bearer <TOKEN>" \
-H "Idempotency-Key: <UUID>" \
-H "X-Correlation-Id: <UUID>" \
-H "Content-Type: application/json" \
-d '{"buyerPoNumber":"PO-1001","environment":"production","lines":[{"lineNumber":1,"buyerSku":"SKU-A","quantity":2,"uom":"EA"}]}'Status API
GET /purchase-orders/{supplierPoId} returns the buyer-safe status plus latest ACK id and reason code. Never leaks internal tenant or system details.
Idempotency
Idempotency-Key is required on all writes. Same key + same payload hash returns the stored response. Same key + different payload returns409 idempotency_conflict. TTL 24h.
Errors & Reason Codes
Buyer-safe reason codes emitted across the surface:
accepted_for_processingpending_mapping_reviewinvalid_customer_mappinginvalid_ship_to_mappinginvalid_sku_mappinginvalid_uom_mappingduplicate_poidempotency_conflicttenant_mapping_errorauth_failedmissing_scopetoken_expiredorderflow_rejectedsupplier_system_unavailableunknown_processing_error
Webhooks & Events
Register HTTPS endpoints to receive event callbacks for PO lifecycle transitions. Event names, payload shapes, and retry policy are documented below.
Timelines & Sequences
Sequence diagrams for onboarding, PO submission, certification, and error/retry flows.
API Reference (OpenAPI)
Examples & Collections
Changelog
- 1.0.9 — Latest published version. Developer portal, OpenAPI v1, supplier intake, status API, webhooks, and OrderFlow bridge available at
https://api.saavi.com.au.
