Ir para o conteúdo principal

Produtos

Listar, criar, editar e excluir produtos, um a um ou vários de uma vez.

Cada operação traz seu curl e sua resposta de exemplo; as chaves e os ids dos exemplos são fictícios. Os campos marcados com * são obrigatórios.

List or search the products

get/restaurants/{ref}/productsrequer menu:readlistProducts

Every product, hidden ones included and flagged. With q, only those whose name or description contains the text.

Parâmetros

NomeOndeDescrição
ref*caminhoThe restaurant identifier (the slug in its public URL, e.g. "pizzeria-roma") or its id, as returned by GET /restaurants
qqueryOnly products whose name or description contains this text (accent- and case-insensitive)até 100 caracteres

Exemplo

curl -X GET "https://delimenu.co/api/v1/restaurants/pizzeria-roma/products?q=margarita" \
  -H "Authorization: Bearer dmk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Resposta 200

{
  "products": [
    {
      "id": "p9Hs4TqL2mNc8VbX6Rdy",
      "category_id": "k3Qm8vXb2LpN7wRt1YaZ",
      "name": "Pizza Margarita",
      "price": 32000,
      "original_price": 38000,
      "description": "Tomate, mozzarella y albahaca fresca",
      "available": true,
      "hidden": false,
      "has_image": true,
      "image_url": "https://firebasestorage.googleapis.com/v0/b/example/o/margarita_1080x1080.jpg?alt=media",
      "variants": [
        {
          "id": "26fed9f6-2e3b-4310-b899-5641bf98e2f0",
          "name": "Tamaño",
          "min_selections": 1,
          "max_selections": 1,
          "options": [
            {
              "id": "5c4f8896-06a3-4482-99d1-185a909d0415",
              "name": "Personal",
              "price": 0,
              "show": true
            },
            {
              "id": "b1e0c4d2-7f3a-4c8e-9d21-0a5f6e7b8c9d",
              "name": "Familiar",
              "price": 12000,
              "show": true
            }
          ]
        }
      ]
    }
  ],
  "count": 1
}

Campos da resposta

CampoTipoDescrição
products*object[]
id*string
category_id*string
name*string
price*numberMajor units in the restaurant's currency
original_pricenumberPresent while the product is on promotion
descriptionstring
available*booleanfalse renders "Sin stock"
hidden*booleantrue keeps it off the public menu
has_image*boolean
image_urlstring
variants*object[]
id*string
name*string
min_selections*integermin -9007199254740991 · max 9007199254740991
max_selections*integer0 is no limitmin -9007199254740991 · max 9007199254740991
max_per_optionintegermin -9007199254740991 · max 9007199254740991
options*object[]
id*string
name*string
price*numberExtra charge on top of the product price
show*boolean
translationsobjectThe name in other languages, keyed by language code, e.g. { "en": { "name": "Large" } }. Absent when nothing is translated; a language missing here falls back to `name`.
translationsobjectThe name in other languages, keyed by language code, e.g. { "en": { "name": "Large" } }. Absent when nothing is translated; a language missing here falls back to `name`.
esobject
enobject
ptobject
frobject
deobject
itobject
translationsobjectName and description in other languages, keyed by language code. Absent when nothing is translated; a language or field missing here falls back to `name` / `description`.
esobject
namestring
descriptionstring
enobject
namestring
descriptionstring
ptobject
namestring
descriptionstring
frobject
namestring
descriptionstring
deobject
namestring
descriptionstring
itobject
namestring
descriptionstring
count*integermin -9007199254740991 · max 9007199254740991

Erros

  • 400 VALIDATION — a field is missing or malformed; `issues` names it
  • 401 UNAUTHORIZED — the key is missing, unknown or revoked
  • 402 NOT_PREMIUM — the restaurant has no active subscription or trial
  • 403 FORBIDDEN — the key lacks the scope this endpoint needs
  • 404 NOT_FOUND — no such restaurant in this account, or no such item in it
  • 500 INTERNAL — something failed on our side; retry in a moment

Create a product

post/restaurants/{ref}/productsrequer menu:writecreateProduct

Adds a product to a category, at the end. Price is in the restaurant's currency, major units. Variants are optional choices (sizes, extras) with their own option prices.

Parâmetros

NomeOndeDescrição
ref*caminhoThe restaurant identifier (the slug in its public URL, e.g. "pizzeria-roma") or its id, as returned by GET /restaurants

Corpo (JSON)

CampoTipoDescrição
category_id*stringThe category the product belongs to (from get_menu)até 128 caracteres
name*stringProduct nameaté 50 caracteres
price*numberPrice in the restaurant's currency, in major units (12500 for COP $12.000, 5.99 for USD $5.99). Never cents.min 0
descriptionstringOptional description. Pass an empty string to remove it.até 3000 caracteres
original_pricenumber | nullThe price before a promotion. Must be greater than price; the menu shows it struck through. Pass null to end the promotion.min 0
availablebooleanfalse shows the product as "Sin stock": visible but not orderable. Default true.
hiddenbooleantrue keeps the product off the public menu entirely. Default false.
variantsobject[]Choices the diner makes (sizes, extras). Replaces the whole list when provided; a variant or option sent without translations keeps the ones stored under the same name.
name*stringVariant name, e.g. "Tamaño" or "Adiciones"até 50 caracteres
translationsobjectThe variant name in the menu's other languages, e.g. { "en": { "name": "Size" } }. Omit it to keep the translations of the stored variant with the same name; {} removes them.
esobject
namestringThe name in that languageaté 50 caracteres
enobject
namestringThe name in that languageaté 50 caracteres
ptobject
namestringThe name in that languageaté 50 caracteres
frobject
namestringThe name in that languageaté 50 caracteres
deobject
namestringThe name in that languageaté 50 caracteres
itobject
namestringThe name in that languageaté 50 caracteres
min_selectionsintegerOptions the diner must pick. 0 makes the variant optional.min 0 · max 9007199254740991 · padrão 0
max_selectionsintegerOptions the diner may pick. 0 is no limit; 1 renders a single choice.min 0 · max 9007199254740991 · padrão 0
max_per_optionintegerHow many times one option may be repeated. Omit or 0 for no limit.min 0 · max 9007199254740991
options*object[]
name*stringOption name, e.g. "Grande"até 50 caracteres
translationsobjectThe option name in the menu's other languages, e.g. { "en": { "name": "Large" } }. Omit it to keep the translations of the stored option with the same name; {} removes them.
esobject
enobject
ptobject
frobject
deobject
itobject
pricenumberExtra charge for this option on top of the product price. 0 when it costs nothing.min 0 · padrão 0
showbooleanfalse hides the option from diners without deleting itpadrão true
translationsobjectThe product name and description in the menu's other languages, e.g. { "en": { "name": "Lemonade", "description": "Freshly squeezed" } }. Keyed by language code (es, en, pt, fr, de, it). Shown to diners who read the menu in that language; a language without a translation falls back to the original text, and an entry in the menu's primary language is ignored. Replaces the whole map when provided; {} removes every translation. Variant and option names are translated inside each variant and option.
esobject
namestringThe product name in that languageaté 50 caracteres
descriptionstringThe description in that languageaté 3000 caracteres
enobject
namestringThe product name in that languageaté 50 caracteres
descriptionstringThe description in that languageaté 3000 caracteres
ptobject
namestringThe product name in that languageaté 50 caracteres
descriptionstringThe description in that languageaté 3000 caracteres
frobject
namestringThe product name in that languageaté 50 caracteres
descriptionstringThe description in that languageaté 3000 caracteres
deobject
namestringThe product name in that languageaté 50 caracteres
descriptionstringThe description in that languageaté 3000 caracteres
itobject
namestringThe product name in that languageaté 50 caracteres
descriptionstringThe description in that languageaté 3000 caracteres

Exemplo

curl -X POST "https://delimenu.co/api/v1/restaurants/pizzeria-roma/products" \
  -H "Authorization: Bearer dmk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"category_id":"k3Qm8vXb2LpN7wRt1YaZ","name":"Pizza Margarita","price":32000,"description":"Tomate, mozzarella y albahaca fresca","variants":[{"name":"Tamaño","min_selections":1,"max_selections":1,"options":[{"name":"Personal","price":0},{"name":"Familiar","price":12000}]}]}'

Resposta 201

{
  "product": {
    "id": "p9Hs4TqL2mNc8VbX6Rdy",
    "category_id": "k3Qm8vXb2LpN7wRt1YaZ",
    "name": "Pizza Margarita",
    "price": 32000,
    "description": "Tomate, mozzarella y albahaca fresca",
    "available": true,
    "hidden": false,
    "has_image": true,
    "image_url": "https://firebasestorage.googleapis.com/v0/b/example/o/margarita_1080x1080.jpg?alt=media",
    "variants": [
      {
        "id": "26fed9f6-2e3b-4310-b899-5641bf98e2f0",
        "name": "Tamaño",
        "min_selections": 1,
        "max_selections": 1,
        "options": [
          {
            "id": "5c4f8896-06a3-4482-99d1-185a909d0415",
            "name": "Personal",
            "price": 0,
            "show": true
          },
          {
            "id": "b1e0c4d2-7f3a-4c8e-9d21-0a5f6e7b8c9d",
            "name": "Familiar",
            "price": 12000,
            "show": true
          }
        ]
      }
    ]
  }
}

Campos da resposta

CampoTipoDescrição
product*object
id*string
category_id*string
name*string
price*numberMajor units in the restaurant's currency
original_pricenumberPresent while the product is on promotion
descriptionstring
available*booleanfalse renders "Sin stock"
hidden*booleantrue keeps it off the public menu
has_image*boolean
image_urlstring
variants*object[]
id*string
name*string
min_selections*integermin -9007199254740991 · max 9007199254740991
max_selections*integer0 is no limitmin -9007199254740991 · max 9007199254740991
max_per_optionintegermin -9007199254740991 · max 9007199254740991
options*object[]
id*string
name*string
price*numberExtra charge on top of the product price
show*boolean
translationsobjectThe name in other languages, keyed by language code, e.g. { "en": { "name": "Large" } }. Absent when nothing is translated; a language missing here falls back to `name`.
translationsobjectThe name in other languages, keyed by language code, e.g. { "en": { "name": "Large" } }. Absent when nothing is translated; a language missing here falls back to `name`.
esobject
enobject
ptobject
frobject
deobject
itobject
translationsobjectName and description in other languages, keyed by language code. Absent when nothing is translated; a language or field missing here falls back to `name` / `description`.
esobject
namestring
descriptionstring
enobject
namestring
descriptionstring
ptobject
namestring
descriptionstring
frobject
namestring
descriptionstring
deobject
namestring
descriptionstring
itobject
namestring
descriptionstring

Erros

  • 400 VALIDATION — a field is missing or malformed; `issues` names it
  • 401 UNAUTHORIZED — the key is missing, unknown or revoked
  • 402 NOT_PREMIUM — the restaurant has no active subscription or trial
  • 403 FORBIDDEN — the key lacks the scope this endpoint needs
  • 404 NOT_FOUND — no such restaurant in this account, or no such item in it
  • 500 INTERNAL — something failed on our side; retry in a moment

Update many products

patch/restaurants/{ref}/productsrequer menu:writebulkUpdateProducts

Applies a patch to up to 50 products in one write — for "raise every price 10%" or "mark these as out of stock". Same fields as updating one product.

Parâmetros

NomeOndeDescrição
ref*caminhoThe restaurant identifier (the slug in its public URL, e.g. "pizzeria-roma") or its id, as returned by GET /restaurants

Corpo (JSON)

CampoTipoDescrição
updates*object[]Up to 50 products, each with only the fields to change
product_id*stringaté 128 caracteres
changes*object
category_idstringMove the product to another categoryaté 128 caracteres
namestringProduct nameaté 50 caracteres
pricenumberPrice in the restaurant's currency, in major units (12500 for COP $12.000, 5.99 for USD $5.99). Never cents.min 0
descriptionstringOptional description. Pass an empty string to remove it.até 3000 caracteres
original_pricenumber | nullThe price before a promotion. Must be greater than price; the menu shows it struck through. Pass null to end the promotion.min 0
availablebooleanfalse shows the product as "Sin stock": visible but not orderable. Default true.
hiddenbooleantrue keeps the product off the public menu entirely. Default false.
variantsobject[]Choices the diner makes (sizes, extras). Replaces the whole list when provided; a variant or option sent without translations keeps the ones stored under the same name.
name*stringVariant name, e.g. "Tamaño" or "Adiciones"até 50 caracteres
translationsobjectThe variant name in the menu's other languages, e.g. { "en": { "name": "Size" } }. Omit it to keep the translations of the stored variant with the same name; {} removes them.
min_selectionsintegerOptions the diner must pick. 0 makes the variant optional.min 0 · max 9007199254740991 · padrão 0
max_selectionsintegerOptions the diner may pick. 0 is no limit; 1 renders a single choice.min 0 · max 9007199254740991 · padrão 0
max_per_optionintegerHow many times one option may be repeated. Omit or 0 for no limit.min 0 · max 9007199254740991
options*object[]
translationsobjectThe product name and description in the menu's other languages, e.g. { "en": { "name": "Lemonade", "description": "Freshly squeezed" } }. Keyed by language code (es, en, pt, fr, de, it). Shown to diners who read the menu in that language; a language without a translation falls back to the original text, and an entry in the menu's primary language is ignored. Replaces the whole map when provided; {} removes every translation. Variant and option names are translated inside each variant and option.
esobject
enobject
ptobject
frobject
deobject
itobject

Exemplo

curl -X PATCH "https://delimenu.co/api/v1/restaurants/pizzeria-roma/products" \
  -H "Authorization: Bearer dmk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"updates":[{"product_id":"p9Hs4TqL2mNc8VbX6Rdy","changes":{"price":35000}},{"product_id":"q2Jk5Lm8Np1Qr4St7Uv0","changes":{"available":false}}]}'

Resposta 200

{
  "updated": 2
}

Campos da resposta

CampoTipoDescrição
updated*integermin -9007199254740991 · max 9007199254740991

Erros

  • 400 VALIDATION — a field is missing or malformed; `issues` names it
  • 401 UNAUTHORIZED — the key is missing, unknown or revoked
  • 402 NOT_PREMIUM — the restaurant has no active subscription or trial
  • 403 FORBIDDEN — the key lacks the scope this endpoint needs
  • 404 NOT_FOUND — no such restaurant in this account, or no such item in it
  • 500 INTERNAL — something failed on our side; retry in a moment

Get a product

get/restaurants/{ref}/products/{id}requer menu:readgetProduct

translations is present only where something is translated: on the product (name, description) and inside each variant and option (name).

Parâmetros

NomeOndeDescrição
ref*caminhoThe restaurant identifier (the slug in its public URL, e.g. "pizzeria-roma") or its id, as returned by GET /restaurants
id*caminhoThe product id, from GET /restaurants/{ref}/products

Exemplo

curl -X GET "https://delimenu.co/api/v1/restaurants/pizzeria-roma/products/p9Hs4TqL2mNc8VbX6Rdy" \
  -H "Authorization: Bearer dmk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Resposta 200

{
  "product": {
    "id": "p9Hs4TqL2mNc8VbX6Rdy",
    "category_id": "k3Qm8vXb2LpN7wRt1YaZ",
    "name": "Pizza Margarita",
    "price": 32000,
    "original_price": 38000,
    "description": "Tomate, mozzarella y albahaca fresca",
    "available": true,
    "hidden": false,
    "has_image": true,
    "image_url": "https://firebasestorage.googleapis.com/v0/b/example/o/margarita_1080x1080.jpg?alt=media",
    "variants": [
      {
        "id": "26fed9f6-2e3b-4310-b899-5641bf98e2f0",
        "name": "Tamaño",
        "min_selections": 1,
        "max_selections": 1,
        "options": [
          {
            "id": "5c4f8896-06a3-4482-99d1-185a909d0415",
            "name": "Personal",
            "price": 0,
            "show": true
          },
          {
            "id": "b1e0c4d2-7f3a-4c8e-9d21-0a5f6e7b8c9d",
            "name": "Familiar",
            "price": 12000,
            "show": true,
            "translations": {
              "en": {
                "name": "Family"
              }
            }
          }
        ],
        "translations": {
          "en": {
            "name": "Size"
          }
        }
      }
    ],
    "translations": {
      "en": {
        "name": "Margherita Pizza",
        "description": "Tomato, mozzarella and fresh basil"
      }
    }
  }
}

Campos da resposta

CampoTipoDescrição
product*object
id*string
category_id*string
name*string
price*numberMajor units in the restaurant's currency
original_pricenumberPresent while the product is on promotion
descriptionstring
available*booleanfalse renders "Sin stock"
hidden*booleantrue keeps it off the public menu
has_image*boolean
image_urlstring
variants*object[]
id*string
name*string
min_selections*integermin -9007199254740991 · max 9007199254740991
max_selections*integer0 is no limitmin -9007199254740991 · max 9007199254740991
max_per_optionintegermin -9007199254740991 · max 9007199254740991
options*object[]
id*string
name*string
price*numberExtra charge on top of the product price
show*boolean
translationsobjectThe name in other languages, keyed by language code, e.g. { "en": { "name": "Large" } }. Absent when nothing is translated; a language missing here falls back to `name`.
translationsobjectThe name in other languages, keyed by language code, e.g. { "en": { "name": "Large" } }. Absent when nothing is translated; a language missing here falls back to `name`.
esobject
enobject
ptobject
frobject
deobject
itobject
translationsobjectName and description in other languages, keyed by language code. Absent when nothing is translated; a language or field missing here falls back to `name` / `description`.
esobject
namestring
descriptionstring
enobject
namestring
descriptionstring
ptobject
namestring
descriptionstring
frobject
namestring
descriptionstring
deobject
namestring
descriptionstring
itobject
namestring
descriptionstring

Erros

  • 401 UNAUTHORIZED — the key is missing, unknown or revoked
  • 402 NOT_PREMIUM — the restaurant has no active subscription or trial
  • 403 FORBIDDEN — the key lacks the scope this endpoint needs
  • 404 NOT_FOUND — no such restaurant in this account, or no such item in it
  • 500 INTERNAL — something failed on our side; retry in a moment

Update a product

patch/restaurants/{ref}/products/{id}requer menu:writeupdateProduct

Changes only the fields given: name, price, description, original_price (promotion), available, hidden, variants (replaces all), translations (replaces all) or category_id (moves it). Raising price above an existing original_price ends the promotion. A variant or option sent without translations keeps the ones stored under the same name, so repricing an option does not erase them; send translations: {} on it to remove them.

Parâmetros

NomeOndeDescrição
ref*caminhoThe restaurant identifier (the slug in its public URL, e.g. "pizzeria-roma") or its id, as returned by GET /restaurants
id*caminhoThe product id, from GET /restaurants/{ref}/products

Corpo (JSON)

CampoTipoDescrição
category_idstringMove the product to another categoryaté 128 caracteres
namestringProduct nameaté 50 caracteres
pricenumberPrice in the restaurant's currency, in major units (12500 for COP $12.000, 5.99 for USD $5.99). Never cents.min 0
descriptionstringOptional description. Pass an empty string to remove it.até 3000 caracteres
original_pricenumber | nullThe price before a promotion. Must be greater than price; the menu shows it struck through. Pass null to end the promotion.min 0
availablebooleanfalse shows the product as "Sin stock": visible but not orderable. Default true.
hiddenbooleantrue keeps the product off the public menu entirely. Default false.
variantsobject[]Choices the diner makes (sizes, extras). Replaces the whole list when provided; a variant or option sent without translations keeps the ones stored under the same name.
name*stringVariant name, e.g. "Tamaño" or "Adiciones"até 50 caracteres
translationsobjectThe variant name in the menu's other languages, e.g. { "en": { "name": "Size" } }. Omit it to keep the translations of the stored variant with the same name; {} removes them.
esobject
namestringThe name in that languageaté 50 caracteres
enobject
namestringThe name in that languageaté 50 caracteres
ptobject
namestringThe name in that languageaté 50 caracteres
frobject
namestringThe name in that languageaté 50 caracteres
deobject
namestringThe name in that languageaté 50 caracteres
itobject
namestringThe name in that languageaté 50 caracteres
min_selectionsintegerOptions the diner must pick. 0 makes the variant optional.min 0 · max 9007199254740991 · padrão 0
max_selectionsintegerOptions the diner may pick. 0 is no limit; 1 renders a single choice.min 0 · max 9007199254740991 · padrão 0
max_per_optionintegerHow many times one option may be repeated. Omit or 0 for no limit.min 0 · max 9007199254740991
options*object[]
name*stringOption name, e.g. "Grande"até 50 caracteres
translationsobjectThe option name in the menu's other languages, e.g. { "en": { "name": "Large" } }. Omit it to keep the translations of the stored option with the same name; {} removes them.
esobject
enobject
ptobject
frobject
deobject
itobject
pricenumberExtra charge for this option on top of the product price. 0 when it costs nothing.min 0 · padrão 0
showbooleanfalse hides the option from diners without deleting itpadrão true
translationsobjectThe product name and description in the menu's other languages, e.g. { "en": { "name": "Lemonade", "description": "Freshly squeezed" } }. Keyed by language code (es, en, pt, fr, de, it). Shown to diners who read the menu in that language; a language without a translation falls back to the original text, and an entry in the menu's primary language is ignored. Replaces the whole map when provided; {} removes every translation. Variant and option names are translated inside each variant and option.
esobject
namestringThe product name in that languageaté 50 caracteres
descriptionstringThe description in that languageaté 3000 caracteres
enobject
namestringThe product name in that languageaté 50 caracteres
descriptionstringThe description in that languageaté 3000 caracteres
ptobject
namestringThe product name in that languageaté 50 caracteres
descriptionstringThe description in that languageaté 3000 caracteres
frobject
namestringThe product name in that languageaté 50 caracteres
descriptionstringThe description in that languageaté 3000 caracteres
deobject
namestringThe product name in that languageaté 50 caracteres
descriptionstringThe description in that languageaté 3000 caracteres
itobject
namestringThe product name in that languageaté 50 caracteres
descriptionstringThe description in that languageaté 3000 caracteres

Exemplo

curl -X PATCH "https://delimenu.co/api/v1/restaurants/pizzeria-roma/products/p9Hs4TqL2mNc8VbX6Rdy" \
  -H "Authorization: Bearer dmk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"price":30000,"original_price":38000,"translations":{"en":{"name":"Margherita Pizza","description":"Tomato, mozzarella and fresh basil"}}}'

Resposta 200

{
  "product": {
    "id": "p9Hs4TqL2mNc8VbX6Rdy",
    "category_id": "k3Qm8vXb2LpN7wRt1YaZ",
    "name": "Pizza Margarita",
    "price": 30000,
    "original_price": 38000,
    "description": "Tomate, mozzarella y albahaca fresca",
    "available": true,
    "hidden": false,
    "has_image": true,
    "image_url": "https://firebasestorage.googleapis.com/v0/b/example/o/margarita_1080x1080.jpg?alt=media",
    "variants": [
      {
        "id": "26fed9f6-2e3b-4310-b899-5641bf98e2f0",
        "name": "Tamaño",
        "min_selections": 1,
        "max_selections": 1,
        "options": [
          {
            "id": "5c4f8896-06a3-4482-99d1-185a909d0415",
            "name": "Personal",
            "price": 0,
            "show": true
          },
          {
            "id": "b1e0c4d2-7f3a-4c8e-9d21-0a5f6e7b8c9d",
            "name": "Familiar",
            "price": 12000,
            "show": true,
            "translations": {
              "en": {
                "name": "Family"
              }
            }
          }
        ],
        "translations": {
          "en": {
            "name": "Size"
          }
        }
      }
    ],
    "translations": {
      "en": {
        "name": "Margherita Pizza",
        "description": "Tomato, mozzarella and fresh basil"
      }
    }
  }
}

Campos da resposta

CampoTipoDescrição
product*object
id*string
category_id*string
name*string
price*numberMajor units in the restaurant's currency
original_pricenumberPresent while the product is on promotion
descriptionstring
available*booleanfalse renders "Sin stock"
hidden*booleantrue keeps it off the public menu
has_image*boolean
image_urlstring
variants*object[]
id*string
name*string
min_selections*integermin -9007199254740991 · max 9007199254740991
max_selections*integer0 is no limitmin -9007199254740991 · max 9007199254740991
max_per_optionintegermin -9007199254740991 · max 9007199254740991
options*object[]
id*string
name*string
price*numberExtra charge on top of the product price
show*boolean
translationsobjectThe name in other languages, keyed by language code, e.g. { "en": { "name": "Large" } }. Absent when nothing is translated; a language missing here falls back to `name`.
translationsobjectThe name in other languages, keyed by language code, e.g. { "en": { "name": "Large" } }. Absent when nothing is translated; a language missing here falls back to `name`.
esobject
enobject
ptobject
frobject
deobject
itobject
translationsobjectName and description in other languages, keyed by language code. Absent when nothing is translated; a language or field missing here falls back to `name` / `description`.
esobject
namestring
descriptionstring
enobject
namestring
descriptionstring
ptobject
namestring
descriptionstring
frobject
namestring
descriptionstring
deobject
namestring
descriptionstring
itobject
namestring
descriptionstring

Erros

  • 400 VALIDATION — a field is missing or malformed; `issues` names it
  • 401 UNAUTHORIZED — the key is missing, unknown or revoked
  • 402 NOT_PREMIUM — the restaurant has no active subscription or trial
  • 403 FORBIDDEN — the key lacks the scope this endpoint needs
  • 404 NOT_FOUND — no such restaurant in this account, or no such item in it
  • 500 INTERNAL — something failed on our side; retry in a moment

Delete a product

delete/restaurants/{ref}/products/{id}requer menu:writedeleteProduct

Permanent, photo included. Prefer hidden: true when the owner may want it back.

Parâmetros

NomeOndeDescrição
ref*caminhoThe restaurant identifier (the slug in its public URL, e.g. "pizzeria-roma") or its id, as returned by GET /restaurants
id*caminhoThe product id, from GET /restaurants/{ref}/products

Exemplo

curl -X DELETE "https://delimenu.co/api/v1/restaurants/pizzeria-roma/products/p9Hs4TqL2mNc8VbX6Rdy" \
  -H "Authorization: Bearer dmk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Resposta 200

{
  "deleted": "p9Hs4TqL2mNc8VbX6Rdy"
}

Campos da resposta

CampoTipoDescrição
deleted*string

Erros

  • 401 UNAUTHORIZED — the key is missing, unknown or revoked
  • 402 NOT_PREMIUM — the restaurant has no active subscription or trial
  • 403 FORBIDDEN — the key lacks the scope this endpoint needs
  • 404 NOT_FOUND — no such restaurant in this account, or no such item in it
  • 500 INTERNAL — something failed on our side; retry in a moment

Desenvolvedores