MiseOS API Documentation
The MiseOS API provides programmatic access to the MiseOS kitchen management platform.
It allows applications to manage users, kitchen stations, menus, ingredients, and internal kitchen workflows used in professional kitchens.
Most endpoints follow REST principles and return JSON responses.
Real-time features are delivered through WebSocket and Server-Sent Events (SSE).
Base URL#
Current version of the API is available at:
https://miseos.corral.dk/api/v1
All endpoints listed in this documentation are relative to this base URL.
Versioning#
The MiseOS API uses URL versioning.
Current version:
https://miseos.corral.dk/api/v1
Future breaking changes will be released under /api/v2.
Resources#
The following sections describe the available API resources and their endpoints.
- Authentication
- Users
- Allergens
- Stations
- Dish Suggestions
- Dishes
- Weekly Menus
- Ingredient Requests
- Shopping Lists
- Notifications
- Menu Inspirations
- Takeaway Offers
- Takeaway Orders
Authentication#
Most endpoints require authentication via a JWT token in the Authorization header.
Tokens are obtained through the login endpoint.
Examples of public endpoints include:
POST /auth/registerPOST /auth/loginGET /weekly-menus/currentGET /weekly-menus/by-week
Authorization: Bearer <token>JWT tokens expire after 30 minutes.
You can obtain a token by calling the login endpoint.
Quick Start#
- Register a user
POST /auth/register
- Login
POST /auth/login
- Use the returned token
Authorization: Bearer
Example request to get user profile:
curl -H "Authorization: Bearer <token>" \
https://miseos.corral.dk/api/v1/users/meRoles#
| Role | Description |
|---|---|
HEAD_CHEF | Full access — management, approvals, publishing |
SOUS_CHEF | Management access — most operations except role changes |
LINE_COOK | Own resources — requests, suggestions, read access |
KITCHEN_STAFF | Any kitchen role (HEAD_CHEF, SOUS_CHEF, LINE_COOK) |
ANYONE | No authentication required |
Error Format#
All errors follow this format:
{
"statusCode": 404,
"message": "User with ID 99 was not found.",
"timestamp": "2026-03-27 12:00",
"path": "/api/v1/users/99",
"referenceId": "abc123xyz"
}Error Fields#
| Field | Description |
|---|---|
statusCode | HTTP status code of the error |
message | Human-readable error message |
timestamp | Time the error occurred (server time) |
path | API endpoint that was called |
referenceId | Unique ID for this error instance (use when contacting support) |
Common Error Status Codes#
| Status | Meaning |
|---|---|
400 | Invalid input or validation failure |
401 | Missing or invalid token |
403 | Authenticated but insufficient role or ownership |
404 | Resource not found |
409 | Conflict — resource already exists or wrong state |
500 | Internal server error |
502 | External service unavailable |