Objects

The running jobjob_7Hq2 · delivered · document.fr-CA.pdf · $49.00 charged

Every prefixed id a brand hands out, what it names and the fields it carries, then each live object as a real run served it.

16 objects. Every id a brand hands out starts with its object's prefix. Every object carries the same envelope, and a yes marks each envelope field it carries.

PrefixObjectWhat it isidobjectlivemodemetadataExplained in
job_joba jobyesyesyesyes—
stp_stepa step run on a jobyesyes———
tsk_taska Task: a role step a Pool fills, at a fee fixed at post, open, held, claimed and doneyesyesyes—Tasks: offered, never assigned, The packet
ask_askan ask: a party acts through its hosted, single-use linkyesyesyes—Ask the buyer, 'Asks: a ceremony without an account'
sbj_subjecta subject: what outlives the job, keyed by an input or a receipt, with its jobs, its history, its kept facts, its periods and who is of recordyesyesyes—Subjects, Of record
clk_clocka clock: a date the world sets on a job or its subject, who answers for it, its rungs, what moves it and the owner's choice at the end. Its owner acknowledges it, satisfies it on evidence and chooses at its dateyesyesyes—Clocks
msg_messagea message in a job's thread: who said it, what it answers, its status (sent, held, adopted, declined), and its words, which the client readsyesyesyes——
sbn_subscriptiona subscription: standing work charged once per cycle, its schedule and events minting jobs that share its subject and policy, and its allowances used and included, reset at renewal. sbn_, not sub_, so it never reads as a subject (sbj_)yesyesyesyesSubscriptions, Schedules and triggers
evt_eventan event: one record fact in the brand's ordered feed, with its seq, as its audience sees ityesyesyesyes—
wh_watcha watch: a webhook endpoint, with its whsec_ secret, its events and its deliveriesyesyesyes——
mbr_membera member: a person in a Pool, their application, what the verifier wrote and their availability; never their ledgeryesyesyesyes—
po_payouta payout: a member's pay leaving for their account on the Pool's scheduleyesyesyesyes—
ch_chargea charge: the buyer's payment for a job, held until its release fact, then capturedyesyesyesyes—
rcp_receiptan outside receipt: a submission's status, codes, number and fileyesyesyes—File it somewhere, Sending to outside systems
dlg_delegated_keya delegated key: a party's grant to an agent, scoped by Service and timeyesyesyes——
tc_test_clocka test clock: the time every job on it reads, frozen until advanced, only ever forwardyesyesyes—On a test clock
tmr_timera timer: one kind of time, owed once, with its key, its state, owed and fired times, attempt, wakes and the version it was armed underyesyesyes—Every timer is on the record

Each object: its fields, then the object as a brand serves it. A field marked ? can be left out.

The envelope

What these fields mean, on every object that carries them:

FieldSays
idIts id, starting with its object’s prefix.
objectThe object’s name, such as clock: what an agent dispatches on.
livemodetrue for an object a live key made, false for a test key's.
createdWhen it was made, an ISO 8601 instant.
simulatedtrue: every answer in the sandbox says so.

job

The canonical job, mid-flight and as a buyer reads it: waiting, on signature, its payment held. Each of its 4 steps is a step object.

FieldTypeSays
idJobId—
object'job'—
createdstringWhen it was ordered.
livemodebooleanFalse on localhost and with a test key: no real money moves.
simulatedtrueEvery answer in the sandbox says so.
servicestring—

The status narrows the rest: waiting adds on and waiting, delivered and accepted add output and final_at, canceled adds reason, and ended adds end and output. A buyer never reads record: their surfaces strip it, and expand[]=timeline adds timeline.

As served · magic values: none
$ curl http://localhost:8787/jobs/job_7Hq3   # input, price and next left out; a buyer never reads the record
{
  "id": "job_7Hq3",

step

A step run on a job.

FieldTypeSays
idstp_${number}—
object'step'—
stepstring—
bystringai, code, url, service, or a person's role.
review?Review—
lenses?number—

task

A Task: a role step a Pool fills, at a fee fixed at post, open, held, claimed and done.

FieldTypeSays
idTskId—
object'task'—
livemodefalse—
poolstring—
rolestring—
statusTaskStatus—

A member reads a Task as its teaser until it is theirs: fields holds only what the Pool’s sees.teaser names, never a party. The sheet, the packet and the owner’s read are the same Task with more: The packet below, and GET /owner/tasks/:id.

As served · magic values: applicant.email = signs@example.test, member = mbr_eligible
→ GET /reviews/tsk_7Hq2   # as mbr_eligible: the teaser
{
  "id": "tsk_7Hq2",

ask

An ask: a party acts through its hosted, single-use link.

FieldTypeSays
idAskId—
object'ask'—
jobJobId—
stepstring—
toAskAct—
partyAsked—
As served · magic values: none
$ curl http://localhost:8787/asks/ask_7Hq2
{
  "id": "ask_7Hq2",

subject

A subject: what outlives the job, keyed by an input or a receipt, with its jobs, its history, its kept facts, its periods and who is of record.

FieldTypeSays
idSbjId—
object'subject'—
livemodefalse—
kindstringWhat it is, in the Service's words: its subject.kind, such as 'taxpayer'.
key{ field: string; value: string }The input or receipt field that names it, and its value: { field: 'ein', value: '12-3456789' }.
createdstring—
As served · magic values: none
→ GET /subjects/sbj_7Hq2
{
  "id": "sbj_7Hq2",

clock

A clock: a date the world sets on a job or its subject, who answers for it, its rungs, what moves it and the owner's choice at the end. Its owner acknowledges it, satisfies it on evidence and chooses at its date.

FieldTypeSays
idClkId—
object'clock'—
livemodefalse—
namestringIts key under the Service's clocks, such as file.
servicestringThe id of the Service whose clocks declare it.
jobJobIdThe job that opened it, or the last one to move or satisfy it.
As served · magic values: none
$ npx services.dev clocks get clk_7Hq2 --json
{
  "id": "clk_7Hq2",

subscription

A subscription: standing work charged once per cycle, its schedule and events minting jobs that share its subject and policy, and its allowances used and included, reset at renewal.

FieldTypeSays
idSubId—
object'subscription'—
livemodefalse—
servicestringThe id of the Service ordered, whose price has every.
statusSubscriptionStatusactive; canceling once canceled, minting until its paid cycle ends; then canceled.
subjectSbjId | nullThe subject every minted job shares, sbj_…, or null.
As served · magic values: none
$ curl http://localhost:8787/subscriptions/sbn_7Hq2
{
  "id": "sbn_7Hq2",

event

An event: one record fact in the brand's ordered feed, with its seq, as its audience sees it.

FieldTypeSays
idEvtId—
object'event'—
seqnumberIts place in the brand's feed: every event has a higher seq than the one before.
typeT—
createdstring—
jobJobId | null—
As served · magic values: none
$ npx services.dev events list after=0 limit=2
{
  "type": "OK",

watch

A watch: a webhook endpoint, with its whsec_ secret, its events and its deliveries.

FieldTypeSays
idWhId—
object'watch'—
urlstring—
eventsreadonly string[]Event names, or * for every one the buyer receives.
status'enabled'—
secret?Secret—
As served · magic values: watch.url = https://hooks.example.test/lingua
$ npx services.dev watches create https://hooks.example.test/lingua events=job.delivered
{
  "id": "wh_1rKV5VS8V3",

member

A member: a person in a Pool, their application, what the verifier wrote and their availability; never their ledger.

FieldTypeSays
idMbrId—
object'member'—
livemodefalse—
poolstring—
emailstring—
join{ step: number; of: number; next: string[]; done: boolean }The /join funnel: the step reached, of how many, the fields the next one asks, and whether it's done.

verified is the verifier’s latest write, read against the clock now: each write replaces the last, and fresh turns false past the Pool’s fresh. Verify a member walks it.

As served · magic values: none
→ POST /attorneys/join {"email":"grace@hopper.example","answers":{"name":"Grace Hopper","credential":"patent agent","number":"71,234","regions":["US-CA"],"areas":["patents"],"hours":10,"turnaround":"24h","min_fee":120}}   # the applicant, in one call
{
  "id": "mbr_7Hq2",

receipt

An outside receipt: a submission's status, codes, number and file.

FieldTypeSays
idRcpId—
object'receipt'—
jobJobId—
stepstring—
tostringThe outside system, by the name the step gives it.
atstringWhen it's filed. A repair resubmitted inside perfect keeps the first submission's time.
As served · magic values: none (metadata.sandbox.outside defaults to ack)
$ curl -s http://localhost:8787/jobs/job_7Hq2 | jq '.receipts[0]'
{
  "id": "rcp_7Hq2",

test_clock

A test clock: the time every job on it reads, frozen until advanced, only ever forward. Moving one backward answers 409 test_clock_backward, and deleting one voids every job on it.

FieldTypeSays
idTcId—
object'test_clock'—
frozen_atstringThe time the clock reads.
status'ready' | 'advancing'advancing while an advance runs, ready once every timer owed by then has fired, with test_clock.ready on the feed. A second advance waits for it to finish, answered 409 clock_advancing.
advancing_to?stringWhere a running advance is going.
default?trueThe dev server's own clock: it follows the wall clock, ahead by its advances. Every job not on another clock is on it.

Objects a call answers with that carry no id of their own: what a member reads and signs, what the gate freezes, what a buyer is offered, and where a refusal’s rule sits.

packet

What a member reads once they claimed and cleared a Task, and what their attestation binds: the AI’s artifacts with their versions and what changed, the review reports, the client’s answers, the checklist, the record, the signals, the clock and the hash.

FieldType
objectstring
taskstring
jobstring
servicestring
stepstring
actstring
summarystring
inputobject
sheetobject
artifactslist
reviewslist
answerslist
checklistlist
stampsboolean
recordstring
signalslist
clockobject
hashstring
simulatedboolean
As served · magic values: applicant.email = signs@example.test, member = mbr_eligible
→ GET /reviews/tsk_7Hq2/packet   # as mbr_eligible: the packet
{
  "object": "packet",

Explained in The packet, What a person can do.

attestation

What the gate freezes on the record when a person attests: who, the credential the verifier holds for them, the region, the hash of what they signed, the rules version the job pinned, and the checklist they affirmed.

FieldTypeSays
memberstring; credential: string; region: string | null; hash: Hash; rules: string; fields?: readonly string[]; affirmed?: readonly string[]—
reservation?{ path: string; sha256: Hash }Attested, qualified: the reservation the member wrote, kept as its own file, which travels with the output.

Explained in What a person can do, Rules: how a Service meets licensing by design.

offer

A buyer’s answer when the price is over their max or their key’s cap: the price, its sentence and terms, and the exact next call.

FieldTypeSays
type'OFFER'—
object'offer'—
servicestring—
titlestring—
price{ usd: number; approved_usd?: number; sentence: string }—
etaWithin—
As served · magic values: none
$ curl -X POST http://localhost:8787/jobs -H 'content-type: application/json' -d '{"service":"certified-translation","document":{"url":"https://example.com/lease.pdf","name":"lease.pdf"},"to":"fr","country":"FR","max_usd":189,"key":"lease-fr-3"}'
← 402 · {
  "type": "OFFER",

Explained in 'Answers: OK, EMPTY, OFFER, BLOCKED'.

rule_ref

Where a refusal’s rule sits: the rules table’s version, the row, the position counsel gives for it, and what the row cites.

FieldType
versionstring
atstring
positionstring
cite?readonly string[]
As served · magic values: none
→ POST /matters {"service":"litigate","max_usd":500,"key":"sue-initech"}
{
  "type": "BLOCKED",

Explained in Rules: how a Service meets licensing by design, Refusals and cures.