Imagens
Fotos de produto, logo e banner a partir de uma URL pública.
Photos, logo and banner from a public https URL (JPG, PNG or WEBP, up to 5 MB).
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.
Set the logo or the banner
put
/restaurants/{ref}/images/{kind}requer menu:writesetRestaurantImageDownloads the image at a public https URL and sets it as the logo or the banner, replacing the current one. Takes a few seconds while the image is optimised.
Parâmetros
| Nome | Onde | Descrição |
|---|---|---|
ref* | caminho | The restaurant identifier (the slug in its public URL, e.g. "pizzeria-roma") or its id, as returned by GET /restaurants |
kind* | caminho | "logo" is shown at 512×512; "banner" is the header image, 1080×1080 max"logo" | "banner" |
Corpo (JSON)
| Campo | Tipo | Descrição |
|---|---|---|
image_url* | string | Public https URL of a JPG, PNG or WEBP image up to 5 MBaté 2048 caracteres |
Exemplo
curl -X PUT "https://delimenu.co/api/v1/restaurants/pizzeria-roma/images/logo" \
-H "Authorization: Bearer dmk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"image_url":"https://example.com/logo.png"}'Resposta 200
{
"restaurant": {
"id": "aR3kX9pLm2QzT7vN4bYc",
"identifier": "pizzeria-roma",
"name": "Pizzería Roma",
"currency": "COP",
"type": "whatsapp",
"phone": "+573001234567",
"address": "Calle 10 # 5-20, Bogotá",
"menu_url": "https://delimenu.co/pizzeria-roma",
"logo_url": "https://firebasestorage.googleapis.com/v0/b/example/o/logo_512x512.png?alt=media",
"banner_url": null,
"language": "es",
"languages": [
"en"
],
"trial_active": false
}
}Campos da resposta
| Campo | Tipo | Descrição |
|---|---|---|
restaurant* | object | |
id* | string | |
identifier* | string | |
name* | string | |
currency* | string | ISO 4217 code every price is in |
type* | "whatsapp" | "read_only" | "whatsapp" takes orders by WhatsApp; "read_only" only shows the menu |
phone* | string | null | WhatsApp number in E.164, when ordering is enabled |
address* | string | null | |
menu_url* | string | |
logo_url* | string | null | |
banner_url* | string | null | |
language* | "es" | "en" | "pt" | "fr" | "de" | "it" | The primary language: the one name, description and every untranslated field are written in |
languages* | "es" | "en" | "pt" | "fr" | "de" | "it"[] | The additional languages diners can read the menu in, translated through `translations`. Empty for a menu in one language. |
trial_active* | boolean |
Erros
400VALIDATION — a field is missing or malformed; `issues` names it401UNAUTHORIZED — the key is missing, unknown or revoked402NOT_PREMIUM — the restaurant has no active subscription or trial403FORBIDDEN — the key lacks the scope this endpoint needs404NOT_FOUND — no such restaurant in this account, or no such item in it500INTERNAL — something failed on our side; retry in a moment
Remove the logo or the banner
delete
/restaurants/{ref}/images/{kind}requer menu:writeremoveRestaurantImageParâmetros
| Nome | Onde | Descrição |
|---|---|---|
ref* | caminho | The restaurant identifier (the slug in its public URL, e.g. "pizzeria-roma") or its id, as returned by GET /restaurants |
kind* | caminho | "logo" is shown at 512×512; "banner" is the header image, 1080×1080 max"logo" | "banner" |
Exemplo
curl -X DELETE "https://delimenu.co/api/v1/restaurants/pizzeria-roma/images/logo" \
-H "Authorization: Bearer dmk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Resposta 200
{
"restaurant": {
"id": "aR3kX9pLm2QzT7vN4bYc",
"identifier": "pizzeria-roma",
"name": "Pizzería Roma",
"currency": "COP",
"type": "whatsapp",
"phone": "+573001234567",
"address": "Calle 10 # 5-20, Bogotá",
"menu_url": "https://delimenu.co/pizzeria-roma",
"logo_url": null,
"banner_url": null,
"language": "es",
"languages": [
"en"
],
"trial_active": false
}
}Campos da resposta
| Campo | Tipo | Descrição |
|---|---|---|
restaurant* | object | |
id* | string | |
identifier* | string | |
name* | string | |
currency* | string | ISO 4217 code every price is in |
type* | "whatsapp" | "read_only" | "whatsapp" takes orders by WhatsApp; "read_only" only shows the menu |
phone* | string | null | WhatsApp number in E.164, when ordering is enabled |
address* | string | null | |
menu_url* | string | |
logo_url* | string | null | |
banner_url* | string | null | |
language* | "es" | "en" | "pt" | "fr" | "de" | "it" | The primary language: the one name, description and every untranslated field are written in |
languages* | "es" | "en" | "pt" | "fr" | "de" | "it"[] | The additional languages diners can read the menu in, translated through `translations`. Empty for a menu in one language. |
trial_active* | boolean |
Erros
401UNAUTHORIZED — the key is missing, unknown or revoked402NOT_PREMIUM — the restaurant has no active subscription or trial403FORBIDDEN — the key lacks the scope this endpoint needs404NOT_FOUND — no such restaurant in this account, or no such item in it500INTERNAL — something failed on our side; retry in a moment
Set the product photo
put
/restaurants/{ref}/products/{id}/imagerequer menu:writesetProductImageDownloads the image at a public https URL and makes it the product photo, replacing the current one. Takes a few seconds while the image is optimised.
Parâmetros
| Nome | Onde | Descrição |
|---|---|---|
ref* | caminho | The restaurant identifier (the slug in its public URL, e.g. "pizzeria-roma") or its id, as returned by GET /restaurants |
id* | caminho | The product id, from GET /restaurants/{ref}/products |
Corpo (JSON)
| Campo | Tipo | Descrição |
|---|---|---|
image_url* | string | Public https URL of a JPG, PNG or WEBP image up to 5 MBaté 2048 caracteres |
Exemplo
curl -X PUT "https://delimenu.co/api/v1/restaurants/pizzeria-roma/products/p9Hs4TqL2mNc8VbX6Rdy/image" \
-H "Authorization: Bearer dmk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"image_url":"https://example.com/fotos/margarita.jpg"}'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
}
]
}
]
}
}Campos da resposta
| Campo | Tipo | Descrição |
|---|---|---|
product* | object | |
id* | string | |
category_id* | string | |
name* | string | |
price* | number | Major units in the restaurant's currency |
original_price | number | Present while the product is on promotion |
description | string | |
available* | boolean | false renders "Sin stock" |
hidden* | boolean | true keeps it off the public menu |
has_image* | boolean | |
image_url | string | |
variants* | object[] | |
id* | string | |
name* | string | |
min_selections* | integer | min -9007199254740991 · max 9007199254740991 |
max_selections* | integer | 0 is no limitmin -9007199254740991 · max 9007199254740991 |
max_per_option | integer | min -9007199254740991 · max 9007199254740991 |
options* | object[] | |
id* | string | |
name* | string | |
price* | number | Extra charge on top of the product price |
show* | boolean | |
translations | object | The 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`. |
translations | object | The 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`. |
es | object | |
en | object | |
pt | object | |
fr | object | |
de | object | |
it | object | |
translations | object | Name 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`. |
es | object | |
name | string | |
description | string | |
en | object | |
name | string | |
description | string | |
pt | object | |
name | string | |
description | string | |
fr | object | |
name | string | |
description | string | |
de | object | |
name | string | |
description | string | |
it | object | |
name | string | |
description | string |
Erros
400VALIDATION — a field is missing or malformed; `issues` names it401UNAUTHORIZED — the key is missing, unknown or revoked402NOT_PREMIUM — the restaurant has no active subscription or trial403FORBIDDEN — the key lacks the scope this endpoint needs404NOT_FOUND — no such restaurant in this account, or no such item in it500INTERNAL — something failed on our side; retry in a moment
Remove the product photo
delete
/restaurants/{ref}/products/{id}/imagerequer menu:writeremoveProductImageParâmetros
| Nome | Onde | Descrição |
|---|---|---|
ref* | caminho | The restaurant identifier (the slug in its public URL, e.g. "pizzeria-roma") or its id, as returned by GET /restaurants |
id* | caminho | The product id, from GET /restaurants/{ref}/products |
Exemplo
curl -X DELETE "https://delimenu.co/api/v1/restaurants/pizzeria-roma/products/p9Hs4TqL2mNc8VbX6Rdy/image" \
-H "Authorization: Bearer dmk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Resposta 200
{
"product_id": "p9Hs4TqL2mNc8VbX6Rdy",
"has_image": false
}Campos da resposta
| Campo | Tipo | Descrição |
|---|---|---|
product_id* | string | |
has_image* | false |
Erros
401UNAUTHORIZED — the key is missing, unknown or revoked402NOT_PREMIUM — the restaurant has no active subscription or trial403FORBIDDEN — the key lacks the scope this endpoint needs404NOT_FOUND — no such restaurant in this account, or no such item in it500INTERNAL — something failed on our side; retry in a moment