List categories (grouped)
For assigned/spent/available amounts per category, use the months endpoints.
Get a category
Create a category
Update a category
Delete a category
Without
move_to_category_id, affected transactions become uncategorized.
Category groups
POST takes { "name": "..." } and creates an expense group (duplicate names return 409). PATCH takes { "name": "..." } to rename. Groups cannot be deleted through the API; move or delete their categories first, then remove the group in the app.