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": []}
]
openyclosecontienen campos enteroshouryminute.- Usa el formato de 24 horas. Las horas van de
0a23, y los minutos de0a59. - 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"
}