StabisoDocs

API reference

Autopilot

Operation Summary Scope Idempotency-Key
GET /v1/autopilot/passes/{pass_id} Get an Autopilot pass read
POST /v1/autopilot/questions/{question_id}/answer Answer a question of Autopilot draft required
GET /v1/entities/{entity}/autopilot Get what Autopilot keeps and what waits for a person read
GET /v1/entities/{entity}/autopilot/passes List Autopilot's passes read
PUT /v1/entities/{entity}/autopilot/{outcome} Switch an outcome of Autopilot on or off draft
POST /v1/entities/{entity}/autopilot/{outcome}/passes Run a pass of an outcome now draft
POST /v1/entities/{entity}/autopilot/{outcome}/passes/stream Run a pass of an outcome now, with its progress draft

GET /v1/autopilot/passes/{pass_id}

Get an Autopilot pass

What the pass did step by step: what was open, what the rules settled, each item the AI worked on with the tools it called and whether the outcome's check found it settled, what it asked, and the steps it left a person.

Required scope read (admin implies every scope)
Operation id get_autopilot_pass_v1_autopilot_passes__pass_id__get

Parameters

In Name Type Required Description
path pass_id string (uuid) yes Id (uuid) of the pass.

Example request

curl "$ERP_URL/v1/autopilot/passes/{pass_id}" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK PassOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "entity": "string",
  "outcome": "string",
  "trigger": "daily",
  "reason": "string",
  "acting_for": "string",
  "run_on": "2026-09-21",
  "status": "done",
  "open_before": 1,
  "open_after": 1,
  "by_rules": 1,
  "by_ai": 1,
  "ai_items": 1,
  "log": [
    {
      "step": "check",
      "text": "string",
      "count": 1,
      "kind": "string",
      "item": "string",
      "tools": [
        null
      ],
      "settled": true
    }
  ],
  "handoffs": [
    {
      "kind": "string",
      "title": "string",
      "path": "string",
      "ref": "string",
      "count": 1,
      "due": "2026-09-21"
    }
  ],
  "questions": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "outcome": "string",
      "item_ref": "string",
      "item_title": "string",
      "question": "string",
      "status": "answered",
      "answer": "string",
      "answered_by": "string",
      "answered_at": "2026-09-21T09:30:00Z",
      "created_at": "2026-09-21T09:30:00Z",
      "pass_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
    }
  ],
  "model": "string",
  "error": "string",
  "started_at": "2026-09-21T09:30:00Z",
  "finished_at": "2026-09-21T09:30:00Z"
}

POST /v1/autopilot/questions/{question_id}/answer

Answer a question of Autopilot

The answer goes to the AI with the item in the next pass, which comes soon. 409 autopilot_question_closed for a question already answered or dropped. Needs an Idempotency-Key.

Required scope draft (admin implies every scope)
Idempotency-Key required
Operation id answer_autopilot_question_v1_autopilot_questions__question_id__answer_post

Parameters

In Name Type Required Description
path question_id string (uuid) yes Id (uuid) of the question.

Request body

application/json (required): AnswerInput

Field Type Required Description
answer string yes The person's answer. (min length 1; max length 2000)

Example request

curl -X POST "$ERP_URL/v1/autopilot/questions/{question_id}/answer" \
  -H "Authorization: Bearer $ERP_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "answer": "A deposit from Zürich Kunde AG for order 17."
}'

Responses

Status Meaning Body
200 OK QuestionOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
409 The request conflicts with the data: an Idempotency-Key reused with a different request, a closed period, or an integrity rule of the database (conflict, integrity_violation). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "outcome": "string",
  "item_ref": "string",
  "item_title": "string",
  "question": "string",
  "status": "answered",
  "answer": "string",
  "answered_by": "string",
  "answered_at": "2026-09-21T09:30:00Z",
  "created_at": "2026-09-21T09:30:00Z",
  "pass_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

GET /v1/entities/{entity}/autopilot

Get what Autopilot keeps and what waits for a person

Every outcome Autopilot can keep for the company: whether it is on and for whom, its state after the latest pass (on_track, open, waiting for a person, problem), the items still open and the steps that pass left a person, each with its place in the app; the open questions the AI asked; and how much of the day's AI budget is used.

Required scope read (admin implies every scope)
Operation id get_autopilot_v1_entities__entity__autopilot_get

Parameters

In Name Type Required Description
path entity string yes Entity code, e.g. CH01 (GET /v1/entities).

Example request

curl "$ERP_URL/v1/entities/CH01/autopilot" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK AutopilotOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "entity": "string",
  "today": "2026-09-21",
  "ai_budget": 1,
  "ai_used": 1,
  "outcomes": [
    {
      "key": "string",
      "area": "string",
      "title": "string",
      "test": "string",
      "events": [
        "string"
      ],
      "enabled": true,
      "acting_for": "string",
      "language": "de",
      "options": {},
      "due": true,
      "state": "off",
      "open": 1,
      "last_pass": null,
      "handoffs": [
        null
      ]
    }
  ],
  "questions": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "outcome": "string",
      "item_ref": "string",
      "item_title": "string",
      "question": "string",
      "status": "answered",
      "answer": "string",
      "answered_by": "string",
      "answered_at": "2026-09-21T09:30:00Z",
      "created_at": "2026-09-21T09:30:00Z",
      "pass_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
    }
  ]
}

GET /v1/entities/{entity}/autopilot/passes

List Autopilot's passes

The company's passes, newest first: what started each, for whom it acted, what was open before and after, and how much the rules and the AI settled.

Required scope read (admin implies every scope)
Operation id list_autopilot_passes_v1_entities__entity__autopilot_passes_get

Parameters

In Name Type Required Description
path entity string yes Entity code, e.g. CH01 (GET /v1/entities).
query outcome string or null Only this outcome's, e.g. bank_matched.
query limit integer At most this many, newest first. (min 1; max 200; default 50)

Example request

curl "$ERP_URL/v1/entities/CH01/autopilot/passes" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK array of PassSummary
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

[
  {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "outcome": "string",
    "trigger": "daily",
    "reason": "string",
    "acting_for": "string",
    "status": "done",
    "open_before": 1,
    "open_after": 1,
    "by_rules": 1,
    "by_ai": 1,
    "ai_items": 1,
    "error": "string",
    "started_at": "2026-09-21T09:30:00Z",
    "finished_at": "2026-09-21T09:30:00Z"
  }
]

PUT /v1/entities/{entity}/autopilot/{outcome}

Switch an outcome of Autopilot on or off

Switched on, Autopilot keeps the outcome true: a pass when something happens that gives it work (a statement imported), once a day, and the first one at once. Its passes act for the person who switched it on (only a person signed in can: 403 autopilot_needs_a_person), so four eyes count what they book as that person's: a second person approves it. They never approve, close periods, send, pay or file.

Required scope draft (admin implies every scope)
Idempotency-Key not used
Operation id put_autopilot_outcome_v1_entities__entity__autopilot__outcome__put

Parameters

In Name Type Required Description
path entity string yes Entity code, e.g. CH01 (GET /v1/entities).
path outcome string yes The outcome, e.g. bank_matched.

Request body

application/json (required): OutcomeSettingInput

Field Type Required Description
enabled boolean yes Switch Autopilot on or off for this outcome.
language "de" | "en" | "fr" | "it" | "sv" The language of its notes and questions. (default "en")
options object Its settings: vendors_paid takes days_before_due (pay a bill this many days before it is due, 0 to 30, default 2); the others take none.

Example request

curl -X PUT "$ERP_URL/v1/entities/CH01/autopilot/bank_matched" \
  -H "Authorization: Bearer $ERP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "enabled": true,
  "language": "en"
}'

Responses

Status Meaning Body
200 OK OutcomeOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
409 The request conflicts with the data: an Idempotency-Key reused with a different request, a closed period, or an integrity rule of the database (conflict, integrity_violation). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "key": "string",
  "area": "string",
  "title": "string",
  "test": "string",
  "events": [
    "string"
  ],
  "enabled": true,
  "acting_for": "string",
  "language": "de",
  "options": {},
  "due": true,
  "state": "off",
  "open": 1,
  "last_pass": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "outcome": "string",
    "trigger": "daily",
    "reason": "string",
    "acting_for": "string",
    "status": "done",
    "open_before": 1,
    "open_after": 1,
    "by_rules": 1,
    "by_ai": 1,
    "ai_items": 1,
    "error": "string",
    "started_at": "2026-09-21T09:30:00Z",
    "finished_at": "2026-09-21T09:30:00Z"
  },
  "handoffs": [
    {
      "kind": "string",
      "title": "string",
      "path": "string",
      "ref": "string",
      "count": 1,
      "due": "2026-09-21"
    }
  ]
}

POST /v1/entities/{entity}/autopilot/{outcome}/passes

Run a pass of an outcome now

Run now: check what is open, let the rules settle what they can, give the AI the items left (within the day's budget), check again, and record the pass with the steps left to a person. The pass acts for the caller. 409 autopilot_pass_running while one runs. Works whether or not the outcome is switched on.

Required scope draft (admin implies every scope)
Idempotency-Key not used
Operation id run_autopilot_pass_v1_entities__entity__autopilot__outcome__passes_post

Parameters

In Name Type Required Description
path entity string yes Entity code, e.g. CH01 (GET /v1/entities).
path outcome string yes The outcome, e.g. bank_matched.

Request body

application/json (required): PassInput

Field Type Required Description
language "de" | "en" | "fr" | "it" | "sv" The language of this pass's notes and questions. (default "en")

Example request

curl -X POST "$ERP_URL/v1/entities/CH01/autopilot/bank_matched/passes" \
  -H "Authorization: Bearer $ERP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "language": "en"
}'

Responses

Status Meaning Body
201 Created PassOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
409 The request conflicts with the data: an Idempotency-Key reused with a different request, a closed period, or an integrity rule of the database (conflict, integrity_violation). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "entity": "string",
  "outcome": "string",
  "trigger": "daily",
  "reason": "string",
  "acting_for": "string",
  "run_on": "2026-09-21",
  "status": "done",
  "open_before": 1,
  "open_after": 1,
  "by_rules": 1,
  "by_ai": 1,
  "ai_items": 1,
  "log": [
    {
      "step": "check",
      "text": "string",
      "count": 1,
      "kind": "string",
      "item": "string",
      "tools": [
        null
      ],
      "settled": true
    }
  ],
  "handoffs": [
    {
      "kind": "string",
      "title": "string",
      "path": "string",
      "ref": "string",
      "count": 1,
      "due": "2026-09-21"
    }
  ],
  "questions": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "outcome": "string",
      "item_ref": "string",
      "item_title": "string",
      "question": "string",
      "status": "answered",
      "answer": "string",
      "answered_by": "string",
      "answered_at": "2026-09-21T09:30:00Z",
      "created_at": "2026-09-21T09:30:00Z",
      "pass_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
    }
  ],
  "model": "string",
  "error": "string",
  "started_at": "2026-09-21T09:30:00Z",
  "finished_at": "2026-09-21T09:30:00Z"
}

POST /v1/entities/{entity}/autopilot/{outcome}/passes/stream

Run a pass of an outcome now, with its progress

POST /v1/entities/{entity}/autopilot/{outcome}/passes, answered as it works: the person sees each step as it happens. A pass already running is a 409 before anything is streamed.

Required scope draft (admin implies every scope)
Idempotency-Key not used
Operation id run_autopilot_pass_streaming_v1_entities__entity__autopilot__outcome__passes_stream_post

Parameters

In Name Type Required Description
path entity string yes Entity code, e.g. CH01 (GET /v1/entities).
path outcome string yes The outcome, e.g. bank_matched.

Request body

application/json (required): PassInput

Field Type Required Description
language "de" | "en" | "fr" | "it" | "sv" The language of this pass's notes and questions. (default "en")

Example request

curl -X POST "$ERP_URL/v1/entities/CH01/autopilot/bank_matched/passes/stream" \
  -H "Authorization: Bearer $ERP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "language": "en"
}'

Responses

Status Meaning Body
200 One JSON object per line: step for each step of the pass (the fields of a log line: step, text, ...), working every few seconds, then done with the pass (the fields of PassOut) or error (status, error). application/x-ndjson
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
409 The request conflicts with the data: an Idempotency-Key reused with a different request, a closed period, or an integrity rule of the database (conflict, integrity_violation). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Schemas

AnswerInput

Field Type Required Description
answer string yes The person's answer. (min length 1; max length 2000)

AutopilotOut

Field Type Required Description
entity string yes Code of the company.
today string (date) yes The company's today.
ai_budget integer yes Items the AI may work on for this company a day.
ai_used integer yes Items sent to the AI today.
outcomes array of OutcomeOut yes Every outcome Autopilot can keep.
questions array of QuestionOut yes Open questions, oldest first.

Handoff

Field Type Required Description
kind string yes What kind of step, for a screen to word it: approve (what waits for a second person), match_lines (bank lines to match by hand), reconcile_account (mark a bank account reconciled), activate_vendors (new vendors whose bills wait for them), finish_bills (draft bills to finish by hand), approve_bills (bills waiting for a second person), approve_differences (bills that differ from their purchase orders); bill_subscriptions, invoice_deliveries, invoice_stays, mend_recurring, issue_invoices, approve_invoices, send_invoices (invoicing); send_reminders, send_letters, withdraw_letters, collect_invoices, approve_collections, release_collections (getting paid); pay_bills (bills due that Autopilot left to a person), release_payments (payments to send to the bank), book_recurring (recurring journals it could not book), run_depreciation (a month's depreciation it could not run; ref is the period, e.g. 2026-09); approve_close (approvals that hold the close), close_checks (close checks of a month left to a person), close_period (close a month whose checklist passes), prepare_vat (a VAT return that could not be prepared), finalise_vat, approve_vat, submit_vat, amend_vat (a VAT return's next step), ic_differences (intercompany differences to resolve), group_checks (a group's close checks that fail), read_pack (the month's report pack names blockers).
title string yes What the person does, in English, e.g. Approve the bank postings that wait for a second person.
path string yes Where in the app they do it, e.g. /approvals?entity=CH01.
ref string or null What it is about where an outcome has several, e.g. the account code of a bank account, a month (2026-09), a VAT return's reference or a group's code.
count integer or null How many items it covers, if counted.
due string (date) or null By when it is to be done, if there is a day: the close calendar's working day for closing a month, a VAT return's due date.

LogLine

Field Type Required Description
step "check" | "handoff" | "judgement" | "note" | "recheck" | "rules" yes check (what was open), rules (what code settled), judgement (one item the AI worked on), recheck (what is open after), handoff (what was left to a person), note (anything else, e.g. the AI budget used up).
text string yes What happened, in English; for judgement, the item and the AI's account in the outcome's language.
count integer or null For check, rules and recheck: how many items.
kind string or null For note and a rules that stopped: budget (the AI's share used up), time (the pass's time for the AI up), no_ai (no model available), busy (the model busy), rules_stopped.
item string or null The item's reference, for judgement.
tools array of string or null The tools the AI called for the item, in order.
settled boolean or null For judgement: whether the item was settled, as the outcome's own check found afterwards (not as the AI said).

OutcomeOut

Field Type Required Description
key string yes The outcome, e.g. bank_matched.
area string yes Its area: bank, payables, receivables, ledger, close, tax, group, sales.
title string yes The outcome in English, e.g. The bank is matched.
test string yes How the system knows it is true, in English.
events array of string yes What makes it work at once, in English.
enabled boolean yes Whether Autopilot keeps it for this company.
acting_for string or null yes The person whose work its passes count as.
language "de" | "en" | "fr" | "it" | "sv" yes The language of its notes and questions.
options object yes Its settings, with the defaults filled in.
due boolean yes Something happened that gives it work: a pass comes soon.
state "off" | "on_track" | "open" | "problem" | "waiting" yes off; on_track (nothing open after the last pass); open (items open, none waiting for a person); waiting (a person's step or question waits); problem (the last pass failed).
open integer or null yes Items open after the last pass.
last_pass PassSummary or null yes The latest pass.
handoffs array of Handoff yes What the latest pass left a person.

OutcomeSettingInput

Field Type Required Description
enabled boolean yes Switch Autopilot on or off for this outcome.
language "de" | "en" | "fr" | "it" | "sv" The language of its notes and questions. (default "en")
options object Its settings: vendors_paid takes days_before_due (pay a bill this many days before it is due, 0 to 30, default 2); the others take none.

PassInput

Field Type Required Description
language "de" | "en" | "fr" | "it" | "sv" The language of this pass's notes and questions. (default "en")

PassOut

Field Type Required Description
id string (uuid) yes The pass's id.
entity string yes Code of the company.
outcome string yes The outcome, e.g. bank_matched.
trigger "daily" | "event" | "person" yes What started it: event (something happened, see reason), daily (the daily pass), person (Run now).
reason string or null yes Why, e.g. bank statement imported.
acting_for string yes The person whose work it counts as.
run_on string (date) yes The company's day it ran on.
status "done" | "failed" | "running" yes running, done or failed.
open_before integer or null yes Items not yet true when it started.
open_after integer or null yes Items not yet true when it ended.
by_rules integer yes Items the rules (code, no AI) settled.
by_ai integer yes Items the AI settled, as the outcome's check found after.
ai_items integer yes Items sent to the AI (what counts against the budget).
log array of LogLine yes What it did, step by step.
handoffs array of Handoff yes What it left a person, each with its place.
questions array of QuestionOut yes What the AI asked a person in this pass.
model string or null yes The model that judged, if any did.
error string or null yes Why it failed.
started_at string (date-time) yes When it started.
finished_at string (date-time) or null yes When it ended.

PassSummary

Field Type Required Description
id string (uuid) yes The pass's id.
outcome string yes The outcome.
trigger "daily" | "event" | "person" yes What started it.
reason string or null yes Why.
acting_for string yes The person whose work it counts as.
status "done" | "failed" | "running" yes running, done or failed.
open_before integer or null yes Items open when it started.
open_after integer or null yes Items open when it ended.
by_rules integer yes Settled by the rules.
by_ai integer yes Settled by the AI.
ai_items integer yes Sent to the AI.
error string or null yes Why it failed.
started_at string (date-time) yes When it started.
finished_at string (date-time) or null yes When it ended.

QuestionOut

Field Type Required Description
id string (uuid) yes The question's id (to answer it).
outcome string yes The outcome it belongs to, e.g. bank_matched.
item_ref string yes The item it is about (a bank line's id, ...).
item_title string yes The item, as a person reads it.
question string yes What the AI asks, in the outcome's language.
status "answered" | "dropped" | "open" yes open until a person answers; dropped when the item was settled otherwise.
answer string or null yes The person's answer.
answered_by string or null yes Who answered.
answered_at string (date-time) or null yes When.
created_at string (date-time) yes When it was asked.
pass_id string (uuid) yes The pass that asked it.
Stabiso, the Enterprise System of Record · generated from the code and its guides · release 6f03a5e846b3