Download OpenAPI specification:
Allows a manager to accept or reject an existing guest report. If the report is accepted (isAccepted: true), the system automatically issues a ban for the reported guest until the specified expiresAt date and sends an email notification. Requires MANAGER role.
| reportToken | string Unique identifier (token) of the report being evaluated |
| expiresAt | string <date-time> The exact date and time when the ban should expire. Required if the report is accepted. |
| accepted | boolean |
{- "reportToken": "550e8400-e29b-41d4-a716-446655440000",
- "expiresAt": "2026-12-31T23:59:59Z",
- "accepted": true
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a list of all available dishes including ingredients and allergens. The names of categories and allergens are translated based on the 'Accept-Language' header.
| page | integer <int32> >= 1 Page number (Default 1) |
| size | integer <int32> >= 1 Number of item per page (Default 10) |
| excludedAllergens | Array of strings List of allergen tokens to exclude (e.g., GLUTEN, LACTOSE) |
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Updates dish details and/or replaces its photo on S3. Requires ROLE_MANAGER privileges. Uses multipart/form-data.
| dishToken required | string non-empty |
| newName | string |
| categoryToken | string |
| price | integer <int32> |
| ingredientTokens | Array of strings |
| photo | string <binary> |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Creates a new dish in the menu and optionally uploads its photo to S3. Requires ROLE_MANAGER privileges. Uses multipart/form-data.
| name required | string non-empty |
| price required | integer <int32> |
| categoryToken required | string non-empty |
| ingredientTokens | Array of strings |
| photo | string <binary> |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Toggles the availability of a dish. If marking as unavailable, an optional reason can be provided. Requires ROLE_MANAGER privileges.
| token required | string non-empty |
| unavailableReason | string [ 0 .. 500 ] characters |
| available | boolean |
{- "token": "string",
- "unavailableReason": "string",
- "available": true
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Creates a new employee account (Manager or Waiter) and automatically activates it. Requires ROLE_MANAGER privileges.
object (RegisterRequest) | |
| admin | boolean |
{- "register": {
- "username": "Mati_99",
- "email": "mati@example.pl",
- "password": "SecurePass123!",
- "confirmPassword": "SecurePass123!"
}, - "admin": true
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Updates the email and/or username of an existing employee. Only provided fields will be updated. Requires ROLE_MANAGER privileges.
| employeeToken | string |
string | |
| userName | string |
{- "employeeToken": "string",
- "email": "string",
- "userName": "string"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Generates a new 2FA secret and returns a QR code URI along with a manual code. Does NOT enable 2FA yet. Requires ROLE_MANAGER.
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Verifies the 6-digit code from the authenticator app. If correct, permanently enables 2FA for the manager's account. Requires ROLE_MANAGER.
| code | integer <int32> |
{- "code": 0
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a list of tables. If startTime and endTime are provided, it filters out tables that are reserved or unavailable in that timeframe. The names of table status are translated based on the 'Accept-Language' header.
required | object (TableFilterRequest) |
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Creates a new table with the specified number and capacity. The table is automatically assigned the default 'AVAILABLE' status. Requires ROLE_MANAGER.
| tableNumber | integer <int32> |
| capacity | integer <int32> |
{- "tableNumber": 0,
- "capacity": 0
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Creates a new table status in the system. The English name is automatically used to generate a unique token. Requires MANAGER role.
| namePl required | string non-empty |
| nameEn required | string non-empty |
{- "namePl": "string",
- "nameEn": "string"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a paginated and filterable list of reservations made by the currently authenticated user. Supports filtering by date range and status.
| page | integer <int32> >= 1 Page number (Default 1) |
| size | integer <int32> >= 1 Number of item per page (Default 10) |
| fromDate | string <date-time> From this date |
| toDate | string <date-time> To this date |
| statusToken | string If give status token, list show only reservation with this status |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Creates a new incident report for a specific client. The user being reported must have the ROLE_CLIENT. The report is created with an initial status of IN_PROGRESS. Requires WAITER or MANAGER role.
| clientToken required | string non-empty |
| reason required | string [ 10 .. 500 ] characters |
{- "clientToken": "string",
- "reason": "stringstri"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Creates a new order status in the system. The English name is automatically used to generate a unique token. Requires MANAGER role.
| namePl required | string non-empty |
| nameEn required | string non-empty |
{- "namePl": "string",
- "nameEn": "string"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Creates a new order item status in the system. The English name is automatically used to generate a unique token. Requires MANAGER role.
| namePl required | string non-empty |
| nameEn required | string non-empty |
{- "namePl": "string",
- "nameEn": "string"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Creates a new ingredient in the system. The English name is automatically used to generate a unique token. Requires MANAGER role.
object (AddEntityRequest) | |
| allergenTokens | Array of strings unique |
{- "entity": {
- "namePl": "string",
- "nameEn": "string"
}, - "allergenTokens": [
- "string"
]
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Creates a new dish category in the system. The English name is automatically used to generate a unique token. Requires MANAGER role.
| namePl required | string non-empty |
| nameEn required | string non-empty |
{- "namePl": "string",
- "nameEn": "string"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Creates a new allergen in the system. The English name is automatically used to generate a unique token. Requires MANAGER role.
| namePl required | string non-empty |
| nameEn required | string non-empty |
{- "namePl": "string",
- "nameEn": "string"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Allows a manager to manually ban a client without needing a prior report. The targeted user must have the ROLE_CLIENT. Automatically deactivates the user and sends an email notification. Requires MANAGER role.
| clientToken required | string non-empty Unique identifier (token) of the client to be banned |
| reason required | string [ 0 .. 500 ] characters The detailed reason for the ban. This will be included in the email sent to the user. |
| expiresAt required | string <date-time> The exact date and time when the ban should expire |
{- "clientToken": "330e8400-e29b-41d4-a716-116655440000",
- "reason": "Repeated aggressive behavior towards staff.",
- "expiresAt": "2026-12-31T23:59:59Z"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Validates the 6-digit 2FA code along with the Pre-Auth token. If valid, returns the final JWT Bearer token giving full access to the system.
| preAuthToken required | string non-empty |
| code required | integer <int32> |
{- "preAuthToken": "string",
- "code": 0
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Exchanges a valid Refresh Token for a new pair of Access and Refresh tokens.
| refreshToken | string |
| refreshToken required | string non-empty |
{- "refreshToken": "string"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Logs out the authenticated user by revoking their refresh token. The client application must also delete the JWT and Refresh Token locally.
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Authenticates a user using their username (or email) and password. If credentials are valid and 2FA is OFF, a final JWT token is returned. If 2FA is ON, a Pre-Auth token is returned and the 'requires2fa' flag is set to true. In that case, the client must proceed to the /verify-2fa endpoint.
| username required | string non-empty Username or Email address |
| password required | string non-empty User password |
Admin Login
{- "username": "admin",
- "password": "Admin123!"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Allows a manager to change the role of an employee (e.g., promote to Manager or demote to Waiter). Managers cannot change their own role.
| employeeToken required | string non-empty |
| admin | boolean |
{- "employeeToken": "string",
- "admin": true
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Allows a manager to forcefully change an employee's password. Managers cannot change their own password using this endpoint.
| employeeToken required | string non-empty |
| password required | string [ 6 .. 100 ] characters ^(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*(),.?"{}|<>... Password (min. 6 chars, 1 uppercase, 1 digit, 1 special) |
| confirmPassword required | string non-empty Must match the password field |
{- "employeeToken": "string",
- "password": "SecurePass123!",
- "confirmPassword": "SecurePass123!"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Allows a manager to block or unblock an employee's access to the system. Managers cannot change their own availability.
| employeeToken required | string non-empty |
| available | boolean |
{- "employeeToken": "string",
- "available": true
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all table statuses available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Review list of all Redis caches names (e.g., 'usersList', 'dishMenu'). Requires ROLE_MANAGER.
{- "data": [
- "string"
], - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a paginated, flat list of users (both staff and guests) with their role tokens and a convenient isStaff flag.
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "username": "string",
- "email": "string",
- "isActive": true,
- "roleTokens": [
- "string"
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "staff": true
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a paginated, flat list of tables with their statuses.
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "tableNumber": 0,
- "capacity": 0,
- "statusTokens": [
- "string"
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a flat list of all available roles in the system. Used to synchronize the roles dictionary on client devices.
{- "data": [
- {
- "name": "string",
- "token": "string"
}
], - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a paginated, flat list of reservations with foreign key tokens (user, table, statuses).
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "userToken": "string",
- "tableToken": "string",
- "statusTokens": [
- "string"
], - "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a paginated, flat list of guest reports with foreign key tokens (guest, reporter, statuses). Page size is strictly fixed by the server.
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "guestToken": "string",
- "reporterToken": "string",
- "statusTokens": [
- "string"
], - "reason": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a paginated, flat list of orders with foreign key tokens (reservation, table, waiter, statuses).
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "reservationToken": "string",
- "tableToken": "string",
- "waiterToken": "string",
- "statusTokens": [
- "string"
], - "totalPrice": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a paginated, flat list of order items with foreign key tokens (order, product, statuses).
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "orderToken": "string",
- "productToken": "string",
- "statusTokens": [
- "string"
], - "quantity": 0,
- "priceAtTimeOfOrder": 0,
- "note": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a paginated, flat list of ingredients with their translations and associated allergen tokens.
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string",
- "allergenTokens": [
- "string"
]
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a paginated, flat list of dishes with foreign key tokens. Page size is strictly fixed by the server.
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "name": "string",
- "price": 0,
- "unavailableReason": "string",
- "imageUrl": "string",
- "categoryToken": "string",
- "ingredientTokens": [
- "string"
], - "available": true
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns flat lists of all dictionaries (statuses, categories, allergens) with EN/PL translations, perfect for saving in local SQLite
{- "allergens": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string"
}
], - "dishCategories": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string"
}
], - "banStatuses": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string"
}
], - "reportStatuses": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string"
}
], - "orderStatuses": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string"
}
], - "orderItemStatuses": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string"
}
], - "reservationStatuses": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string"
}
], - "tableStatuses": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string"
}
]
}Returns the number of records and pages for each system module. Used to initialize the database on mobile and desktop devices.
{- "modules": {
- "property1": {
- "totalCount": 0,
- "totalPages": 0
}, - "property2": {
- "totalCount": 0,
- "totalPages": 0
}
}, - "serverTime": "2019-08-24T14:15:22Z"
}Returns a paginated, flat list of bans with foreign key tokens (user, bannedBy, statuses). Page size is strictly fixed by the server.
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "userToken": "string",
- "bannedByToken": "string",
- "statusTokens": [
- "string"
], - "reason": "string",
- "expiresAt": "2019-08-24T14:15:22Z",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves the full details of a specific reservation, including pre-ordered dishes and total price.
| token required | string Reservaton token |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all reservation statuses available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all order item statuses available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all order statuses available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all ingredients available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all dish categories available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all allergens available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all bans statuses available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Performs a soft delete of an employee account, anonymizing their personal data and deactivating the account. Managers cannot delete themselves.
| employeeToken required | string Token of the employee to delete |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Performs a soft delete of a table. It will no longer be visible in the active tables list. Requires ROLE_MANAGER.
| token required | string Table token |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Marks a table status as deleted and reassigns tables to 'AVAILABLE'. Requires ROLE_MANAGER.
| token required | string |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Flushes a specific Redis cache by its name (e.g., 'usersList', 'dishMenu'). Requires ROLE_MANAGER.
| cacheName required | string Name of the cache to clear |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Marks an order status as deleted and automatically reassigns all associated orders to the default 'OTHER' status. Requires ROLE_MANAGER.
| token required | string |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Marks an order item status as deleted and automatically reassigns all associated order items to the default 'OTHER' status. Requires ROLE_MANAGER.
| token required | string |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Performs a soft delete on an ingredient by its token. Also automatically marks all dishes containing this ingredient as unavailable. Requires MANAGER role.
| token required | string |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Marks a dish as deleted by setting its availability to false, adding an unavailable reason, and setting the deleted_at timestamp. Requires ROLE_MANAGER privileges.
| token required | string The unique token of the dish to be removed |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Marks a dish category as deleted and automatically reassigns all associated dishes to the default 'OTHER' category. Requires ROLE_MANAGER privileges.
| token required | string The unique token of the dish category to be removed |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Marks a dish as allergen by setting its availability to false, adding an unavailable reason, and setting the deleted_at timestamp. Requires ROLE_MANAGER privileges.
| token required | string The unique token of the dish to be removed |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a list of all available dishes including ingredients and allergens. The names of categories and allergens are translated based on the 'Accept-Language' header.
| page | integer <int32> >= 1 Page number (Default 1) |
| size | integer <int32> >= 1 Number of item per page (Default 10) |
| excludedAllergens | Array of strings List of allergen tokens to exclude (e.g., GLUTEN, LACTOSE) |
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a list of tables. If startTime and endTime are provided, it filters out tables that are reserved or unavailable in that timeframe. The names of table status are translated based on the 'Accept-Language' header.
required | object (TableFilterRequest) |
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a paginated and filterable list of reservations made by the currently authenticated user. Supports filtering by date range and status.
| page | integer <int32> >= 1 Page number (Default 1) |
| size | integer <int32> >= 1 Number of item per page (Default 10) |
| fromDate | string <date-time> From this date |
| toDate | string <date-time> To this date |
| statusToken | string If give status token, list show only reservation with this status |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Creates a new table reservation for the authenticated user. Optionally, a list of dishes can be provided to pre-order food for the reservation.
Array of objects (ReservationDishRequest) | |
| tableToken required | string non-empty |
| startTime required | string <date-time> |
| endTime required | string <date-time> |
{- "dishes": [
- {
- "dishToken": "string",
- "quantity": 1,
- "note": "string"
}
], - "tableToken": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Updates the user's password using the reset token received via email.
| token required | string non-empty Token to reset passowrd |
| password required | string [ 6 .. 100 ] characters ^(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*(),.?"{}|<>... |
| confirmPassword required | string non-empty Must match the password field |
{- "token": "adadfafrfwerfwerferfwfs",
- "password": "string",
- "confirmPassword": "SecurePass123!"
}{- "data": true,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Sends a password reset link to the provided email address if the account exists. For privacy reasons, always returns a success message.
| email required | string |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Creates a new account with 'isActive' set to false and sends an activation email containing a unique token. The user must call the /confirm endpoint with this token to enable the account.
| username required | string non-empty ^[a-zA-Z0-9_.-]+$ Unique username for the account |
| email required | string <email> non-empty Valid email address for account activation |
| password required | string [ 6 .. 100 ] characters ^(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*(),.?"{}|<>... Password (min. 6 chars, 1 uppercase, 1 digit, 1 special) |
| confirmPassword required | string non-empty Must match the password field |
{- "username": "Mati_99",
- "email": "mati@example.pl",
- "password": "SecurePass123!",
- "confirmPassword": "SecurePass123!"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Exchanges a valid Refresh Token for a new pair of Access and Refresh tokens.
| refreshToken | string |
| refreshToken required | string non-empty |
{- "refreshToken": "string"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Logs out the authenticated user by revoking their refresh token. The client application must also delete the JWT and Refresh Token locally.
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Authenticates a user using their username (or email) and password. If credentials are valid and 2FA is OFF, a final JWT token is returned. If 2FA is ON, a Pre-Auth token is returned and the 'requires2fa' flag is set to true. In that case, the client must proceed to the /verify-2fa endpoint.
| username required | string non-empty Username or Email address |
| password required | string non-empty User password |
Admin Login
{- "username": "admin",
- "password": "Admin123!"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Accepts a Google ID Token. If the user doesn't exist, an account is created automatically. Returns a standard JWT Bearer token.
| token required | string non-empty |
{- "token": "string"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Allows the authenticated user to change their display name.
| userName required | string non-empty New user name |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Allows an authenticated user to change their password by verifying the current password.
| oldPassword required | string non-empty |
| password required | string [ 6 .. 100 ] characters ^(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*(),.?"{}|<>... Password (min. 6 chars, 1 uppercase, 1 digit, 1 special) |
| confirmPassword required | string non-empty Must match the password field |
{- "oldPassword": "string",
- "password": "SecurePass123!",
- "confirmPassword": "SecurePass123!"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Initiates the email update process by saving the new email in a pending state and sending a verification link to it.
| email required | string <email> non-empty New email |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Finalizes the email update process by validating the verification token sent to the user's new email address.
| verificationToken required | string non-empty New email confirm token |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Cancels an active reservation by changing its status to CANCELLED.
| token required | string Reservation token |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all table statuses available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves the full details of a specific reservation, including pre-ordered dishes and total price.
| token required | string Reservaton token |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all reservation statuses available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all order item statuses available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all order statuses available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all ingredients available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all dish categories available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all allergens available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Finalizes the registration process by activating the user account. Expects a unique token received via email. Once activated, the user can log in.
| token required | string Example: token=f47ac10b-58cc-4372-a567-0e02b2c3d479 The unique activation token from the email |
{- "data": true,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a list of all available dishes including ingredients and allergens. The names of categories and allergens are translated based on the 'Accept-Language' header.
| page | integer <int32> >= 1 Page number (Default 1) |
| size | integer <int32> >= 1 Number of item per page (Default 10) |
| excludedAllergens | Array of strings List of allergen tokens to exclude (e.g., GLUTEN, LACTOSE) |
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a list of tables. If startTime and endTime are provided, it filters out tables that are reserved or unavailable in that timeframe. The names of table status are translated based on the 'Accept-Language' header.
required | object (TableFilterRequest) |
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a paginated and filterable list of reservations made by the currently authenticated user. Supports filtering by date range and status.
| page | integer <int32> >= 1 Page number (Default 1) |
| size | integer <int32> >= 1 Number of item per page (Default 10) |
| fromDate | string <date-time> From this date |
| toDate | string <date-time> To this date |
| statusToken | string If give status token, list show only reservation with this status |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Allows adding as many new dishes as you want to an existing reservation in a single request. Pass a list of dishes in the request body. If a requested dish (with the exact same note) already exists on the order, its quantity will be automatically increased. If it is a new dish or has a different note, it will be added as a separate line item. The total price of the order is automatically recalculated.
| reservationToken required | string |
| dishToken required | string non-empty |
| quantity required | integer <int32> >= 1 |
| note | string |
[- {
- "dishToken": "string",
- "quantity": 1,
- "note": "string"
}
]{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Creates a new incident report for a specific client. The user being reported must have the ROLE_CLIENT. The report is created with an initial status of IN_PROGRESS. Requires WAITER or MANAGER role.
| clientToken required | string non-empty |
| reason required | string [ 10 .. 500 ] characters |
{- "clientToken": "string",
- "reason": "stringstri"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Exchanges a valid Refresh Token for a new pair of Access and Refresh tokens.
| refreshToken | string |
| refreshToken required | string non-empty |
{- "refreshToken": "string"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Logs out the authenticated user by revoking their refresh token. The client application must also delete the JWT and Refresh Token locally.
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Authenticates a user using their username (or email) and password. If credentials are valid and 2FA is OFF, a final JWT token is returned. If 2FA is ON, a Pre-Auth token is returned and the 'requires2fa' flag is set to true. In that case, the client must proceed to the /verify-2fa endpoint.
| username required | string non-empty Username or Email address |
| password required | string non-empty User password |
Admin Login
{- "username": "admin",
- "password": "Admin123!"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Updates the status of a specific table to OUT_OF_SERVICE. This is typically used by waiters to indicate that a table have a problem (leg is broken).
| token required | string Table token |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Updates the status of a specific table to CLEANING. This is typically used by waiters to indicate that a table needs to be prepared for the next guests.
| token required | string Table token |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Assigns a specific waiter to a reservation and its associated order. Automatically changes the status of the order and pending dishes to IN_PROGRESS.
| token required | string Reservation token |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Changes the reservation status to NO_SHOW. If an order is attached to the reservation, its status (and the status of its items) is changed to CANCELLED. Requires the reservation to be in the ACTIVE state. Available only for waiters.
| token required | string Reservation token |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all table statuses available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a paginated, flat list of users (both staff and guests) with their role tokens and a convenient isStaff flag.
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "username": "string",
- "email": "string",
- "isActive": true,
- "roleTokens": [
- "string"
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "staff": true
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a paginated, flat list of tables with their statuses.
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "tableNumber": 0,
- "capacity": 0,
- "statusTokens": [
- "string"
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a flat list of all available roles in the system. Used to synchronize the roles dictionary on client devices.
{- "data": [
- {
- "name": "string",
- "token": "string"
}
], - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a paginated, flat list of reservations with foreign key tokens (user, table, statuses).
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "userToken": "string",
- "tableToken": "string",
- "statusTokens": [
- "string"
], - "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a paginated, flat list of guest reports with foreign key tokens (guest, reporter, statuses). Page size is strictly fixed by the server.
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "guestToken": "string",
- "reporterToken": "string",
- "statusTokens": [
- "string"
], - "reason": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a paginated, flat list of orders with foreign key tokens (reservation, table, waiter, statuses).
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "reservationToken": "string",
- "tableToken": "string",
- "waiterToken": "string",
- "statusTokens": [
- "string"
], - "totalPrice": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a paginated, flat list of order items with foreign key tokens (order, product, statuses).
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "orderToken": "string",
- "productToken": "string",
- "statusTokens": [
- "string"
], - "quantity": 0,
- "priceAtTimeOfOrder": 0,
- "note": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a paginated, flat list of ingredients with their translations and associated allergen tokens.
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string",
- "allergenTokens": [
- "string"
]
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns a paginated, flat list of dishes with foreign key tokens. Page size is strictly fixed by the server.
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "name": "string",
- "price": 0,
- "unavailableReason": "string",
- "imageUrl": "string",
- "categoryToken": "string",
- "ingredientTokens": [
- "string"
], - "available": true
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Returns flat lists of all dictionaries (statuses, categories, allergens) with EN/PL translations, perfect for saving in local SQLite
{- "allergens": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string"
}
], - "dishCategories": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string"
}
], - "banStatuses": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string"
}
], - "reportStatuses": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string"
}
], - "orderStatuses": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string"
}
], - "orderItemStatuses": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string"
}
], - "reservationStatuses": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string"
}
], - "tableStatuses": [
- {
- "token": "string",
- "nameEn": "string",
- "namePl": "string"
}
]
}Returns the number of records and pages for each system module. Used to initialize the database on mobile and desktop devices.
{- "modules": {
- "property1": {
- "totalCount": 0,
- "totalPages": 0
}, - "property2": {
- "totalCount": 0,
- "totalPages": 0
}
}, - "serverTime": "2019-08-24T14:15:22Z"
}Returns a paginated, flat list of bans with foreign key tokens (user, bannedBy, statuses). Page size is strictly fixed by the server.
| page | integer <int32> Default: 1 |
{- "data": {
- "items": [
- {
- "token": "string",
- "userToken": "string",
- "bannedByToken": "string",
- "statusTokens": [
- "string"
], - "reason": "string",
- "expiresAt": "2019-08-24T14:15:22Z",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pageNumber": 0,
- "pageSize": 0,
- "totalCount": 0,
- "totalPages": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}, - "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves the full details of a specific reservation, including pre-ordered dishes and total price.
| token required | string Reservaton token |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all reservation statuses available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all order item statuses available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all order statuses available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all ingredients available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all dish categories available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves a dictionary list of all allergens available in the system. The names are translated based on the 'Accept-Language' header.
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Decreases the quantity of a specific dish in the reservation's order. If the quantity to remove is equal to or greater than the current quantity, the dish is completely removed from the order.
| reservationToken required | string |
| dishToken required | string non-empty |
| quantity required | integer <int32> >= 1 |
| note | string |
{- "dishToken": "string",
- "quantity": 1,
- "note": "string"
}{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}Retrieves the public menu grouped by category. Returns only available dishes without internal tokens. Category names, ingredients, and allergens are translated dynamically based on the 'Accept-Language' header. This endpoint is strictly public and does not require any authentication (JWT token).
| Accept-Language | string Default: pl Enum: "pl" "en" Preferred language (e.g., 'pl' or 'en') |
{- "data": null,
- "message": "string",
- "statusCode": 0,
- "errorMessages": [
- "string"
], - "success": true
}