RoboLedger: Ledger & Events

Accept Suggestions

Take the suggestion on every open bank line the filters select, oldest first: each is classified to its suggested_element_id through the same update a single line goes through, and posted too with commit: true. Select by source, agent_id, suggestion_source (agent_default for the learned ones), a date range, or explicit event_ids from a multi-select. A line it cannot take — no suggestion to take, already classified or posted, a closed month, a choice the handler refuses — comes back skipped with the reason, never forced. dry_run: true reports the counts without writing; limit bounds a call and truncated says more matched.

Idempotency: supply an Idempotency-Key header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.

post/extensions/roboledger/{graph_id}/operations/accept-suggestions

Request

  • Base URL: https://api.robosystems.ai (the document declares no server; this is the origin it was published from)
  • URL: https://api.robosystems.ai/extensions/roboledger/{graph_id}/operations/accept-suggestions
  • Auth: one of:
    • API key in header X-API-Key
    • HTTP bearer

Path parameters

graph_idstring required

Headers

Idempotency-Keystring nullable

Request body

entity_idstring nullable

The entity whose inbox to act on. Omit for the group parent.

event_idsstring[] nullable

Explicit lines, as from the inbox's multi-select; each is answered, even one that cannot be taken. The other filters still narrow them.

sourcestring nullable

Only lines from this feed (plaid, mercury).

agent_idstring nullable

Only one counterparty's lines.

suggestion_sourcestring nullable

Only lines whose suggestion came from here: agent_default (the counterparty's learned default), tier0 (the bank's category) or ai.

occurred_fromstring date nullable

Only lines dated on or after this day.

occurred_tostring date nullable

Only lines dated on or before this day.

commitboolean

Post each taken line as well (captured → committed). Off, the lines are classified and wait for a person to post them.

limitinteger

At most this many lines per call, oldest first; truncated in the response says whether more matched.

dry_runboolean

Report what each line would do without writing. A closed month is found only when a line actually posts, so a real run can still skip one a dry run counted.

Response

Successful Response

operationstring required

Kebab-case operation name

operationIdstring required

op_-prefixed ULID for audit and SSE correlation

status'completed' | 'pending' | 'failed' required

Operation lifecycle state

atstring required

ISO-8601 UTC timestamp

createdBystring nullable

User ID that initiated the operation

idempotentReplayboolean

True when this envelope came from the idempotency cache — the underlying command did not execute again. False on fresh executions.

Changes

No recorded changes to this operation across all 1 revision of this API.