REST /api/v1/expense-claims 5 endpoints
GET /api/v1/expense-claims/api/v1/expense-claims

List expense claims with status/organisation filter (getPendingClaims, getClaimsByStatus)

Public

Response Example

{
  "data": [
    {
      "claim_id": "clm_9f2a3b4c",
      "user_id": "usr_84cd12ef",
      "organisation_id": "org_001",
      "status": "pending_coordinator",
      "total_amount": 4850,
      "total_distance_km": 0,
      "created_at": "2026-03-20T09:15:00Z",
      "updated_at": "2026-03-21T11:30:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 43
  }
}
GET /api/v1/expense-claims/api/v1/expense-claims/:claim_id

Get claim status and details (getStatus)

Public

Response Example

{
  "claim_id": "clm_9f2a3b4c",
  "user_id": "usr_84cd12ef",
  "organisation_id": "org_001",
  "status": "pending_coordinator",
  "total_amount": 4850,
  "total_distance_km": 0,
  "expense_lines": [
    {
      "line_id": "line_001",
      "description": "Train Oslo-Bergen",
      "amount": 1200,
      "category": "transport",
      "distance_km": 0
    },
    {
      "line_id": "line_002",
      "description": "Hotel 2 nights",
      "amount": 3650,
      "category": "accommodation",
      "distance_km": 0
    }
  ],
  "created_at": "2026-03-20T09:15:00Z",
  "updated_at": "2026-03-21T11:30:00Z"
}
POST /api/v1/expense-claims/api/v1/expense-claims

Create a new expense claim

Public

Request Example

{
  "user_id": "usr_84cd12ef",
  "organisation_id": "org_001",
  "expense_lines": [
    {
      "description": "Train Oslo-Bergen",
      "amount": 1200,
      "category": "transport",
      "distance_km": 0
    },
    {
      "description": "Hotel 2 nights",
      "amount": 3650,
      "category": "accommodation",
      "distance_km": 0
    }
  ]
}

Response Example

{
  "claim_id": "clm_9f2a3b4c",
  "user_id": "usr_84cd12ef",
  "organisation_id": "org_001",
  "status": "draft",
  "total_amount": 4850,
  "total_distance_km": 0,
  "created_at": "2026-03-26T08:00:00Z",
  "updated_at": "2026-03-26T08:00:00Z"
}
PUT /api/v1/expense-claims/api/v1/expense-claims/:claim_id

Update claim status with optimistic concurrency check (updateStatus)

Public

Request Example

{
  "new_status": "pending_coordinator",
  "expected_current_status": "draft"
}

Response Example

{
  "claim_id": "clm_9f2a3b4c",
  "status": "pending_coordinator",
  "updated_at": "2026-03-26T08:05:00Z"
}
DELETE /api/v1/expense-claims/api/v1/expense-claims/:claim_id

Delete a draft expense claim

Public

Response Example

{
  "deleted": true,
  "claim_id": "clm_9f2a3b4c"
}

Additional Metadata

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