Receipt Attachment Service
API Contract
REST
/api/v1/receipt-attachments
6 endpoints
GET
/api/v1/receipt-attachments/api/v1/receipt-attachments
List all receipt attachments
Public
Response Example
{
"data": [
{
"expense_id": "exp-001",
"attachment_id": "att-7821",
"file_name": "receipt_lunch_march.jpg",
"file_size_kb": 184,
"mime_type": "image/jpeg",
"status": "attached",
"uploaded_at": "2026-03-22T10:14:00Z"
},
{
"expense_id": "exp-002",
"attachment_id": "att-7822",
"file_name": "receipt_taxi.png",
"file_size_kb": 220,
"mime_type": "image/png",
"status": "uploading",
"uploaded_at": null
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 2
}
}
GET
/api/v1/receipt-attachments/api/v1/receipt-attachments/:expenseId
Get receipt attachment by expense ID
Public
Response Example
{
"expense_id": "exp-001",
"attachment_id": "att-7821",
"file_name": "receipt_lunch_march.jpg",
"file_size_kb": 184,
"mime_type": "image/jpeg",
"status": "attached",
"storage_path": "orgs/org-42/users/usr-88/claims/clm-301/receipts/att-7821.jpg",
"uploaded_at": "2026-03-22T10:14:00Z"
}
POST
/api/v1/receipt-attachments/api/v1/receipt-attachments/:expenseId
Attach a receipt image to an expense (multipart upload)
Public
Request Example
{
"content_type": "multipart/form-data",
"fields": {
"image_file": "(binary JPEG/PNG data)",
"org_id": "org-42",
"user_id": "usr-88"
}
}
Response Example
{
"expense_id": "exp-003",
"attachment_id": "att-7823",
"file_name": "receipt_hotel.jpg",
"file_size_kb": 310,
"status": "uploading",
"upload_progress_url": "/api/v1/receipt-attachments/exp-003/upload-progress",
"created_at": "2026-03-26T09:00:00Z"
}
GET
/api/v1/receipt-attachments/api/v1/receipt-attachments/:expenseId/upload-progress
Stream upload progress for an expense receipt (Server-Sent Events)
Public
Response Example
{
"event": "progress",
"data": {
"expense_id": "exp-003",
"percent": 64,
"bytes_transferred": 198656,
"bytes_total": 317440,
"status": "uploading"
}
}
DELETE
/api/v1/receipt-attachments/api/v1/receipt-attachments/:expenseId/upload
Cancel an in-progress receipt upload
Public
Response Example
{
"expense_id": "exp-003",
"status": "cancelled",
"cancelled_at": "2026-03-26T09:00:45Z"
}
DELETE
/api/v1/receipt-attachments/api/v1/receipt-attachments/:expenseId
Remove a receipt attachment from an expense
Public
Response Example
{
"expense_id": "exp-001",
"attachment_id": "att-7821",
"status": "removed",
"removed_at": "2026-03-26T09:05:00Z"
}