Saltar al contenido principal
GET
/
stores
Listar tiendas
curl --request GET \
  --url https://api.example.com/stores
{
  "data": [
    {
      "id": "ubicacion-pos-01",
      "uid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "organization_id": "f1e2d3c4-b5a6-7890-fedc-ba0987654321",
      "merchant_id": "c1d2e3f4-a5b6-7890-cdef-123456789abc",
      "brand_id": "0001",
      "name": "Calle Principal",
      "status": "ACTIVE",
      "timezone": "America/Guayaquil",
      "contact": {
        "email": "principal@comercio.com",
        "phone": "+593991234567",
        "name": "Calle Principal"
      },
      "location": {
        "latitude": -2.1894,
        "longitude": -79.8891,
        "address_line_1": "Calle Principal 456",
        "city": "Guayaquil",
        "country": "Ecuador",
        "postal_code": "090101",
        "business_name": "Restaurante Calle Principal"
      },
      "channels": {
        "UBER_EATS": {
          "id": "uber-eats-principal",
          "uid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
          "name": "Uber Eats",
          "fulfillment": {
            "DELIVERY": {
              "uid": "c3d4e5f6-a7b8-9012-cdef-123456789012",
              "id": "delivery",
              "type": "DELIVERY",
              "name": "Delivery",
              "instructions": { "es_ec": "Tocar el timbre en la entrada lateral." },
              "pricing": {
                "is_tax_inclusive": false,
                "minimum_order_value": 8,
                "maximum_order_value": 300,
                "tax_rate": 0.15,
                "fees": []
              },
              "coverage_zones": [
                {
                  "name": "Centro de la ciudad",
                  "type": "RADIUS",
                  "radius_info": {
                    "latitude": -2.1894,
                    "longitude": -79.8891,
                    "radius": 8000
                  }
                }
              ],
              "availability": {
                "status": "OPEN",
                "schedules": [{
                  "monday": { "start_time": "08:00:00", "end_time": "23:00:00" },
                  "tuesday": { "start_time": "08:00:00", "end_time": "23:00:00" },
                  "wednesday": { "start_time": "08:00:00", "end_time": "23:00:00" },
                  "thursday": { "start_time": "08:00:00", "end_time": "23:00:00" },
                  "friday": { "start_time": "08:00:00", "end_time": "23:00:00" },
                  "saturday": { "start_time": "08:00:00", "end_time": "23:00:00" },
                  "sunday": { "start_time": "08:00:00", "end_time": "23:00:00" }
                }]
              }
            }
          }
        }
      },
      "payments": {
        "orderable": true,
        "methods": [
          {
            "method": "CREDIT",
            "minimum_order_value": 0,
            "maximum_order_value": 500,
            "providers": [
              {
                "id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
                "name": "Datafast",
                "status": "ACTIVE"
              }
            ]
          }
        ]
      },
      "cms_template_id": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
      "cms": {
        "id": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
        "name": "Landing de tienda",
        "entity": "STORES",
        "status": "ACTIVE",
        "fields": [
          {
            "name": "hero_title",
            "type": "TEXT",
            "label": { "es_ec": "Título principal" },
            "required": true,
            "value": "Bienvenido a Calle Principal"
          }
        ]
      },
      "overrides": []
    }
  ]
}
Devuelve todas las tiendas configuradas para el comercio autenticado. Usa este endpoint para mapear tiendas de Fire spark con ubicaciones en tu POS o RMS antes de sincronizar menús e inyectar pedidos.
Requiere un access token con el scope stores:read. Consulta Autorizar para obtener un token.

Headers

HeaderRequeridoDescripción
x-brand-idNoFiltra tiendas por marca. Identificador externo de la marca — solo alfanuméricos, _ y -. 1–64 caracteres. Si se omite, se devuelven todas las tiendas del comercio.

Solicitud

curl "https://firespark.vercel.app/api/integrations/v1/stores" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "x-brand-id: 0001"

Respuesta

La respuesta envuelve un arreglo de tiendas en data. Cada tienda incluye la configuración operativa completa: contacto, ubicación, canales (con fulfillment por canal), pagos, metadatos de plantilla CMS y overrides programados.
{
  "data": [
    {
      "id": "ubicacion-pos-01",
      "uid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "organization_id": "f1e2d3c4-b5a6-7890-fedc-ba0987654321",
      "merchant_id": "c1d2e3f4-a5b6-7890-cdef-123456789abc",
      "brand_id": "0001",
      "name": "Calle Principal",
      "status": "ACTIVE",
      "timezone": "America/Guayaquil",
      "contact": {
        "email": "principal@comercio.com",
        "phone": "+593991234567",
        "name": "Calle Principal"
      },
      "location": {
        "latitude": -2.1894,
        "longitude": -79.8891,
        "address_line_1": "Calle Principal 456",
        "city": "Guayaquil",
        "country": "Ecuador",
        "postal_code": "090101",
        "business_name": "Restaurante Calle Principal"
      },
      "channels": {
        "UBER_EATS": {
          "id": "uber-eats-principal",
          "uid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
          "name": "Uber Eats",
          "fulfillment": {
            "DELIVERY": {
              "uid": "c3d4e5f6-a7b8-9012-cdef-123456789012",
              "id": "delivery",
              "type": "DELIVERY",
              "name": "Delivery",
              "instructions": { "es_ec": "Tocar el timbre en la entrada lateral." },
              "pricing": {
                "is_tax_inclusive": false,
                "minimum_order_value": 8,
                "maximum_order_value": 300,
                "tax_rate": 0.15,
                "fees": []
              },
              "coverage_zones": [
                {
                  "name": "Centro de la ciudad",
                  "type": "RADIUS",
                  "radius_info": {
                    "latitude": -2.1894,
                    "longitude": -79.8891,
                    "radius": 8000
                  }
                }
              ],
              "availability": {
                "status": "OPEN",
                "schedules": [{
                  "monday": { "start_time": "08:00:00", "end_time": "23:00:00" },
                  "tuesday": { "start_time": "08:00:00", "end_time": "23:00:00" },
                  "wednesday": { "start_time": "08:00:00", "end_time": "23:00:00" },
                  "thursday": { "start_time": "08:00:00", "end_time": "23:00:00" },
                  "friday": { "start_time": "08:00:00", "end_time": "23:00:00" },
                  "saturday": { "start_time": "08:00:00", "end_time": "23:00:00" },
                  "sunday": { "start_time": "08:00:00", "end_time": "23:00:00" }
                }]
              }
            }
          }
        }
      },
      "payments": {
        "orderable": true,
        "methods": [
          {
            "method": "CREDIT",
            "minimum_order_value": 0,
            "maximum_order_value": 500,
            "providers": [
              {
                "id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
                "name": "Datafast",
                "status": "ACTIVE"
              }
            ]
          }
        ]
      },
      "cms_template_id": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
      "cms": {
        "id": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
        "name": "Landing de tienda",
        "entity": "STORES",
        "status": "ACTIVE",
        "fields": [
          {
            "name": "hero_title",
            "type": "TEXT",
            "label": { "es_ec": "Título principal" },
            "required": true,
            "value": "Bienvenido a Calle Principal"
          }
        ]
      },
      "overrides": []
    }
  ]
}

Objeto tienda

CampoTipoDescripción
idstringIdentificador externo de la tienda en tu POS o RMS. Solo alfanuméricos, _ y -. 1–64 caracteres. Único por comercio.
uidstring (UUID)Identificador interno de Fire spark.
organization_idstring (UUID)Organización propietaria del comercio.
merchant_idstring (UUID)Comercio al que pertenece la tienda.
brand_idstringIdentificador externo de la marca. Solo alfanuméricos, _ y -. 1–64 caracteres. Opcional — null cuando el comercio opera con una sola marca.
namestringNombre visible. 1–100 caracteres.
statusstringACTIVE o INACTIVE.
timezonestringZona horaria IANA para horarios y overrides.
contactobjectDatos de contacto de la tienda.
locationobjectDirección física y coordenadas.
channelsobjectConfiguración de fulfillment por canal, indexada por código. Cada canal incluye un mapa fulfillment.
paymentsobjectMétodos de pago y límites de pedido.
cms_template_idstring (UUID)Plantilla CMS vinculada a esta tienda. null cuando no hay plantilla asignada.
cmsobjectSolo lectura. null cuando cms_template_id es null. Si está asignada, la plantilla CMS resuelta con definiciones de campos y valores guardados.
overridesarrayCambios de configuración programados.
CampoTipoRequeridoDescripción
emailstringDirección de correo válida.
phonestringFormato E.164 (por ejemplo +593991234567).
namestringNoNombre de contacto.
| Campo | Tipo | Requerido | Descripción | | ----- | ---- | --------- | ----------- | | latitude | number | Sí | Entre -90 y 90. | | longitude | number | Sí | Entre -180 y 180. | | address_line_1 | string | Sí | 3–255 caracteres. | | address_line_2 | string | No | 3–255 caracteres. | | city | string | Sí | 1–100 caracteres. | | country | string | Sí | 1–100 caracteres. | | postal_code | string | Sí | Solo números. 4–10 dígitos. | | business_name | string | Sí | Razón social o nombre comercial. 1–100 caracteres. | | unit_number | string | No | Solo números. 1–10 dígitos. |
Mapa de códigos de canal a su configuración. Cada entrada contiene:
CampoTipoDescripción
idstringIdentificador externo del canal.
uidstring (UUID)Identificador del canal en Fire spark.
namestringNombre visible.
fulfillmentobjectMapa de tipos de fulfillment disponibles en este canal. Cada clave es un código (por ejemplo DELIVERY, PICKUP).
Cada entrada de fulfillment requiere uid, id, type, name, pricing, coverage_zones y availability. instructions es opcional como objeto localizado.
CampoTipoDescripción
is_tax_inclusivebooleanSi los precios incluyen impuestos.
minimum_order_valuenumberMonto mínimo de pedido. ≥ 0.
maximum_order_valuenumberMonto máximo de pedido. 0–1,000,000.
tax_ratenumberTasa de impuesto como decimal (por ejemplo 0.15 para 15%). 0–1.
feesarrayCargos adicionales aplicados al pedido.
Cada cargo:
CampoTipoDescripción
idstringIdentificador externo del cargo.
typestringFIXED o PERCENTAGE.
tax_inclusivebooleanSi el cargo incluye impuestos.
nameobjectEtiqueta localizada por locale (por ejemplo es_ec).
descriptionobjectDescripción localizada opcional.
amountnumberMonto fijo cuando type es FIXED. ≥ 0.
percentagenumberTasa cuando type es PERCENTAGE. 0–1.
CampoTipoDescripción
statusstringOPEN, CLOSED o TEMPORARILY_CLOSED.
schedulesarray | nullArreglo de mapas de horario semanal indexados por día (monday a sunday). null cuando no hay restricción de horarios.
temporary_closed_reasonobjectMotivo localizado cuando está temporalmente cerrado.
temporary_closed_untilstringFecha y hora ISO 8601 en que termina el cierre temporal.
Cada mapa de horario se indexa por día (monday a sunday). Incluye solo los días en que opera la tienda. Cada día:
CampoTipoDescripción
start_timestringHora ISO (por ejemplo 09:00:00).
end_timestringHora ISO (por ejemplo 22:00:00).
CampoTipoDescripción
uidstring (UUID)Identificador de fulfillment en Fire spark.
idstringIdentificador externo de fulfillment.
typestringCódigo de tipo de fulfillment (por ejemplo DELIVERY, PICKUP).
namestringNombre visible.
instructionsobjectInstrucciones localizadas opcionales para el cliente.
pricingobjectReglas de precio para este tipo de fulfillment.
coverage_zonesarrayZonas de entrega o servicio.
availabilityobjectHorarios y estado operativo.
Zona de cobertura:
CampoTipoDescripción
namestringEtiqueta de la zona.
typestringRADIUS o POLYGON.
radius_infoobjectRequerido cuando type es RADIUS. Contiene latitude, longitude y radius (metros, 0–100,000).
polygon_infoobjectRequerido cuando type es POLYGON. Contiene polygon, un arreglo de puntos { latitude, longitude }.
CampoTipoDescripción
orderablebooleanSi la tienda acepta pedidos.
methodsarrayMétodos de pago aceptados.
Cada método de pago:
CampoTipoDescripción
methodstringCREDIT, DEBIT, CASH, BANK_TRANSFER u OTHER.
minimum_order_valuenumberPedido mínimo para este método. ≥ 0.
maximum_order_valuenumberPedido máximo para este método. 0–1,000,000.
providersarrayProveedores de pago para este método.
Cada proveedor:
CampoTipoDescripción
idstring (UUID)Identificador del proveedor.
namestringNombre visible del proveedor.
statusstringACTIVE o INACTIVE.
Presente solo cuando cms_template_id no es null. Contiene la plantilla CMS resuelta asignada a la tienda.
CampoTipoDescripción
idstring (UUID)Identificador de la plantilla. Coincide con cms_template_id.
namestringNombre de la plantilla. 1–100 caracteres.
entitystringSiempre STORES en respuestas de tienda.
statusstringACTIVE o INACTIVE.
fieldsarrayCampos de la plantilla con sus valores guardados actuales.
Cada campo en fields:
CampoTipoDescripción
namestringClave del campo.
typestringTEXT, SELECT, IMAGE o LIST.
labelobjectEtiqueta localizada opcional por locale.
requiredbooleanSi el campo es obligatorio.
placeholderstringTexto de placeholder opcional.
optionsarrayPara campos SELECT — objetos con label y value.
altTextstringPara campos IMAGE — texto alternativo.
srcstringPara campos IMAGE — URL de la imagen.
hrefstringPara campos IMAGE — URL de enlace opcional.
valuevaríaValor guardado actual para esta tienda. Se omite cuando está vacío.
Cambios programados que entran en vigor en una fecha futura. Cada override contiene:
CampoTipoDescripción
start_datestringFecha y hora ISO 8601 en que el override se activa.
changesobjectConfiguración de tienda a aplicar. Incluye contact, location, timezone, channels, payments y cms_template_id.

Mapear tiendas con tu POS

Relaciona el campo id con el identificador de ubicación en tu POS o RMS. Fire spark usa este ID externo para dirigir la sincronización de menús y la inyección de pedidos al sitio correcto.
Los valores uid son identificadores estables de Fire spark. Usa id para mapeo entre sistemas y uid cuando referencies tiendas en otras llamadas a la API de Fire spark.

Respuestas de error

EstadoDescripción
401Access token ausente o inválido.
403El token no incluye el scope stores:read.