REST /api/v1/expense-form-sessions 5 endpoints
GET /api/v1/expense-form-sessions/api/v1/expense-form-sessions

List in-progress form sessions for a user

Public

Response Example

{
  "data": [
    {
      "session_id": "sess_b4d2f9",
      "user_id": "usr_88f3a1",
      "activity_id": "act_3b81fa",
      "state": "awaiting_receipt",
      "last_updated": "2026-03-18T09:08:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 1
  }
}
GET /api/v1/expense-form-sessions/api/v1/expense-form-sessions/:id

Get current form session state

Public

Response Example

{
  "session_id": "sess_b4d2f9",
  "user_id": "usr_88f3a1",
  "activity_id": "act_3b81fa",
  "selected_expense_types": [
    "travel_distance",
    "parking"
  ],
  "amount": 247.5,
  "distance_km": 42,
  "has_receipt": false,
  "state": "awaiting_receipt",
  "validation_errors": [
    "Receipt required for parking amounts over 200 NOK"
  ],
  "last_updated": "2026-03-18T09:08:00Z"
}
POST /api/v1/expense-form-sessions/api/v1/expense-form-sessions

Start a new expense form session

Public

Request Example

{
  "user_id": "usr_88f3a1",
  "activity_id": "act_3b81fa",
  "organization_id": "org_4729bc"
}

Response Example

{
  "session_id": "sess_b4d2f9",
  "user_id": "usr_88f3a1",
  "activity_id": "act_3b81fa",
  "organization_id": "org_4729bc",
  "state": "selecting_expense_types",
  "created_at": "2026-03-18T08:55:00Z"
}
PUT /api/v1/expense-form-sessions/api/v1/expense-form-sessions/:id

Update form state (expense type selection, amount, distance, receipt flag)

Public

Request Example

{
  "event": "AmountChanged",
  "selected_expense_types": [
    "travel_distance",
    "parking"
  ],
  "amount": 247.5,
  "distance_km": 42,
  "has_receipt": false
}

Response Example

{
  "session_id": "sess_b4d2f9",
  "selected_expense_types": [
    "travel_distance",
    "parking"
  ],
  "amount": 247.5,
  "distance_km": 42,
  "has_receipt": false,
  "state": "awaiting_receipt",
  "validation_errors": [
    "Receipt required for parking amounts over 200 NOK"
  ],
  "last_updated": "2026-03-18T09:08:00Z"
}
DELETE /api/v1/expense-form-sessions/api/v1/expense-form-sessions/:id

Discard form session (user cancelled)

Public

Response Example

{
  "deleted": true,
  "session_id": "sess_b4d2f9"
}

Additional Metadata

{
  "contract_summary": {
    "total_contracts": 410,
    "total_endpoints": 2416,
    "api_styles_used": [
      "rest"
    ]
  },
  "generated_at": "2026-03-26T06:55:53.316Z"
}