{
    "info": {
        "name": "API de Chainlink v1.0.0",
        "_postman_id": "chainlink-api-v1",
        "description": "Generada de la especificación OpenAPI de Chainlink. Define las variables instancia y token.",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "auth": {
        "type": "bearer",
        "bearer": [
            {
                "key": "token",
                "value": "{{token}}",
                "type": "string"
            }
        ]
    },
    "variable": [
        {
            "key": "instancia",
            "value": "empresa"
        },
        {
            "key": "baseUrl",
            "value": "https://{{instancia}}.chainlink.mx/api/v1"
        },
        {
            "key": "token",
            "value": ""
        }
    ],
    "item": [
        {
            "name": "Productos",
            "description": "Catálogo de productos y sus categorías. El código (`item_code`) identifica al producto en documentos y existencias.",
            "item": [
                {
                    "name": "Listar productos",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/products?search=aceite",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "products"
                            ],
                            "query": [
                                {
                                    "key": "search",
                                    "value": "aceite"
                                }
                            ]
                        },
                        "description": "Devuelve el catálogo paginado. `search` busca por parte del código, del nombre o del código de barras.\nPara sincronizar solo lo que cambió, envíe en `updated_since` la fecha de la última lectura."
                    }
                },
                {
                    "name": "Crear un producto",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/products",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "products"
                            ],
                            "query": []
                        },
                        "description": "Da de alta un producto. El código (`item_code`, o `sku`) debe ser único en la instancia.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"item_code\": \"P-1004\",\n    \"name\": \"Frijol negro 900 g\",\n    \"barcode\": \"7501234567904\",\n    \"man_btch_num\": true,\n    \"sales_unit\": \"PZA\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Consultar un producto",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/products/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "products",
                                "101"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                },
                {
                    "name": "Actualizar un producto (PUT)",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/products/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "products",
                                "101"
                            ],
                            "query": []
                        },
                        "description": "Igual que `PATCH`; se conserva por compatibilidad. Cambia solo los campos enviados.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"name\": \"Aceite comestible 1 L\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Actualizar un producto",
                    "request": {
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/products/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "products",
                                "101"
                            ],
                            "query": []
                        },
                        "description": "Cambia solo los campos enviados.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"name\": \"Aceite comestible 1 L (caja 12)\",\n    \"barcode\": \"7501234567891\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Eliminar un producto",
                    "request": {
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/products/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "products",
                                "101"
                            ],
                            "query": []
                        },
                        "description": "Da de baja el producto. Su historial (recepciones, surtidos, existencias) se conserva."
                    }
                },
                {
                    "name": "Listar categorías",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/product-categories",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "product-categories"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                },
                {
                    "name": "Consultar una categoría",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/product-categories/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "product-categories",
                                "101"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                }
            ]
        },
        {
            "name": "Existencias",
            "description": "Existencias por ubicación, lote y serie, y niveles por producto (a la mano y disponible).",
            "item": [
                {
                    "name": "Listar existencias",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/stocks?warehouse=CEDIS-GDL",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "stocks"
                            ],
                            "query": [
                                {
                                    "key": "warehouse",
                                    "value": "CEDIS-GDL"
                                }
                            ]
                        },
                        "description": "Una fila por producto, ubicación, lote y serie. Filtra por producto (`product_id` o `item_code`), almacén\n(`warehouse_id` o `warehouse`), ubicación, lote, serie y estado. Para totales por producto se usa\n[niveles de existencia](#operation/listStockLevels)."
                    }
                },
                {
                    "name": "Consultar una fila de existencia",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/stocks/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "stocks",
                                "101"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                },
                {
                    "name": "Niveles de existencia por producto",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/stock-levels?item_code=P-1001%2CP-1002&warehouse=CEDIS-GDL",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "stock-levels"
                            ],
                            "query": [
                                {
                                    "key": "item_code",
                                    "value": "P-1001,P-1002"
                                },
                                {
                                    "key": "warehouse",
                                    "value": "CEDIS-GDL"
                                }
                            ]
                        },
                        "description": "Para cada producto, lo que hay **a la mano** (`on_hand`: todo lo que está en almacén) y lo **disponible**\n(`available`: en estado disponible, sin retenciones y descontando lo que reservan los pedidos abiertos). Son\nlas mismas cifras del evento `stock.updated`. Con `warehouse`, solo las de ese almacén.\n\n`updated_since` aquí significa «productos cuyas existencias se movieron desde esa fecha»."
                    }
                }
            ]
        },
        {
            "name": "Almacenes y ubicaciones",
            "description": "Almacenes, sus ubicaciones y el mapa publicado.",
            "item": [
                {
                    "name": "Listar almacenes",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/warehouses",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "warehouses"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                },
                {
                    "name": "Consultar un almacén",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/warehouses/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "warehouses",
                                "101"
                            ],
                            "query": []
                        },
                        "description": "El almacén con todas sus ubicaciones. Para almacenes grandes conviene paginar con `GET /warehouse-positions?warehouse_id=`."
                    }
                },
                {
                    "name": "Mapa publicado del almacén",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/warehouses/101/layout",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "warehouses",
                                "101",
                                "layout"
                            ],
                            "query": []
                        },
                        "description": "El mapa vigente del almacén (pasillos, racks y ubicaciones con sus coordenadas). Responde `ETag` con la\nversión: con `If-None-Match` y ese valor, la respuesta es `304` sin cuerpo si no cambió. Requiere el módulo\nde mapas; un almacén sin mapa publicado responde `404`."
                    }
                },
                {
                    "name": "Listar ubicaciones",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/warehouse-positions",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "warehouse-positions"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                },
                {
                    "name": "Consultar una ubicación",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/warehouse-positions/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "warehouse-positions",
                                "101"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                }
            ]
        },
        {
            "name": "Documentos de entrada y salida",
            "description": "Lo que el ERP manda a recibir (órdenes de compra, entradas) o a surtir (pedidos, remisiones). Cada documento",
            "item": [
                {
                    "name": "Listar documentos de entrada",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/entry-documents?external_ref=OC-2026-0042",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "entry-documents"
                            ],
                            "query": [
                                {
                                    "key": "external_ref",
                                    "value": "OC-2026-0042"
                                }
                            ]
                        },
                        "description": "Los documentos de entrada con su avance por línea (`open_qty`, `received_qty`). Un documento se busca por la\nreferencia del sistema de origen con `external_ref`."
                    }
                },
                {
                    "name": "Crear un documento de entrada",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/entry-documents",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "entry-documents"
                            ],
                            "query": []
                        },
                        "description": "Manda a recibir mercancía (orden de compra, entrada). Se valida con las mismas reglas que la plantilla de carga\nmasiva: productos, almacén, ubicación destino, lotes y series. La cabecera `Idempotency-Key` es obligatoria.\n\nSi ya existe un documento del mismo `type` con ese `external_ref`, responde `200` con ese documento en lugar de\ncrear otro; uno nuevo responde `201`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"external_ref\": \"OC-2026-0042\",\n    \"type\": \"Orden de Compra\",\n    \"doc_date\": \"2026-10-06\",\n    \"due_date\": \"2026-10-09\",\n    \"partner_code\": \"PRV-001\",\n    \"partner_name\": \"Distribuidora del Bajío\",\n    \"warehouse_code\": \"CEDIS-GDL\",\n    \"lines\": [\n        {\n            \"item_code\": \"P-1001\",\n            \"qty\": 48,\n            \"batch\": \"L2610\",\n            \"expiry_date\": \"2027-04-30\",\n            \"destination_bin\": \"A-01-01-1\"\n        },\n        {\n            \"item_code\": \"P-1002\",\n            \"qty\": 120\n        }\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Consultar un documento de entrada",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/entry-documents/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "entry-documents",
                                "101"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                },
                {
                    "name": "Listar documentos de salida",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/exit-documents?external_ref=PED-88121",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "exit-documents"
                            ],
                            "query": [
                                {
                                    "key": "external_ref",
                                    "value": "PED-88121"
                                }
                            ]
                        },
                        "description": "Los documentos de salida con su avance por línea (`open_qty`, `picked_qty`)."
                    }
                },
                {
                    "name": "Crear un documento de salida",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/exit-documents",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "exit-documents"
                            ],
                            "query": []
                        },
                        "description": "Manda a surtir un pedido (orden de venta, remisión, salida). Mismas reglas que la plantilla de carga masiva;\n`Idempotency-Key` obligatoria. Un `type` con un `external_ref` que ya existe responde `200` con ese documento.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"external_ref\": \"PED-88121\",\n    \"type\": \"Orden de Venta\",\n    \"doc_date\": \"2026-10-06\",\n    \"due_date\": \"2026-10-07\",\n    \"partner_code\": \"CLI-001\",\n    \"partner_name\": \"Abarrotes del Norte\",\n    \"warehouse_code\": \"CEDIS-GDL\",\n    \"priority\": \"Alta\",\n    \"ship_to\": \"Av. Vallarta 1200, Guadalajara\",\n    \"lines\": [\n        {\n            \"item_code\": \"P-1001\",\n            \"qty\": 6\n        }\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Consultar un documento de salida",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/exit-documents/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "exit-documents",
                                "101"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                }
            ]
        },
        {
            "name": "Recepciones, surtidos y traspasos",
            "description": "El trabajo que el almacén hizo sobre los documentos, con su operador, sus tiempos y sus líneas.",
            "item": [
                {
                    "name": "Listar recepciones",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/receipts",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "receipts"
                            ],
                            "query": []
                        },
                        "description": "Las recepciones (el trabajo de recibir un documento de entrada), de la más reciente a la más antigua."
                    }
                },
                {
                    "name": "Consultar una recepción",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/receipts/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "receipts",
                                "101"
                            ],
                            "query": []
                        },
                        "description": "La recepción con sus líneas recibidas (producto, cantidad, lote y series)."
                    }
                },
                {
                    "name": "Listar surtidos",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/pickings",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "pickings"
                            ],
                            "query": []
                        },
                        "description": "Los surtidos (el trabajo de surtir un documento de salida), del más reciente al más antiguo."
                    }
                },
                {
                    "name": "Consultar un surtido",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/pickings/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "pickings",
                                "101"
                            ],
                            "query": []
                        },
                        "description": "El surtido con sus líneas surtidas."
                    }
                },
                {
                    "name": "Listar traspasos",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/transfers",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "transfers"
                            ],
                            "query": []
                        },
                        "description": "Movimientos de mercancía entre ubicaciones o almacenes registrados en la operación."
                    }
                },
                {
                    "name": "Consultar un traspaso",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/transfers/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "transfers",
                                "101"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                }
            ]
        },
        {
            "name": "Órdenes de transferencia",
            "description": "Traslados de mercancía entre almacenes, de la creación a la recepción en destino.",
            "item": [
                {
                    "name": "Listar órdenes de transferencia",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/transfer-orders",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "transfer-orders"
                            ],
                            "query": []
                        },
                        "description": "Requiere el módulo de órdenes de transferencia; apagado, responde `404 transfer_orders_disabled`."
                    }
                },
                {
                    "name": "Crear una orden de transferencia",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/transfer-orders",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "transfer-orders"
                            ],
                            "query": []
                        },
                        "description": "Crea una orden en borrador o, con `release: true`, la libera para surtido de inmediato. Con un cliente de\nintegración, liberar exige `picker_id` (el surtidor). Un `external_ref` que ya existe responde `200` con esa orden.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"from_warehouse\": \"CEDIS-GDL\",\n    \"to_warehouse\": \"TDA-MTY\",\n    \"priority\": 50,\n    \"reason\": \"Reabasto semanal\",\n    \"due_at\": \"2026-10-08T18:00:00-06:00\",\n    \"external_ref\": \"TR-2026-0107\",\n    \"lines\": [\n        {\n            \"item_code\": \"P-1001\",\n            \"qty\": 24\n        }\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Consultar una orden de transferencia",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/transfer-orders/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "transfer-orders",
                                "101"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                }
            ]
        },
        {
            "name": "Olas",
            "description": "Grupos de pedidos que se surten juntos. Requiere el módulo de olas.",
            "item": [
                {
                    "name": "Listar olas",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/waves",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "waves"
                            ],
                            "query": []
                        },
                        "description": "Requiere el módulo de olas y el permiso `exits.manage` (o el alcance `pickings:read`)."
                    }
                },
                {
                    "name": "Planear una ola",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/waves",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "waves"
                            ],
                            "query": []
                        },
                        "description": "Planea una ola con una lista de surtidos (`picking_ids`) o con los filtros del planeador (`filters`). La ola\nqueda planeada; liberarla es decisión de un supervisor en la web.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"warehouse\": \"CEDIS-GDL\",\n    \"strategy\": \"batch\",\n    \"filters\": {\n        \"customer\": \"CLI-001\",\n        \"due_by\": \"2026-10-07\"\n    }\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Consultar una ola",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/waves/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "waves",
                                "101"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                }
            ]
        },
        {
            "name": "Carga masiva",
            "description": "Archivos de Excel o CSV con productos o documentos, validados antes de aplicarse.",
            "item": [
                {
                    "name": "Subir un archivo de carga masiva",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/imports",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "imports"
                            ],
                            "query": []
                        },
                        "description": "Sube un archivo `.xlsx` o `.csv` (máximo 5 MB) con la plantilla de la web y lo valida sin aplicar nada. Responde\n`202` con el resultado de la validación; el estado se consulta y la carga se confirma con\n[confirmar carga](#operation/commitImport). Los límites de filas dependen del plan (2,000 en Essentials,\n10,000 en Professional, 100,000 en Enterprise).",
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "kind",
                                    "value": "products",
                                    "type": "text"
                                },
                                {
                                    "key": "file",
                                    "type": "file",
                                    "src": []
                                }
                            ]
                        }
                    }
                },
                {
                    "name": "Consultar una carga",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/imports/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "imports",
                                "101"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                },
                {
                    "name": "Confirmar una carga",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/imports/101/commit",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "imports",
                                "101",
                                "commit"
                            ],
                            "query": []
                        },
                        "description": "Aplica las filas válidas de la carga. Si la carga no tiene nada por confirmar o ya se está confirmando, responde `409 import_refused`."
                    }
                }
            ]
        },
        {
            "name": "Clientes y proveedores",
            "description": "Los socios de negocio de las salidas (clientes) y de las entradas (proveedores).",
            "item": [
                {
                    "name": "Listar clientes",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/clients",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "clients"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                },
                {
                    "name": "Crear un cliente",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/clients",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "clients"
                            ],
                            "query": []
                        },
                        "description": "",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"name\": \"Abarrotes del Norte\",\n    \"document_type\": \"R\",\n    \"document_id\": 4011220,\n    \"email\": \"compras@abarrotesnorte.mx\",\n    \"phone\": \"81 5555 0101\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Consultar un cliente",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/clients/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "clients",
                                "101"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                },
                {
                    "name": "Actualizar un cliente (PUT)",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/clients/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "clients",
                                "101"
                            ],
                            "query": []
                        },
                        "description": "Igual que `PATCH`; se conserva por compatibilidad.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"phone\": \"33 1234 5679\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Actualizar un cliente",
                    "request": {
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/clients/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "clients",
                                "101"
                            ],
                            "query": []
                        },
                        "description": "Cambia solo los campos enviados.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"phone\": \"33 1234 5678\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Eliminar un cliente",
                    "request": {
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/clients/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "clients",
                                "101"
                            ],
                            "query": []
                        },
                        "description": "Da de baja el cliente; sus documentos anteriores se conservan."
                    }
                },
                {
                    "name": "Listar proveedores",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/providers",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "providers"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                },
                {
                    "name": "Crear un proveedor",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/providers",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "providers"
                            ],
                            "query": []
                        },
                        "description": "",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"name\": \"Distribuidora del Bajío\",\n    \"email\": \"ventas@dbajio.mx\",\n    \"phone\": \"477 555 0199\",\n    \"description\": \"Abarrotes y aceites\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Consultar un proveedor",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/providers/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "providers",
                                "101"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                },
                {
                    "name": "Actualizar un proveedor (PUT)",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/providers/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "providers",
                                "101"
                            ],
                            "query": []
                        },
                        "description": "Igual que `PATCH`; se conserva por compatibilidad.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"phone\": \"33 1234 5679\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Actualizar un proveedor",
                    "request": {
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/providers/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "providers",
                                "101"
                            ],
                            "query": []
                        },
                        "description": "Cambia solo los campos enviados.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"phone\": \"33 1234 5678\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Eliminar un proveedor",
                    "request": {
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/providers/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "providers",
                                "101"
                            ],
                            "query": []
                        },
                        "description": "Da de baja el proveedor; sus documentos anteriores se conservan."
                    }
                }
            ]
        },
        {
            "name": "Suscripciones a webhooks",
            "description": "Avisos HTTP firmados cuando algo cambia en el almacén. Requiere el plan Professional o Enterprise.",
            "item": [
                {
                    "name": "Listar suscripciones",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/webhooks",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "webhooks"
                            ],
                            "query": []
                        },
                        "description": "Todas las suscripciones de la empresa, sin el secreto de firma. Requiere el plan Professional o Enterprise (`webhooks.enabled`)."
                    }
                },
                {
                    "name": "Crear una suscripción",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/webhooks",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "webhooks"
                            ],
                            "query": []
                        },
                        "description": "Registra una URL para recibir los eventos indicados. La respuesta trae el secreto de firma (`secret`)\n**una sola vez**: debe guardarse para verificar `X-Chainlink-Signature`. Si no se envía `secret`, Chainlink genera uno.\n\nLa URL debe usar `https://` y apuntar a una dirección pública de internet: se rechazan con `422` las\ndirecciones privadas, locales, de enlace local, CGNAT, multicast, reservadas y de metadatos de la nube, en IPv4\ne IPv6, también cuando el dominio resuelve a una de ellas. La comprobación se repite en cada entrega.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"url\": \"https://erp.example.com/chainlink/webhooks\",\n    \"events\": [\n        \"receipt.completed\",\n        \"picking.completed\",\n        \"stock.updated\"\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Consultar una suscripción",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/webhooks/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "webhooks",
                                "101"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                },
                {
                    "name": "Cambiar una suscripción",
                    "request": {
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/webhooks/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "webhooks",
                                "101"
                            ],
                            "query": []
                        },
                        "description": "Cambia la URL, los eventos o el estado. Tras 10 entregas fallidas seguidas la suscripción se desactiva sola;\n`is_active: true` la reactiva y reinicia el contador de fallas.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"is_active\": true\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Eliminar una suscripción",
                    "request": {
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/webhooks/101",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "webhooks",
                                "101"
                            ],
                            "query": []
                        },
                        "description": ""
                    }
                }
            ]
        }
    ]
}