Human judgements
Some decisions in the books need a person. The books refuse them from an API key, an OAuth client or an AI assistant, whatever the permissions of the caller:
- an exemption, and a change or removal of one;
- a classification of money received, and a change or removal of one;
- a manual exchange rate, a manual VAT code;
- a default of a party, a dimension rule;
- the reopening of a period.
A person answers for these in the books. So the books record a person as the author of each one, never a program.
What your integration gets
A call that makes such a decision gets 403 human_actor_required:
{
"type": "https://oscaraccountant.com/errors/human_actor_required",
"title": "A person must make this decision",
"status": 403,
"code": "human_actor_required",
"detail": "..."
}
Do not retry it. Most calls of the public API never need a judgement. When
one does, for example an invoice line with a manual VAT code, send the call
without the judgement (use a VAT code of the company, from
GET /api/companies/{company_id}/vat-codes/), or leave the decision to a
person in the Oscar app.
Proposals
Oscar can record a proposal: the decision as the program proposes it, which
a person then confirms or rejects in the app. The command then runs with that
person as its author. An AI assistant connected over MCP does this with the
tool propose_judgement. The proposal operations are not yet part of the
public API.