Supabase Mileage Adapter
API Contract
REST
/api/v1/claims
5 endpoints
GET
/api/v1/claims/api/v1/claims
Adapter-layer pass-through: selects claim rows from Supabase matching provided filters (user_id, org_id, 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"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1
}
}
GET
/api/v1/claims/api/v1/claims/:id
Adapter-layer: select a single claim row by primary key from Supabase.
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": [],
"created_at": "2026-03-25T14:30:00Z",
"updated_at": "2026-03-25T14:30:00Z"
}
POST
/api/v1/claims/api/v1/claims
Adapter-layer: insert a new claim row into Supabase and return the persisted record.
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": []
}
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": [],
"created_at": "2026-03-25T14:30:00Z",
"updated_at": "2026-03-25T14:30:00Z"
}
PUT
/api/v1/claims/api/v1/claims/:id
Adapter-layer: update a claim row in Supabase (typically status or field correction).
Public
Request Example
{
"status": "approved",
"updated_at": "2026-03-25T15:02:11Z"
}
Response Example
{
"id": "clm_01HXQR9B2T",
"status": "approved",
"updated_at": "2026-03-25T15:02:11Z"
}
DELETE
/api/v1/claims/api/v1/claims/:id
Adapter-layer: remove a claim row from Supabase.
Public
Response Example
{
"id": "clm_01HXQR9B2T",
"deleted": true
}