Mileage Claim Repository
API Contract
REST
/api/v1/claims
5 endpoints
GET
/api/v1/claims/api/v1/claims
List mileage claims. Filter by user_id, org_id, or status.
Public
Response Example
{
"data": [
{
"id": "clm_01HXQR9B2T",
"user_id": "usr_abc123",
"org_id": "org_xyz789",
"distance_km": 42.5,
"rate_per_km": 0.45,
"amount": 19.13,
"status": "pending",
"trip_date": "2026-03-25",
"purpose": "Client site visit — Waterford office",
"additional_expenses": [],
"created_at": "2026-03-25T14:30:00Z",
"updated_at": "2026-03-25T14:30:00Z"
},
{
"id": "clm_01HXQR7A1K",
"user_id": "usr_abc123",
"org_id": "org_xyz789",
"distance_km": 18,
"rate_per_km": 0.45,
"amount": 8.1,
"status": "auto_approved",
"trip_date": "2026-03-20",
"purpose": "Training session",
"additional_expenses": [],
"created_at": "2026-03-20T09:10:00Z",
"updated_at": "2026-03-20T09:10:05Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 2
}
}
GET
/api/v1/claims/api/v1/claims/:id
Fetch a single mileage claim by ID.
Public
Response Example
{
"id": "clm_01HXQR9B2T",
"user_id": "usr_abc123",
"org_id": "org_xyz789",
"distance_km": 42.5,
"rate_per_km": 0.45,
"amount": 19.13,
"status": "pending",
"trip_date": "2026-03-25",
"purpose": "Client site visit — Waterford office",
"additional_expenses": [
{
"description": "Toll",
"amount_eur": 2.5
}
],
"created_at": "2026-03-25T14:30:00Z",
"updated_at": "2026-03-25T14:30:00Z"
}
POST
/api/v1/claims/api/v1/claims
Create a new mileage claim record directly (used internally by mileage-claim-service after domain validation).
Public
Request Example
{
"user_id": "usr_abc123",
"org_id": "org_xyz789",
"distance_km": 42.5,
"rate_per_km": 0.45,
"amount": 19.13,
"status": "pending",
"trip_date": "2026-03-25",
"purpose": "Client site visit — Waterford office",
"additional_expenses": [
{
"description": "Toll",
"amount_eur": 2.5
}
]
}
Response Example
{
"id": "clm_01HXQR9B2T",
"user_id": "usr_abc123",
"org_id": "org_xyz789",
"distance_km": 42.5,
"rate_per_km": 0.45,
"amount": 19.13,
"status": "pending",
"trip_date": "2026-03-25",
"purpose": "Client site visit — Waterford office",
"additional_expenses": [
{
"description": "Toll",
"amount_eur": 2.5
}
],
"created_at": "2026-03-25T14:30:00Z",
"updated_at": "2026-03-25T14:30:00Z"
}
PUT
/api/v1/claims/api/v1/claims/:id
Update a claim — typically used to patch status (e.g. approved, rejected) or correct a field before approval.
Public
Request Example
{
"status": "approved",
"purpose": "Client site visit — Waterford office (corrected)",
"additional_expenses": []
}
Response Example
{
"id": "clm_01HXQR9B2T",
"user_id": "usr_abc123",
"org_id": "org_xyz789",
"distance_km": 42.5,
"rate_per_km": 0.45,
"amount": 19.13,
"status": "approved",
"trip_date": "2026-03-25",
"purpose": "Client site visit — Waterford office (corrected)",
"additional_expenses": [],
"created_at": "2026-03-25T14:30:00Z",
"updated_at": "2026-03-25T15:02:11Z"
}
DELETE
/api/v1/claims/api/v1/claims/:id
Soft-delete or withdraw a pending claim. Claims in approved/rejected state cannot be deleted.
Public
Response Example
{
"id": "clm_01HXQR9B2T",
"deleted": true,
"deleted_at": "2026-03-25T16:00:00Z"
}