Restofy Docs
Carta pública del restaurante POST

Detalle de un producto

POST /api/catalog/get-product

Descripción

Devuelve el detalle de un producto con sus variaciones y sus opciones para personalizarlo.

Detalles

Retorna los datos del producto elegido dentro del menú: precio, descripción, fotos, alérgenos, las variaciones con las que se ofrece y los grupos de opciones para personalizarlo con sus precios. Falla si el producto no está disponible en ese menú.

Permisos requeridos

public

Request

Nombre Tipo Requerido Reglas
slug string Sí
min:1 max:63
token string No
min:1 max:64
reservationUuid string No
min:36 max:36
menuId int Sí
min_value:1
productUuid string Sí
min:36 max:36

Respuesta

Campos que devuelve dentro de data. Nada fuera de esta lista sale en la respuesta.

Campo Tipo Descripción
product object Detalle del producto
product.productId int Identificador del producto, para agregarlo al pedido
product.productUuid string Identificador público del producto
product.name string Nombre del producto
product.description string Admite vacío Descripción del producto
product.priceCents int Precio base, en centavos
product.icon string Admite vacío Ícono del producto
product.color string Admite vacío Color del producto
product.categoryId int Identificador de la categoría
product.categoryName string Nombre de la categoría
product.categoryColor string Admite vacío Color de la categoría
product.imageUrl string Admite vacío Foto principal
product.images array Fotos del producto
product.images[].url string Dirección de la foto
product.allergens array Alérgenos del producto
product.allergens[].allergenId int Identificador del alérgeno
product.allergens[].name string Nombre del alérgeno
product.allergens[].icon string Admite vacío Ícono del alérgeno
product.allergens[].contains string Si lo contiene o puede tener trazas
product.modifierGroups array Grupos de opciones para personalizar el producto
product.modifierGroups[].modifierGroupId int Identificador del grupo, para agregarlo al pedido
product.modifierGroups[].name string Nombre del grupo
product.modifierGroups[].description string Admite vacío Descripción del grupo
product.modifierGroups[].minSelections int Mínimo de opciones a elegir
product.modifierGroups[].maxSelections int Admite vacío Máximo de opciones; vacío si no tiene tope
product.modifierGroups[].isCollapsible bool Si el grupo se muestra plegado
product.modifierGroups[].options array Opciones del grupo
product.modifierGroups[].options[].modifierId int Identificador de la opción, para agregarla al pedido
product.modifierGroups[].options[].name string Nombre de la opción
product.modifierGroups[].options[].priceCents int Precio adicional, en centavos
product.modifierGroups[].options[].minQuantity int Cantidad mínima
product.modifierGroups[].options[].maxQuantity int Admite vacío Cantidad máxima; vacío si no tiene tope
product.modifierGroups[].options[].defaultQuantity int Cantidad sugerida
product.likesCount int Cantidad de me gusta
product.likedByMe bool Si le diste me gusta
product.viewsCount int Cantidad de vistas
product.questionsCount int Cantidad de preguntas
prices array Precios entre los que se elige al pedir
prices[].productPriceId int Admite vacío Identificador del precio; vacío si es el precio base
prices[].priceName string Admite vacío Nombre del precio
prices[].priceType string Tipo de precio
prices[].resolvedPriceCents int Precio a cobrar, en centavos
priceOptions array Variaciones de cada precio
priceOptions[].productPriceId int Precio al que pertenece
priceOptions[].optionId int Identificador de la variación, para agregarla al pedido
priceOptions[].description string Nombre de la variación
priceOptions[].priceCents int Precio de la variación, en centavos

Ejemplo de request

curl -X POST https://restofy.pro/api/catalog/get-product \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <accessToken>" \
  -d '{
    "slug": "string",
    "menuId": 1,
    "productUuid": "string"
}'

Los valores son demo: reemplázalos por datos reales del negocio.

Ejemplo de respuesta

Actualizado: 2026-10-09T02:12:12Z
HTTP 200

Request

{
    "slug": "restofy_test_catalogpublictes_2238_1791511154_tenant",
    "menuId": 6,
    "productUuid": "3662a28e-18be-11f1-9da2-b627060a1ebe"
}

Response

{
    "success": true,
    "message": "Operación realizada correctamente",
    "data": {
        "product": {
            "productId": 16,
            "productUuid": "3662a28e-18be-11f1-9da2-b627060a1ebe",
            "name": "Limonada Natural",
            "description": "Limonada natural con hielo y menta",
            "priceCents": 500000,
            "icon": "fa-solid fa-glass-citrus",
            "color": "#84cc16",
            "categoryId": 9,
            "categoryName": "Bebidas Frías",
            "categoryColor": "#06b6d4",
            "imageUrl": null,
            "images": [],
            "allergens": [
                {
                    "allergenId": 12,
                    "name": "Sulfitos",
                    "icon": "fa-solid fa-wine-bottle",
                    "contains": "free"
                }
            ],
            "modifierGroups": [],
            "likesCount": 0,
            "likedByMe": false,
            "viewsCount": 0,
            "questionsCount": 0
        },
        "prices": [
            {
                "productPriceId": null,
                "priceName": null,
                "priceType": "inherit",
                "resolvedPriceCents": 500000
            }
        ],
        "priceOptions": []
    }
}