Saltar al contenido principal

Tipos de datos especiales

Algunos campos de la API de Ordering usan JSON estructurado. Conserva los nombres de campo y tipos de valor exactos mostrados por el esquema de la operación de destino.

Horarios​

Los horarios se usan en recursos como negocios, menús y zonas de entrega. Un horario no nulo contiene exactamente siete objetos de día. Cada día tiene un valor booleano enabled y un arreglo de lapses.

[
{"enabled": true, "lapses": [{"open": {"hour": 9, "minute": 0}, "close": {"hour": 17, "minute": 0}}]},
{"enabled": true, "lapses": [{"open": {"hour": 9, "minute": 0}, "close": {"hour": 17, "minute": 0}}]},
{"enabled": true, "lapses": [{"open": {"hour": 9, "minute": 0}, "close": {"hour": 17, "minute": 0}}]},
{"enabled": true, "lapses": [{"open": {"hour": 9, "minute": 0}, "close": {"hour": 17, "minute": 0}}]},
{"enabled": true, "lapses": [{"open": {"hour": 9, "minute": 0}, "close": {"hour": 17, "minute": 0}}]},
{"enabled": true, "lapses": [{"open": {"hour": 9, "minute": 0}, "close": {"hour": 17, "minute": 0}}]},
{"enabled": false, "lapses": []}
]
  • open y close contienen campos enteros hour y minute.
  • Usa el formato de 24 horas. Las horas van de 0 a 23, y los minutos de 0 a 59.
  • Una hora de apertura no puede ser posterior a su hora de cierre dentro del mismo lapso.
  • La convención de origen ordena los días de domingo a sábado. El validador actual exige siete entradas y su forma, pero no las etiqueta; conserva el orden exigido por la operación consumidora.

Productos de pedido​

La entrada de un producto de un pedido contiene un id de producto, quantity, comment opcional, identificadores de ingredientes y opciones seleccionadas.

La forma numérica heredada sigue siendo compatible con el procesamiento actual de pedidos:

[
{
"id": 1309,
"quantity": 1,
"comment": "No onions",
"ingredients": [10],
"options": [
{
"id": 53,
"suboptions": [174, 175]
}
]
}
]

La forma de objeto agrega position y quantity para cada subopción:

[
{
"id": 1309,
"quantity": 1,
"comment": "No onions",
"ingredients": [10],
"options": [
{
"id": 53,
"suboptions": [
{
"id": 174,
"position": "left",
"quantity": 1
}
]
}
]
}
]

El código actual también usa whole como position predeterminada. Cuando está habilitado el comportamiento de opciones por mitades y la posición no es whole, el precio puede usar half_price de la subopción. Comprueba la configuración del producto y la opción antes de enviar subopciones con posición.

Ubicaciones​

Las ubicaciones usan latitud y longitud:

{
"lat": 40.8065,
"lng": -73.9536
}

Polígonos​

Un polígono es un arreglo de al menos tres ubicaciones distintas:

[
{"lat": 40.8065, "lng": -73.9536},
{"lat": 40.8083, "lng": -73.9436},
{"lat": 40.8013, "lng": -73.9375}
]

La validación de zona de entrega normaliza lat y lng a valores numéricos y rechaza polígonos malformados.

Zonas de entrega basadas en radio​

El contrato heredado usa el nombre de campo radio para el radio. Conserva esa clave literal.

{
"center": {
"lat": 40.8065,
"lng": -73.9536
},
"radio": 10
}

La documentación de origen describe radio en kilómetros. Confirma la unidad en la operación de destino antes de calcular o transformar datos de zona de entrega.

Datos de cliente​

Los objetos de cliente pueden incluir campos de identidad, contacto, dirección y ubicación. Usa datos sintéticos en ejemplos y envía solo los campos aceptados por la operación de destino.

{
"id": -1,
"name": "Example",
"lastname": "Customer",
"email": "customer@example.com",
"address": "100 Example Street",
"address_notes": "Leave at reception",
"zipcode": "10001",
"cellphone": "5550100",
"phone": "5550101",
"location": {
"lat": 40.7314,
"lng": -73.997
},
"map_data": {
"library": "google",
"place_id": "example-place-id"
}
}

El contrato histórico usa id: -1 para un cliente no registrado. Verifica ese comportamiento frente a la operación que acepta el objeto de cliente.

Datos de mapa​

map_data puede ser null o un objeto que contiene el proveedor de mapas y el identificador de lugar:

{
"library": "google",
"place_id": "example-place-id"
}