Skip to content
Docs menu

workspace

The signed-in caller's workspace (UI-API) — the activity feed (the audit log, filtered to what the caller could already see) and one cheap overview for the workspace rail and the Inbox header.

2 operations · 38 schemas

GET /v1/activity

The activity feed — what happened to what you can see

listActivity · scope key:read

The audit log as a feed a person can read, newest first (UI-API). A row is visible when the resource's own read rule already grants it to the caller — its owner user, a member of its owner org, or its creator (runs, rollouts, plans, coach sessions) — or when the caller took the action; a row about a repo is shown on that second ground only while the caller can still read the repo. Public repos grant nothing here: this is the caller's feed, not a public timeline. Visibility is part of the query, never a filter over a page, so nothing about a resource the caller cannot see reaches the page arithmetic — not even a count. summary is one sentence the UI can show verbatim; cost_usd is set only on the row where a cost was incurred (a finished run, a coach session, a planner decision, a closed endpoint session), so summing a page never counts a dollar twice. actor.kind says which credential wrote the row; actor.agent is planner only when a plan's planner took the action — an API key is reported as a key, whoever held it.

Parameters

listActivity parameters
NameInTypeDescription
actor_kindqueryActivityActorFilter

person (a web session), key (an API key), system (the hub on its own), or agent — rows a plan's planner took, whichever credential it acted as.

resource_typequeryActivityResourceType
sincequerystring (date-time)

Only rows at or after this instant (RFC 3339).

ownerqueryHandle

Only rows about resources owned by this handle (user or org). An unknown handle is an empty page, not a 404.

limitqueryinteger

default 20 · ≥ 1 · ≤ 100

Page size.

cursorquerystring

length ≤ 512

Opaque cursor from the previous page's next_cursor.

Responses

listActivity responses
StatusDescriptionBody
200

A page of activity, newest first.

ActivityPage
401

Missing or invalid credentials.

Problemapplication/problem+json
422

Request failed validation.

Problemapplication/problem+json

GET /v1/me/overview

Counts for the workspace rail and the Inbox header

getMyOverview · scope key:read

One cheap call (UI-API): the approval requests awaiting a person on devices the caller can see (the ten newest with their checks), active runs, running endpoints, active plans, devices online, and today's model spend (coach sessions + planner decisions since UTC midnight) with a sentence saying how it was computed. Every count is a query over the same visibility rule as the list endpoint it summarises, so each can be cross-checked against that list.

Responses

getMyOverview responses
StatusDescriptionBody
200

The caller's overview.

MyOverview
401

Missing or invalid credentials.

Problemapplication/problem+json

Schemas (38)

The schemas these operations reach before any other tag’s do. A type that links elsewhere is rendered on that tag’s page.

ActivityActorFilter

string

one of person · key · system · agent

listActivity's actor filter: the three ActivityActorKinds, plus agent — the rows a plan's planner took (actor.agent: planner) or an agent session's key wrote (actor.agent: agent, A1), whichever credential it acted as.

ActivityResourceType

string

one of repo · run · rollout · advice_session · device · approval_request · approval · endpoint · endpoint_session · plan · api_key · campaign · agent_session · trial · org

What a row is about. repo, run, rollout, advice_session (a coach call), device, approval_request, approval, endpoint, endpoint_session, plan, api_key, campaign (C3), agent_session (A1), trial (C4 — a real-robot trial or its session), org (O2 — an organization's profile and memberships).

ActivityPage

object

ActivityPage fields
FieldTypeDescription
itemsrequiredarray of Activity
next_cursorrequiredstring | null

MyOverview

object

MyOverview fields
FieldTypeDescription
generated_atrequiredstring (date-time)
viewerrequiredUserPublic

UI2 — the person this credential belongs to (a session's user, or a key's owner): what the workspace rail and the account button print, so a page needs no second call to getMe.

approvalsrequiredOverviewApprovals
runsrequiredOverviewJobs

Executed runs (worker or modal) that are queued or running. Imported runs never run and plans are counted under plans.

endpointsrequiredOverviewJobs

Endpoints queued for a server, or running.

plansrequiredOverviewPlans
rolloutsrequiredOverviewJobs

UI2 — sim-gate rollouts the caller can see, queued / running / total.

devicesrequiredOverviewDevices
keysrequiredOverviewKeys | null

UI2 — the caller's live API keys, counted; null for a key credential.

reposOverviewRepos

W2 — the caller's own repos by kind, for the rail's My models and My datasets.

model_spendrequiredModelSpend
campaignsOverviewCampaigns

C3 — what the rail prints beside Campaigns.

agentOverviewAgent

A1 — the caller's agent sessions, and those waiting on a person (a spend above the session's pre-approved budget).

trialsOverviewTrials

C4 — real-robot trials: how many candidates wait on a person's verdict (the Inbox's "needs your verdict" cards) and how many run.

Activity

object

One audit-log row, as a person reads it.

Activity fields
FieldTypeDescription
idrequiredId
created_atrequiredstring (date-time)
actionrequiredstring

The audit action (resource.verb, docs/API.md "Audit trail"), e.g. run.finish.

actorrequiredActivityActor
resourcerequiredActivityResource
summaryrequiredstring

length ≤ 400

One sentence, safe to show verbatim — who did what to what.

outcomestring | null

The state this action left its resource in, when it set one (queued, running, succeeded, failed, canceled, pending, approved, issued, denied, stopped, refused, degraded, recovered, open, closed, active, done, handed_back, budget_exhausted, expired, rejected, revoked); null for actions that change no state.

cost_usdnumber | null

USD the hub recorded for this action, set only where the cost was incurred: run.finish, coach.advice / coach.plan, plan.decision, endpoint.session_close. A closed session reads its CURRENT cost (the server's last report may re-price it).

pricedboolean | null

With cost_usd: false when the hub charged nothing for it (a self-hosted worker, an unpriced model) — zero means "not charged by the hub", not "free".

OverviewApprovals

object

OverviewApprovals fields
FieldTypeDescription
pendingrequiredinteger

Pending approval requests on devices the caller can see.

can_deciderequiredboolean

True for a signed-in session. An API key can never approve or deny (session-only), so for a key this is false and pending is what its person has to decide in the web app.

itemsrequiredarray of ApprovalRequest

items ≤ 10

The ten newest, each with device, model and checks.

OverviewJobs

object

OverviewJobs fields
FieldTypeDescription
queuedrequiredinteger
runningrequiredinteger
totalinteger

UI2 — every one the caller can see, whatever its status (for runs: imported and plan runs included; the same WHERE as an unfiltered listRuns). What the workspace rail prints beside the entry.

OverviewPlans

object

OverviewPlans fields
FieldTypeDescription
activerequiredinteger
waiting_on_approvalrequiredinteger

Active plans whose current approval request is still pending a person.

totalinteger

UI2 — every plan the caller can see, whatever its status.

OverviewDevices

object

OverviewDevices fields
FieldTypeDescription
totalrequiredinteger
onlinerequiredinteger

Devices whose driver posted a signed event (a heartbeat, started, …) within online_window_s. A driver that is only polling for approvals writes nothing, so the hub cannot see it and counts it offline.

runningrequiredinteger

Devices running an approval right now (started, not stopped, inside its window).

online_window_srequiredinteger

OverviewKeys

object

UI2 — the caller's API keys, counted. Present for a session only: a key learns nothing about its siblings, not even how many there are (listKeys is session-scoped for the same reason).

OverviewKeys fields
FieldTypeDescription
totalrequiredinteger

Keys the caller has not revoked.

OverviewRepos

object

W2 — the caller's own repositories by kind: every repo owned by the caller's user or by an org they belong to, public and private alike (the WHERE of listRepos?owner= for each of those handles, summed). What the workspace rail prints beside My models and My datasets; /settings/models and /settings/datasets list the same rows through listRepos.

OverviewRepos fields
FieldTypeDescription
robotsrequiredinteger
modelsrequiredinteger
datasetsrequiredinteger

ModelSpend

object

Model dollars since UTC midnight, over what the caller can see (UI-API).

ModelSpend fields
FieldTypeDescription
usdrequirednumber

coach_usd + plan_usd + agent_usd.

coach_usdrequirednumber
plan_usdrequirednumber
coach_sessionsrequiredinteger
plan_decisionsrequiredinteger

Planner decisions metered in the window, rejected ones included (they were paid for).

agent_usdnumber

A1 — agent sessions' model calls in the window (list price, from their ledger rows); the sandbox is not model spend.

agent_callsinteger

A1 — agent model calls metered in the window.

unpricedrequiredinteger

Sessions and decisions metered at $0 because their model has no list price.

sincerequiredstring (date-time)
untilrequiredstring (date-time)
basisrequiredstring

One sentence saying how the number was computed.

OverviewCampaigns

object

C3 — campaigns the caller can see; waiting of them have a round waiting on a decision.

OverviewCampaigns fields
FieldTypeDescription
totalrequiredinteger
activerequiredinteger
waitingrequiredinteger

OverviewAgent

object

A1 — the caller's agent sessions: how many are live, and the ones waiting on a person (their pending spend approvals, newest first, at most ten sessions).

OverviewAgent fields
FieldTypeDescription
liverequiredinteger

Sessions not yet ended.

pending_spend_requestsrequiredinteger

Spend requests waiting on a person across those sessions — one Inbox item each.

allowancerequiredAgentAllowance

The rail's "Agent, this month" box: the caller's own account's month-to-date agent spend against the free allowance.

runningrequiredinteger
waiting_on_yourequiredinteger
waiting_on_eventrequiredinteger
idlerequiredinteger
sleepinginteger

AG1 — sessions asleep (nothing pending, nothing billing).

totalrequiredinteger
waitingrequiredarray of OverviewAgentWaiting
pending_decisionsinteger

AG1 — decisions waiting on a person across the caller's sessions (plan, spend and shortlist; a handoff is the device consent request already counted in approvals). One Inbox item each; spend decisions are also pending_spend_requests.

decisionsarray of AgentDecision

AG1 — those decisions, newest first, at most ten (the Inbox's cards). Light: shortlist is left out (the candidates are read live and cost a gate-table read each — listAgentDecisions has them); approval and plan are included.

model_backendstring

one of available · unavailable · not_configured

P2 — whether the hub's model backend (the agent, the Coach, the planner) can answer right now, as this API process last learned it: not_configured — this deployment has no model backend; unavailable — the provider's last answer refused the hub's own account (no credit, a billing hold, a bad key, overloaded), and no call has succeeded since; available — otherwise, including before any call. Best effort: each API process learns on its own. The web's agent composer reads it so it does not offer "free" model turns that cannot be served.

OverviewTrials

object

C4 — real-robot trials the caller can see.

OverviewTrials fields
FieldTypeDescription
needs_verdictrequiredinteger
runningrequiredinteger
itemsrequiredarray of OverviewTrialItem

items ≤ 10

The newest trials that need a verdict — the Inbox's cards.

ActivityResource

object

ActivityResource fields
FieldTypeDescription
typerequiredActivityResourceType
idrequiredstring

The resource's id (repo_…, run_…, dreq_…, …).

labelrequiredstring

length ≤ 300

A display name: a repo's full name, a plan's task, a device's name, model → device for an approval, template · output repo for a run. A repo the caller can no longer read is never named in a row the caller sees only because they took the action.

ownerRepoOwner | null

The resource's owner (user or org), as recorded when the row was written.

parentActivityResourceRef | null

The resource a page is reached through, for resources without a page of their own: the device of an approval request or approval, the endpoint of an endpoint session, the run a coach session read.

AgentAllowance

object

The owner's free monthly allowance for agent model + sandbox spend (no payment system exists yet).

AgentAllowance fields
FieldTypeDescription
period_startrequiredstring (date-time)
resets_atrequiredstring (date-time)

The first of next month, UTC.

payment_methodrequiredstring

one of none

none — no payment system exists, so the allowance is the cap and nothing beyond it can be spent.

limit_usdrequirednumber
used_usdrequirednumber
remaining_usdrequirednumber
basisrequiredstring

One sentence saying how used_usd was computed.

OverviewAgentWaiting

object

A session waiting on a person — the Inbox's card.

OverviewAgentWaiting fields
FieldTypeDescription
session_idrequiredId
goalrequiredstring

length ≤ 300

approvalsrequiredarray of AgentApproval
sincerequiredstring (date-time)

AgentDecision

object

AG1 — one decision the session waits on or waited on, in one shape for the four kinds; the kind-specific part is plan, approval, shortlist or handoff. Every pending one is also counted and listed in MyOverview.agent (the Inbox).

AgentDecision fields
FieldTypeDescription
idrequiredId
session_idrequiredId
kindrequiredAgentDecisionKind
statusrequiredAgentDecisionStatus
titlerequiredstring

The card's title, e.g. "Spend · R5 · yaw", "Shortlist for the robot — pick up to 2 of 3".

sentencerequiredstring

What would happen, in one sentence (hub-generated from the call or the round).

whystring | null

Why it waits — e.g. "Outside the plan you approved and over the $3.00 per-run limit, so it waits for you." (hub-generated).

on_denystring | null

What happens if it is denied or left to expire.

proposalstring | null

The agent's own words for what it proposes, quoted as written.

budget_usdnumber | null

A spend — the session's compute budget when it was asked.

budget_after_usdnumber | null

A spend — what would stay of that budget if the call ran to its cap ("After it, $3.90 of $10.00 stays").

raise_to_usdnumber | null

A spend — the amount the second button offers as raise_budget_to ("Approve up to $8.40 for the rest of the session"): what is left of the session's budget before this call, at least the call's cap.

expires_atstring (date-time) | null (date-time)
created_atrequiredstring (date-time)
resolved_atstring (date-time) | null (date-time)
resolved_byUserPublic | null
resolved_viastring | null

one of person · key · device · expiry · session_end · superseded

outcomestring | null

What the answer was, in words (approved up to $X, denied with the note, shortlisted 1600 and 1900, …).

answer_viaAgentDecisionAnswer | null
linksAgentLinks | null

What the decision is about. P1: an approved spend whose held call then created a run names that run (run_id) — and, for a round, campaign, round_n and round_id — once the call ran, so a page puts the run's card under the card that asked for it without reading the tool result.

planAgentPlanRef | null
approvalAgentApproval | null
shortlistAgentShortlist | null
handoffAgentHandoff | null

OverviewTrialItem

object

OverviewTrialItem fields
FieldTypeDescription
idrequiredId
indexrequiredinteger
ofrequiredinteger
labelrequiredstring
statusrequiredTrialStatus
devicestring | null
campaignstring | null
roundinteger | null
tilt_max_degnumber | null
criteria_failedinteger
criteria_totalinteger
stopped_atstring (date-time) | null (date-time)

ActivityResourceRef

object

ActivityResourceRef fields
FieldTypeDescription
typerequiredActivityResourceType
idrequiredstring

AgentApproval

object

One spend the agent asked for above its session's budget: the tool call exactly as the model made it, and what the hub estimated it would cost.

AgentApproval fields
FieldTypeDescription
idrequiredId
session_idrequiredId
tool_use_idrequiredstring
toolrequiredstring

The tool the model called (submit_training, rollout_in_sim, …).

argumentsrequiredobject

The tool call's arguments as the model produced them; approving runs exactly these.

estimate_usdrequirednumber

The hub's estimate of what the call will cost.

cap_usdrequirednumber

The most it can cost ("at most"): the run's own budget_usd or the tier rate x its wall-clock cap, a plan's budget, or the flat figure the hub uses where it prices nothing. This is what the per-run limit and the budgets are held to.

ruleAgentSpendRule | null
budget_usdnumber | null

The session's pre-approved budget when the call was made.

budget_remaining_usdnumber | null
reasonrequiredstring

Why it needs a person — the estimate against what is left of the budget.

statusrequiredAgentApprovalStatus
requested_atrequiredstring (date-time)
resolved_atstring (date-time) | null (date-time)
resolved_byUserPublic | null
resolved_viastring | null

one of rule · person · key

rule (auto-approved), person (a web session) or key (the owner's API key).

notestring | null
expires_atstring (date-time) | null (date-time)

AG1 — when a pending spend stops waiting: the end of the session's window when it was asked (AGENT_DECISION_TTL_S, 24 h). Past it the approval reads expired and nothing runs.

decision_idstring | null

AG1 — the spend decision card that carries it.

AgentDecisionKind

string

one of plan · spend · shortlist · handoff

plan — approve the agent's plan (approveAgentPlan, session-only; reply in words to change it); spend — a compute call outside the approved plan (resolveAgentApproval); shortlist — pick up to 2 of a round's checkpoints for the real robot (decideRound {action: shortlist}, session-only); handoff — a device consent request, which links to the consent page and is never approved here.

AgentDecisionStatus

string

one of pending · resolved · expired · withdrawn

pending — waits for a person; resolved — a person (or, for a handoff, the device's consent decision) answered; expired — nobody answered by expires_at (a spend), nothing ran; withdrawn — the session ended, a newer plan replaced it, or the round moved on.

AgentDecisionAnswer

object

The operation that answers a decision; null for a handoff (the consent page does).

AgentDecisionAnswer fields
FieldTypeDescription
operation_idrequiredstring
methodrequiredstring

one of POST

pathrequiredstring

The API path with every id filled in.

AgentPlanRef

object

AgentPlanRef fields
FieldTypeDescription
idrequiredId
versionrequiredinteger
statusrequiredAgentPlanStatus
cap_usdrequirednumber
roundsrequiredinteger

How many rounds it lists.

AgentShortlist

object

The shortlist decision's content — the Shortlist board, read live from the hub's rows on every request.

AgentShortlist fields
FieldTypeDescription
roundrequiredRunRound
round_idstring | null
run_idstring | null
max_picksrequiredinteger

2 — the founder's "at most two checkpoints to the real robot".

picksrequiredarray of integer

The agent's picks, pre-checked.

whystring | null

The agent's reason for its picks, quoted as written.

candidatesrequiredarray of AgentShortlistCandidate
controlAgentShortlistControl | null
separatesboolean | null

Round.control.separates — false puts the shortlist behind a person's override (C3b).

separates_sentencestring | null
deviceAgentDeviceRef | null

The device the consent requests will be filed for (the agent's choice, else the only registered device that accepts the model's contract); null — none does, and none will be filed.

devicesarray of AgentDeviceRef

The owner's devices that accept the model's contract.

minutesrequiredinteger

The run window each consent request asks for.

scanrequiredobject
batteryrequiredstring
seedsrequiredinteger
executorstring | null
sentencerequiredstring

E.g. "the 20-seed band scan on your picks first (13 cells × 20 seeds with video), not billed".

answerobject | null

What the person shortlisted (decideRound), once answered.

candidatesarray of integer
notestring | null
byUserPublic | null
atstring (date-time)
followupAgentShortlistFollowup | null

AgentHandoff

object

A device consent request filed for a shortlisted checkpoint — a link to the consent page, never an approval here.

AgentHandoff fields
FieldTypeDescription
request_idrequiredId
consent_pathrequiredstring

/inbox/requests/{id} — where a person approves or denies it (M13).

statusrequiredApprovalRequestStatus
deviceAgentDeviceRef | null
model_repostring | null
stepinteger | null
minutesinteger | null

AgentSpendRule

object

Which rule judged a spending call, with the numbers: the per-run limit its cap was held to, the budget it had to fit (the campaign's inside a campaign, else the session's, else none), what that budget had already committed, and the worst case if this call runs to its cap.

AgentSpendRule fields
FieldTypeDescription
levelrequiredstring

one of workspace · campaign · plan · session_grant

workspace (the per-run limit and the session's own budget — since AG1 only a coach call is judged by it alone), campaign (C3b's campaign limits — no longer auto-approve a compute call since AG1, kept on old rows), plan (AG1: a compute call judged against the approved plan — inside it, it runs; outside it, a person decides whatever it costs; the sentence says which and, for a call outside it, how it compares with the per-run limit and the budget) or session_grant (AG1: inside a standing allowance a person granted with raise_budget_to).

in_planboolean | null

AG1 — for a compute call, whether the approved plan names it.

plan_idstring | null

AG1 — the approved plan the call was judged against.

plan_roundstring | null

AG1 — the plan round it is (its key), when it is one.

grant_usdnumber | null

AG1 — the standing allowance a person granted, when one is in force.

grant_remaining_usdnumber | null

AG1 — what was left of it before this call.

per_run_limit_usdrequirednumber
budget_usdnumber | null

The budget the call had to fit in; null when only the per-run limit applies.

committed_usdrequirednumber

What that budget had already committed (approved caps) before this call.

worst_case_usdrequirednumber

committed_usd + cap_usd — the most the budget stands to spend if this call runs to its cap.

campaign_idstring | null
withinrequiredboolean

True when the call was inside the rule (auto-approved).

sentencerequiredstring

One sentence for the card, e.g. "Inside Omni walk's rules: $20.00 budget, $3.00 per run."

AgentApprovalStatus

string

one of auto_approved · pending · approved · denied · canceled · expired

auto_approved — inside the rules (the per-run limit, and the session budget or the campaign's budget when there is one), so it ran without asking, and is still recorded and shown; pending — over them, waiting for a person; approved / denied — a person answered; canceled — withdrawn because the session ended before anyone answered; expired (AG1) — nobody answered by expires_at, so it did not run.

AgentPlanStatus

string

one of proposed · approved · edited · withdrawn

proposed — waiting for a person; approved — a person approved it (session-only), its rounds are the contract; edited — a newer version replaced it before anyone approved it; withdrawn — the session ended, or the agent withdrew it, before anyone approved it.

AgentShortlistCandidate

object

One column of the Shortlist board — a checkpoint of the round's run, as the hub measured it.

AgentShortlistCandidate fields
FieldTypeDescription
steprequiredinteger
pickrequiredboolean

The agent's pick (pre-checked); the person changes it.

verdictrequiredRoundVerdictValue
gatesrequiredarray of RoundGateResult

The round's locked gates at this step, measured.

gates_passedrequiredinteger
gates_totalrequiredinteger

Counted (locked) gates.

cells_passedinteger | null

The hub's band rule at this step, cells passing (the 13-cell strip's number).

cells_totalinteger | null
cellsarray of CheckpointGateCell
failing_cellsarray of string

The cells that FAIL the band at this step (the "two cells that mattered").

seedsinteger | null

Seeds behind the measurement (5 while training, 20 after the band scan).

sourcestring | null

one of scan · gate

mean_rewardnumber | null

The metrics line at this step (Train/mean_reward, else reward).

noise_stdnumber | null
lineagestring | null

E.g. "laika-omni-c2-700 · 700 → 1600, 900 into R4".

cost_to_step_usdnumber | null

What the run had cost when this checkpoint was published (published_at − claimed_at at its billed rate); null on an unpriced executor.

poster_urlstring (uri) | null (uri)
gate_rollout_idstring | null
renderAgentRenderRef | null

AgentShortlistControl

object

C3b's control beside the candidates — the checkpoint the round started from, judged by the same locked gates.

AgentShortlistControl fields
FieldTypeDescription
rolerequiredRoundControlRole
labelstring | null
run_idstring | null
stepinteger | null
model_repostring | null
statusrequiredRoundControlStatus
verdictRoundVerdictValue | null
gatesarray of RoundGateResult
gates_passedinteger | null
gates_totalinteger | null
cells_passedinteger | null
cells_totalinteger | null
cellsarray of CheckpointGateCell
mean_rewardnumber | null

AgentDeviceRef

object

AgentDeviceRef fields
FieldTypeDescription
idrequiredId
namerequiredstring

AgentShortlistFollowup

object

What happens after a person shortlists (the hub does it, not the model): the 20-seed scan on the picks first — or the round's own band scan, when it already measured them — then one device consent request per pick that still passes the round's locked gates, with the person's note as its reason.

AgentShortlistFollowup fields
FieldTypeDescription
staterequiredstring

one of scanning · filing · done · failed

scan_idstring | null
reused_round_scanboolean

True when the round's band scan already measured the picks, so no new scan was queued.

resultsrequiredarray of AgentShortlistResult
errorstring | null
updated_atstring (date-time) | null (date-time)

AgentRenderRef

object

The latest three-view render of a candidate's gate (renderRollout), with its videos once it finished.

AgentRenderRef fields
FieldTypeDescription
rollout_idrequiredId
statusrequiredJobStatus
matchesboolean | null

render_check.matches once it finished.

claimed_atstring (date-time) | null (date-time)
finished_atstring (date-time) | null (date-time)
video_urlsmap of string (uri)

Presigned 1-hour GETs of the rendered cell's views (side, front, feet), once it finished.

expected_snumber | null

P1 — how long a render takes on this render's executor, measured on this hub (RolloutRenderRef.expected_s, docs/API.md "A render's expected duration"); null before one has finished there. A page's "N min left" is claimed_at + expected_s − now.

expected_samplesinteger

≥ 0

P1 — how many finished renders expected_s is the median of.

AgentShortlistResult

object

AgentShortlistResult fields
FieldTypeDescription
steprequiredinteger
staterequiredstring

one of scanning · filed · not_filed

filed — a consent request exists (request_id); not_filed — reason says why (it failed the round's locked gates at the scan's seeds, no device accepts its contract, …).

verdictRoundVerdictValue | null

The step's verdict by the round's locked gates after the scan.

request_idstring | null
consent_pathstring | null
reasonstring | null