Skip to content

Create Expense Report — Proposed Guide

Planned API — Reference Only

Create Expense Report: Report creation would collect eligible expenses under one submitter and organization. It should produce a draft, not silently…

Overview

Report creation would collect eligible expenses under one submitter and organization. It should produce a draft, not silently submit or approve its members.

Key concepts

Validate membership, ownership and currency compatibility. Record expense references rather than copying mutable resource objects.

Implementation considerations

Prevent an expense from appearing in incompatible active reports. Define duplicate membership handling for retried creation requests.

Proposed API behavior

POST /v1/expense-reports 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.

Illustrative request fields
NameTypeDescription
user_idstringStable fictional user reference; not a secret and not evidence that a resource exists.
titlestringIllustrative report label without personal or customer information.
expense_idsarray<string>Fictional expense references; validate ownership and avoid duplicate membership.

Static example requests

Proposed, non-executing request examples
# Proposed request text only; this reserved host is not a live API.
curl -X POST 'https://api.remizen.example/v1/expense-reports' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: operation_example_123' \
  --data '{
  "user_id": "usr_example_123",
  "title": "Example travel report",
  "expense_ids": [
    "exp_example_123"
  ]
}'

Fictional response example

201 (proposed example)Static response fixture

Fictional documentation data only. No request was sent, record created, review performed, payment initiated or provider connection activated.

JSON
{
  "data": {
    "title": "Example travel report",
    "expense_ids": [
      "exp_example_123"
    ],
    "id": "rpt_example_123",
    "organization_id": "org_example_123",
    "status": "draft"
  },
  "meta": {
    "request_id": "req_example_123",
    "reference_only": true
  }
}

Illustrative error case

Review this failure case in context: Prevent an expense from appearing in incompatible active reports. Define duplicate membership handling for retried creation requests.

422 (illustrative; final error contracts are undecided)Proposed error fixture

Synthetic diagnostic example. Human-readable messages must not be used as stable programmatic contracts.

JSON
{
  "error": {
    "code": "validation_error",
    "message": "The proposed create expense report operation requires review of its input or authorization.",
    "request_id": "req_example_123"
  }
}

Proposed data types

Illustrative field dictionary
NameTypeDescription
user_idstringStable fictional user reference; not a secret and not evidence that a resource exists.
titlestringIllustrative report label without personal or customer information.
expense_idsarray<string>Fictional expense references; validate ownership and avoid duplicate membership.
idempotency_keystringNon-secret proposed operation key for controlled replay; supplied as an illustrative header.