expense_approve
Approves a submitted expense claim — requires the admin or owner role, and only a 'pending' expense qualifies (CONFLICT otherwise). Stamps approved_by and approved_at with the caller and the current time; once approved, the row's content freezes for everyone except the approver themselves. NEXT: expense_reimburse (owner only) to pay it out.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The expense id (expense_list shows them). | |
| notes | No | ||
| status | No | ||
| vendor | No | ||
| currency | No | ||
| ocr_json | No | ||
| tax_type | No | ||
| tags_json | No | ||
| approved_at | No | ||
| approved_by | No | ||
| category_id | No | ||
| receipt_key | No | ||
| rejected_at | No | ||
| amount_cents | No | ||
| expense_date | No | ||
| submitted_at | No | ||
| tax_rate_bps | No | ||
| recurrence_id | No | ||
| reimbursed_at | No | ||
| subtotal_cents | No | ||
| rejection_reason | No | ||
| tax_amount_cents | No |