# Synchronise menu

POS only.

This endpoint is used to synchronise a POS menu with Tyro Connect when the POS receives the MENU_SYNC_REQUESTED notification.

Endpoint: PUT /menus/{tcLocationId}/sync
Version: 1.0
Security: JWT

## Header parameters:

  - `Authorization` (string, required)

  - `Content-Type` (string, required)
    Enum: "application/json"

  - `x-ticket-number` (string)
    The ticket number sent by Tyro Connect to identify the sync request.
When the menu sync process is initiated from Tyro Connect Portal,
the POS system will receive a notification containing the ticket number that needs to be sent back to us.

## Path parameters:

  - `tcLocationId` (string, required)

## Request fields (application/json):

  - `items` (array, required)
    A list of objects that describe the different items available within the menu

  - `items.id` (string, required)
    ID for the item that is unique to the menu.
    Example: "0f448ac1-862a-4c7b-bdb4-a3b7cdbf6149"

  - `items.name` (string, required)
    Customer facing name or short description of the item.
    Example: "Beef Burger"

  - `items.sku` (string, required)
    SKU or PLU for the item in the POS.
    Example: "BFB-001"

  - `items.description` (string)
    Customer facing, long description of the item.
    Example: "two patty beef burgers"

  - `items.containsAlcohol` (boolean, required)
    Indicates whether or not the item contains alcohol

  - `items.energy` (object)
    Energy content of each standard item (expressed in kilojoules 'kJ')

  - `items.energy.amount` (number, required)

  - `items.energy.unit` (string, required)

  - `items.price` (object, required)
    The amount and currency of the item

  - `items.price.amount` (number, required)

  - `items.price.currency` (string, required)

  - `items.images` (object)
    A URL pointing to an image, which could either be a default image or an override image.
To avoid any issues with copyright over images, we have provided the ability to supply a
default image as well as the ability to override the default image with a different image for a
specific partner. Set the 'default' field to be the URL used by default for all Apps. Provide
additional fields for Apps where the default URL should be overridden. For example
providing a URL for a field named "doordash" will mean that menus published to DoorDash
will use that URL instead of the 'default' URL. The complete list of Apps that you can
nominate are:
  - DOORDASH
  - HUBSTER
  - GOOGLE
    Example: {"DEFAULT":"https://validdefaulturl-to-image.com/image.png","DOORDASH":"https://validurl-to-image.com/image.png"}

  - `items.images.DEFAULT` (string)
    A URL pointing to a default image that will be used for apps that were not specifically setup.
    Example: "https://validdefaulturl-to-image.com/image.png"

  - `items.options` (array)
    A list of objects describing modifier categories that are available for this item

  - `items.options.min` (number, required)
    The minimum number of modifiers within this option that need to be selected by the customer

  - `items.options.max` (number)
    The maximum number of modifiers within this option that can be selected by the customer

  - `items.options.name` (string, required)
    Example: "Choose a sauce"

  - `items.options.description` (string)

  - `items.options.items` (array)
    A list of ids referencing the items available within this option that can be applied as modifiers to the parent item by the customer

  - `items.options.items.id` (string, required)

  - `items.options.items.min` (number, required)
    The minimum quantity of this modifier that needs to be selected by the customer

  - `items.options.items.max` (number, required)
    The maximum quantity of this modifier that can be selected by the customer

  - `sections` (array, required)
    A list of objects that describe the different sections of the menu

  - `sections.id` (string, required)
    A unique id that represents the section within the menu

  - `sections.name` (string, required)
    A name describing the section

  - `sections.description` (string)

  - `sections.availableTimeSlots` (array, required)
    A list of ids referencing the timeslots that this section will be available within

  - `sections.items` (array, required)
    A list of ids referencing the menu items that are available within this section - only parent items will be referenced here, not items that are used as modifiers

  - `sections.modifierGroups` (array)
    A list of ids that reference the modifierGroups that are used in this section. Any item contained within the 'option' of another item will exist within a modifierGroup that belongs to the same section of that parent item

  - `timeSlots` (array, required)
    A list of objects that describe the time periods that different sections of the menu can be made available within

  - `timeSlots.id` (string, required)
    A unique id that represents the time slot within the menu

  - `timeSlots.description` (string)

  - `timeSlots.startTime` (string, required)
    A valid time formatted value

  - `timeSlots.endTime` (string, required)
    A valid time formatted value

  - `timeSlots.days` (array, required)
    Enum: "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"

  - `modifierGroups` (array, required)
    A list of objects that describe the different modifier groups that will be available to the merchant within the portal to apply to different sections

  - `modifierGroups.id` (string, required)
    A unique id that represents the modifier group within the menu

  - `modifierGroups.description` (string)

  - `modifierGroups.name` (string, required)
    The name of the modifier group will correspond to the name of any item.options that reference items contained within the modifier group

  - `modifierGroups.min` (number)
    This number represents the minimum number of items within this modifier group that a user will have to select if they are applied to an item

  - `modifierGroups.max` (number)

  - `modifierGroups.items` (array, required)
    A list of objects whose id's reference items that belong to this modifierGroup

  - `modifierGroups.items.id` (string, required)

  - `modifierGroups.items.min` (number, required)
    The minimum quantity of this modifier that needs to be selected by the customer

  - `modifierGroups.items.max` (number, required)
    The maximum quantity of this modifier that can be selected by the customer

## Response 400 fields (application/json):

  - `error` (string)
    The validation error message.


## Response 204 fields

## Response 403 fields

## Response 404 fields

## Response 409 fields
