# Consumption Modes

Consumption modes define how customers can consume their orders on a given sales channel: delivery, take away, sit in, or drive. Each mode carries its own fee, reduction, preparation delay, additional information prompt (such as a table number), and notification settings. Fees and reductions are expressed in cents (`250` = 2.50); delays are expressed in minutes.

#### Reference Values

channelId

`1` (Kiosk), `2` (Web). Only these two channels are accepted when creating a consumption mode.

type

`MODE_DELIVERY`, `MODE_TAKE_AWAY`, `MODE_SIT_IN`, `MODE_DRIVE`

additionalInformationType

`TABLE_NUMBER`, `COMMENT`, `NUMBER`

flags

Bitmask of mode options: `1` (drive mode), `2` (e-wallet), `4` (send order notification emails as blind carbon copy). Defaults to `0` on creation (`1` for `MODE_DRIVE`); omit it unless you need to change these options.

### `GET /consumption_modes` - List Consumption Modes

Retrieve the consumption modes of a restaurant for a given sales channel, including their linked modules (such as bound delivery areas). Note that the query parameters use snake\_case.

#### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| restaurant\_id | integer | Yes | The unique identifier of the restaurant (query parameter). |
| channel\_id | integer | Yes | The sales channel identifier: 1 (Kiosk) or 2 (Web) (query parameter). |

#### Response

```json
{
  "status": 200,
  "code": "consumption_modes_succeed",
  "data": [
    {
      "consumptionModeId": 15,
      "restaurantId": 200,
      "brandId": 100,
      "channelId": 2,
      "type": "MODE_DELIVERY",
      "flags": 0,
      "fee": 250,
      "labelFee": "Delivery fee",
      "reduction": 0,
      "labelReduction": null,
      "delay": 30,
      "additionalInformationTitle": null,
      "additionalInformationType": null,
      "additionalInformationValueIfSkipped": null,
      "tableListChoice": null,
      "additionalInformationAllowSkip": null,
      "isTimeSlotModeEnabled": false,
      "customerShowUpNotification": false,
      "sendReminderEmailShowUpNotification": false,
      "delayBeforeSendingReminderEmailShowUpNotification": 0
    },
    {
      "consumptionModeId": 16,
      "restaurantId": 200,
      "brandId": 100,
      "channelId": 2,
      "type": "MODE_SIT_IN",
      "flags": 0,
      "fee": 0,
      "labelFee": null,
      "reduction": 0,
      "labelReduction": null,
      "delay": 15,
      "additionalInformationTitle": "Table number",
      "additionalInformationType": "TABLE_NUMBER",
      "additionalInformationValueIfSkipped": null,
      "tableListChoice": null,
      "additionalInformationAllowSkip": false,
      "isTimeSlotModeEnabled": false,
      "customerShowUpNotification": false,
      "sendReminderEmailShowUpNotification": false,
      "delayBeforeSendingReminderEmailShowUpNotification": 0
    }
  ]
}
```

##### 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 | "consumption\_modes\_succeed" | Machine-readable application code for the result. |
| data | array | \[…\] | Endpoint-specific response payload. |
| data\[\] | object | {…} | Endpoint-specific response payload. |
| data\[\].consumptionModeId | integer | 15 | Identifier of the associated consumption mode. |
| data\[\].restaurantId | integer | 200 | Identifier of the restaurant. |
| data\[\].brandId | integer | 100 | Identifier of the brand. |
| data\[\].channelId | integer | 2 | Identifier of the associated channel. |
| data\[\].type | string | "MODE\_DELIVERY" | The type value. |
| data\[\].flags | integer | 0 | The flags value. |
| data\[\].fee | integer | 250 | The fee value. |
| data\[\].labelFee | string | "Delivery fee" | The label fee value. |
| data\[\].reduction | integer | 0 | The reduction value. |
| data\[\].labelReduction | null | null | The label reduction value. |
| data\[\].delay | integer | 30 | The delay value. |
| data\[\].additionalInformationTitle | null | null | The additional information title value. |
| data\[\].additionalInformationType | null | null | The additional information type value. |
| data\[\].additionalInformationValueIfSkipped | null | null | The additional information value if skipped value. |
| data\[\].tableListChoice | null | null | The table list choice value. |
| data\[\].additionalInformationAllowSkip | null | null | The additional information allow skip value. |
| data\[\].isTimeSlotModeEnabled | boolean | false | Whether time slot mode enabled is enabled or applies. |
| data\[\].customerShowUpNotification | boolean | false | The customer show up notification value. |
| data\[\].sendReminderEmailShowUpNotification | boolean | false | The send reminder email show up notification value. |
| data\[\].delayBeforeSendingReminderEmailShowUpNotification | integer | 0 | The delay before sending reminder email show up notification value. |

### `POST /consumption_modes` - Create Consumption Mode

Create a consumption mode for a restaurant on a given channel. Creation is idempotent per (restaurantId, channelId, type): if a mode of the same type was previously deleted, the same record is restored instead of a new one being created. Only channelId values 1 (Kiosk) and 2 (Web) are accepted; other values are rejected with a 400 error. Unknown fields in the request body are silently ignored.

#### Request Body

```json
{
  "channelId": 2,
  "restaurantId": 200,
  "type": "MODE_TAKE_AWAY"
}
```

##### 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 |
| --- | --- | --- | --- |
| channelId | integer | 2 | Identifier of the associated channel. |
| restaurantId | integer | 200 | Identifier of the restaurant. |
| type | string | "MODE\_TAKE\_AWAY" | The type value. |

#### Response

```json
{
  "status": 201,
  "code": "consumption_mode_created",
  "data": {
    "consumptionModeId": 17,
    "restaurantId": 200,
    "brandId": 100,
    "channelId": 2,
    "type": "MODE_TAKE_AWAY",
    "flags": 0,
    "fee": 0,
    "labelFee": null,
    "reduction": 0,
    "labelReduction": null,
    "delay": 15,
    "additionalInformationTitle": null,
    "additionalInformationType": null,
    "additionalInformationValueIfSkipped": null,
    "tableListChoice": null,
    "additionalInformationAllowSkip": null,
    "isTimeSlotModeEnabled": false,
    "customerShowUpNotification": false,
    "sendReminderEmailShowUpNotification": false,
    "delayBeforeSendingReminderEmailShowUpNotification": 0
  }
}
```

##### 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 | 201 | HTTP status code returned by the API. |
| code | string | "consumption\_mode\_created" | Machine-readable application code for the result. |
| data | object | {…} | Endpoint-specific response payload. |
| data.consumptionModeId | integer | 17 | Identifier of the associated consumption mode. |
| data.restaurantId | integer | 200 | Identifier of the restaurant. |
| data.brandId | integer | 100 | Identifier of the brand. |
| data.channelId | integer | 2 | Identifier of the associated channel. |
| data.type | string | "MODE\_TAKE\_AWAY" | The type value. |
| data.flags | integer | 0 | The flags value. |
| data.fee | integer | 0 | The fee value. |
| data.labelFee | null | null | The label fee value. |
| data.reduction | integer | 0 | The reduction value. |
| data.labelReduction | null | null | The label reduction value. |
| data.delay | integer | 15 | The delay value. |
| data.additionalInformationTitle | null | null | The additional information title value. |
| data.additionalInformationType | null | null | The additional information type value. |
| data.additionalInformationValueIfSkipped | null | null | The additional information value if skipped value. |
| data.tableListChoice | null | null | The table list choice value. |
| data.additionalInformationAllowSkip | null | null | The additional information allow skip value. |
| data.isTimeSlotModeEnabled | boolean | false | Whether time slot mode enabled is enabled or applies. |
| data.customerShowUpNotification | boolean | false | The customer show up notification value. |
| data.sendReminderEmailShowUpNotification | boolean | false | The send reminder email show up notification value. |
| data.delayBeforeSendingReminderEmailShowUpNotification | integer | 0 | The delay before sending reminder email show up notification value. |

### `PUT /consumption_modes/{consumptionModeId}` - Update Consumption Mode

Update a consumption mode: fee, reduction, preparation delay, additional information prompt, and show-up notification settings. All fields are optional. Only send the documented fields below. Returns a 400 data\_not\_found error if the consumption mode does not exist.

#### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| consumptionModeId | integer | Yes | The unique identifier of the consumption mode to update. |

#### Request Body

```json
{
  "flags": 0,
  "delay": 20,
  "fee": 300,
  "labelFee": "Delivery fee",
  "reduction": 0,
  "labelReduction": null,
  "additionalInformationType": "TABLE_NUMBER",
  "additionalInformationTitle": "Table number",
  "additionalInformationAllowSkip": true,
  "additionalInformationValueIfSkipped": "N/A",
  "tableListChoice": null,
  "customerShowUpNotification": true,
  "sendReminderEmailShowUpNotification": true,
  "delayBeforeSendingReminderEmailShowUpNotification": 15
}
```

##### 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 |
| --- | --- | --- | --- |
| flags | integer | 0 | The flags value. |
| delay | integer | 20 | The delay value. |
| fee | integer | 300 | The fee value. |
| labelFee | string | "Delivery fee" | The label fee value. |
| reduction | integer | 0 | The reduction value. |
| labelReduction | null | null | The label reduction value. |
| additionalInformationType | string | "TABLE\_NUMBER" | The additional information type value. |
| additionalInformationTitle | string | "Table number" | The additional information title value. |
| additionalInformationAllowSkip | boolean | true | The additional information allow skip value. |
| additionalInformationValueIfSkipped | string | "N/A" | The additional information value if skipped value. |
| tableListChoice | null | null | The table list choice value. |
| customerShowUpNotification | boolean | true | The customer show up notification value. |
| sendReminderEmailShowUpNotification | boolean | true | The send reminder email show up notification value. |
| delayBeforeSendingReminderEmailShowUpNotification | integer | 15 | The delay before sending reminder email show up notification value. |

#### Response

```json
{
  "status": 200,
  "code": "consumption_mode_updated",
  "data": {
    "consumptionModeId": 15,
    "restaurantId": 200,
    "brandId": 100,
    "channelId": 2,
    "type": "MODE_DELIVERY",
    "flags": 0,
    "fee": 300,
    "labelFee": "Delivery fee",
    "reduction": 0,
    "labelReduction": null,
    "delay": 20,
    "additionalInformationTitle": "Table number",
    "additionalInformationType": "TABLE_NUMBER",
    "additionalInformationValueIfSkipped": "N/A",
    "tableListChoice": null,
    "additionalInformationAllowSkip": true,
    "isTimeSlotModeEnabled": false,
    "customerShowUpNotification": true,
    "sendReminderEmailShowUpNotification": true,
    "delayBeforeSendingReminderEmailShowUpNotification": 15
  }
}
```

##### 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 | "consumption\_mode\_updated" | Machine-readable application code for the result. |
| data | object | {…} | Endpoint-specific response payload. |
| data.consumptionModeId | integer | 15 | Identifier of the associated consumption mode. |
| data.restaurantId | integer | 200 | Identifier of the restaurant. |
| data.brandId | integer | 100 | Identifier of the brand. |
| data.channelId | integer | 2 | Identifier of the associated channel. |
| data.type | string | "MODE\_DELIVERY" | The type value. |
| data.flags | integer | 0 | The flags value. |
| data.fee | integer | 300 | The fee value. |
| data.labelFee | string | "Delivery fee" | The label fee value. |
| data.reduction | integer | 0 | The reduction value. |
| data.labelReduction | null | null | The label reduction value. |
| data.delay | integer | 20 | The delay value. |
| data.additionalInformationTitle | string | "Table number" | The additional information title value. |
| data.additionalInformationType | string | "TABLE\_NUMBER" | The additional information type value. |
| data.additionalInformationValueIfSkipped | string | "N/A" | The additional information value if skipped value. |
| data.tableListChoice | null | null | The table list choice value. |
| data.additionalInformationAllowSkip | boolean | true | The additional information allow skip value. |
| data.isTimeSlotModeEnabled | boolean | false | Whether time slot mode enabled is enabled or applies. |
| data.customerShowUpNotification | boolean | true | The customer show up notification value. |
| data.sendReminderEmailShowUpNotification | boolean | true | The send reminder email show up notification value. |
| data.delayBeforeSendingReminderEmailShowUpNotification | integer | 15 | The delay before sending reminder email show up notification value. |

### `DELETE /consumption_modes/{consumptionModeId}` - Delete Consumption Mode

Delete a consumption mode. This is a soft delete: creating a mode again with the same restaurantId, channelId, and type restores the same record. Note that the response status is 200, not 204.

#### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| consumptionModeId | integer | Yes | The unique identifier of the consumption mode to delete. |

#### Response

```json
{
  "status": 200,
  "code": "consumption_mode_deleted"
}
```

##### 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 | "consumption\_mode\_deleted" | Machine-readable application code for the result. |
