menus_endpoints

Upsert menus for a store

Replaces the store's complete menu snapshot. Include every customer-menu entity that should remain; omitted entities are deleted. An omitted station item can remain when an existing customer-item association prevents its deletion. Repeating the same complete payload is safe and produces the same menu state. Rate limit: 2 requests per minute.

post/v1/menus

Request

Headers

X-Store-Idstring required

The unique identifier of the store in your app. This ID, along with the Application ID, will be used to match the correct store when performing operations. It cannot be longer than 255 characters and must only contain printable ASCII characters. During on-boarding, this ID will be similar to onboarding:905bb725-b141-4a9b-832a-1f254f772c94 (where the UUID is the Internal Store ID). During off-boarding, this field will be filled with the last known Store ID, or with an empty string, in case none is found. In that case, please fall back to the provided internalStoreId (a.k.a. Sku-Sku ID).

Example:partner-store-unique-identifier

Request body

categoriesobject required
modifierGroupsobject required
menusobject required
itemsobject

Example request

{
  "categories": {
    "b01485b0-034a-47c5-8a0a-0eeca08bf994": {
      "name": "Drinks",
      "description": "All drink items served up nice and fresh!",
      "id": "b01485b0-034a-47c5-8a0a-0eeca08bf994",
      "itemIds": [
        "fa4f0192-4c4e-4455-9db8-61d428c34969"
      ]
    }
  },
  "modifierGroups": {
    "f4c69056-3ae3-4517-9294-5ceec8df5f81": {
      "id": "f4c69056-3ae3-4517-9294-5ceec8df5f81",
      "name": "Add Straw",
      "minimumSelections": 0,
      "maximumSelections": 1,
      "defaultModifierSelectionData": {
        "defaultModifierSelections": [
          {
            "itemId": "6d53cf04-9d62-40f5-a8b3-706e3377668f",
            "selectionQuantity": 1
          }
        ]
      },
      "itemIds": [
        "6d53cf04-9d62-40f5-a8b3-706e3377668f"
      ],
      "type": "DEFAULT",
      "exposedThirdPartyInfos": [
        {
          "externalId": "ff6dd693-5e55-4a92-a359-ea61b23ed423",
          "externalServiceSlug": "3PD"
        }
      ]
    }
  },
  "menus": {
    "ff6dd693-5e55-4a92-a359-ea61b23ed423": {
      "id": "ff6dd693-5e55-4a92-a359-ea61b23ed423",
      "name": "Tasty BBQ",
      "categoryIds": [
        "b01485b0-034a-47c5-8a0a-0eeca08bf994"
      ],
      "fulfillmentModes": [
        "DELIVERY"
      ],
      "description": "Cooking up BBQ deliciousness from around the globe!",
      "hours": {
        "intervals": [
          {
            "day": "MONDAY",
            "fromHour": 7,
            "fromMinute": 30,
            "toHour": 22,
            "toMinute": 0
          }
        ]
      },
      "additionalCharges": [
        {
          "chargeType": "PACKAGING_CHARGE",
          "flatCharge": {
            "currencyCode": "USD",
            "amount": 1.5
          }
        }
      ]
    }
  },
  "items": {
    "fa4f0192-4c4e-4455-9db8-61d428c34969": {
      "id": "fa4f0192-4c4e-4455-9db8-61d428c34969",
      "name": "Canned Coke",
      "description": "Best soda pop ever made",
      "price": {
        "currencyCode": "USD",
        "amount": 7.65
      },
      "status": {
        "saleStatus": "FOR_SALE"
      },
      "modifierGroupIds": [
        "f4c69056-3ae3-4517-9294-5ceec8df5f81"
      ],
      "photoUrls": [
        "https://example.com/photos/c75d9460-5d48-423d-8d01-f825fd5b1672.jpeg"
      ],
      "priceOverrides": [
        {
          "rules": [
            {
              "externalServiceSlug": "ubereats"
            }
          ],
          "currencyCode": "USD",
          "amount": 7
        }
      ],
      "skuDetails": {
        "skuSlug": "canned-coke-355ml",
        "dietaryClassifications": [
          {
            "tag": "VEGAN"
          }
        ],
        "allergenClassifications": [
          {
            "tag": "GLUTEN",
            "containsAllergen": false
          },
          {
            "tag": "PEANUT",
            "containsAllergen": true
          }
        ],
        "storageRequirements": [
          {
            "tag": "FROZEN"
          }
        ]
      }
    },
    "6d53cf04-9d62-40f5-a8b3-706e3377668f": {
      "id": "6d53cf04-9d62-40f5-a8b3-706e3377668f",
      "name": "Paper straw",
      "description": "A paper straw",
      "price": {
        "currencyCode": "USD",
        "amount": 0.5
      },
      "status": {
        "saleStatus": "FOR_SALE"
      },
      "type": "DEFAULT"
    }
  }
}

Response

The menu update will be processed.

jobType'UPSERT' | 'PUBLISH' | 'UPDATE_AVAILABILITY' | 'SYNC' | 'UNKNOWN'

Type of job.

publishJobStateMenuJobPublishState nullable

Only present if the MenuJobType is PUBLISH. Contains a map of MenuPublishTarget services to their corresponding statuses.

Example response

{
  "jobType": "PUBLISH",
  "publishJobState": {
    "rappi": {
      "status": "FAILED",
      "message": "Failed to publish menu due to error ..."
    }
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.