Skip to content

Real vs. simulated

Partifact mirrors the shape of a real automotive parts-procurement API. This page is the one place that says exactly where the mirror is faithful, where it simplifies, and where it proposes something the original contract does not have. When another page touches one of these boundaries, it links here.

  • The wire convention: RPC over POST, date-versioned paths, dotted method names.
  • Two-header authentication on every call, and the unauthenticated install handshake that mints credentials.
  • The error model: each method declares a type-tagged union, and the variant object is the response body. The 401 / 403 / 404 distinction preserves the same privacy-scoping behaviour as the original: a cross-organisation read is hidden, not denied.
  • Webhooks: the 8-field envelope, HMAC-SHA256 signing, the 5-minute replay window.
  • The procurement lifecycle through order_confirmed, which is where the public contract ends.
  • The basket carries no currency field. Currency is a procurement-level concept and first appears on the procurement. An integrator who reads a currency off a basket offer is inventing it.

Added for the demo, beyond the public contract

Section titled “Added for the demo, beyond the public contract”

The public lifecycle terminates at order_confirmed. So that the tests can run end to end, the sandbox adds two steps past that point: placing the procurement and reading the reconciled invoice. They are not part of the public contract and exist only to let the demo complete a full loop.

The boundary is labelled at runtime, not just in prose: the MCP tools return is_extension: true and the HTTP responses carry x_extension: true, so neither a reader nor an agent can mistake the added steps for the real contract.

AreaWhat is simplifiedWhy
OAuthNo external authorization server, no PKCE, no token refresh or expiry clock. Grant values are seeded fixtures. The access code is genuinely single-use (reuse returns invalid_access_code); the _15m in its name is a fixture label, not an enforced window.The demo runs end to end with nothing external to stand up. The install contract and its error model are intact.
Supplier seedEach sandbox holds one confirmable supplier, so only orders placed with that supplier can be confirmed. The tools say so.Keeps the two-party protocol drivable by a single agent.
Process modelIn single-agent runs, the supplier-confirm step and webhook delivery are collapsed into one process. Envelopes and the state machine are unchanged.Same reason.
BackendThe production stack behind the original API is not reproduced in any form. Partifact reproduces the contract surface only.Faking infrastructure would add nothing to the questions being tested.

The wire contract keeps its original header names, including Partly-Integration-ID and the partly-hmac-sha256 signature header. They are part of the protocol shape being mirrored; renaming them would make the mock unfaithful to the contract it reproduces. All credential values (partifact_…) are Partifact’s own.

The tests surfaced three real defects in the sandbox (a webhook-secret provisioning gap, a lost-write race, a crash on overlapping confirms). They are documented with The numbers, and the operator test fed three further fixes back. None have been silently patched out of the published results.