Restaurant estate
Restaurants
Get the list of all restaurants associated with a specific brand. This is typically the next step after identifying the brand to get specific restaurant IDs.
GET/brands/{brandId}/restaurantsList Restaurants
Retrieve all restaurants belonging to the specified brand.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| brandId | integer | Yes | The unique identifier of the brand. |
Response
{
"status": 200,
"code": "restaurant_succeed",
"data": [
{
"restaurantId": 200,
"name": "Innovorder Burgers Paris",
"contactPhone": "+33 1 23 45 67 89",
"brandId": 100,
"address": {
"addressId": 731239,
"locality": "Paris",
"postalCode": "75001",
"streetNumber": "10",
"route": "Rue de la Paix",
"lat": 48.868,
"lng": 2.329
}
}
]
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "restaurant_succeed" | Machine-readable application code for the result. |
| data | array | […] | Endpoint-specific response payload. |
| data[] | object | {…} | Endpoint-specific response payload. |
| data[].restaurantId | integer | 200 | Identifier of the restaurant. |
| data[].name | string | "Innovorder Burgers Paris" | The name value. |
| data[].contactPhone | string | "+33 1 23 45 67 89" | The contact phone value. |
| data[].brandId | integer | 100 | Identifier of the brand. |
| data[].address | object | {…} | Object containing address fields. |
| data[].address.addressId | integer | 731239 | Identifier of the associated address. |
| data[].address.locality | string | "Paris" | The locality value. |
| data[].address.postalCode | string | "75001" | The postal code value. |
| data[].address.streetNumber | string | "10" | The street number value. |
| data[].address.route | string | "Rue de la Paix" | The route value. |
| data[].address.lat | number | 48.868 | The lat value. |
| data[].address.lng | number | 2.329 | The lng value. |
Restaurant Details
Retrieve the full record of a single restaurant, including its address, tags, restaurant family associations, feature options and operation zone summary.
GET/restaurants/{restaurantId}Get Restaurant Details
Retrieve the complete record of a restaurant. The response includes the address (nullable), restaurantTags, brandRestaurantFamilies, the feature options of the restaurant, and the operationZone summary (null when the brand does not use operation zones). Any authenticated user can call this endpoint.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| restaurantId | integer | Yes | The unique identifier of the restaurant (numeric). |
Response
{
"status": 200,
"code": "restaurant_succeed",
"message": "You can access to these restaurants.",
"data": {
"restaurantId": 200,
"name": "Innovorder Burgers Paris",
"brandId": 100,
"contactPhone": "+33123456789",
"contactEmail": "paris@innovorder.com",
"externalId": null,
"address": {
"addressId": 731239,
"locality": "Paris",
"postalCode": "75001",
"streetNumber": "10",
"route": "Rue de la Paix",
"lat": 48.868,
"lng": 2.329
},
"restaurantTags": [
{
"value": "downtown"
}
],
"brandRestaurantFamilies": [
{
"brandRestaurantFamilyId": 1
}
],
"options": {
"ENABLE_ORDER_DETAIL_V2": {
"optionId": 11664,
"nameValue": "ENABLE_ORDER_DETAIL_V2",
"isActivated": true
}
},
"operationZone": null
}
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "restaurant_succeed" | Machine-readable application code for the result. |
| message | string | "You can access to these restaurants." | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.restaurantId | integer | 200 | Identifier of the restaurant. |
| data.name | string | "Innovorder Burgers Paris" | The name value. |
| data.brandId | integer | 100 | Identifier of the brand. |
| data.contactPhone | string | "+33123456789" | The contact phone value. |
| data.contactEmail | string | "paris@innovorder.com" | The contact email value. |
| data.externalId | null | null | Identifier in the connected external system. |
| data.address | object | {…} | Object containing address fields. |
| data.address.addressId | integer | 731239 | Identifier of the associated address. |
| data.address.locality | string | "Paris" | The locality value. |
| data.address.postalCode | string | "75001" | The postal code value. |
| data.address.streetNumber | string | "10" | The street number value. |
| data.address.route | string | "Rue de la Paix" | The route value. |
| data.address.lat | number | 48.868 | The lat value. |
| data.address.lng | number | 2.329 | The lng value. |
| data.restaurantTags | array | […] | List of restaurant tags entries. |
| data.restaurantTags[] | object | {…} | Object containing restaurant tags fields. |
| data.restaurantTags[].value | string | "downtown" | The value value. |
| data.brandRestaurantFamilies | array | […] | List of brand restaurant families entries. |
| data.brandRestaurantFamilies[] | object | {…} | Object containing brand restaurant families fields. |
| data.brandRestaurantFamilies[].brandRestaurantFamilyId | integer | 1 | Identifier of the associated brand restaurant family. |
| data.options | object | {…} | Object containing options fields. |
| data.options.ENABLE_ORDER_DETAIL_V2 | object | {…} | Object containing enable order detail v2 fields. |
| data.options.ENABLE_ORDER_DETAIL_V2.optionId | integer | 11664 | Identifier of the associated option. |
| data.options.ENABLE_ORDER_DETAIL_V2.nameValue | string | "ENABLE_ORDER_DETAIL_V2" | The name value value. |
| data.options.ENABLE_ORDER_DETAIL_V2.isActivated | boolean | true | Whether activated is enabled or applies. |
| data.operationZone | null | null | The operation zone value. |
Restaurant Legal Information
Manage the legal information of a restaurant (company registration, tax details, publication director and webmaster contacts). The read endpoint is publicly readable, but we recommend always calling it with an authenticated token.
Operation Zones
When the brand uses operation zones, the legal information returned and updated by these endpoints is the one of the primary operation zone of the restaurant - it is shared by all restaurants of that zone, not necessarily the historical legal record of the restaurant itself.
GET/restaurants/{restaurantId}/legalGet Restaurant Legal Information
Retrieve the legal information of the restaurant. The data field is null if no legal information exists. The nested address object is nullable.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| restaurantId | integer | Yes | The unique identifier of the restaurant. |
Response
{
"status": 200,
"code": "restaurant_legal_succeed",
"data": {
"legalId": 42,
"socialReason": "Innovorder Burgers SAS",
"organizationType": "SAS",
"capital": "50000",
"commerceRegistryCity": "Paris",
"siren": "123456789",
"taxNumber": "FR12345678901",
"industryClassificationCode": "5610A",
"publicationDirectorName": "Jean Dupont",
"publicationDirectorFunction": "CEO",
"webmasterName": "Tech Team",
"webmasterEmail": "tech@innovorder.com",
"address": {
"addressId": 731240,
"locality": "Paris",
"postalCode": "75001",
"lat": 48.868,
"lng": 2.329
}
}
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "restaurant_legal_succeed" | Machine-readable application code for the result. |
| data | object | {…} | Endpoint-specific response payload. |
| data.legalId | integer | 42 | Identifier of the associated legal. |
| data.socialReason | string | "Innovorder Burgers SAS" | The social reason value. |
| data.organizationType | string | "SAS" | The organization type value. |
| data.capital | string | "50000" | The capital value. |
| data.commerceRegistryCity | string | "Paris" | The commerce registry city value. |
| data.siren | string | "123456789" | The siren value. |
| data.taxNumber | string | "FR12345678901" | The tax number value. |
| data.industryClassificationCode | string | "5610A" | The industry classification code value. |
| data.publicationDirectorName | string | "Jean Dupont" | The publication director name value. |
| data.publicationDirectorFunction | string | "CEO" | The publication director function value. |
| data.webmasterName | string | "Tech Team" | The webmaster name value. |
| data.webmasterEmail | string | "tech@innovorder.com" | The webmaster email value. |
| data.address | object | {…} | Object containing address fields. |
| data.address.addressId | integer | 731240 | Identifier of the associated address. |
| data.address.locality | string | "Paris" | The locality value. |
| data.address.postalCode | string | "75001" | The postal code value. |
| data.address.lat | number | 48.868 | The lat value. |
| data.address.lng | number | 2.329 | The lng value. |
PUT/restaurants/{restaurantId}/legalUpdate Restaurant Legal Information
Create or update the legal information of the restaurant. All body fields are optional strings. If googlePlaceId is provided, the legal address is resolved through Google Places and created or updated accordingly. If no legal record exists yet, it is created. Note: changing siren, taxNumber or industryClassificationCode triggers a notification to the POS devices of the restaurant.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| restaurantId | integer | Yes | The unique identifier of the restaurant. |
Request Body
{
"socialReason": "Innovorder Burgers SAS",
"organizationType": "SAS",
"capital": "50000",
"commerceRegistryCity": "Paris",
"siren": "123456789",
"taxNumber": "FR12345678901",
"industryClassificationCode": "5610A",
"publicationDirectorName": "Jean Dupont",
"publicationDirectorFunction": "CEO",
"webmasterName": "Tech Team",
"webmasterEmail": "tech@innovorder.com",
"googlePlaceId": "ChIJD7fiBh9u5kcRYJSMaMOCCwQ"
}Request Body Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| socialReason | string | "Innovorder Burgers SAS" | The social reason value. |
| organizationType | string | "SAS" | The organization type value. |
| capital | string | "50000" | The capital value. |
| commerceRegistryCity | string | "Paris" | The commerce registry city value. |
| siren | string | "123456789" | The siren value. |
| taxNumber | string | "FR12345678901" | The tax number value. |
| industryClassificationCode | string | "5610A" | The industry classification code value. |
| publicationDirectorName | string | "Jean Dupont" | The publication director name value. |
| publicationDirectorFunction | string | "CEO" | The publication director function value. |
| webmasterName | string | "Tech Team" | The webmaster name value. |
| webmasterEmail | string | "tech@innovorder.com" | The webmaster email value. |
| googlePlaceId | string | "ChIJD7fiBh9u5kcRYJSMaMOCCwQ" | Identifier of the associated google place. |
Response
{
"status": 200,
"code": "restaurant_legal_update_succeed",
"data": {
"legalId": 42,
"socialReason": "Innovorder Burgers SAS",
"organizationType": "SAS",
"capital": "50000",
"commerceRegistryCity": "Paris",
"siren": "123456789",
"taxNumber": "FR12345678901",
"industryClassificationCode": "5610A",
"publicationDirectorName": "Jean Dupont",
"publicationDirectorFunction": "CEO",
"webmasterName": "Tech Team",
"webmasterEmail": "tech@innovorder.com",
"address": {
"addressId": 731240,
"locality": "Paris",
"postalCode": "75001",
"lat": 48.868,
"lng": 2.329
}
}
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "restaurant_legal_update_succeed" | Machine-readable application code for the result. |
| data | object | {…} | Endpoint-specific response payload. |
| data.legalId | integer | 42 | Identifier of the associated legal. |
| data.socialReason | string | "Innovorder Burgers SAS" | The social reason value. |
| data.organizationType | string | "SAS" | The organization type value. |
| data.capital | string | "50000" | The capital value. |
| data.commerceRegistryCity | string | "Paris" | The commerce registry city value. |
| data.siren | string | "123456789" | The siren value. |
| data.taxNumber | string | "FR12345678901" | The tax number value. |
| data.industryClassificationCode | string | "5610A" | The industry classification code value. |
| data.publicationDirectorName | string | "Jean Dupont" | The publication director name value. |
| data.publicationDirectorFunction | string | "CEO" | The publication director function value. |
| data.webmasterName | string | "Tech Team" | The webmaster name value. |
| data.webmasterEmail | string | "tech@innovorder.com" | The webmaster email value. |
| data.address | object | {…} | Object containing address fields. |
| data.address.addressId | integer | 731240 | Identifier of the associated address. |
| data.address.locality | string | "Paris" | The locality value. |
| data.address.postalCode | string | "75001" | The postal code value. |
| data.address.lat | number | 48.868 | The lat value. |
| data.address.lng | number | 2.329 | The lng value. |
Restaurant Management
Manage restaurants within a brand: update restaurant details, find the closest restaurant for web ordering, and retrieve restaurant data in various formats.
PUT/brand/{brandId}/restaurants/{restaurantId}Update Restaurant
Update the details of a restaurant including its address, contact information, tags, and family associations.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| brandId | integer | Yes | The unique identifier of the brand. |
| restaurantId | integer | Yes | The unique identifier of the restaurant. |
Request Body
{
"name": "Innovorder Burgers Paris Centre",
"contactEmail": "paris-centre@innovorder.com",
"contactName": "Jean Dupont",
"contactPhone": "+33123456789",
"address": {
"lat": 48.8566,
"lng": 2.3522
},
"externalId": "EXT-REST-001",
"imageUrl": "https://static.innovorder.fr/images/restaurant-200.jpg",
"restaurantTags": [
{
"value": "downtown"
}
],
"brandRestaurantFamilies": [
1,
2
]
}Request Body Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| name | string | "Innovorder Burgers Paris Centre" | The name value. |
| contactEmail | string | "paris-centre@innovorder.com" | The contact email value. |
| contactName | string | "Jean Dupont" | The contact name value. |
| contactPhone | string | "+33123456789" | The contact phone value. |
| address | object | {…} | Object containing address fields. |
| address.lat | number | 48.8566 | The lat value. |
| address.lng | number | 2.3522 | The lng value. |
| externalId | string | "EXT-REST-001" | Identifier in the connected external system. |
| imageUrl | string | "https://static.innovorder.fr/images/restaurant-200.jpg" | The image url value. |
| restaurantTags | array | […] | List of restaurant tags entries. |
| restaurantTags[] | object | {…} | Object containing restaurant tags fields. |
| restaurantTags[].value | string | "downtown" | The value value. |
| brandRestaurantFamilies | array | […] | List of brand restaurant families entries. |
| brandRestaurantFamilies[] | integer | 1 | The brand restaurant families value. |
Response
{
"status": 200,
"code": "restaurant_update_succeed",
"message": "Restaurant has been successfully updated.",
"data": {
"restaurantId": 200,
"name": "Innovorder Burgers Paris Centre",
"contactEmail": "paris-centre@innovorder.com",
"brandId": 100
}
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "restaurant_update_succeed" | Machine-readable application code for the result. |
| message | string | "Restaurant has been successfully updated." | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.restaurantId | integer | 200 | Identifier of the restaurant. |
| data.name | string | "Innovorder Burgers Paris Centre" | The name value. |
| data.contactEmail | string | "paris-centre@innovorder.com" | The contact email value. |
| data.brandId | integer | 100 | Identifier of the brand. |
GET/brand/{brandId}/restaurants/closestFind Closest Restaurant
Find the closest restaurants to a given location, sorted by distance. Used by web ordering to suggest the nearest restaurant.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| brandId | integer | Yes | The unique identifier of the brand. |
| lat | number | Yes | Latitude of the user location (query parameter). |
| lng | string | No | Longitude of the user location (query parameter). |
| consumption_mode | string | Yes | The desired consumption mode, e.g., "delivery", "eat_in", "take_away" (query parameter). |
| accept_closed_restaurants | boolean | No | Whether to include closed restaurants in results (query parameter). |
Response
{
"status": 200,
"code": "closest_restaurant_succeeded",
"message": "The closest restaurant to this location has been successfully found.",
"data": [
{
"restaurantId": 200,
"name": "Innovorder Burgers Paris Centre",
"distance": 0.45
},
{
"restaurantId": 201,
"name": "Innovorder Burgers Chatelet",
"distance": 1.2
}
]
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "closest_restaurant_succeeded" | Machine-readable application code for the result. |
| message | string | "The closest restaurant to this location has been successfully found." | Human-readable result message. Do not use this value for program logic. |
| data | array | […] | Endpoint-specific response payload. |
| data[] | object | {…} | Endpoint-specific response payload. |
| data[].restaurantId | integer | 200 | Identifier of the restaurant. |
| data[].name | string | "Innovorder Burgers Paris Centre" | The name value. |
| data[].distance | number | 0.45 | The distance value. |
GET/restaurantsGet All Restaurants (User Scope)
Retrieve all restaurants accessible to the authenticated user. Results are scoped based on the user role (admin sees all, brand user sees brand restaurants, restaurant user sees linked restaurants).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| externalId | string | No | Filter by external ID (query parameter). |
| brandExternalId | string | No | Filter by brand external ID (query parameter). |
Response
{
"status": 200,
"code": "restaurant_succeed",
"data": [
{
"restaurantId": 200,
"name": "Innovorder Burgers Paris",
"brandId": 100,
"contactPhone": "+33123456789",
"address": {
"locality": "Paris",
"postalCode": "75001"
}
}
]
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "restaurant_succeed" | Machine-readable application code for the result. |
| data | array | […] | Endpoint-specific response payload. |
| data[] | object | {…} | Endpoint-specific response payload. |
| data[].restaurantId | integer | 200 | Identifier of the restaurant. |
| data[].name | string | "Innovorder Burgers Paris" | The name value. |
| data[].brandId | integer | 100 | Identifier of the brand. |
| data[].contactPhone | string | "+33123456789" | The contact phone value. |
| data[].address | object | {…} | Object containing address fields. |
| data[].address.locality | string | "Paris" | The locality value. |
| data[].address.postalCode | string | "75001" | The postal code value. |
GET/restaurants/v2/listGet Restaurants V2 (Paginated)
Retrieve restaurants with pagination, search, and sorting capabilities. Returns a total count alongside the results.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| search | string | No | Search term to filter restaurants by name (query parameter). |
| sortBy | string | No | Column to sort by (default: "restaurantId") (query parameter). |
| sortDirection | string | No | Sort direction: "asc" or "desc" (query parameter). |
| offset | integer | No | Number of records to skip (default: 0) (query parameter). |
| limit | integer | No | Maximum number of records to return (default: 10) (query parameter). |
Response
{
"status": 200,
"code": "restaurant_succeed",
"data": {
"meta": {
"total": 42
},
"restaurants": [
{
"restaurantId": 200,
"name": "Innovorder Burgers Paris",
"brandId": 100
}
]
}
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "restaurant_succeed" | Machine-readable application code for the result. |
| data | object | {…} | Endpoint-specific response payload. |
| data.meta | object | {…} | Object containing meta fields. |
| data.meta.total | integer | 42 | Total number of matching records. |
| data.restaurants | array | […] | List of restaurants entries. |
| data.restaurants[] | object | {…} | Object containing restaurants fields. |
| data.restaurants[].restaurantId | integer | 200 | Identifier of the restaurant. |
| data.restaurants[].name | string | "Innovorder Burgers Paris" | The name value. |
| data.restaurants[].brandId | integer | 100 | Identifier of the brand. |
PUT/restaurants/{restaurantId}/shifts_closure_hourUpdate Shift Closure Hour
Update the last shift closure hour for a restaurant. The hour defines when the business day ends for reporting purposes.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| restaurantId | integer | Yes | The unique identifier of the restaurant. |
Request Body
{
"hour": "23:30",
"salesSystem": "pos"
}Request Body Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| hour | string | "23:30" | The hour value. |
| salesSystem | string | "pos" | The sales system value. |
Response
{
"status": 200,
"code": "restaurant_last_shift_closure_hour_updated",
"message": "Shift closure hour updated."
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "restaurant_last_shift_closure_hour_updated" | Machine-readable application code for the result. |
| message | string | "Shift closure hour updated." | Human-readable result message. Do not use this value for program logic. |
Shifts
Shifts define the recurring operating time windows of a restaurant, used for entrance fees, pricing rules and reporting boundaries. The full shift API - GET /restaurants/{restaurantId}/shifts and the /shifts CRUD endpoints - is documented in POS → Shifts.
Attendance
Daily attendance counts per channel (GET /restaurants/{restaurantId}/attendance) are documented in Orders → Retrieve Orders (Statistics & Attendance).