Skip to main content
You usually do not write a pack by hand. pikopod ships eleven archetypes, and scenario list shows which of them your API supports, with the reason for each that it does not.

The eleven

Each archetype declares roles, and each role names the facts an operation must have in the spec to fill it.

What each one runs

Every archetype expands into ordinary steps against the operations it bound to. Run one with its id, and several at once:

Two subjects

Most archetypes assert on the sandbox: what it answered. Two also assert on the client: duplicate_delivery counts what your handler received, and rate_limit_backoff and retry_storm verify the order and spacing of what your code sent. When you run these as a mode against your own application, the request journal is what those claims are checked against.

When one does not bind

It says why, and the answer is real: a read-only API has no duplicate-delivery story, and a spec that declares no 4xx cannot support invalid_request. See Binding for the reasons and for asserting a fact with --bind.

On a real spec

Every example in these docs uses a fictional examplepay. On a large public payments spec with hundreds of operations, eight of the eleven bind and three refuse, one of them because the spec declares no 4xx response on any of its POST operations: errors go through default. That is the doctrine working on somebody else’s real spec, and it is checkable with jq.