API Endpoints
All endpoints are prefixed with /api/v1.
Session
| Method | Endpoint | Auth | Description |
| POST | /session | — | Login, get tokens |
| POST | /session/refresh | Cookie | Refresh access token |
| DELETE | /session | Yes | Logout, invalidate tokens |
Sessions
| Method | Endpoint | Auth | Description |
| GET | /sessions | Yes | List active sessions |
| DELETE | /sessions/{tokenId} | Yes | Revoke single session |
| DELETE | /sessions?keepCurrent={bool} | Yes | Revoke all sessions |
Account
| Method | Endpoint | Auth | Description |
| POST | /account/register | — | Register new account |
| GET | /account | Yes | Get current user profile |
| PUT | /account | Yes | Update profile |
| PUT | /account/password | Yes | Change password |
| POST | /account/password/forgot | — | Request password reset |
| POST | /account/password/reset | — | Reset password with token |
| PUT | /account/email | Yes | Request email change |
| PATCH | /account/email/confirm | — | Confirm email with token |
| POST | /account/email/confirm/resend | Yes | Resend confirmation email |
| POST | /account/picture | Yes | Get presigned upload URL |
| PATCH | /account/picture/confirm/{imageId} | Yes | Confirm upload |
| DELETE | /account/picture | Yes | Delete profile picture |
Markers (Map Module)
| Method | Endpoint | Auth | Module | Description |
| GET | /markers/locations | Yes | Map | Get all marker locations (minimal) |
| GET | /markers | Yes | Map | List markers (paginated) |
| GET | /markers/{markerId} | Yes | Map | Get marker detail |
| POST | /markers | Yes | Map | Create marker |
| PUT | /markers/{markerId} | Yes | Map | Update marker |
| DELETE | /markers/{markerId} | Yes | Map | Delete marker |
| PATCH | /markers/{markerId}/restore | Yes | Map | Restore deleted |
| PATCH | /markers/{markerId}/location | Yes | Map | Update location only |
| GET | /markers/{markerId}/images | Yes | Map | Get marker images |
| POST | /markers/{markerId}/images | Yes | Map | Get image upload URL |
| PATCH | /markers/{markerId}/images/{imageId}/confirm | Yes | Map | Confirm image upload |
| PATCH | /markers/{markerId}/images/order | Yes | Map | Reorder images |
| DELETE | /markers/{markerId}/images/{imageId} | Yes | Map | Delete image |
Geocode
| Method | Endpoint | Auth | Module | Description |
| GET | /geocode/search?searchTerm={term} | Yes | Map | Search locations |
Budget (Budget Module)
Categories
| Method | Endpoint | Auth | Module | Description |
| GET | /categories | Yes | Budget | List categories |
| POST | /categories | Yes | Budget | Create category |
| PUT | /categories/{categoryId} | Yes | Budget | Update category |
| DELETE | /categories/{categoryId} | Yes | Budget | Delete category |
| PATCH | /categories/order | Yes | Budget | Reorder categories |
Budget Accounts
| Method | Endpoint | Auth | Module | Description |
| GET | /budget-accounts | Yes | Budget | List accounts |
| POST | /budget-accounts | Yes | Budget | Create account |
| PUT | /budget-accounts/{budgetAccountId} | Yes | Budget | Update account |
| DELETE | /budget-accounts/{budgetAccountId} | Yes | Budget | Delete account |
| PATCH | /budget-accounts/{budgetAccountId}/default | Yes | Budget | Set as default |
Transactions
| Method | Endpoint | Auth | Module | Description |
| GET | /transactions | Yes | Budget | List (paginated) |
| GET | /transactions/{transactionId} | Yes | Budget | Get transaction |
| GET | /transactions/report/monthly | Yes | Budget | Monthly report |
| GET | /transactions/report/yearly | Yes | Budget | Yearly summary |
| POST | /transactions | Yes | Budget | Create transaction |
| PUT | /transactions/{transactionId} | Yes | Budget | Update transaction |
| DELETE | /transactions/{transactionId} | Yes | Budget | Delete transaction |
Recurring Transactions
| Method | Endpoint | Auth | Module | Description |
| GET | /recurring-transactions | Yes | Budget | List recurring |
| GET | /recurring-transactions/{recurringTransactionId} | Yes | Budget | Get detail |
| POST | /recurring-transactions | Yes | Budget | Create recurring |
| PUT | /recurring-transactions/{recurringTransactionId} | Yes | Budget | Update recurring |
| DELETE | /recurring-transactions/{recurringTransactionId} | Yes | Budget | Delete recurring |
| PATCH | /recurring-transactions/{recurringTransactionId}/toggle | Yes | Budget | Enable/disable |
Notes (Notes Module)
| Method | Endpoint | Auth | Module | Description |
| GET | /notes | Yes | Notes | List notes |
| GET | /notes/{noteId} | Yes | Notes | Get note detail |
| POST | /notes | Yes | Notes | Create note |
| PUT | /notes/{noteId} | Yes | Notes | Update note |
| DELETE | /notes/{noteId} | Yes | Notes | Delete note |
| PATCH | /notes/{noteId}/pin | Yes | Notes | Set pin state |
| POST | /notes/{noteId}/items | Yes | Notes | Add item |
| PUT | /notes/{noteId}/items/{noteItemId} | Yes | Notes | Update item |
| PATCH | /notes/{noteId}/items/{noteItemId}/toggle | Yes | Notes | Toggle completed |
| PATCH | /notes/{noteId}/items/order | Yes | Notes | Reorder items |
| DELETE | /notes/{noteId}/items/{noteItemId} | Yes | Notes | Delete item |
Group
| Method | Endpoint | Auth | Description |
| GET | /group/members | Yes | List group members |
Action Histories
| Method | Endpoint | Auth | Description |
| GET | /action-histories | Yes | Audit trail of entity changes (paginated) |
Administration (Admin Only)
| Method | Endpoint | Auth | Description |
| GET | /users | Admin | List all users |
| PATCH | /users/{userId}/status | Admin | Change user status |
| GET | /groups | Admin | List all groups |
| POST | /groups | Admin | Create group |
| PUT | /groups/{groupId} | Admin | Update group |
Files
| Method | Endpoint | Auth | Description |
| GET | /files/{fileId}/status | Yes | Get file processing status |