Expense Type Accessibility Service
API Contract
REST
/api/v1/accessibility/expense-types
5 endpoints
GET
/api/v1/accessibility/expense-types/api/v1/accessibility/expense-types
List semantic accessibility labels for all expense types
Public
Response Example
{
"data": [
{
"id": "kilometers",
"expense_type": "kilometers",
"semantic_label": "Kilometers — selected, toggle to deselect",
"is_selected": true,
"is_disabled": false,
"focus_order": 1
},
{
"id": "tolls",
"expense_type": "tolls",
"semantic_label": "Tolls — available, toggle to select",
"is_selected": false,
"is_disabled": false,
"focus_order": 2
},
{
"id": "publicTransit",
"expense_type": "publicTransit",
"semantic_label": "Public Transit — disabled, incompatible with kilometers",
"is_selected": false,
"is_disabled": true,
"focus_order": 4
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 4
}
}
GET
/api/v1/accessibility/expense-types/api/v1/accessibility/expense-types/:id
Get semantic accessibility label for a specific expense type
Public
Response Example
{
"id": "publicTransit",
"expense_type": "publicTransit",
"semantic_label": "Public Transit — disabled, incompatible with kilometers",
"is_selected": false,
"is_disabled": true,
"exclusion_announcement": "Public Transit has been disabled because it is incompatible with Kilometers and Tolls.",
"focus_order": 4
}
POST
/api/v1/accessibility/expense-types/api/v1/accessibility/expense-types
Create a custom accessibility label override for an expense type
Public
Request Example
{
"expense_type": "kilometers",
"locale": "fr",
"selected_label": "Kilomètres — sélectionné, appuyer pour désélectionner",
"deselected_label": "Kilomètres — disponible, appuyer pour sélectionner",
"disabled_label": "Kilomètres — désactivé, incompatible avec transit public"
}
Response Example
{
"id": "acc-fr-kilometers",
"expense_type": "kilometers",
"locale": "fr",
"selected_label": "Kilomètres — sélectionné, appuyer pour désélectionner",
"deselected_label": "Kilomètres — disponible, appuyer pour sélectionner",
"disabled_label": "Kilomètres — désactivé, incompatible avec transit public",
"created_at": "2026-03-26T13:00:00Z"
}
PUT
/api/v1/accessibility/expense-types/api/v1/accessibility/expense-types/:id
Update an accessibility label override
Public
Request Example
{
"selected_label": "Kilomètres — actif, appuyer pour désélectionner",
"disabled_label": "Kilomètres — non disponible avec le type sélectionné"
}
Response Example
{
"id": "acc-fr-kilometers",
"expense_type": "kilometers",
"locale": "fr",
"selected_label": "Kilomètres — actif, appuyer pour désélectionner",
"deselected_label": "Kilomètres — disponible, appuyer pour sélectionner",
"disabled_label": "Kilomètres — non disponible avec le type sélectionné",
"updated_at": "2026-03-26T13:30:00Z"
}
DELETE
/api/v1/accessibility/expense-types/api/v1/accessibility/expense-types/:id
Delete a custom accessibility label override
Public
Response Example
{
"success": true,
"deleted_id": "acc-fr-kilometers"
}