Expense Report History — Proposed Guide
Planned API — Reference OnlyExpense Report History: History would describe report transitions and material membership changes in sequence. It supports explanation of decisions…
Overview
History would describe report transitions and material membership changes in sequence. It supports explanation of decisions without exposing sensitive free-text notes to every reader.
Key concepts
Record actor, time, previous state and next state. Retain a reference to the reviewed version.
Implementation considerations
Ordering should remain stable when events have identical timestamps. Correction events should append to history rather than overwrite prior decisions.
Proposed API behavior
GET /v1/expense-reports/{report_id}/history is an illustrative design for this topic. Path and field names may change before implementation. Access would require an authorized organization context and operation-specific permission; no public API or authorization grant is available here.
| Name | Type | Description |
|---|---|---|
| report_idrequired | string | Stable fictional report reference; not a secret and not evidence that a resource exists. |
No additional request fields are illustrated; this is not a finalized contract.
Static example requests
# Proposed request text only; this reserved host is not a live API.
curl -X GET 'https://api.remizen.example/v1/expense-reports/rpt_example_123/history' \
-H 'Authorization: Bearer YOUR_API_KEY'Fictional response example
Fictional documentation data only. No request was sent, record created, review performed, payment initiated or provider connection activated.
{
"data": {
"report_id": "rpt_example_123",
"event_id": "event_example_123",
"actor_id": "usr_example_123",
"occurred_at": "2026-01-15T12:00:00Z",
"id": "rpt_example_123",
"organization_id": "org_example_123",
"expense_ids": [
"exp_example_123"
],
"status": "draft"
},
"meta": {
"request_id": "req_example_123",
"reference_only": true
}
}Illustrative error case
Review this failure case in context: Ordering should remain stable when events have identical timestamps. Correction events should append to history rather than overwrite prior decisions.
Synthetic diagnostic example. Human-readable messages must not be used as stable programmatic contracts.
{
"error": {
"code": "validation_error",
"message": "The proposed expense report history operation requires review of its input or authorization.",
"request_id": "req_example_123"
}
}Proposed data types
| Name | Type | Description |
|---|---|---|
| report_id | string | Stable fictional report reference; not a secret and not evidence that a resource exists. |
| event_id | string | Stable fictional event reference; not a secret and not evidence that a resource exists. |
| actor_id | string | Stable fictional actor reference; not a secret and not evidence that a resource exists. |
| occurred_at | string (date-time) | Synthetic UTC timestamp. Business occurrence time may differ from delivery or processing time. |