Matches in other apps
crew — the team ledger
mount /crew · base https://zpe.vc/crew · v1.0.0 · 4 operations · 4 write · 0 need no account · beta
archived: committed 2026-10-27, from 594e0791. Contract: https://zpe.vc/crew/_/api/v1/openapi.json
POST
/_/api/v1/pacts/{id}/accept
Accept a pact's terms, as the counterparty they name.
postPactsByIdAccept
Accept a pact's terms, as the counterparty they name.
Parameters
| name | in | required | type | notes |
|---|---|---|---|---|
id | path | yes | string | the pact to accept, as `pact.id` spells it |
Request body
None: this operation takes its arguments in the path and the query.
Responses
| status | meaning | body |
|---|---|---|
200 | The pact as it now stands. Accepting is idempotent for a reader and not for a writer: a second acceptance is a 409, never a second minute. | object |
303 | The page's own form post: redirects back to the ledger, where the pact now reads `accepted`. | object |
400 | The request could not be read | object |
401 | Nobody signed in. An acceptance is signed by a person, and a key names an account rather than a person. | object |
403 | The caller is not the counterparty this pact names, or holds no seat in this ledger, or is the ledger's owner — nobody accepts the terms they wrote. | object |
404 | No pact in this ledger holds that id. | object |
409 | That pact was already accepted, and a second acceptance is not a second history. | object |
429 | Too many requests | object |
Example
Accept a pact's terms, as the counterparty they name., with a token from the door.
curl -X POST 'https://zpe.vc/crew/_/api/v1/pacts/string/accept' \ -H 'Authorization: Bearer $ZPE_TOKEN'
{
"pact": {}
}The example is generated from the schema in the contract: the shape is the document's, the values are placeholders.
POST
/_/api/v1/clients
Store a client the agency pull found, or update the one already here.
postClients
Store a client the agency pull found, or update the one already here.
Parameters
No parameters.
Request body
None: this operation takes its arguments in the path and the query.
Responses
| status | meaning | body |
|---|---|---|
200 | A client the ledger already held: its name, contract reference, milestone and `synced_at` are rewritten, and `created_at` stays the minute the first sighting wrote. `conversationId` is written only when the body names it (null detaches); absent leaves the attached conversation alone. | object |
201 | A client this ledger did not hold. The agency's own id is the key, so the row a second pull sends lands on this one rather than beside it. | object |
400 | The body names no id, no name, or no contract reference — the three `clients.store()` refuses rather than fills in. | object |
401 | No key. The ingest is a machine call on the ledger's account; a browser session names a person, and a person is not a client's pull. | object |
403 | The key's account does not hold this ledger's owner seat. The agency clause licenses this material to the account that authenticated, and a key that could write into another account is the redistribution D11 refuses. | object |
404 | Nothing is here | object |
429 | Too many requests | object |
Example
Store a client the agency pull found, or update the one already here., with a token from the door.
curl -X POST 'https://zpe.vc/crew/_/api/v1/clients' \ -H 'Authorization: Bearer $ZPE_TOKEN'
{
"client": {}
}The example is generated from the schema in the contract: the shape is the document's, the values are placeholders.
POST
/_/api/v1/clients/{id}/messages
Remember what a client said, with the day its words stop being served.
postClientsByIdMessages
Remember what a client said, with the day its words stop being served.
Parameters
| name | in | required | type | notes |
|---|---|---|---|---|
id | path | yes | string | the client the words are about, as `client.id` spells it |
Request body
None: this operation takes its arguments in the path and the query.
Responses
| status | meaning | body |
|---|---|---|
201 | The body as it was written: the minute it was said, and the minute its words stop being served. | object |
400 | No client in this ledger holds that id, the body has no words, the day it names is outside `(the minute it was said, thirty days after it]`, or a body with no day of its own names no open item (`item`, `unknown-item`, `closed`) — each one the module's own refusal word. | object |
401 | No key. A body is written for the ledger's account, and a cookie names a person. | object |
403 | The key's account does not hold this ledger's owner seat, so there is no client list here for the words to hang on. | object |
404 | Nothing is here | object |
409 | The item the words name was confirmed by the other side, so there is no open delivery for them to live on. | object |
429 | Too many requests | object |
Example
Remember what a client said, with the day its words stop being served., with a token from the door.
curl -X POST 'https://zpe.vc/crew/_/api/v1/clients/string/messages' \ -H 'Authorization: Bearer $ZPE_TOKEN'
{
"message": {}
}The example is generated from the schema in the contract: the shape is the document's, the values are placeholders.
POST
/_/api/v1/events
Push one line of the local ledger's history, under the key that makes a second push free.
postEvents
Push one line of the local ledger's history, under the key that makes a second push free.
Parameters
No parameters.
Request body
None: this operation takes its arguments in the path and the query.
Responses
| status | meaning | body |
|---|---|---|
200 | That key was already here: nothing was written, and the row keeps the fields the first push sent — a repeat key whose fields moved is still not a second line of history. | object |
201 | A line this ledger did not hold. The caller's `idempotencyKey` is the local row's own uid, so a second push of the same row lands here rather than beside it. | object |
400 | A body this ingest refuses: no `idempotencyKey`, no kind, no subject, no artifact, an `at` that is not whole epoch milliseconds, a minute before 1970, or one more than five minutes ahead of this app's clock. | object |
401 | No key. The push is a machine call on the ledger's account, and a cookie names a person rather than a collector. | object |
403 | The key's account does not hold this ledger's owner seat, so there is no history here for the push to write into. | object |
404 | Nothing is here | object |
429 | Too many requests | object |
Example
Push one line of the local ledger's history, under the key that makes a second push free., with a token from the door.
curl -X POST 'https://zpe.vc/crew/_/api/v1/events' \ -H 'Authorization: Bearer $ZPE_TOKEN'
{
"event": {}
}The example is generated from the schema in the contract: the shape is the document's, the values are placeholders.