{"openapi": "3.1.0", "info": {"title": "API de Sphinx v1", "description": "La API de Sphinx es la puerta por la que un sistema externo —una tienda en línea, un marketplace, un sistema de despacho o un tablero de gestión— conversa con el ERP Sphinx de una empresa: lee su catálogo, crea pedidos que reservan stock, registra pagos y consulta boletas, despachos y reportes.\n\n## Primeros pasos\n\n1. **Pida a la empresa** la dirección de su Sphinx, el nombre de su base y una **clave**. La clave la crea la empresa en *Integraciones > API*, con el alcance que su sistema necesita.\n2. **Pruebe la clave** con `/estado`, que la abre cualquier clave:\n\n```bash\ncurl -H \"Authorization: Bearer $CLAVE\" https://erp.miempresa.cl/api/v1/miempresa/estado\n```\n\n3. **Lea el catálogo:** `/productos` dice qué productos hay; `/fichas`, `/precios`, `/stock`, `/disponibilidad` y `/fotos` traen cada parte por separado.\n4. **Registre una venta:** `POST /pedidos` al confirmar el carro, y después el pago —con la pasarela de Sphinx o con la suya— o la anulación si no se paga.\n\nEl recorrido completo, con los procesos recomendados, está en el [manual de la API v1 (PDF)](../Manual-API-Sphinx.pdf).\n\n## La dirección\n\n`https://<servidor>/api/v1/<base>/<recurso>` — el servidor es el mismo con que los usuarios de la empresa entran a Sphinx, y la base va siempre en la ruta.\n\n## La clave y su alcance\n\nCada sistema que se conecta usa su propia clave, en el encabezado `Authorization: Bearer <clave>`. La clave tiene un **alcance**:\n\n| Alcance | Abre |\n|---|---|\n| Catálogo | productos, fichas, precios, stock, disponibilidad, fotos, fusiones, maestros, contenido, arma-tu-pc |\n| Ventas | pedidos, pagos |\n| Consultas | boletas, órdenes de servicio, despacho |\n| Clientes | cuenta, contactos, suscripciones |\n| Reportes | reportes, usuarios |\n\nUna ruta fuera del alcance contesta `403`. La clave es de la empresa: guárdela en su servidor, nunca en el navegador.\n\n## Caché\n\nTodo `GET` trae `ETag`. Envíelo en `If-None-Match` y, si nada cambió, la respuesta es `304` sin cuerpo: así se puede consultar el stock de todo el catálogo cada pocos minutos sin mover nada.\n\n## Errores\n\nCon su código HTTP y un cuerpo `application/problem+json` (RFC 9457). El `detail` está escrito para mostrárselo al usuario.\n\n| HTTP | Cuándo |\n|---|---|\n| 400 | Un parámetro o un cuerpo que no se puede leer |\n| 401 | Falta la clave, no es de esa base o fue revocada |\n| 403 | La clave no tiene el alcance de esa ruta |\n| 404 | La base o lo pedido no existe |\n| 409 | La empresa no tiene publicado su sitio de fotos |\n| 422 | Una regla de negocio (sin stock, un dato que falta); `codigo` trae el número de error |\n| 429 | Más de 30 peticiones por segundo desde una IP |\n| 500, 503 | Error del ERP o base no disponible: reintente |\n\n## Compatibilidad\n\nEn la v1 sólo se agregan rutas, campos y parámetros opcionales: **ignore los campos que no conoce**. Un cambio incompatible sería `/v2`, y la v1 seguiría funcionando.", "version": "202609.169"}, "servers": [{"url": "https://{servidor}", "description": "El Sphinx de la empresa: el mismo nombre con que sus usuarios entran al sistema", "variables": {"servidor": {"default": "erp.miempresa.cl"}}}], "security": [{"claveTienda": []}], "tags": [{"name": "Estado", "description": "Para probar la dirección, la base y la clave sin tocar datos."}, {"name": "Fichas", "description": "La ficha de cada producto publicado, sin precio, stock ni fotos: esos viajan aparte porque cambian a otro ritmo. `/productos` dice cuáles hay y la fecha de su ficha; `/fichas` trae las que cambiaron o las de unos ids."}, {"name": "Precios", "description": "Los precios de todos los productos publicados en una lista, con la oferta vigente y los precios por medio de pago ya calculados."}, {"name": "Stock", "description": "El stock de todos los productos publicados, por sucursal. Lo que no viene no tiene stock."}, {"name": "Disponibilidad", "description": "Si cada producto se muestra hoy (`lista`), si viene en camino y si se vende del stock de un mayorista."}, {"name": "Fotos", "description": "Las fotos del catálogo como direcciones públicas: no hay que bajar ningún archivo."}, {"name": "Fusiones", "description": "Los productos que se fusionaron con otro, para redirigir la página del que ya no existe."}, {"name": "Maestros", "description": "Las tablas chicas que se copian enteras: sucursales, listas de precios, formas de pago y entrega, marcas, familias, ficha técnica, regiones y comunas, promociones de despacho y lo más vendido."}, {"name": "Contenido", "description": "El contenido del sitio que la empresa administra en Sphinx: banners, destacados, avisos, páginas."}, {"name": "Arma tu PC", "description": "El configurador de PC por compatibilidad, para las empresas que lo usan."}, {"name": "Pedidos", "description": "El pedido del carro y su pago. `POST /pedidos` reserva el stock; el pago se cobra con la pasarela de Sphinx (`id_pago`) o se informa con `POST /pedidos/{idWeb}/pagos`; un pedido sin pagar se anula con `POST /pedidos/{idWeb}/anulacion`."}, {"name": "Boletas", "description": "El PDF de una boleta electrónica y las órdenes de servicio técnico de un cliente."}, {"name": "Despacho", "description": "El estado del despacho de un documento, el seguimiento de un pedido y la cotización del despacho de un carro."}, {"name": "Cuenta", "description": "La cuenta del cliente de una tienda en línea: sesión, registro, datos, compras y favoritos. El cliente se identifica con el token de su sesión en `X-Cliente-Token`."}, {"name": "Contactos", "description": "El formulario de contacto del sitio y su seguimiento."}, {"name": "Suscripciones", "description": "La suscripción de un correo a las novedades del sitio."}, {"name": "Reportes", "description": "Estadísticas de venta, usuarios, cuadratura y reporte diario de caja, para tableros de gestión."}], "paths": {"/api/v1/{base}/cuenta": {"get": {"tags": ["Cuenta"], "summary": "Los datos del cliente", "description": "El cliente del token con sus direcciones, el mismo JSON que POST /cuenta/sesion pero sin renovar el token. La tienda lo pide para no mostrar datos viejos si la cuenta se modifico por otro lado (el ERP u otro dispositivo). Token inválido 422 con código 50.", "operationId": "cuentaDatos", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "X-Cliente-Token", "in": "header", "required": false, "schema": {"type": "string"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToWebUsuarioExtendido"}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}, "put": {"tags": ["Cuenta"], "summary": "Modifica los datos del cliente", "description": "Los datos que vengan, las direcciones de facturación y despacho, y la clave con {password, nueva}. Devuelve el cliente. Sin cambios 422 con código 800.", "operationId": "cuentaModifica", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "X-Cliente-Token", "in": "header", "required": false, "schema": {"type": "string"}}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToWebLogin"}}}, "required": true}, "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToWebUsuarioExtendido"}}}}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}, "post": {"tags": ["Cuenta"], "summary": "Registra o activa una cuenta", "description": "{email, password, rut, nombre, fono, documento, giro}: crea la cuenta y manda el código de activación por correo. Con {email, password, codigo} la activa.", "operationId": "cuentaRegistro", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToWebLogin"}}}, "required": true}, "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Mensaje"}}}}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/suscripciones": {"post": {"tags": ["Suscripciones"], "summary": "Suscribe un correo", "description": "{email, ip, referer}. Un correo inválido es 422 con código 100.", "operationId": "suscripcionSuscribir", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToSuscribirWEB"}}}, "required": true}, "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/pedidos": {"post": {"tags": ["Pedidos"], "summary": "Crea el documento del pedido", "description": "El pedido del carro (ToDocSave en JSON). Devuelve id_doc, id_pago, nro_orden, id_web y el documento. El cliente sale del token en X-Cliente-Token; sin token es invitado. Una validación que falla es 422 con código 100 y su mensaje.", "operationId": "pedidoCrear", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "X-Cliente-Token", "in": "header", "required": false, "schema": {"type": "string"}}], "requestBody": {"content": {"application/json": {"schema": {"type": "object", "description": "El pedido del carro. Son los campos que lee Sphinx; el resto los calcula él. Los totales se validan, no se recalculan: ver la regla en la descripción de la operación y en el manual.", "required": ["tipo", "nroOrden", "idFormapago", "neto", "afecto", "iva", "total", "detalle"], "properties": {"tipo": {"type": "string", "description": "PEDIDO, BOLETA, FACTURA o COTIZACION. Con Pedido Web —lo habitual— todo lo que no es cotización queda como Pedido Web.", "enum": ["PEDIDO", "BOLETA", "FACTURA", "COTIZACION"]}, "nroOrden": {"type": "integer", "description": "El número de la orden en su sistema. Evita las ventas duplicadas: reenviar la misma orden con el mismo total devuelve el pedido que ya existe.", "format": "int64"}, "idSucursal": {"type": "integer", "description": "La sucursal que vende (maestros/sucursales). Con PEDIDO puede omitirse."}, "idBodega": {"type": "integer", "description": "La bodega de la que sale el stock; por omisión, la web de la sucursal."}, "idFormapago": {"type": "integer", "description": "La forma de pago (maestros/formas). Si es un medio en línea de Sphinx, la respuesta trae id_pago."}, "idFormaentrega": {"type": "integer", "description": "La forma de entrega. Si es despacho, envíe despachoDomicilio."}, "idLista": {"type": "integer", "description": "La lista contra la que se validan precios y descuentos; por omisión, la web."}, "rut": {"type": "integer", "description": "RUT del comprador, sin dígito verificador. Una factura lo exige."}, "rutRetiro": {"type": "integer", "description": "RUT de quien retira, si es otra persona."}, "neto": {"type": "number", "description": "Suma de (cantidad × (precio − descuento)) más el despacho, dividida por 1,19 y redondeada (±10 pesos)."}, "descuento": {"type": "number", "description": "Descuento neto sobre el total; afecto = neto − descuento, exacto."}, "afecto": {"type": "number", "description": "neto − descuento, exacto."}, "iva": {"type": "number", "description": "afecto × 0,19 redondeado (±5 pesos)."}, "total": {"type": "number", "description": "afecto + iva, exacto."}, "despacho": {"type": "number", "description": "Lo que se cobra por el despacho, con IVA."}, "urlRetorno": {"type": "string", "description": "Con un medio de pago de Sphinx: adónde avisa Sphinx que el pago cambió (se le agrega /<id_web>)."}, "urlPedido": {"type": "string", "description": "Adónde vuelve el cliente después de pagar; sin ella, a urlRetorno."}, "idWeb": {"type": "string", "description": "Un identificador propio de la orden, que también evita duplicados. Sin él, Sphinx genera uno."}, "observaciones": {"type": "string", "description": "Nota del pedido."}, "ordenCompra": {"type": "string", "description": "Orden de compra del cliente."}, "ipAddress": {"type": "string", "description": "IP del comprador."}, "cliente": {"type": "object", "description": "Con rut, Sphinx crea el cliente o actualiza el que tiene.", "properties": {"nombre": {"type": "string", "description": "Nombre o razón social; obligatorio con rut."}, "email": {"type": "string", "description": "Correo; obligatorio con rut."}, "fono": {"type": "string", "description": "Teléfono."}, "giro": {"type": "string", "description": "Giro; obligatorio para factura."}, "direccion": {"type": "string", "description": "Calle."}, "numero": {"type": "string", "description": "Número."}, "adicional": {"type": "string", "description": "Depto, oficina."}, "idComuna": {"type": "integer", "description": "Comuna (maestros/division-politica)."}, "ciudad": {"type": "string", "description": "Ciudad."}, "contacto": {"type": "string", "description": "Persona de contacto."}, "emailContacto": {"type": "string", "description": "Correo del contacto."}, "nombreRetiro": {"type": "string", "description": "Nombre de quien retira, con rutRetiro."}, "mailing": {"type": "integer", "description": "1 si acepta publicidad."}}}, "despachoDomicilio": {"type": "object", "description": "Sólo si la forma de entrega es despacho.", "properties": {"nombre": {"type": "string", "description": "Quién recibe."}, "fono": {"type": "string", "description": "Teléfono."}, "direccion": {"type": "string", "description": "Calle."}, "numero": {"type": "string", "description": "Número."}, "adicional": {"type": "string", "description": "Depto, oficina."}, "idComuna": {"type": "integer", "description": "Comuna."}, "ciudad": {"type": "string", "description": "Ciudad."}, "idTransporte": {"type": "integer", "description": "Transporte (maestros/formas)."}, "nota": {"type": "string", "description": "Nota para el repartidor."}}}, "detalle": {"type": "array", "description": "Las líneas del pedido; al menos una.", "items": {"type": "object", "required": ["cantidad", "precio", "descripcion"], "properties": {"idProducto": {"type": "integer", "description": "El producto (el de fichas, no el código). Descuenta stock; una línea sin producto, como un cargo, va sin él."}, "cantidad": {"type": "number", "description": "Mayor que cero."}, "precio": {"type": "number", "description": "Precio unitario con IVA, antes del descuento."}, "descuento": {"type": "number", "description": "Descuento unitario con IVA."}, "descripcion": {"type": "string", "description": "El texto que se imprime en el documento."}, "observacion": {"type": "string", "description": "Nota de la línea."}}}}}}, "example": {"tipo": "PEDIDO", "nroOrden": 51259, "idSucursal": 1, "idFormapago": 6, "idFormaentrega": 3, "rut": 21614514, "urlRetorno": "https://www.mitienda.cl/pago/retorno", "neto": 338639, "descuento": 0, "afecto": 338639, "iva": 64341, "total": 402980, "despacho": 5990, "cliente": {"nombre": "María Pérez Soto", "email": "maria@correo.cl", "fono": "+56 9 8765 4321", "direccion": "Los Aromos", "numero": "123", "adicional": "Depto 101", "idComuna": 322, "ciudad": "Santiago"}, "despachoDomicilio": {"nombre": "María Pérez Soto", "fono": "+56 9 8765 4321", "direccion": "Los Aromos", "numero": "123", "adicional": "Depto 101", "idComuna": 322, "ciudad": "Santiago", "idTransporte": 20, "nota": "Dejar en conserjería"}, "detalle": [{"idProducto": 17, "cantidad": 1, "precio": 396990, "descuento": 0, "descripcion": "Notebook 14 i5 8GB"}]}}}, "required": true}, "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Creado"}, "example": {"id_doc": 5397, "id_pago": "9f86d081884c7d659a2feaa0c55ad015", "nro_orden": 51259, "id_web": "1b0c6f0e-4f7e-4c50-9a3d-0f2f1d7c2b11", "documento": "Pedido WEB 51259", "correo": "maria@correo.cl"}}}}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/pedidos/{idWeb}/pagos": {"post": {"tags": ["Pedidos"], "summary": "Registra un pago cobrado por el integrador", "description": "El comprobante de la pasarela del integrador (ToDocTransaccion en JSON): entidad, valido=1, codAutorizacion y monto (el total del pedido, con 5 pesos de tolerancia). Lo registra en la caja y, si la boleta o factura queda pagada, la emite: la respuesta trae el documento y su pdf en base64. Con correo=true se la manda al cliente. Reenviar el mismo pago no lo cobra dos veces. Monto distinto o pago no válido: 422 con código 100; pedido anulado: 12; no se puede pagar: 25; no existe: 51.", "operationId": "pedidoPagar", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "idWeb", "in": "path", "required": true, "schema": {"type": "string"}, "example": "1b0c6f0e-4f7e-4c50-9a3d-0f2f1d7c2b11"}, {"name": "correo", "in": "query", "required": false, "schema": {"type": "boolean"}}], "requestBody": {"content": {"application/json": {"schema": {"type": "object", "description": "El comprobante de su pasarela.", "required": ["entidad", "valido", "codAutorizacion", "monto"], "properties": {"entidad": {"type": "string", "description": "Quién cobró: WEBPAY, MERCADOPAGO, FLOW, KHIPU, TRANSFERENCIA… Use siempre el mismo nombre para la misma pasarela."}, "valido": {"type": "integer", "description": "1: sólo se informan pagos aprobados.", "enum": [1]}, "codAutorizacion": {"type": "string", "description": "Código de autorización (hasta 10 caracteres)."}, "monto": {"type": "number", "description": "El total del pedido, con 5 pesos de tolerancia."}, "nroOrden": {"type": "string", "description": "El número de orden del pedido; si no viene, se toma del pedido."}, "nroTransaccion": {"type": "string", "description": "Identificador de la transacción en su pasarela."}, "tipoPago": {"type": "string", "description": "Tipo de pago Transbank: VD débito, VN crédito sin cuotas, VC/NC/S1/S2 en cuotas, VP prepago."}, "tipoTarjeta": {"type": "string", "description": "DB o CR."}, "abrevTarjeta": {"type": "string", "description": "Marca: VI, MC, AX, DC, DB…"}, "numCuotas": {"type": "integer", "description": "Cuotas."}, "ultDigitos": {"type": "string", "description": "Últimos dígitos de la tarjeta."}, "idBanco": {"type": "integer", "description": "Banco, en un pago que no es con tarjeta."}, "fechaTransaccion": {"type": "string", "description": "AAAA-MM-DD."}, "horaTransaccion": {"type": "string", "description": "HH:MM:SS."}}}, "example": {"entidad": "FLOW", "valido": 1, "codAutorizacion": "A1B2C3", "monto": 402980, "nroTransaccion": "T-77", "fechaTransaccion": "2026-09-27", "horaTransaccion": "12:34:55"}}}, "required": true}, "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagoRegistrado"}, "example": {"documento": "Pedido WEB 51259", "correo": "maria@correo.cl"}}}}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/pedidos/{idWeb}/anulacion": {"post": {"tags": ["Pedidos"], "summary": "Anula un pedido que no se pago", "description": "{motivo}: libera el stock del pedido. Solo lo pendiente: sin pago registrado ni documento derivado, y sin un pago en línea de Sphinx en curso (ese se anula solo si el pago se rechaza o vence). Si no se puede, 422 con código 100 y el motivo; si no existe, 51. Un pedido ya anulado contesta exito.", "operationId": "pedidoAnula", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "idWeb", "in": "path", "required": true, "schema": {"type": "string"}, "example": "1b0c6f0e-4f7e-4c50-9a3d-0f2f1d7c2b11"}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Anulacion"}, "example": {"motivo": "Pago rechazado por la pasarela"}}}}, "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Mensaje"}, "example": {"mensaje": "Pedido anulado"}}}}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/despacho/tarifa": {"post": {"tags": ["Despacho"], "summary": "Cotiza el despacho", "description": "Con la comuna, los productos con su cantidad, la lista y el total: los transportes disponibles con su precio. Sin Shipit, 422 con código 200.", "operationId": "despachoTarifa", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToWebTarifaUnder"}}}, "required": true}, "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToWebTarifa"}}}}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/cuenta/sesion": {"post": {"tags": ["Cuenta"], "summary": "Entra a la cuenta", "description": "{email, password}. Devuelve el cliente con su token y sus direcciones. Correo o clave invalidos 422 con código 40; bloqueada por intentos 41; sin activar 40.", "operationId": "cuentaSesion", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToWebLogin"}}}, "required": true}, "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToWebUsuarioExtendido"}}}}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/cuenta/recuperacion": {"post": {"tags": ["Cuenta"], "summary": "Recupera la clave", "description": "{recuperar}: manda un código por correo. {recuperar, código, password}: lo canjea por la clave nueva. Contesta lo mismo exista o no la cuenta.", "operationId": "cuentaRecuperacion", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToWebLogin"}}}, "required": true}, "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Mensaje"}}}}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/cuenta/favoritos": {"get": {"tags": ["Cuenta"], "summary": "Los favoritos del cliente", "description": "Ids de producto y fecha, del más nuevo al más viejo.", "operationId": "cuentaFavoritos", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "X-Cliente-Token", "in": "header", "required": false, "schema": {"type": "string"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ToWebUsuarioFavorito"}}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}, "post": {"tags": ["Cuenta"], "summary": "Marca un favorito", "description": "{idProducto}. Devuelve la lista entera; marcar uno ya marcado no es error.", "operationId": "cuentaMarca", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "X-Cliente-Token", "in": "header", "required": false, "schema": {"type": "string"}}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToWebUsuarioFavoritoParam"}}}, "required": true}, "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ToWebUsuarioFavorito"}}}}}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/contactos": {"get": {"tags": ["Contactos"], "summary": "Busca un contacto", "description": "Por folio y el correo con que se dejo. Si no calzan, 422 con código 500.", "operationId": "contactoBuscar", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "folio", "in": "query", "required": false, "schema": {"type": "integer", "format": "int64"}}, {"name": "email", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToWebContactoParam"}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}, "post": {"tags": ["Contactos"], "summary": "Crea un contacto", "description": "{ip, campos:{rut, nombre, email, fono, nro_documento, id_motivo, comentario}}. Devuelve el folio y avisa por correo. Un dato que falta es 422 con código 100.", "operationId": "contactoCrear", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToContactoWEB"}}}, "required": true}, "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "integer", "format": "int64"}}}}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/contactos/{uuid}/notas": {"post": {"tags": ["Contactos"], "summary": "Agrega una nota", "description": "{observacion, archivos:[{archivo, contenido}]} con el contenido en base64: jpg, png, gif o pdf de hasta medio mega. Devuelve el contacto. Cerrado, 422 con código 501.", "operationId": "contactoNota", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "uuid", "in": "path", "required": true, "schema": {"type": "string"}}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Nota"}}}, "required": true}, "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToWebContactoParam"}}}}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/usuarios": {"get": {"tags": ["Reportes"], "summary": "Los usuarios activos", "description": "Para cruzar el vendedor de la estadística (username) o el cajero del reporte diario: id, username, RUT con digito, nombre, sucursal principal y las sucursales a las que tiene acceso.", "operationId": "reporteUsuarios", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Usuario"}}, "example": [{"idUser": 1, "username": "DH", "rut": "12345678-9", "nombre": "Daniel Hasan", "idSucursal": 1, "sucursales": [1, 2]}]}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/stock": {"get": {"tags": ["Stock"], "summary": "El stock de todos los productos web", "description": "Una fila por producto y sucursal con stock mayor que cero; lo que no viene no tiene stock. Lleva ETag: con If-None-Match y sin cambios contesta 304 sin cuerpo.", "operationId": "stock", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Stock"}, "example": {"filas": [{"idProducto": 17, "idSucursal": 1, "stock": 125}, {"idProducto": 20, "idSucursal": 1, "stock": 14}]}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/reportes/estadisticas": {"get": {"tags": ["Reportes"], "summary": "Las ventas de un período agrupadas", "description": "Como la pantalla Estadísticas: entre desde y hasta (a lo más 120 días), agrupadas por hasta cuatro criterios en orden: DOC documento, DTD tipo de documento, DOC_NUM documento con su número, DBOD bodega, PROVI origen, VEND vendedor, D día, H hora. 100 filas por página. Un rango más amplio o una agrupacion desconocida: 422 con código 100. Otra en curso para la empresa: 422 con código 8.", "operationId": "reporteEstadisticas", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "desde", "in": "query", "description": "Desde, AAAA-MM-DD", "required": true, "schema": {"type": "string"}}, {"name": "hasta", "in": "query", "description": "Hasta, AAAA-MM-DD", "required": true, "schema": {"type": "string"}}, {"name": "agrupar", "in": "query", "description": "Las agrupaciones separadas por coma, ej. DOC,VEND", "required": false, "schema": {"type": "string"}}, {"name": "pagina", "in": "query", "description": "La página, desde 1", "required": false, "schema": {"type": "integer", "format": "int64"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Estadistica"}, "example": {"filas": [{"grupos": [{"codigo": "BVE", "descripcion": "Boleta Electronica"}, {"codigo": "DH", "descripcion": "Daniel Hasan"}], "cantidad": 35.0, "unidades": 84.0, "monto": 39206380.0}], "pagina": 1, "paginas": 1, "registros": 3}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/reportes/diario": {"get": {"tags": ["Reportes"], "summary": "El reporte diario de caja de una sucursal", "description": "Como la pantalla Reporte Diario: cada documento pagado ese día con el detalle de como se pago, en cinco listas (pagosDia, pagosOtroDia, pagosCambio, pagosEgreso, pagosGiftCard). Otro en curso para la empresa: 422 con código 8.", "operationId": "reporteDiario", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "fecha", "in": "query", "description": "El día, AAAA-MM-DD", "required": true, "schema": {"type": "string"}}, {"name": "sucursal", "in": "query", "description": "La sucursal", "required": false, "schema": {"type": "integer", "format": "int32"}}, {"name": "usuario", "in": "query", "description": "Un cajero (idUser); sin el, todos", "required": false, "schema": {"type": "integer", "format": "int32"}}, {"name": "cliente", "in": "query", "description": "true (por omision) lo cobrado a clientes; false lo pagado a proveedores", "required": false, "schema": {"type": "boolean"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToIWReporteDiario"}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/reportes/cuadratura": {"get": {"tags": ["Reportes"], "summary": "Lo recaudado por sucursal y medio de pago", "description": "Como la pantalla Cuadratura de Caja, entre desde y hasta (sin ellas, hoy). cliente=false da lo pagado a proveedores en vez de lo cobrado a clientes. Otra en curso para la empresa: 422 con código 8.", "operationId": "reporteCuadratura", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "desde", "in": "query", "description": "Desde, AAAA-MM-DD", "required": false, "schema": {"type": "string"}}, {"name": "hasta", "in": "query", "description": "Hasta, AAAA-MM-DD", "required": false, "schema": {"type": "string"}}, {"name": "sucursal", "in": "query", "description": "Una sucursal; sin ella, todas", "required": false, "schema": {"type": "integer", "format": "int32"}}, {"name": "usuario", "in": "query", "description": "Un cajero (idUser); sin el, todos", "required": false, "schema": {"type": "integer", "format": "int32"}}, {"name": "cliente", "in": "query", "description": "true (por omision) lo cobrado a clientes; false lo pagado a proveedores", "required": false, "schema": {"type": "boolean"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/FilaCuadratura"}}, "example": [{"sucursal": "Matriz", "tipo": "CAJA", "cantidad": 11.0, "monto": 2436287.0}, {"sucursal": "Matriz", "tipo": "TARJETA MASTERCARD", "cantidad": 5.0, "monto": 8852493.0}]}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/productos": {"get": {"tags": ["Fichas"], "summary": "Todos los productos web con la fecha de su ficha", "description": "Para que la tienda sepa que borrar, que le falta y que cambio: la ficha cuya fecha es otra se vuelve a pedir por id. Lleva ETag.", "operationId": "fichaProductos", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProductosWeb"}, "example": {"productos": [{"idProducto": 17, "fechaModificacion": "2026-09-27 21:48:47"}, {"idProducto": 20, "fechaModificacion": "2026-09-26 10:02:13"}], "ids": [17, 20]}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/precios": {"get": {"tags": ["Precios"], "summary": "Los precios de todos los productos web en una lista", "description": "Una fila por producto con precio en la lista, con la oferta vigente, cash, débito, tarjeta, netos y dolar ya calculados. Lleva ETag: con If-None-Match y sin cambios contesta 304 sin cuerpo.", "operationId": "precios", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "lista", "in": "query", "description": "La lista de precios; sin ella, la LISTA_WEB del ERP", "required": false, "schema": {"type": "integer", "format": "int32"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Precios"}, "example": {"idLista": 1, "filas": [{"idProducto": 17, "idLista": 1, "precio": 618800.0, "precioCash": 599990.0, "precioDebito": null, "precioTarjeta": null, "precioOferta": null, "precioDebitoOferta": null, "precioTarjetaOferta": null, "precioNeto": 520000.0, "precioCashNeto": 504193.0, "precioDebitoNeto": null, "precioTarjetaNeto": null, "precioOfertaNeto": null, "precioDebitoOfertaNeto": null, "precioTarjetaOfertaNeto": null, "precioDolar": 567.33, "desde": null, "hasta": null}]}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/pedidos/{idWeb}": {"get": {"tags": ["Pedidos"], "summary": "Un pedido por su idWeb", "description": "El documento completo, con cliente, lineas, totales y pagos. Si no existe, 422 con código 51.", "operationId": "pedidoVer", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "idWeb", "in": "path", "required": true, "schema": {"type": "string"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToDocSave"}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/pagos/{uuid}": {"get": {"tags": ["Pedidos"], "summary": "Cómo quedó un pago", "description": "Aprobado: el comprobante. Pendiente, sin pago o sin pago en línea: 422 con código 100 y el mensaje. Rechazado: 422 con código 21 y el comprobante en resultado, con el motivo en respuesta.", "operationId": "pedidoPago", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "uuid", "in": "path", "required": true, "schema": {"type": "string"}, "example": "9f86d081884c7d659a2feaa0c55ad015"}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Comprobante"}, "example": {"medio": "WebPay", "valido": 1, "codigo_respuesta": 0, "cod_autorizacion": "040217", "fecha_transaccion": "2026-09-27 12:34:55", "tipo_pago": "VN", "num_cuotas": 0, "ult_digitos": "4514", "monto": 402980.0, "respuesta": "Aprobado"}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/ordenes-servicio": {"get": {"tags": ["Boletas"], "summary": "Las ordenes de servicio de un RUT", "description": "Las de los últimos tres meses, con fecha, folio y estado. RUT inválido 422 con código 45; no es cliente 46; bloqueado por finanzas 42.", "operationId": "boletaOrdenes", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "rut", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Ordenes"}, "example": {"ordenes": [{"fecha": "2026-09-10 00:00:00", "folio": 2, "estado": "Pendiente"}]}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/maestros/{nombre}": {"get": {"tags": ["Maestros"], "summary": "Un maestro, con las tablas de la base de la tienda", "description": "{\"tablas\": {\"<tabla>\": [filas]}}, una fila por registro con los nombres de columna de la tienda. Maestros: sucursales, listas, formas, marcas, division-politica, despacho-promocion, ventas, familias, tabulación. Las imágenes van como url publica en path_imagen (y en url_imagen donde la tabla la tiene), nunca en base64: sin sitio de fotos, 409. Lleva ETag.", "operationId": "maestro", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "nombre", "in": "path", "required": true, "schema": {"type": "string"}, "example": "formas"}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"type": "object", "additionalProperties": {}}, "example": {"tablas": {"forma_pago": [{"id_formapago": 9, "formapago": "Transferencia Bancaria", "precio": "precio"}, {"id_formapago": 6, "formapago": "WebPay", "precio": "precio"}], "forma_entrega": [{"id_formaentrega": 3, "formaentrega": "Despacho a Domicilio", "despacho": 1}, {"id_formaentrega": 4, "formaentrega": "Retiro en Tienda", "despacho": 0}], "transporte": [{"id_transporte": 20, "transporte": "ChileExpress"}]}}}}}, "409": {"$ref": "#/components/responses/SinSitioFotos"}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/fusiones": {"get": {"tags": ["Fusiones"], "summary": "Los productos fusionados", "description": "Una fila por producto absorbido, con el id del producto que quedo. Van todos, publicado o no el que quedo. Lleva ETag.", "operationId": "fusiones", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Fusiones"}, "example": {"filas": [{"idProductoFusionado": 812, "idProducto": 17}]}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/fotos": {"get": {"tags": ["Fotos"], "summary": "Las fotos de todos los productos web", "description": "Una fila por foto con la dirección del original y la de 200, en el sitio de fotos. Sin sitio de fotos, 409. Lleva ETag.", "operationId": "fotos", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Fotos"}, "example": {"filas": [{"idProducto": 17, "id": 1, "url": "https://static.miempresa.cl/fotos/17/1/1759012127000.webp", "url200": "https://static.miempresa.cl/fotos/17/1/200/1759012127000.webp"}]}}}}, "409": {"$ref": "#/components/responses/SinSitioFotos"}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/fichas": {"get": {"tags": ["Fichas"], "summary": "Las fichas que cambiaron, o las de unos ids", "description": "Con desde=<cursor> (o sin nada, desde el principio) entrega una página de fichas en orden de modificación, con el cursor para seguir. Con ids=1,2,3 entrega esas. Sin sitio de fotos, 409.", "operationId": "fichas", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "desde", "in": "query", "description": "El cursor que devolvio la página anterior", "required": false, "schema": {"type": "string"}}, {"name": "ids", "in": "query", "description": "Ids de producto separados por coma, en vez del cursor", "required": false, "schema": {"type": "string"}}, {"name": "limite", "in": "query", "description": "Cuántas fichas por página (100, máximo 200)", "required": false, "schema": {"type": "integer", "format": "int32"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Fichas"}, "example": {"fichas": [{"idProducto": 17, "codigo": "NB-001", "nombre": "Notebook 14 i5 8GB", "descripcion": "<p>Notebook de 14 pulgadas…</p>", "lista": 1, "nuevo": 1, "liq": 0, "out": 0, "preventa": 0, "api": 0, "enCamino": 0, "partno": "NB14-I5", "upc": "7801234567890", "idGrupo": null, "opcion1": null, "opcion2": null, "opcion3": null, "idFamilia": 3, "idFamilia2": null, "idFamilia3": null, "idFamiliaTabulacion": 3, "idMarca": 1, "idDisponibilidad": 0, "dimPeso": 1.6, "dimAlto": 3.0, "dimAncho": 33.0, "dimLargo": 23.0, "garantia": 12, "texto": "nb 001 notebooks andina notebook 14 i5 8gb", "url": "/producto/notebook-14-i5-8gb-p17", "fechaCreacion": "2026-09-27 21:45:33", "fechaModificacion": "2026-09-27 21:48:47", "metaTitle": null, "metaDescription": null, "metaKeywords": null, "grupo": null, "relacionados": [18], "tabulacion": [{"idFamilia": 3, "idDetalle": 4, "detalle": "8 GB", "detalleValor": 8.0}], "tabulacionOpc": []}], "siguiente": "2026-09-27 21:48:47.000000|17", "hayMas": false}}}}, "409": {"$ref": "#/components/responses/SinSitioFotos"}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/estado": {"get": {"tags": ["Estado"], "summary": "Prueba la clave", "description": "Con qué ERP se está hablando: la base, la versión del ERP y la hora del servidor. La abre cualquier clave, sin importar su alcance.", "operationId": "estado", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Estado"}, "example": {"base": "miempresa", "version": "202609.167", "hora": "2026-09-27T22:38:47.21-03:00"}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/disponibilidad": {"get": {"tags": ["Disponibilidad"], "summary": "La disponibilidad de todos los productos web", "description": "Una fila por producto con lista (se muestra), en camino y api (vende de un mayorista), con la regla del stock mínimo web. Lleva ETag.", "operationId": "disponibilidad", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Disponibilidad"}, "example": {"filas": [{"idProducto": 17, "lista": 1, "enCamino": 0, "api": 0}, {"idProducto": 20, "lista": 0, "enCamino": 1, "api": 0}]}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/despacho/{tipo}/{folio}": {"get": {"tags": ["Despacho"], "summary": "El despacho de un documento", "description": "tipo es factura, boleta o guia. Con el RUT del cliente (con digito verificador): la fecha, el transporte, el número de seguimiento, bultos, peso y destino. No hace falta Shipit. RUT inválido 422 con código 45; no es cliente 46; bloqueado 42; tipo inválido 80; folio inválido 81; sin despacho 82.", "operationId": "despachoEstado", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "tipo", "in": "path", "required": true, "schema": {"type": "string"}, "example": "factura"}, {"name": "folio", "in": "path", "required": true, "schema": {"type": "string"}, "example": "1783"}, {"name": "rut", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EstadoDespacho"}, "example": {"tipo": "Factura Electronica", "folio": 1783, "rut": 12608204, "rutDv": "5", "fecha": "2026-09-22", "transporte": "ChileExpress", "orden": "99812345", "bultos": 1, "peso": "2", "destino": "SANTIAGO"}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/despacho/seguimiento": {"get": {"tags": ["Despacho"], "summary": "Donde va un pedido", "description": "Con el número de orden y el correo del pedido: el documento, su estado de pago y el seguimiento del despacho. Sin Shipit 422 con código 200; si no calzan, código 300.", "operationId": "despachoSeguimiento", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "nroOrden", "in": "query", "required": false, "schema": {"type": "integer", "format": "int64"}}, {"name": "email", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToWebSeguimiento"}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/cuenta/documentos": {"get": {"tags": ["Cuenta"], "summary": "Los documentos del cliente", "description": "Paginados de a 15 (page empieza en 1).", "operationId": "cuentaDocumentos", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "page", "in": "query", "required": false, "schema": {"type": "integer", "format": "int64"}}, {"name": "X-Cliente-Token", "in": "header", "required": false, "schema": {"type": "string"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToPaginateBuscarToWebUsuarioDocumentoToWebUsuarioDocumentoParam"}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/cuenta/documentos/{idDoc}/pdf": {"get": {"tags": ["Cuenta"], "summary": "El PDF de un documento del cliente", "description": "En base64, como lo entregaba la interfazWEB.", "operationId": "cuentaPdf", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "idDoc", "in": "path", "required": true, "schema": {"type": "integer", "format": "int64"}}, {"name": "X-Cliente-Token", "in": "header", "required": false, "schema": {"type": "string"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"type": "string"}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/contenido/{nombre}": {"get": {"tags": ["Contenido"], "summary": "Un bloque de contenido del sitio, con las tablas de la base de la tienda", "description": "datos: {\"url_nodisponible\": url, \"tablas\": {...}} con banners, imbatibles, avisos, destacados, logos y landings vigentes; las imágenes como url publica, sin sitio de fotos 409. destacados-familia: {\"tablas\": {...}} con el producto destacado de cada familia (producto_familia_dest) y de cada familia bajo su madre (producto_familia_dest_dep). páginas: {\"tablas\": {...}} con web_parametro (solo lo que usa la tienda), web_page, web_page_tipo, busqueda_sinonimo y el manifiesto web_archivo del sitio de ?url=. Contenido: datos, destacados-familia, páginas. Lleva ETag.", "operationId": "contenido", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "nombre", "in": "path", "required": true, "schema": {"type": "string"}}, {"name": "url", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"type": "object", "additionalProperties": {}}}}}, "409": {"$ref": "#/components/responses/SinSitioFotos"}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/contenido/archivos/{id}": {"get": {"tags": ["Contenido"], "summary": "Un archivo del sitio, tal cual", "description": "El contenido del archivo del manifiesto web_archivo (id_archivo) del sitio de ?url=, con su tipo. 404 si no existe, es un directorio o es de otro sitio.", "operationId": "contenidoArchivo", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "id", "in": "path", "required": true, "schema": {"type": "integer", "format": "int64"}}, {"name": "url", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"*/*": {"schema": {"type": "string", "format": "binary"}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/contactos/{uuid}": {"get": {"tags": ["Contactos"], "summary": "Un contacto con sus notas y archivos", "operationId": "contactoVer", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "uuid", "in": "path", "required": true, "schema": {"type": "string"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToWebContactoParam"}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}, "delete": {"tags": ["Contactos"], "summary": "Cierra un contacto", "description": "Devuelve el contacto. Cerrar uno ya cerrado no es error.", "operationId": "contactoCerrar", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "uuid", "in": "path", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToWebContactoParam"}}}}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/boletas/{folio}": {"get": {"tags": ["Boletas"], "summary": "La boleta en PDF", "description": "Con la fecha (AAAA-MM-DD) y el monto total. Datos que faltan: 422 con código 60 (folio), 61 (fecha) o 62 (monto); no existe: 69. Acepta la clave de la tienda o la de boletas.", "operationId": "boleta", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "folio", "in": "path", "required": true, "schema": {"type": "integer", "format": "int64"}}, {"name": "fecha", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "monto", "in": "query", "required": false, "schema": {"type": "number", "format": "double"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "El PDF de la boleta, en formato termico", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/pdf": {"schema": {"type": "string", "format": "binary"}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/arma-tu-pc": {"get": {"tags": ["Arma tu PC"], "summary": "El configurador con lo elegido", "description": "Las secciones con su componente elegido y las alternativas disponibles, no disponibles e incompatibles. productos son ids separados por coma.", "operationId": "armaTuPc", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "plataforma", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "sucursal", "in": "query", "required": false, "schema": {"type": "integer", "format": "int32"}}, {"name": "productos", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "If-None-Match", "in": "header", "description": "El ETag de la respuesta anterior: sin cambios contesta 304 sin cuerpo", "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "headers": {"ETag": {"description": "El hash del cuerpo, para mandarlo en If-None-Match", "schema": {"type": "string"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ToArmaTuPc"}}}}, "304": {"description": "Sin cambios desde el ETag de If-None-Match; sin cuerpo"}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/cuenta/favoritos/{idProducto}": {"delete": {"tags": ["Cuenta"], "summary": "Quita un favorito", "description": "Devuelve la lista entera; quitar uno que no estaba no es error.", "operationId": "cuentaQuita", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "idProducto", "in": "path", "required": true, "schema": {"type": "integer", "format": "int32"}}, {"name": "X-Cliente-Token", "in": "header", "required": false, "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ToWebUsuarioFavorito"}}}}}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}, "/api/v1/{base}/cuenta/documentos/{idDoc}": {"delete": {"tags": ["Cuenta"], "summary": "Anula un documento pendiente del cliente", "operationId": "cuentaAnula", "parameters": [{"name": "base", "in": "path", "description": "La base del ERP, como la nombra el sphinx.ini", "required": true, "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$"}, "example": "miempresa"}, {"name": "idDoc", "in": "path", "required": true, "schema": {"type": "integer", "format": "int64"}}, {"name": "X-Cliente-Token", "in": "header", "required": false, "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Mensaje"}}}}, "400": {"description": "Un parámetro o el cuerpo no se pueden leer", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "401": {"description": "Falta la clave de la base en Authorization: Bearer, o no es una clave vigente", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "403": {"description": "La clave no tiene el alcance de esta ruta", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "404": {"description": "La base de la ruta no existe en este ERP, o lo pedido no existe", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "422": {"description": "El ERP no pudo completar el pedido por una regla de negocio. El mensaje es para mostrarlo, y código es el número de error, el mismo que contestaba la interfazWEB", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "500": {"description": "Error del ERP. Queda en su registro; aquí no viaja el detalle", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}, "503": {"description": "La base no se pudo abrir", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}}}}, "components": {"schemas": {"Problema": {"type": "object", "description": "Un error en formato RFC 9457", "properties": {"type": {"type": "string", "description": "Siempre about:blank", "example": "about:blank"}, "title": {"type": "string", "description": "El tipo de error, para leerlo", "example": "El ERP no pudo completar el pedido"}, "status": {"type": "integer", "format": "int32", "description": "El mismo código HTTP", "example": 422}, "detail": {"type": "string", "description": "Que paso, en palabras para mostrar", "example": "No hay stock suficiente de ese producto"}, "instance": {"type": "string", "description": "La ruta que fallo"}, "codigo": {"type": "integer", "format": "int32", "description": "Solo en 422: el código con que la interfazWEB contestaba este mismo error (EnumRET)", "example": 100}, "resultado": {"type": "object", "description": "Solo en un 422 que trae dato, lo mismo que la interfazWEB mandaba en su sobre: el comprobante de un pago rechazado (GET /pagos/{uuid}), con el motivo en respuesta"}}}, "Stock": {"type": "object", "description": "El stock completo de los productos web: una fila por producto y sucursal con stock mayor que cero.\n\nViaja entero y no por diferencias: calcularlo es una consulta de decenas de milisegundos y pesa unos cientos de KB en la base más grande, así que no hace falta llevar versiones por producto. Lo que evita mandarlo en cada consulta es el ETag: si no cambio nada, el ERP contesta 304 sin cuerpo.", "properties": {"filas": {"type": "array", "description": "una fila por producto y sucursal", "items": {"$ref": "#/components/schemas/StockSucursal"}}}}, "StockSucursal": {"type": "object", "description": "Cuanto hay de un producto en una sucursal, tal como lo vende la tienda.\n\nEl stock ya viene resuelto: es el propio de las bodegas activas y web, o el de la oferta del mayorista cuando la venta de ese producto sale de ahi (la regla de oro, la misma de la ficha). Entero y siempre positivo: lo que no esta en la lista no tiene stock.", "properties": {"idProducto": {"type": "integer", "format": "int64", "description": "el producto"}, "idSucursal": {"type": "integer", "format": "int32", "description": "la sucursal del ERP; solo las activas y web"}, "stock": {"type": "integer", "format": "int32", "description": "las unidades, siempre más de cero. El de un mayorista se repite en cada sucursal: no se suma"}}}, "ProductoWeb": {"type": "object", "description": "Un producto que se publica y la fecha de modificación de su ficha, al segundo y en la hora del ERP (<code>yyyy-MM-dd HH:mm:ss</code>).\n\nLa tienda la compara con la que guardo al escribir esa ficha: si es otra -mas nueva o más vieja- la vuelve a pedir. Que sea \"otra\" y no \"más nueva\" es lo que aguanta el cambio de hora de abril (la hora que se repite) y una base del ERP restaurada de un respaldo, donde las fechas retroceden.", "properties": {"idProducto": {"type": "integer", "format": "int64", "description": "el producto"}, "fechaModificacion": {"type": "string", "description": "la fecha de su ficha; si es otra que la guardada, se vuelve a pedir"}}}, "ProductosWeb": {"type": "object", "description": "Todos los productos que se publican en la tienda, con la fecha de su ficha. Con esto la tienda sabe que borrar (lo que tiene y ya no esta), que le falta y que cambio (la fecha es otra), sin bajar ninguna ficha.", "properties": {"ids": {"type": "array", "description": "los mismos ids, sin fecha: es lo que leen las tiendas publicadas antes de que viajaran las fechas, y se deja mientras convivan", "items": {"type": "integer", "format": "int64"}}, "productos": {"type": "array", "description": "cada id con su fecha de modificación", "items": {"$ref": "#/components/schemas/ProductoWeb"}}}}, "Precio": {"type": "object", "description": "El precio de un producto en una lista, tal como lo publica la tienda.\n\nSon las mismas columnas que la ficha de la interfazWEB manda en <code>precios</code> y la tienda guarda en <code>producto_precios</code>, en el mismo orden: la oferta es el precio especial vigente de la sucursal web, el cash, débito y tarjeta ya vienen calculados (de su lista o del descuento), los netos sin IVA, y el dolar al tipo de cambio del día. Un precio que no existe viaja en null.\n\nLas fechas de la oferta van como texto <code>yyyy-MM-dd HH:mm:ss</code>, en la hora del ERP, que es como las guarda y las lee la tienda.", "properties": {"idProducto": {"type": "integer", "format": "int64", "description": "el producto"}, "idLista": {"type": "integer", "format": "int32", "description": "la lista de precios"}, "precio": {"type": "number", "description": "el precio de lista, con IVA. Si la venta sale de un mayorista, el de su oferta"}, "precioCash": {"type": "number", "description": "el precio de lista con el descuento de pago contado; null si no hay"}, "precioDebito": {"type": "number", "description": "el precio con débito: de la lista de débito si hay una, o el de lista con su descuento"}, "precioTarjeta": {"type": "number", "description": "el precio con tarjeta de crédito: de la lista de tarjeta si hay una, o el de lista con su descuento"}, "precioOferta": {"type": "number", "description": "el precio especial vigente de la sucursal web; null sin oferta o si la venta sale de un mayorista"}, "precioDebitoOferta": {"type": "number", "description": "la oferta con débito"}, "precioTarjetaOferta": {"type": "number", "description": "la oferta con tarjeta"}, "precioNeto": {"type": "number", "description": "precio sin IVA"}, "precioCashNeto": {"type": "number", "description": "precioCash sin IVA"}, "precioDebitoNeto": {"type": "number", "description": "precioDebito sin IVA"}, "precioTarjetaNeto": {"type": "number", "description": "precioTarjeta sin IVA"}, "precioOfertaNeto": {"type": "number", "description": "precioOferta sin IVA"}, "precioDebitoOfertaNeto": {"type": "number", "description": "precioDebitoOferta sin IVA"}, "precioTarjetaOfertaNeto": {"type": "number", "description": "precioTarjetaOferta sin IVA"}, "precioDolar": {"type": "number", "description": "el precio neto en dolares: el ingresado si la lista esta en dolares, o el neto al tipo de cambio del día"}, "desde": {"type": "string", "description": "desde cuando vale la oferta; puede ser futura. null sin oferta"}, "hasta": {"type": "string", "description": "hasta cuando vale la oferta"}}}, "Precios": {"type": "object", "description": "Los precios de todos los productos web en UNA lista: la que la tienda publica.\n\nUna sola y no todas las listas web: la tienda lee solo la suya (LISTA_WEB), y una instalacion puede tener marcadas como web cinco -publico, mayoristas, MercadoLibre-, que multiplican por cinco lo que viaja sin que nadie lo lea. Viaja completo y con ETag, igual que el stock.", "properties": {"idLista": {"type": "integer", "format": "int32", "description": "la lista de estos precios: la pedida, o la LISTA_WEB del ERP si no se pidio ninguna"}, "filas": {"type": "array", "description": "una fila por producto con precio en esa lista", "items": {"$ref": "#/components/schemas/Precio"}}}}, "Fusion": {"type": "object", "description": "Un producto que desaparecio al fusionarse en el ERP, y el que quedo con su historia. La ficha del primero se redirige a la del segundo: la URL de una ficha termina en -p&lt;id&gt;, y ese id ya no existe.", "properties": {"idProductoFusionado": {"type": "integer", "format": "int64", "description": "el producto absorbido, que ya no existe: el id de sus url viejas"}, "idProducto": {"type": "integer", "format": "int64", "description": "el que quedo, al que se redirige"}}}, "Fusiones": {"type": "object", "description": "Todos los productos fusionados, sin mirar si el que quedo es web: si esta publicado lo decide la tienda con su catálogo, que es quien sabe. Viajan completos y con ETag, igual que las fotos; cambian solo cuando alguien fusiona.", "properties": {"filas": {"type": "array", "description": "una fila por producto absorbido", "items": {"$ref": "#/components/schemas/Fusion"}}}}, "FotoProducto": {"type": "object", "description": "Una foto del catálogo de un producto: su número, la dirección del tamano original y la del de 200. Son direcciones absolutas del sitio de fotos: la tienda las guarda tal cual y no baja ningun archivo.", "properties": {"idProducto": {"type": "integer", "format": "int64", "description": "el producto"}, "id": {"type": "integer", "format": "int32", "description": "el número de la foto: el orden de la galeria, la 1 es la principal"}, "url": {"type": "string", "description": "la dirección del tamano original"}, "url200": {"type": "string", "description": "la de 200 px, la miniatura; null si no existe"}}}, "Fotos": {"type": "object", "description": "Las fotos del catálogo de todos los productos web. Viajan completas y con ETag, igual que el stock y los precios: una foto reemplazada o reordenada llega sin depender de que se haya movido la fecha de modificación del producto.", "properties": {"filas": {"type": "array", "description": "una fila por foto", "items": {"$ref": "#/components/schemas/FotoProducto"}}}}, "Ficha": {"type": "object", "description": "La ficha de un producto, sin precio, sin stock y sin fotos: esos tres viajan cada uno por su lado (Precios, Stock, Fotos), porque cambian por otras razones y a otro ritmo.\n\nSon las columnas que la tienda guarda en <code>producto</code> más lo que cuelga de el: el grupo de variantes, los relacionados publicables y la tabulación. La descripción viene ya publicada, con las imágenes apuntando al sitio de fotos.\n\n<code>lista</code>, <code>enCamino</code> y <code>api</code> van en la ficha porque la tienda los guarda en <code>producto</code>, pero ojo: dependen del stock y de las ordenes de compra, que no mueven la fecha de modificación del producto. Salen como estaban cuando la ficha cambio por última vez.\n\nLas fechas van como texto <code>yyyy-MM-dd HH:mm:ss</code>, en la hora del ERP.", "properties": {"idProducto": {"type": "integer", "format": "int64", "description": "el id del producto en el ERP; es el que cierra la url de la ficha (<code>-p&lt;id&gt;</code>)"}, "codigo": {"type": "string", "description": "el SKU"}, "nombre": {"type": "string", "description": "el nombre del producto"}, "descripcion": {"type": "string", "description": "la descripción en HTML, ya publicada: sus imágenes apuntan al sitio de fotos. null si no tiene"}, "lista": {"type": "integer", "format": "int32", "description": "1 si la tienda lo muestra: esta en lista, es web, sus familias son web y, si hay stock mínimo web, lo cumple o tiene algo en camino o es preventa"}, "nuevo": {"type": "integer", "format": "int32", "description": "1 si es un producto nuevo: dentro de los días del parámetro Producto Nuevo, contados desde su primera compra o venta"}, "liq": {"type": "integer", "format": "int32", "description": "1 si esta en liquidacion"}, "out": {"type": "integer", "format": "int32", "description": "1 si esta dado de baja del catálogo: no se ofrece ni se repone, pero conserva su historia"}, "preventa": {"type": "integer", "format": "int32", "description": "1 si se vende antes de tenerlo: se muestra aunque no tenga stock"}, "api": {"type": "integer", "format": "int32", "description": "1 si la venta sale del stock de un mayorista, 0 si del propio"}, "enCamino": {"type": "integer", "format": "int32", "description": "1 si tiene saldo en una orden de compra pendiente"}, "partno": {"type": "string", "description": "el part number del fabricante"}, "upc": {"type": "string", "description": "el código de barras (UPC-12, EAN-13, EAN-8 o GTIN-14)"}, "idGrupo": {"type": "integer", "format": "int32", "description": "el grupo de variantes al que pertenece; null si no es una variante"}, "opcion1": {"type": "string", "description": "el valor de la variante en el primer eje del grupo (\"M\", \"Azul\"); el nombre del eje esta en grupo.etiqueta1"}, "opcion2": {"type": "string", "description": "el valor en el segundo eje"}, "opcion3": {"type": "string", "description": "el valor en el tercer eje"}, "idFamilia": {"type": "integer", "format": "int32", "description": "la familia principal"}, "idFamilia2": {"type": "integer", "format": "int32", "description": "una familia secundaria: el producto aparece también en esa categoría"}, "idFamilia3": {"type": "integer", "format": "int32", "description": "otra familia secundaria"}, "idFamiliaTabulacion": {"type": "integer", "format": "int32", "description": "la familia cuya tabulación da las filas de la ficha técnica y los filtros"}, "idMarca": {"type": "integer", "format": "int32", "description": "la marca; null si no tiene"}, "idDisponibilidad": {"type": "integer", "format": "int32", "description": "el tipo de disponibilidad (producto_disponibilidad): 0 es stock, 99 a pedido"}, "dimPeso": {"type": "number", "format": "double", "description": "el peso de despacho, en kg"}, "dimAlto": {"type": "number", "format": "double", "description": "el alto de despacho, en cm"}, "dimAncho": {"type": "number", "format": "double", "description": "el ancho de despacho, en cm"}, "dimLargo": {"type": "number", "format": "double", "description": "el largo de despacho, en cm"}, "garantia": {"type": "integer", "format": "int32", "description": "la garantia en meses; 0 o null es sin garantia"}, "texto": {"type": "string", "description": "el texto normalizado del buscador: código, nombre, marca, part number, códigos alternativos y fusionados, keywords y los valores de la tabulación"}, "url": {"type": "string", "description": "la ruta de la ficha en la tienda, <code>/producto/&lt;nombre&gt;-p&lt;idProducto&gt;</code>"}, "fechaCreacion": {"type": "string", "description": "cuando se creo el producto"}, "fechaModificacion": {"type": "string", "description": "la última modificación de la ficha"}, "metaTitle": {"type": "string", "description": "el titulo SEO; null usa el nombre"}, "metaDescription": {"type": "string", "description": "la meta description SEO"}, "metaKeywords": {"type": "string", "description": "las meta keywords SEO; entran también al texto del buscador"}, "grupo": {"$ref": "#/components/schemas/FichaGrupo", "description": "el grupo de variantes; null si idGrupo es null"}, "relacionados": {"type": "array", "description": "los productos relacionados que se publican: los que puso una persona o, sin ninguno, lo más comprado junto en los últimos 30 días", "items": {"type": "integer", "format": "int64"}}, "tabulacion": {"type": "array", "description": "las filas de la ficha técnica con un solo valor", "items": {"$ref": "#/components/schemas/FichaDetalle"}}, "tabulacionOpc": {"type": "array", "description": "las filas de seleccion multiple: una por opcion marcada, varias con el mismo idDetalle", "items": {"$ref": "#/components/schemas/FichaDetalle"}}}}, "FichaDetalle": {"type": "object", "description": "Una fila de la tabulación del producto. El nombre de la fila y su tipo estan en la tabulación de la familia, que no viaja en la ficha.", "properties": {"idFamilia": {"type": "integer", "format": "int32", "description": "la familia de tabulación, la misma de idFamiliaTabulacion"}, "idDetalle": {"type": "integer", "format": "int32", "description": "la fila dentro de esa familia"}, "detalle": {"type": "string", "description": "el valor para mostrar (\"16 GB\", \"Si\")"}, "detalleValor": {"type": "number", "format": "double", "description": "el mismo valor como número (16), para ordenar y agrupar los filtros; null ordena por detalle"}}}, "FichaGrupo": {"type": "object", "description": "El grupo de variantes: su nombre y como se llaman sus ejes (\"Talla\", \"Color\").", "properties": {"idGrupo": {"type": "integer", "format": "int32", "description": "el id del grupo"}, "nombre": {"type": "string", "description": "el nombre comun a todas las variantes"}, "etiqueta1": {"type": "string", "description": "el nombre del primer eje, el titulo de su selector; null si no se usa"}, "etiqueta2": {"type": "string", "description": "el del segundo eje"}, "etiqueta3": {"type": "string", "description": "el del tercer eje"}}}, "Fichas": {"type": "object", "description": "Una página de fichas que cambiaron, en orden de fecha de modificación y de id.", "properties": {"fichas": {"type": "array", "description": "las de esta página", "items": {"$ref": "#/components/schemas/Ficha"}}, "siguiente": {"type": "string", "description": "el cursor para pedir la página que sigue (<code>desde=</code>); si no hubo fichas, el mismo que se mando"}, "hayMas": {"type": "boolean", "description": "si puede haber más: la tienda sigue pidiendo hasta que llegue en false"}}}, "Estado": {"type": "object", "description": "La respuesta de <code>GET /api/v1/{base}/estado</code>: con que ERP esta hablando la tienda. Sirve para probar la clave y la ruta sin tocar datos.", "properties": {"base": {"type": "string", "description": "la base que atendio la llamada"}, "version": {"type": "string", "description": "la versión del ERP"}, "hora": {"type": "string", "description": "la hora del servidor, en ISO-8601"}}}, "Disponibilidad": {"type": "object", "description": "La disponibilidad de todos los productos web: una fila por producto. Viaja completa y con ETag, igual que el stock.", "properties": {"filas": {"type": "array", "description": "una fila por producto", "items": {"$ref": "#/components/schemas/DisponibilidadProducto"}}}}, "DisponibilidadProducto": {"type": "object", "description": "Si un producto se muestra en la tienda y de donde sale su venta, resuelto hoy.\n\nSon tres columnas de <code>producto</code> que dependen de cosas que no mueven la fecha de modificación del producto -el stock mínimo web, las ordenes de compra en camino, la decision diaria del mayorista-, y por eso no pueden viajar solo con la ficha: una venta que deja el stock bajo el mínimo tiene que ocultar el producto aunque su ficha no cambie.", "properties": {"idProducto": {"type": "integer", "format": "int64", "description": "el producto"}, "lista": {"type": "integer", "format": "int32", "description": "1 si se muestra en la tienda"}, "enCamino": {"type": "integer", "format": "int32", "description": "1 si tiene una orden de compra con saldo"}, "api": {"type": "integer", "format": "int32", "description": "1 si la venta sale de un mayorista"}}}, "Anulacion": {"type": "object", "properties": {"motivo": {"type": "string"}}}, "Archivo": {"type": "object", "properties": {"archivo": {"type": "string"}, "contenido": {"type": "string"}}}, "Comprobante": {"type": "object", "properties": {"medio": {"type": "string"}, "valido": {"type": "integer", "format": "int32"}, "codigo_respuesta": {"type": "integer", "format": "int32"}, "cod_autorizacion": {"type": "string"}, "fecha_transaccion": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "tipo_pago": {"type": "string"}, "num_cuotas": {"type": "integer", "format": "int32"}, "ult_digitos": {"type": "string"}, "monto": {"type": "number"}, "respuesta": {"type": "string"}}}, "Creado": {"type": "object", "properties": {"id_doc": {"type": "integer", "format": "int64"}, "id_pago": {"type": "string"}, "nro_orden": {"type": "integer", "format": "int64"}, "id_web": {"type": "string"}, "documento": {"type": "string"}, "pdf": {"type": "string"}, "correo": {"type": "string"}}}, "Estadistica": {"type": "object", "properties": {"filas": {"type": "array", "items": {"$ref": "#/components/schemas/FilaEstadistica"}}, "pagina": {"type": "integer", "format": "int64"}, "paginas": {"type": "integer", "format": "int64"}, "registros": {"type": "integer", "format": "int64"}}}, "EstadoDespacho": {"type": "object", "properties": {"tipo": {"type": "string"}, "folio": {"type": "integer", "format": "int64"}, "rut": {"type": "integer", "format": "int32"}, "rutDv": {"type": "string"}, "fecha": {"type": "string"}, "transporte": {"type": "string"}, "orden": {"type": "string"}, "bultos": {"type": "integer", "format": "int32"}, "peso": {"type": "string"}, "destino": {"type": "string"}}}, "FilaCuadratura": {"type": "object", "properties": {"sucursal": {"type": "string"}, "tipo": {"type": "string"}, "cantidad": {"type": "number"}, "monto": {"type": "number"}}}, "FilaEstadistica": {"type": "object", "properties": {"grupos": {"type": "array", "items": {"$ref": "#/components/schemas/Grupo"}}, "cantidad": {"type": "number"}, "unidades": {"type": "number"}, "monto": {"type": "number"}}}, "Grupo": {"type": "object", "properties": {"codigo": {"type": "string"}, "descripcion": {"type": "string"}}}, "Mensaje": {"type": "object", "properties": {"mensaje": {"type": "string"}}}, "Nota": {"type": "object", "properties": {"observacion": {"type": "string"}, "archivos": {"type": "array", "items": {"$ref": "#/components/schemas/Archivo"}}}}, "Orden": {"type": "object", "properties": {"fecha": {"type": "string"}, "folio": {"type": "integer", "format": "int64"}, "estado": {"type": "string"}}}, "Ordenes": {"type": "object", "properties": {"ordenes": {"type": "array", "items": {"$ref": "#/components/schemas/Orden"}}}}, "PagoRegistrado": {"type": "object", "properties": {"documento": {"type": "string"}, "pdf": {"type": "string"}, "correo": {"type": "string"}}}, "ToAlternativa": {"type": "object", "properties": {"disponibles": {"type": "array", "items": {"$ref": "#/components/schemas/ToProducto"}}, "noDisponibles": {"type": "array", "items": {"$ref": "#/components/schemas/ToProducto"}}, "incompatibles": {"type": "array", "items": {"$ref": "#/components/schemas/ToProducto"}}}}, "ToArmaTuPc": {"type": "object", "properties": {"ok": {"type": "boolean"}, "plataforma": {"type": "string"}, "plataformas": {"type": "array", "items": {"type": "string"}}, "idSucursal": {"type": "integer", "format": "int32"}, "sucursales": {"type": "array", "items": {"$ref": "#/components/schemas/ToSucursal"}}, "seccion": {"type": "array", "items": {"$ref": "#/components/schemas/ToSeccion"}}, "errores": {"type": "array", "items": {"type": "string"}}, "neto": {"type": "number"}, "netoAccesorios": {"type": "number"}, "iva": {"type": "number"}, "ivaTasa": {"type": "number"}, "total": {"type": "number"}}}, "ToComponente": {"type": "object", "properties": {"idComponente": {"type": "string"}, "id": {"type": "string"}, "nombre": {"type": "string"}, "obligatorio": {"type": "boolean"}, "visible": {"type": "boolean"}, "producto": {"$ref": "#/components/schemas/ToProducto"}, "alternativas": {"$ref": "#/components/schemas/ToAlternativa"}}}, "ToContactoWEB": {"type": "object", "properties": {"ip": {"type": "string"}, "campos": {"type": "object", "additionalProperties": {"type": "string"}}}}, "ToCtacte": {"type": "object", "properties": {"idCtacte": {"type": "integer", "format": "int64"}, "idCtacteRef": {"type": "integer", "format": "int64"}, "idCtacteAnt": {"type": "integer", "format": "int64"}, "idCaja": {"type": "integer", "format": "int64"}, "idEmpresa": {"type": "integer", "format": "int32"}, "cuenta": {"type": "string"}, "idSucursal": {"type": "integer", "format": "int32"}, "idUbicacion": {"type": "integer", "format": "int32"}, "idEstado": {"type": "integer", "format": "int32"}, "idUser": {"type": "integer", "format": "int32"}, "idTipo": {"type": "integer", "format": "int32"}, "idBanco": {"type": "integer", "format": "int32"}, "idPlaza": {"type": "integer", "format": "int32"}, "idTarjeta": {"type": "integer", "format": "int32"}, "idProtesto": {"type": "integer", "format": "int32"}, "nroCuenta": {"type": "string"}, "rut": {"type": "integer", "format": "int32"}, "rut3": {"type": "integer", "format": "int32"}, "folio": {"type": "integer", "format": "int64"}, "fecha": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaRegistro": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaVencimiento": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaVencimientoOriginal": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaProceso": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "cargo": {"type": "number"}, "abono": {"type": "number"}, "garantia": {"type": "string"}, "glosa": {"type": "string"}, "codigo": {"type": "string"}, "codigoAuto": {"type": "string"}, "idVendedor": {"type": "integer", "format": "int32"}, "idUserCajero": {"type": "integer", "format": "int32"}, "gestiones": {"type": "integer", "format": "int32"}, "idGiftcard": {"type": "integer", "format": "int64"}, "cuotas": {"type": "integer", "format": "int32"}, "idBancoDestino": {"type": "integer", "format": "int32"}, "idTx": {"type": "integer", "format": "int64"}, "idFormapago": {"type": "integer", "format": "int32"}, "idFormaentrega": {"type": "integer", "format": "int32"}, "idLista": {"type": "integer", "format": "int32"}, "idCentro": {"type": "integer", "format": "int32"}, "idServicio": {"type": "integer", "format": "int32"}, "idCtacteBanco": {"type": "integer", "format": "int32"}, "idCtacteDeposito": {"type": "integer", "format": "int64"}, "idCartola": {"type": "integer", "format": "int64"}, "idDet": {"type": "integer", "format": "int32"}, "fechaCierre": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "idLiquidacion": {"type": "integer", "format": "int64"}, "idLiqDet": {"type": "integer", "format": "int32"}, "nombre": {"type": "string"}, "rutDv": {"type": "string"}, "sucursal": {"type": "string"}, "cuentaNombre": {"type": "string"}, "nombre3": {"type": "string"}, "rut3Dv": {"type": "string"}, "tipo": {"type": "string"}, "td": {"type": "string"}, "tarjeta": {"type": "string"}, "folioRef": {"type": "integer", "format": "int64"}, "idTipoRef": {"type": "integer", "format": "int32"}, "idTarjetaRef": {"type": "integer", "format": "int32"}, "fechaRef": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "idEstadoRef": {"type": "integer", "format": "int32"}, "tipoRef": {"type": "string"}, "tdRef": {"type": "string"}, "banco": {"type": "string"}, "bancoDestino": {"type": "string"}, "idTipoCaja": {"type": "integer", "format": "int32"}, "refEstado": {"type": "integer", "format": "int32"}, "idEstadoAnt": {"type": "integer", "format": "int32"}, "total": {"type": "number"}, "saldo": {"type": "number"}, "pagadoCargo": {"type": "number"}, "pagadoAbono": {"type": "number"}}}, "ToDistribucion": {"type": "object", "properties": {"producto": {"type": "array", "items": {"$ref": "#/components/schemas/ToDistribucionProducto"}}, "sucursal": {"type": "array", "items": {"$ref": "#/components/schemas/ToEmpresaSucursal"}}}}, "ToDistribucionProducto": {"type": "object", "properties": {"idDoc": {"type": "integer", "format": "int64"}, "idDet": {"type": "integer", "format": "int32"}, "idProducto": {"type": "integer", "format": "int32"}, "codigo": {"type": "string"}, "partno": {"type": "string"}, "marca": {"type": "string"}, "descripcion": {"type": "string"}, "cantidad": {"type": "number"}, "distribucionSucursal": {"type": "array", "items": {"$ref": "#/components/schemas/ToDistribucionProductoSucursal"}}}}, "ToDistribucionProductoSucursal": {"type": "object", "properties": {"idSucursal": {"type": "integer", "format": "int32"}, "stock": {"type": "number"}, "rotacion": {"type": "number"}}}, "ToDocBanco": {"type": "object", "properties": {"idDoc": {"type": "integer", "format": "int64"}, "banco": {"type": "string"}, "direccion": {"type": "string"}, "tipoCuenta": {"type": "string"}, "numCuenta": {"type": "string"}, "swift": {"type": "string"}, "beneficiario": {"type": "string"}}}, "ToDocCliente": {"type": "object", "properties": {"idDoc": {"type": "integer", "format": "int64"}, "idComuna": {"type": "integer", "format": "int32"}, "rut": {"type": "integer", "format": "int32"}, "nombre": {"type": "string"}, "giro": {"type": "string"}, "email": {"type": "string"}, "direccion": {"type": "string"}, "ciudad": {"type": "string"}, "fono": {"type": "string"}, "contacto": {"type": "string"}, "emailContacto": {"type": "string"}, "rutRetiro": {"type": "integer", "format": "int32"}, "nombreRetiro": {"type": "string"}, "mailing": {"type": "integer", "format": "int32"}, "idCategoria": {"type": "integer", "format": "int32"}, "plazoDias": {"type": "integer", "format": "int32"}, "idCategoriaSub": {"type": "integer", "format": "int32"}, "comunaTexto": {"type": "string"}, "numero": {"type": "string"}, "adicional": {"type": "string"}, "tipoDocumento": {"type": "string"}, "comuna": {"type": "string"}, "idRegion": {"type": "integer", "format": "int32"}}}, "ToDocComex": {"type": "object", "properties": {"idDoc": {"type": "integer", "format": "int64"}, "idEstado": {"type": "integer", "format": "int32"}, "idMotivo": {"type": "integer", "format": "int32"}, "idOrigen": {"type": "integer", "format": "int32"}, "idTipoCliente": {"type": "integer", "format": "int32"}, "idEstadoProducto": {"type": "integer", "format": "int32"}, "idTipoVenta": {"type": "integer", "format": "int32"}, "idTipoPrecio": {"type": "integer", "format": "int32"}, "clienteFinal": {"type": "integer", "format": "int32"}, "rutClienteFinal": {"type": "integer", "format": "int32"}, "nombreClienteFinal": {"type": "string"}, "fechaMaxRespuesta": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "estado": {"type": "string"}, "motivo": {"type": "string"}, "iconoMotivo": {"type": "string"}, "slaMotivo": {"type": "integer", "format": "int32"}, "origen": {"type": "string"}, "iconoOrigen": {"type": "string"}, "slaOrigen": {"type": "integer", "format": "int32"}, "tipoCliente": {"type": "string"}, "iconoTipoCliente": {"type": "string"}, "estadoProducto": {"type": "string"}, "iconoEstadoProducto": {"type": "string"}, "tipoVenta": {"type": "string"}, "iconoTipoVenta": {"type": "string"}, "tipoPrecio": {"type": "string"}}}, "ToDocDetallePago": {"type": "object", "properties": {"idDoc": {"type": "integer", "format": "int64"}, "idDet": {"type": "integer", "format": "int32"}, "fechaRegistro": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fecha": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "idCaja": {"type": "integer", "format": "int64"}, "porcentaje": {"type": "number"}, "total": {"type": "number"}}}, "ToDocKey": {"type": "object", "properties": {"idDoc": {"type": "integer", "format": "int64"}, "idKey": {"type": "integer", "format": "int64"}, "idUser": {"type": "integer", "format": "int32"}, "tipo": {"type": "string"}, "observacion": {"type": "string"}, "respuesta": {"type": "string"}, "fechaRegistro": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "username": {"type": "string"}}}, "ToDocObs": {"type": "object", "properties": {"idDoc": {"type": "integer", "format": "int64"}, "item": {"type": "integer", "format": "int32"}, "idUser": {"type": "integer", "format": "int32"}, "obs": {"type": "string"}, "fechaRegistro": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "esSistema": {"type": "integer", "format": "int32"}, "username": {"type": "string"}}}, "ToDocProductoCodigo": {"type": "object", "properties": {"idDoc": {"type": "integer", "format": "int64"}, "idDet": {"type": "integer", "format": "int32"}, "codigo": {"type": "string"}, "fechaRegistro": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "respuesta": {"type": "string"}}}, "ToDocSave": {"type": "object", "properties": {"idDoc": {"type": "integer", "format": "int64"}, "idEmpresa": {"type": "integer", "format": "int32"}, "idSucursal": {"type": "integer", "format": "int32"}, "idUser": {"type": "integer", "format": "int32"}, "idUserAnula": {"type": "integer", "format": "int32"}, "idUserCreador": {"type": "integer", "format": "int32"}, "idTipo": {"type": "integer", "format": "int32"}, "idTipoDoc": {"type": "integer", "format": "int32"}, "idEstado": {"type": "integer", "format": "int32"}, "idLista": {"type": "integer", "format": "int32"}, "idFormaentrega": {"type": "integer", "format": "int32"}, "idFormapago": {"type": "integer", "format": "int32"}, "idBodega": {"type": "integer", "format": "int32"}, "idBodegaDestino": {"type": "integer", "format": "int32"}, "idArea": {"type": "integer", "format": "int32"}, "idClasificacion": {"type": "integer", "format": "int32"}, "idDespacho": {"type": "integer", "format": "int32"}, "idDescuento": {"type": "integer", "format": "int64"}, "idFaena": {"type": "integer", "format": "int32"}, "idChofer": {"type": "integer", "format": "int32"}, "idCamion": {"type": "integer", "format": "int32"}, "idFletero": {"type": "integer", "format": "int32"}, "fletero": {"type": "string"}, "rutEmisor": {"type": "integer", "format": "int32"}, "rut": {"type": "integer", "format": "int32"}, "idDireccion": {"type": "integer", "format": "int32"}, "idInventario": {"type": "integer", "format": "int64"}, "folio": {"type": "integer", "format": "int64"}, "fecha": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaRegistro": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaImpresion": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaAnulacion": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaProceso": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaVencimiento": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaLlegada": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaModificacion": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaWeb": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "tipoCambio": {"type": "number"}, "neto": {"type": "number"}, "descuento": {"type": "number"}, "descuentoIva": {"type": "number"}, "interes": {"type": "number"}, "exento": {"type": "number"}, "afecto": {"type": "number"}, "ivaTasa": {"type": "number"}, "iva": {"type": "number"}, "total": {"type": "number"}, "cuotas": {"type": "integer", "format": "int32"}, "ordenCompra": {"type": "string"}, "observaciones": {"type": "string"}, "observacionesAnulacion": {"type": "string"}, "observacionesVendedor": {"type": "string"}, "docReferencia": {"type": "string"}, "spiff": {"type": "number"}, "indServicio": {"type": "integer", "format": "int32"}, "indNorebaja": {"type": "integer", "format": "int32"}, "volPlg": {"type": "number"}, "volM3": {"type": "number"}, "volSr": {"type": "number"}, "idTipoIngreso": {"type": "integer", "format": "int32"}, "idTipoDocI": {"type": "integer", "format": "int32"}, "fechaDocI": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "folioDocI": {"type": "integer", "format": "int32"}, "diametroPromedio": {"type": "number"}, "cantidadTotal": {"type": "number"}, "rendimiento": {"type": "number"}, "turno": {"type": "integer", "format": "int32"}, "interesIva": {"type": "number"}, "descuentoTasa": {"type": "number"}, "idDepartamento": {"type": "integer", "format": "int32"}, "idUserImpresion": {"type": "integer", "format": "int32"}, "ordenCompraFecha": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "promociones": {"type": "integer", "format": "int32"}, "costoFifo": {"type": "number"}, "items": {"type": "integer", "format": "int32"}, "idPaso": {"type": "integer", "format": "int32"}, "fechaRecepcion": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaEnvio": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "costoPromedio": {"type": "number"}, "observacionesReferencia": {"type": "string"}, "fechaDespacho": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "falla": {"type": "string"}, "inspeccion": {"type": "string"}, "accesorios": {"type": "string"}, "rutRetiro": {"type": "integer", "format": "int32"}, "despachada": {"type": "integer", "format": "int32"}, "ipAddress": {"type": "string"}, "costoProtegido": {"type": "number"}, "fechaVigente": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "libroAno": {"type": "integer", "format": "int32"}, "libroMes": {"type": "integer", "format": "int32"}, "ivaNoRetenido": {"type": "number"}, "ivaNoRetenidoTasa": {"type": "number"}, "extranjeroNacionalidad": {"type": "string"}, "extranjeroId": {"type": "string"}, "tipoMoneda": {"type": "integer", "format": "int32"}, "idFormapagoExp": {"type": "string"}, "idModalidad": {"type": "integer", "format": "int32"}, "idClausula": {"type": "integer", "format": "int32"}, "totalClausula": {"type": "number"}, "recargoClausula": {"type": "number"}, "idViaTransporte": {"type": "integer", "format": "int32"}, "idPuertoEmbarque": {"type": "integer", "format": "int32"}, "idPuertoDesembarque": {"type": "integer", "format": "int32"}, "idUnidadMedidaTara": {"type": "integer", "format": "int32"}, "idUnidadMedidaBruto": {"type": "integer", "format": "int32"}, "idUnidadMedidaNeto": {"type": "integer", "format": "int32"}, "idTipoBulto": {"type": "integer", "format": "int32"}, "cantidadBulto": {"type": "integer", "format": "int32"}, "totalFlete": {"type": "number"}, "totalSeguro": {"type": "number"}, "idPaisReceptor": {"type": "string"}, "fechaCerrado": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "idProviene": {"type": "integer", "format": "int32"}, "contenedorId": {"type": "string"}, "contenedorSello": {"type": "string"}, "contenedorSelloEmisor": {"type": "string"}, "nroOrden": {"type": "integer", "format": "int64"}, "fechaPago": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "idTipoembarque": {"type": "integer", "format": "int32"}, "puntosUsar": {"type": "number"}, "extranjeroTipodoc": {"type": "integer", "format": "int32"}, "esTuristica": {"type": "integer", "format": "int32"}, "autorizaciones": {"type": "integer", "format": "int32"}, "impresiones": {"type": "integer", "format": "int32"}, "idTipoConv": {"type": "integer", "format": "int32"}, "totalPick": {"type": "number"}, "despacho": {"type": "number"}, "despachoIva": {"type": "number"}, "hora": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "externo": {"type": "integer", "format": "int32"}, "idUserWeb": {"type": "integer", "format": "int64"}, "idWeb": {"type": "string"}, "esWeb": {"type": "integer", "format": "int32"}, "esInvitado": {"type": "integer", "format": "int32"}, "idMotivo": {"type": "integer", "format": "int32"}, "detIva": {"type": "integer", "format": "int32"}, "idFacturacion": {"type": "integer", "format": "int64"}, "correlativo": {"type": "integer", "format": "int32"}, "idTipoTransaccion": {"type": "integer", "format": "int32"}, "idServicio": {"type": "integer", "format": "int32"}, "periodoFacturacion": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "exentoUs": {"type": "number"}, "netoUs": {"type": "number"}, "interesUs": {"type": "number"}, "descuentoUs": {"type": "number"}, "afectoUs": {"type": "number"}, "ivaUs": {"type": "number"}, "totalUs": {"type": "number"}, "despachoUs": {"type": "number"}, "descuentoIvaUs": {"type": "number"}, "despachoIvaUs": {"type": "number"}, "interesIvaUs": {"type": "number"}, "despachoCosto": {"type": "number"}, "despachoCostoIva": {"type": "number"}, "impAdicional": {"type": "number"}, "impAdicionalUs": {"type": "number"}, "fechaSalida": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "rutTransportista": {"type": "integer", "format": "int32"}, "ivaTercero": {"type": "number"}, "costoAporte": {"type": "number"}, "tipo": {"type": "string"}, "idGrupo": {"type": "integer", "format": "int32"}, "idLibro": {"type": "integer", "format": "int32"}, "td": {"type": "string"}, "esExportacion": {"type": "integer", "format": "int32"}, "esDte": {"type": "integer", "format": "int32"}, "esFv": {"type": "integer", "format": "int32"}, "esBv": {"type": "integer", "format": "int32"}, "esNc": {"type": "integer", "format": "int32"}, "esNd": {"type": "integer", "format": "int32"}, "tipoConv": {"type": "string"}, "formapago": {"type": "string"}, "formaentrega": {"type": "string"}, "esDespacho": {"type": "integer", "format": "int32"}, "vendedor": {"type": "string"}, "vendedorNombre": {"type": "string"}, "vendedorEmail": {"type": "string"}, "vendedorDirecto": {"type": "string"}, "vendedorAnexo": {"type": "string"}, "sucursal": {"type": "string"}, "sucursalFono": {"type": "string"}, "sucursalEmail": {"type": "string"}, "origen": {"type": "string"}, "destino": {"type": "string"}, "idSucursalDestino": {"type": "integer", "format": "int32"}, "sucursalDestino": {"type": "string"}, "idEmpresaDestino": {"type": "integer", "format": "int32"}, "estado": {"type": "string"}, "tipoembarque": {"type": "string"}, "clausula": {"type": "string"}, "modalidad": {"type": "string"}, "formapagoExp": {"type": "string"}, "puertoEmbarque": {"type": "string"}, "puertoDesembarque": {"type": "string"}, "viaTransporte": {"type": "string"}, "paisReceptor": {"type": "string"}, "moneda": {"type": "string"}, "extranjeroNacionalidadGlosa": {"type": "string"}, "nombre": {"type": "string"}, "camionPatente": {"type": "string"}, "camionPatenteCarro": {"type": "string"}, "rutChofer": {"type": "integer", "format": "int32"}, "nombreChofer": {"type": "string"}, "empresa": {"type": "string"}, "idDocSucursal": {"type": "integer", "format": "int64"}, "idModulo": {"type": "integer", "format": "int32"}, "channelId": {"type": "string"}, "stock": {"type": "integer", "format": "int32"}, "via": {"type": "string"}, "idReferencia": {"type": "string"}, "tipoFolio": {"type": "integer", "format": "int32"}, "idPago": {"type": "string"}, "idDte": {"type": "integer", "format": "int64"}, "idTransbank": {"type": "integer", "format": "int64"}, "local": {"type": "boolean"}, "idAdjunto": {"type": "integer", "format": "int64"}, "idWoo": {"type": "integer", "format": "int64"}, "idJump": {"type": "integer", "format": "int64"}, "idShopify": {"type": "integer", "format": "int64"}, "uuid": {"type": "string"}, "productos": {"type": "number"}, "urlRetorno": {"type": "string"}, "urlPedido": {"type": "string"}, "clienteSucursal": {"type": "string"}, "cliente": {"$ref": "#/components/schemas/ToDocCliente"}, "despachoDomicilio": {"$ref": "#/components/schemas/ToDocSaveDespacho"}, "detalle": {"type": "array", "items": {"$ref": "#/components/schemas/ToDocSaveProducto"}}, "impuesto": {"type": "array", "items": {"$ref": "#/components/schemas/ToDocTipoImp"}}, "referencia": {"type": "array", "items": {"$ref": "#/components/schemas/ToDocSaveRef"}}, "key": {"type": "array", "items": {"$ref": "#/components/schemas/ToDocKey"}}, "pagos": {"type": "array", "items": {"$ref": "#/components/schemas/ToCtacte"}}, "obs": {"type": "array", "items": {"$ref": "#/components/schemas/ToDocObs"}}, "detallePago": {"type": "array", "items": {"$ref": "#/components/schemas/ToDocDetallePago"}}, "transaccion": {"$ref": "#/components/schemas/ToDocTransaccion"}, "comex": {"$ref": "#/components/schemas/ToDocComex"}, "banco": {"$ref": "#/components/schemas/ToDocBanco"}, "tbkWebpay": {"type": "array", "items": {"$ref": "#/components/schemas/ToMedioPago"}}, "checkXML": {"type": "boolean"}, "modificaFecha": {"type": "boolean"}, "usaUnidad": {"type": "boolean"}, "chequeaSoloStock": {"type": "boolean"}, "chequeaDescuento": {"type": "boolean"}, "allowMultiple": {"type": "boolean"}, "indTraslado": {"type": "integer", "format": "int32"}, "siiFormaPago": {"type": "integer", "format": "int32"}, "distribucion": {"$ref": "#/components/schemas/ToDistribucion"}, "dtePropio": {"type": "boolean"}, "esTransferencia": {"type": "integer", "format": "int32"}, "urlTransferencia": {"type": "string"}, "docs": {"type": "array", "items": {"type": "integer", "format": "int64"}}, "costeo": {"type": "string"}, "idUserConectado": {"type": "integer", "format": "int32"}, "tipoDigital": {"type": "boolean"}, "stockCalc": {"type": "boolean"}, "otraBodega": {"type": "boolean"}, "usoInterno": {"type": "boolean"}, "addAdicional": {"type": "boolean"}, "validaRef": {"type": "boolean"}, "esRecargo": {"type": "boolean"}, "recargo": {"type": "number"}}}, "ToDocSaveDespacho": {"type": "object", "properties": {"idDoc": {"type": "integer", "format": "int64"}, "idUser": {"type": "integer", "format": "int32"}, "idTransporte": {"type": "integer", "format": "int32"}, "fecha": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaRegistro": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaWeb": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "orden": {"type": "string"}, "bultos": {"type": "integer", "format": "int32"}, "peso": {"type": "string"}, "destino": {"type": "string"}, "nombre": {"type": "string"}, "direccion": {"type": "string"}, "ciudad": {"type": "string"}, "fono": {"type": "string"}, "idComuna": {"type": "integer", "format": "int32"}, "fechaModificacion": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "nota": {"type": "string"}, "fechaRecepcion": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "idEstado": {"type": "integer", "format": "int32"}, "idUserPickeador": {"type": "integer", "format": "int32"}, "idInterno": {"type": "integer", "format": "int64"}, "comunaTexto": {"type": "string"}, "numero": {"type": "string"}, "adicional": {"type": "string"}, "dias": {"type": "integer", "format": "int32"}, "fechaEstimada": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "urlSeguimiento": {"type": "string"}, "observaciones": {"type": "string"}, "comuna": {"type": "string"}, "region": {"type": "string"}, "transporte": {"type": "string"}, "userPickeador": {"type": "string"}, "tarifa": {"$ref": "#/components/schemas/ToWebTarifa"}, "proveedor": {"type": "string"}}}, "ToDocSaveProducto": {"type": "object", "properties": {"idDoc": {"type": "integer", "format": "int64"}, "idDet": {"type": "integer", "format": "int32"}, "idDocRef": {"type": "integer", "format": "int64"}, "idDetRef": {"type": "integer", "format": "int32"}, "idProducto": {"type": "integer", "format": "int32"}, "idKit": {"type": "integer", "format": "int32"}, "idPromocion": {"type": "integer", "format": "int32"}, "cantidad": {"type": "number"}, "stock": {"type": "number"}, "descripcion": {"type": "string"}, "garantia": {"type": "integer", "format": "int32"}, "netoReal": {"type": "number"}, "netoIva": {"type": "number"}, "neto": {"type": "number"}, "afecto": {"type": "number"}, "descuento": {"type": "number"}, "observacion": {"type": "string"}, "serie": {"type": "string"}, "spiff": {"type": "number"}, "indExento": {"type": "integer", "format": "int32"}, "cantidadDespachada": {"type": "number"}, "cantidadFacturada": {"type": "number"}, "idMarca": {"type": "integer", "format": "int32"}, "idUnidad": {"type": "integer", "format": "int32"}, "costoAnterior": {"type": "number"}, "costoFifo": {"type": "number"}, "fechaCompra": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "costoPromedio": {"type": "number"}, "precioNormal": {"type": "number"}, "precioMayor": {"type": "number"}, "costoProtegido": {"type": "number"}, "cantidadGuiada": {"type": "number"}, "idFamilia": {"type": "integer", "format": "int32"}, "descuentoIva": {"type": "number"}, "descuentoTasa": {"type": "number"}, "descuentoMonto": {"type": "number"}, "idTipocompra": {"type": "integer", "format": "int32"}, "idMoneda": {"type": "integer", "format": "int32"}, "costoOrigen": {"type": "number"}, "descuentoMontoIva": {"type": "number"}, "tdLiq": {"type": "string"}, "idProductoStock": {"type": "integer", "format": "int32"}, "idModelo": {"type": "integer", "format": "int32"}, "api": {"type": "integer", "format": "int32"}, "codigoProveedor": {"type": "string"}, "codigoOriginal": {"type": "string"}, "idMayorista": {"type": "integer", "format": "int32"}, "sku": {"type": "string"}, "precioVenta": {"type": "number"}, "netoUs": {"type": "number"}, "descuentoUs": {"type": "number"}, "afectoUs": {"type": "number"}, "netoIvaUs": {"type": "number"}, "descuentoIvaUs": {"type": "number"}, "descuentoMontoUs": {"type": "number"}, "descuentoMontoIvaUs": {"type": "number"}, "codigoTipo": {"type": "string"}, "codigoValor": {"type": "string"}, "cantidadPaquete": {"type": "number"}, "costoProducto": {"type": "number"}, "idOrigen": {"type": "integer", "format": "int32"}, "fechaLlegada": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "partno": {"type": "string"}, "costoAporte": {"type": "number"}, "codigo": {"type": "string"}, "idDespacho": {"type": "integer", "format": "int32"}, "idDisponibilidad": {"type": "integer", "format": "int32"}, "tipoDigital": {"type": "string"}, "productoObservacion1": {"type": "string"}, "productoObservacion2": {"type": "string"}, "productoObservacion3": {"type": "string"}, "marca": {"type": "string"}, "unidad": {"type": "string"}, "origen": {"type": "string"}, "tipo": {"type": "integer", "format": "int32"}, "stockMov": {"type": "string"}, "codImpAdic": {"type": "string"}, "ubicacion": {"type": "string"}, "costoProtegidoReal": {"type": "number"}, "costoCompra": {"type": "number"}, "precio": {"type": "number"}, "precioUs": {"type": "number"}, "precioDescuento": {"type": "number"}, "precioDescuentoUs": {"type": "number"}, "total": {"type": "number"}, "totalUs": {"type": "number"}, "kit": {"type": "array", "items": {"$ref": "#/components/schemas/ToDocSaveProductoKit"}}, "codigos": {"type": "array", "items": {"$ref": "#/components/schemas/ToDocProductoCodigo"}}, "idUnidadSec": {"type": "integer", "format": "int32"}, "canUnidadSec": {"type": "number"}, "cantidadKit": {"type": "number"}, "razon": {"type": "number"}, "volPlg": {"type": "number"}, "volM3": {"type": "number"}, "volSr": {"type": "number"}, "urlFoto": {"type": "string"}, "precioPublico": {"type": "number"}, "descripcionLarga": {"type": "string"}, "temporal": {"type": "boolean"}, "codigoStock": {"type": "string"}, "garantiaGlosa": {"type": "string"}, "garantiaTranscurrida": {"type": "string"}, "tipocompra": {"type": "string"}, "moneda": {"type": "string"}, "costo": {"type": "number"}, "stockI": {"type": "number"}, "stockAnt": {"type": "number"}, "stockSucursal": {"type": "number"}, "stockEmpresa": {"type": "number"}, "canCaja": {"type": "number"}, "totalIva": {"type": "number"}, "totalIvaUs": {"type": "number"}}}, "ToDocSaveProductoKit": {"type": "object", "properties": {"idDoc": {"type": "integer", "format": "int64"}, "idDet": {"type": "integer", "format": "int32"}, "item": {"type": "integer", "format": "int32"}, "idProducto": {"type": "integer", "format": "int32"}, "armado": {"type": "integer", "format": "int32"}, "cantidad": {"type": "number"}, "cantidadDespachada": {"type": "number"}, "costoProtegido": {"type": "number"}, "costoPromedio": {"type": "number"}, "stock": {"type": "number"}, "idUnidad": {"type": "integer", "format": "int32"}, "codigo": {"type": "string"}, "partno": {"type": "string"}, "idDespacho": {"type": "integer", "format": "int32"}, "descripcion": {"type": "string"}, "canCaja": {"type": "number"}, "canUnidadSec": {"type": "number"}, "productoObservacion1": {"type": "string"}, "productoObservacion2": {"type": "string"}, "productoObservacion3": {"type": "string"}, "marca": {"type": "string"}, "unidad": {"type": "string"}, "ubicacion": {"type": "string"}, "hint": {"type": "string"}, "urlFoto": {"type": "string"}}}, "ToDocSaveRef": {"type": "object", "properties": {"idDoc": {"type": "integer", "format": "int64"}, "linea": {"type": "integer", "format": "int32"}, "td": {"type": "string"}, "folio": {"type": "string"}, "rutOtro": {"type": "integer", "format": "int32"}, "fecha": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "cod": {"type": "integer", "format": "int32"}, "razon": {"type": "string"}, "indGlobal": {"type": "integer", "format": "int32"}, "nombre": {"type": "string"}}}, "ToDocTipoImp": {"type": "object", "properties": {"idDoc": {"type": "integer", "format": "int64"}, "idDet": {"type": "integer", "format": "int32"}, "idTipoImp": {"type": "integer", "format": "int32"}, "tasa": {"type": "number"}, "monto": {"type": "number"}, "nombre": {"type": "string"}}}, "ToDocTransaccion": {"type": "object", "properties": {"idDoc": {"type": "integer", "format": "int64"}, "entidad": {"type": "string"}, "valido": {"type": "integer", "format": "int32"}, "nroOrden": {"type": "string"}, "nroTransaccion": {"type": "string"}, "comando": {"type": "string"}, "codigoRespuesta": {"type": "string"}, "codigoComercio": {"type": "string"}, "terminalId": {"type": "string"}, "codAutorizacion": {"type": "string"}, "codRechazo": {"type": "string"}, "rutCliente": {"type": "integer", "format": "int32"}, "numCuenta": {"type": "string"}, "ultDigitos": {"type": "string"}, "numOperacion": {"type": "string"}, "tipoTarjeta": {"type": "string"}, "abrevTarjeta": {"type": "string"}, "fechaTransaccion": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "horaTransaccion": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaContable": {"type": "string"}, "horaContable": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "monto": {"type": "number"}, "impresion": {"type": "string"}, "versionApp": {"type": "string"}, "numCuotas": {"type": "integer", "format": "int32"}, "tipoPago": {"type": "string"}, "tipoTransaccion": {"type": "string"}, "idBanco": {"type": "integer", "format": "int32"}, "comercioPrestador": {"type": "string"}, "ticket": {"type": "string"}}}, "ToEmpresaSucursal": {"type": "object", "properties": {"idSucursal": {"type": "integer", "format": "int32"}, "idEmpresa": {"type": "integer", "format": "int32"}, "idSii": {"type": "string"}, "idZona": {"type": "integer", "format": "int32"}, "idCentro": {"type": "integer", "format": "int32"}, "sucursal": {"type": "string"}, "abreviacion": {"type": "string"}, "direccion": {"type": "string"}, "numero": {"type": "string"}, "adicional": {"type": "string"}, "ciudad": {"type": "string"}, "idComuna": {"type": "integer", "format": "int32"}, "fono": {"type": "string"}, "latitud": {"type": "string"}, "longitud": {"type": "string"}, "mapsEmbed": {"type": "string"}, "m2": {"type": "integer", "format": "int32"}, "horario": {"type": "string"}, "correlativoInicial": {"type": "integer", "format": "int32"}, "canalVenta": {"type": "string"}, "descripcion": {"type": "string"}, "tipoTienda": {"type": "string"}, "volumenVenta": {"type": "string"}, "orden": {"type": "integer", "format": "int32"}, "estadistica": {"type": "integer", "format": "int32"}, "web": {"type": "integer", "format": "int32"}, "activa": {"type": "integer", "format": "int32"}, "fechaInicio": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "email": {"type": "string"}, "comuna": {"type": "string"}, "rutEmpresa": {"type": "integer", "format": "int32"}, "nombreEmpresa": {"type": "string"}, "zona": {"type": "string"}}}, "ToIWReporteDiario": {"type": "object", "properties": {"pagosDia": {"type": "array", "items": {"$ref": "#/components/schemas/ToReporteDiario"}}, "pagosOtroDia": {"type": "array", "items": {"$ref": "#/components/schemas/ToReporteDiario"}}, "pagosCambio": {"type": "array", "items": {"$ref": "#/components/schemas/ToReporteDiario"}}, "pagosEgreso": {"type": "array", "items": {"$ref": "#/components/schemas/ToReporteDiario"}}, "pagosGiftCard": {"type": "array", "items": {"$ref": "#/components/schemas/ToReporteDiario"}}}}, "ToMedioPago": {"type": "object", "properties": {"idWebpay": {"type": "integer", "format": "int64"}, "medio": {"type": "string"}, "uuid": {"type": "string"}, "valido": {"type": "integer", "format": "int32"}, "idDoc": {"type": "integer", "format": "int64"}, "montoSolicitado": {"type": "number"}, "nroOrden": {"type": "string"}, "sessionId": {"type": "string"}, "fechaRegistro": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaInit": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaRespuesta": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaFin": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "codigoComercio": {"type": "string"}, "token": {"type": "string"}, "fecha": {"type": "string"}, "fechaTransaccion": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "vci": {"type": "string"}, "tarjetaExp": {"type": "string"}, "ultDigitos": {"type": "string"}, "codAutorizacion": {"type": "string"}, "tipoPago": {"type": "string"}, "codigoRespuesta": {"type": "integer", "format": "int32"}, "monto": {"type": "number"}, "numCuotas": {"type": "integer", "format": "int32"}, "occ": {"type": "string"}, "externalUniqueNumber": {"type": "string"}, "urlRetorno": {"type": "string"}, "urlPedido": {"type": "string"}, "comision": {"type": "number"}, "glosaRespuesta": {"type": "string"}, "glosaTipoPago": {"type": "string"}}}, "ToPaginateBuscarToWebUsuarioDocumentoToWebUsuarioDocumentoParam": {"type": "object", "properties": {"retorno": {"type": "array", "items": {"$ref": "#/components/schemas/ToWebUsuarioDocumento"}}, "paginacion": {"$ref": "#/components/schemas/ToWebUsuarioDocumentoParam"}}}, "ToProducto": {"type": "object", "properties": {"idProducto": {"type": "integer", "format": "int32"}, "idMarca": {"type": "integer", "format": "int32"}, "nombre": {"type": "string"}, "marca": {"type": "string"}, "precio": {"type": "number"}, "explicacion": {"type": "string"}, "foto": {"type": "string"}, "accesorio": {"$ref": "#/components/schemas/ToProducto"}}}, "ToReporteDiario": {"type": "object", "properties": {"idCtacte": {"type": "integer", "format": "int64"}, "idTipo": {"type": "integer", "format": "int32"}, "documento": {"type": "string"}, "td": {"type": "string"}, "folio": {"type": "integer", "format": "int64"}, "fecha": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "rut": {"type": "string"}, "nombre": {"type": "string"}, "monto": {"type": "number"}, "sucursal": {"type": "string"}, "efectivo": {"type": "array", "items": {"$ref": "#/components/schemas/ToReporteDiarioPago"}}, "deposito": {"type": "array", "items": {"$ref": "#/components/schemas/ToReporteDiarioPago"}}, "tarjeta": {"type": "array", "items": {"$ref": "#/components/schemas/ToReporteDiarioPago"}}, "webpay": {"type": "array", "items": {"$ref": "#/components/schemas/ToReporteDiarioPago"}}, "chequeDia": {"type": "array", "items": {"$ref": "#/components/schemas/ToReporteDiarioPago"}}, "chequeFecha": {"type": "array", "items": {"$ref": "#/components/schemas/ToReporteDiarioPago"}}, "otro": {"type": "array", "items": {"$ref": "#/components/schemas/ToReporteDiarioPago"}}, "abonos": {"type": "array", "items": {"$ref": "#/components/schemas/ToReporteDiarioPago"}}, "saldo": {"type": "number"}, "descuentoP": {"type": "number"}, "formapago": {"type": "string"}, "formaentrega": {"type": "string"}, "cajero": {"type": "string"}}}, "ToReporteDiarioPago": {"type": "object", "properties": {"tipo": {"type": "string"}, "folio": {"type": "integer", "format": "int64"}, "fecha": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "monto": {"type": "number"}}}, "ToSeccion": {"type": "object", "properties": {"idSeccion": {"type": "integer", "format": "int32"}, "seccion": {"type": "string"}, "componente": {"type": "array", "items": {"$ref": "#/components/schemas/ToComponente"}}}}, "ToSucursal": {"type": "object", "properties": {"idSucursal": {"type": "integer", "format": "int32"}, "sucursal": {"type": "string"}}}, "ToSuscribirWEB": {"type": "object", "properties": {"ip": {"type": "string"}, "referer": {"type": "string"}, "email": {"type": "string"}}}, "ToWebContacto": {"type": "object", "properties": {"idContacto": {"type": "integer", "format": "int64"}, "idEmpresa": {"type": "integer", "format": "int32"}, "idMotivo": {"type": "integer", "format": "int32"}, "idEstado": {"type": "integer", "format": "int32"}, "idUser": {"type": "integer", "format": "int32"}, "fecha": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaModificacion": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "ip": {"type": "string"}, "rut": {"type": "integer", "format": "int32"}, "nombre": {"type": "string"}, "email": {"type": "string"}, "fono": {"type": "string"}, "nroDocumento": {"type": "string"}, "comentario": {"type": "string"}, "idUserWeb": {"type": "integer", "format": "int64"}, "uuid": {"type": "string"}, "motivo": {"type": "string"}, "estado": {"type": "string"}}}, "ToWebContactoObsArchivo": {"type": "object", "properties": {"idContacto": {"type": "integer", "format": "int64"}, "item": {"type": "integer", "format": "int32"}, "subItem": {"type": "integer", "format": "int32"}, "archivo": {"type": "string"}, "pathImagen": {"type": "string"}, "urlImagen": {"type": "string"}, "fechaImagen": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}}}, "ToWebContactoParam": {"type": "object", "properties": {"page": {"type": "integer", "format": "int64", "description": "No viaja si es null"}, "maxPage": {"type": "integer", "format": "int64", "description": "No viaja si es null"}, "maxRow": {"type": "integer", "format": "int64", "description": "No viaja si es null"}, "count": {"type": "integer", "format": "int64", "description": "No viaja si es null"}, "link": {"type": "string", "description": "No viaja si es null"}, "sort": {"type": "string", "description": "No viaja si es null"}, "uuid": {"type": "string", "description": "No viaja si es null"}, "idEstado": {"type": "integer", "format": "int32", "description": "No viaja si es null"}, "idMotivo": {"type": "integer", "format": "int32", "description": "No viaja si es null"}, "rut": {"type": "string", "description": "No viaja si es null"}, "folio": {"type": "integer", "format": "int64", "description": "No viaja si es null"}, "email": {"type": "string", "description": "No viaja si es null"}, "nombre": {"type": "string", "description": "No viaja si es null"}, "fechaDesde": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss). No viaja si es null"}, "fechaHasta": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss). No viaja si es null"}, "contacto": {"allOf": [{"$ref": "#/components/schemas/ToWebContacto"}], "description": "No viaja si es null"}, "obs": {"type": "array", "description": "No viaja si es null", "items": {"$ref": "#/components/schemas/ToWebContactoParamObs"}}, "observacion": {"type": "string", "description": "No viaja si es null"}, "archivos": {"type": "array", "description": "No viaja si es null", "items": {"$ref": "#/components/schemas/ToWebContactoParamArchivo"}}}}, "ToWebContactoParamArchivo": {"type": "object", "properties": {"archivo": {"type": "string"}, "url": {"type": "string"}}}, "ToWebContactoParamObs": {"type": "object", "properties": {"idContacto": {"type": "integer", "format": "int64"}, "item": {"type": "integer", "format": "int32"}, "idUser": {"type": "integer", "format": "int32"}, "fecha": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "observacion": {"type": "string"}, "username": {"type": "string"}, "archivos": {"type": "array", "items": {"$ref": "#/components/schemas/ToWebContactoObsArchivo"}}}}, "ToWebLogin": {"type": "object", "properties": {"email": {"type": "string"}, "password": {"type": "string"}, "nueva": {"type": "string"}, "token": {"type": "string"}, "recuperar": {"type": "string"}, "ip": {"type": "string"}, "rut": {"type": "string"}, "nombre": {"type": "string"}, "giro": {"type": "string"}, "fono": {"type": "string"}, "documento": {"type": "string"}, "idWeb": {"type": "string"}, "idDoc": {"type": "integer", "format": "int64"}, "obs": {"type": "string"}, "facturacion": {"$ref": "#/components/schemas/ToWebUsuarioDireccion"}, "despacho": {"$ref": "#/components/schemas/ToWebUsuarioDireccion"}}}, "ToWebSeguimiento": {"type": "object", "properties": {"email": {"type": "string"}, "idDoc": {"type": "integer", "format": "int64"}, "nroOrden": {"type": "integer", "format": "int64"}, "idTipo": {"type": "integer", "format": "int32"}, "tipo": {"type": "string"}, "folio": {"type": "integer", "format": "int64"}, "rut": {"type": "string"}, "mensaje": {"type": "string"}, "despacho": {"type": "boolean"}, "operador": {"type": "string"}, "nroSeguimiento": {"type": "string"}, "urlSeguimiento": {"type": "string"}, "transferencia": {"type": "boolean"}, "urlTransferencia": {"type": "string"}, "createdAt": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaEstimada": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "destino": {"type": "string"}, "destinoRegion": {"type": "string"}, "origen": {"type": "string"}, "origenRegion": {"type": "string"}, "pasos": {"type": "array", "items": {"$ref": "#/components/schemas/ToWebSeguimientoPasos"}}}}, "ToWebSeguimientoPasos": {"type": "object", "properties": {"code": {"type": "integer", "format": "int32"}, "fecha": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "estado": {"type": "string"}}}, "ToWebTarifa": {"type": "object", "properties": {"idComuna": {"type": "integer", "format": "int32"}, "idComunaOrigen": {"type": "integer", "format": "int32"}, "idLista": {"type": "integer", "format": "int32"}, "total": {"type": "number"}, "idPromocion": {"type": "integer", "format": "int64"}, "producto": {"type": "array", "items": {"$ref": "#/components/schemas/ToWebTarifaProducto"}}, "volumen": {"$ref": "#/components/schemas/ToWebTarifaVolumen"}, "paramEnviado": {"type": "string"}, "paramRespuesta": {"type": "string"}, "delay": {"type": "boolean"}, "transporte": {"type": "array", "items": {"$ref": "#/components/schemas/ToWebTarifaTransporte"}}}}, "ToWebTarifaProducto": {"type": "object", "properties": {"idProducto": {"type": "integer", "format": "int32"}, "cantidad": {"type": "integer", "format": "int32"}, "length": {"type": "number"}, "width": {"type": "number"}, "height": {"type": "number"}, "weight": {"type": "number"}}}, "ToWebTarifaProductoUnder": {"type": "object", "properties": {"id_producto": {"type": "integer", "format": "int32"}, "cantidad": {"type": "integer", "format": "int32"}, "length": {"type": "number"}, "width": {"type": "number"}, "height": {"type": "number"}, "weight": {"type": "number"}}}, "ToWebTarifaTransporte": {"type": "object", "properties": {"idTransporte": {"type": "integer", "format": "int32"}, "transporte": {"type": "string"}, "foto": {"type": "string"}, "precio": {"type": "integer", "format": "int32"}, "costo": {"type": "integer", "format": "int32"}, "dias": {"type": "integer", "format": "int32"}, "diasDelay": {"type": "integer", "format": "int32"}, "fechaEstimada": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fecha": {"type": "string"}, "tipo": {"type": "string"}, "proveedor": {"type": "string"}, "idPromocion": {"type": "integer", "format": "int64"}}}, "ToWebTarifaTransporteUnder": {"type": "object", "properties": {"id_transporte": {"type": "integer", "format": "int32"}, "transporte": {"type": "string"}, "foto": {"type": "string"}, "precio": {"type": "integer", "format": "int32"}, "costo": {"type": "integer", "format": "int32"}, "dias": {"type": "integer", "format": "int32"}, "dias_delay": {"type": "integer", "format": "int32"}, "fecha_estimada": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fecha": {"type": "string"}, "tipo": {"type": "string"}, "proveedor": {"type": "string"}, "id_promocion": {"type": "integer", "format": "int64"}}}, "ToWebTarifaUnder": {"type": "object", "properties": {"id_comuna": {"type": "integer", "format": "int32"}, "id_comuna_origen": {"type": "integer", "format": "int32"}, "id_lista": {"type": "integer", "format": "int32"}, "total": {"type": "number"}, "id_promocion": {"type": "integer", "format": "int64"}, "producto": {"type": "array", "items": {"$ref": "#/components/schemas/ToWebTarifaProductoUnder"}}, "volumen": {"$ref": "#/components/schemas/ToWebTarifaVolumenUnder"}, "param_enviado": {"type": "string"}, "param_respuesta": {"type": "string"}, "delay": {"type": "boolean"}, "transporte": {"type": "array", "items": {"$ref": "#/components/schemas/ToWebTarifaTransporteUnder"}}}}, "ToWebTarifaVolumen": {"type": "object", "properties": {"length": {"type": "number"}, "width": {"type": "number"}, "height": {"type": "number"}, "weight": {"type": "number"}, "volumetricWeight": {"type": "number"}}}, "ToWebTarifaVolumenUnder": {"type": "object", "properties": {"length": {"type": "number"}, "width": {"type": "number"}, "height": {"type": "number"}, "weight": {"type": "number"}, "volumetric_weight": {"type": "number"}}}, "ToWebUsuarioDireccion": {"type": "object", "properties": {"idComuna": {"type": "integer", "format": "int32"}, "direccion": {"type": "string"}, "numero": {"type": "string"}, "adicional": {"type": "string"}, "ciudad": {"type": "string"}}}, "ToWebUsuarioDocumento": {"type": "object", "properties": {"idWeb": {"type": "string"}, "idDoc": {"type": "integer", "format": "int64"}, "nroOrden": {"type": "integer", "format": "int64"}, "orden": {"type": "string"}, "documento": {"type": "string"}, "formapago": {"type": "string"}, "formaentrega": {"type": "string"}, "estado": {"type": "string"}, "fecha": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "total": {"type": "number"}, "nroSeguimiento": {"type": "string"}, "urlSeguimiento": {"type": "string"}}}, "ToWebUsuarioDocumentoParam": {"type": "object", "properties": {"page": {"type": "integer", "format": "int64", "description": "No viaja si es null"}, "maxPage": {"type": "integer", "format": "int64", "description": "No viaja si es null"}, "maxRow": {"type": "integer", "format": "int64", "description": "No viaja si es null"}, "count": {"type": "integer", "format": "int64", "description": "No viaja si es null"}, "link": {"type": "string", "description": "No viaja si es null"}, "sort": {"type": "string", "description": "No viaja si es null"}, "idDoc": {"type": "integer", "format": "int64", "description": "No viaja si es null"}, "token": {"type": "string", "description": "No viaja si es null"}, "ip": {"type": "string", "description": "No viaja si es null"}}}, "ToWebUsuarioExtendido": {"type": "object", "properties": {"idUserWeb": {"type": "integer", "format": "int64"}, "email": {"type": "string"}, "nombre": {"type": "string"}, "giro": {"type": "string"}, "rut": {"type": "integer", "format": "int32"}, "documento": {"type": "string"}, "fono": {"type": "string"}, "estado": {"type": "integer", "format": "int32"}, "token": {"type": "string"}, "fechaRegistro": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaModificacion": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "fechaActivacion": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}, "idLista": {"type": "integer", "format": "int32"}, "lista": {"type": "string"}, "estadoGlosa": {"type": "string"}, "facturacion": {"$ref": "#/components/schemas/ToWebUsuarioDireccion"}, "despacho": {"$ref": "#/components/schemas/ToWebUsuarioDireccion"}}}, "ToWebUsuarioFavorito": {"type": "object", "properties": {"idProducto": {"type": "integer", "format": "int32"}, "fechaRegistro": {"type": "string", "description": "Fecha como texto, en el formato con que la escribe el ERP (yyyy-MM-dd o yyyy-MM-dd HH:mm:ss)"}}}, "ToWebUsuarioFavoritoParam": {"type": "object", "properties": {"idProducto": {"type": "integer", "format": "int32", "description": "No viaja si es null"}, "token": {"type": "string", "description": "No viaja si es null"}, "ip": {"type": "string", "description": "No viaja si es null"}}}, "Usuario": {"type": "object", "properties": {"idUser": {"type": "integer", "format": "int32"}, "username": {"type": "string"}, "rut": {"type": "string"}, "nombre": {"type": "string"}, "idSucursal": {"type": "integer", "format": "int32"}, "sucursales": {"type": "array", "items": {"type": "integer", "format": "int32"}}}}}, "responses": {"SinSitioFotos": {"description": "La base no tiene sitio de fotos: ni FOTOS_SITIO, ni SPHINX_WEBURL, ni url en el sphinx.ini, así que las imágenes no tendrian dirección publica", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problema"}}}}}, "securitySchemes": {"claveTienda": {"type": "http", "description": "Una clave de la base de la ruta, creada por la empresa en Sphinx para este sistema", "scheme": "bearer"}}}, "x-tagGroups": [{"name": "Primeros pasos", "tags": ["Estado"]}, {"name": "Catálogo", "tags": ["Fichas", "Precios", "Stock", "Disponibilidad", "Fotos", "Fusiones", "Maestros", "Contenido", "Arma tu PC"]}, {"name": "Ventas", "tags": ["Pedidos"]}, {"name": "Consultas", "tags": ["Boletas", "Despacho"]}, {"name": "Clientes del sitio", "tags": ["Cuenta", "Contactos", "Suscripciones"]}, {"name": "Reportes", "tags": ["Reportes"]}]}