{
  "item": [
    {
      "name": "Autenticación",
      "item": [
        {
          "id": "55ec6d33-35b3-4006-ba0c-2b6de276a5ac",
          "name": "Login de cliente API",
          "request": {
            "name": "Login de cliente API",
            "description": {
              "content": "Autentica un cliente de integración mediante `client_id` y `client_secret` y retorna un `access_token` JWT que deberá enviarse en el header `Authorization: Bearer {token}` en las siguientes peticiones.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "auth",
                "client",
                "login"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "noauth"
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"client_id\": \"{{client_id}}\",\n  \"client_secret\": \"{{client_secret}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "1d1293b4-7fe5-4d80-a466-ee64e8d85c66",
              "name": "Autenticación exitosa",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "auth",
                    "client",
                    "login"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"client_id\": \"client_demo\",\n  \"client_secret\": \"secret_demo\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"success\",\n  \"response_message\": \"Autenticación API exitosa\",\n  \"token\": {\n    \"access_token\": \"eyJhbGciOiJIUzI1NiJ9...\",\n    \"token_type\": \"Bearer\",\n    \"expires_in\": 900\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "0b94a467-759b-423f-9e3c-c3dc63247b09",
              "name": "Faltan `client_id` o `client_secret`, no son texto o están vacíos",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "auth",
                    "client",
                    "login"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"client_id\": \"client_demo\",\n  \"client_secret\": \"secret_demo\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"client_id y client_secret deben ser válidos.\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "e39e5b8d-cb3f-48ee-8e94-84b83a5ecada",
              "name": "Credenciales inválidas (el `client_id` no existe o el `client_secret` no coincide)",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "auth",
                    "client",
                    "login"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"client_id\": \"client_demo\",\n  \"client_secret\": \"secret_demo\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"error\",\n  \"response_message\": \"Credenciales inválidas\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "2c1d2d78-897d-42ef-94b4-4da90e6c0030",
              "name": "API client desactivado",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "auth",
                    "client",
                    "login"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"client_id\": \"client_demo\",\n  \"client_secret\": \"secret_demo\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 403,\n  \"response_status\": \"error\",\n  \"response_message\": \"API client desactivado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "113fa35d-1284-42c0-aa8c-b1fb473604ad",
              "name": "Error interno, o el cuerpo no es un JSON válido",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "auth",
                    "client",
                    "login"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"client_id\": \"client_demo\",\n  \"client_secret\": \"secret_demo\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"error\",\n  \"response_message\": \"Error interno al autenticar API client\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "const body = pm.response.json();",
                  "if (body && body.token && body.token.access_token) {",
                  "  pm.collectionVariables.set('access_token', body.token.access_token);",
                  "  console.log('Token guardado en access_token');",
                  "}"
                ]
              }
            }
          ],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "Órdenes",
      "item": [
        {
          "id": "970a1e59-d9a8-48e0-b856-4769e5b8fd34",
          "name": "Crear una nueva orden",
          "request": {
            "name": "Crear una nueva orden",
            "description": {
              "content": "Crea una orden de envío, genera la guía de despacho y descuenta el costo del saldo prepago.\n\n**Antes de crear la orden, obtén estos IDs:**\n\n| Campo de la orden | De dónde sale | Campo de la respuesta |\n| --- | --- | --- |\n| `branchInfo.branchAddressId` (dirección de recolecta) | `GET /api/branchs/branchsAddresses`, o el que devuelve `POST /api/branchs/branchsAddresses` al crearla | `branchAddressId` |\n| `branchInfo.branchsClientId` (cliente y dirección de entrega) | `GET /api/branchs/branchsClient` o `GET /api/branchs/branchsClient/search`, o el que devuelve `POST /api/branchs/branchsClient` al registrarlo | `branchsClientId` |\n| `courier.courierServiceId` (mensajería y servicio) | `POST /api/courier` (cotizar), enviando la dirección de recolecta y el municipio del cliente | `courierServiceId` |\n| `courier.agencias` (opcional) | `GET /api/courier/agencies`, solo si la mensajería trabaja con agencias | ID de la agencia |\n\nLa dirección de entrega no se envía aparte: es la que tiene registrada el cliente.\n\nLa validación se hace por secciones (`branchInfo`, `courier`, `location`, `product`, `order`) y se informa el primer error encontrado.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "orders"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"branchInfo\": {\n    \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n    \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\"\n  },\n  \"courier\": {\n    \"courierServiceId\": \"019f88a7-40d5-75b5-add9-87e652d9ba69\",\n    \"agencias\": {}\n  },\n  \"location\": {\n    \"latitude\": \"13.692940\",\n    \"longitude\": \"-89.218191\"\n  },\n  \"product\": {\n    \"productDescription\": \"Ropa\",\n    \"totalWeight\": 4,\n    \"cantPackages\": 1,\n    \"inventoryItems\": [\n      {\n        \"productId\": \"e9b63c24-8a62-3afe-0d2b-1587bb98d18e\",\n        \"quantity\": 7382,\n        \"price\": 4776.440597740115\n      },\n      {\n        \"productId\": \"41f574eb-bfa6-4d15-3ab9-e8942614e23a\",\n        \"quantity\": 9859,\n        \"price\": 75.84151767080493\n      }\n    ]\n  },\n  \"order\": {\n    \"shippingAmount\": 10,\n    \"onDelivery\": 1,\n    \"paymentOrderCollection\": 0,\n    \"comments\": \"\",\n    \"integrationOrderRef\": \"string\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "1000c572-5f1d-4d87-b403-564266d597fe",
              "name": "Orden creada correctamente",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"branchInfo\": {\n    \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n    \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\"\n  },\n  \"courier\": {\n    \"courierServiceId\": \"019f88a7-40d5-75b5-add9-87e652d9ba69\",\n    \"agencias\": {}\n  },\n  \"location\": {\n    \"latitude\": \"13.692940\",\n    \"longitude\": \"-89.218191\"\n  },\n  \"product\": {\n    \"productDescription\": \"Ropa\",\n    \"totalWeight\": 4,\n    \"cantPackages\": 1,\n    \"inventoryItems\": [\n      {\n        \"productId\": \"1d4ab231-4167-b109-266d-21a3c315c5b4\",\n        \"quantity\": 1823,\n        \"price\": 9297.93140089587\n      },\n      {\n        \"productId\": \"a3e8efc0-824d-7ca2-8a83-659fb94c368a\",\n        \"quantity\": 5987,\n        \"price\": 955.2390458121284\n      }\n    ]\n  },\n  \"order\": {\n    \"shippingAmount\": 10,\n    \"onDelivery\": 1,\n    \"paymentOrderCollection\": 0,\n    \"comments\": \"\",\n    \"integrationOrderRef\": \"string\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Created",
              "code": 201,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 201,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Orden creada correctamente\",\n  \"data\": {\n    \"ordersId\": \"0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\",\n    \"clientName\": \"Cliente Prueba\",\n    \"clientEmail\": \"cliente.prueba@example.com\",\n    \"comprobante\": \"29137811\",\n    \"courierName\": \"Mensajería Ejemplo\",\n    \"requestDate\": \"2026-10-07 01:49:25.000000\",\n    \"availableBalance\": 42.22,\n    \"consignmentValue\": 10,\n    \"isFirstOrderOfDay\": 1\n  },\n  \"guide\": {\n    \"URLguide\": \"https://mensajeria.example.com/guias/GUIA-PRUEBA.pdf\"\n  },\n  \"tracking\": {\n    \"URLtracking\": \"https://tracking.example.com/?orderId=0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008&identifier=abc123\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "6be41018-590b-4a96-a3f0-f15f8a826c34",
              "name": "Datos de la solicitud inválidos",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"branchInfo\": {\n    \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n    \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\"\n  },\n  \"courier\": {\n    \"courierServiceId\": \"019f88a7-40d5-75b5-add9-87e652d9ba69\",\n    \"agencias\": {}\n  },\n  \"location\": {\n    \"latitude\": \"13.692940\",\n    \"longitude\": \"-89.218191\"\n  },\n  \"product\": {\n    \"productDescription\": \"Ropa\",\n    \"totalWeight\": 4,\n    \"cantPackages\": 1,\n    \"inventoryItems\": [\n      {\n        \"productId\": \"1d4ab231-4167-b109-266d-21a3c315c5b4\",\n        \"quantity\": 1823,\n        \"price\": 9297.93140089587\n      },\n      {\n        \"productId\": \"a3e8efc0-824d-7ca2-8a83-659fb94c368a\",\n        \"quantity\": 5987,\n        \"price\": 955.2390458121284\n      }\n    ]\n  },\n  \"order\": {\n    \"shippingAmount\": 10,\n    \"onDelivery\": 1,\n    \"paymentOrderCollection\": 0,\n    \"comments\": \"\",\n    \"integrationOrderRef\": \"string\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error en sección \\\"branchInfo\\\": Falta la sección completa\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "abe20c2f-2fb9-4e6d-a591-2e8f1afb5686",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"branchInfo\": {\n    \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n    \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\"\n  },\n  \"courier\": {\n    \"courierServiceId\": \"019f88a7-40d5-75b5-add9-87e652d9ba69\",\n    \"agencias\": {}\n  },\n  \"location\": {\n    \"latitude\": \"13.692940\",\n    \"longitude\": \"-89.218191\"\n  },\n  \"product\": {\n    \"productDescription\": \"Ropa\",\n    \"totalWeight\": 4,\n    \"cantPackages\": 1,\n    \"inventoryItems\": [\n      {\n        \"productId\": \"1d4ab231-4167-b109-266d-21a3c315c5b4\",\n        \"quantity\": 1823,\n        \"price\": 9297.93140089587\n      },\n      {\n        \"productId\": \"a3e8efc0-824d-7ca2-8a83-659fb94c368a\",\n        \"quantity\": 5987,\n        \"price\": 955.2390458121284\n      }\n    ]\n  },\n  \"order\": {\n    \"shippingAmount\": 10,\n    \"onDelivery\": 1,\n    \"paymentOrderCollection\": 0,\n    \"comments\": \"\",\n    \"integrationOrderRef\": \"string\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "a73a3ff3-ba22-4fb9-b329-1af86e532805",
              "name": "Regla de negocio (monto insuficiente, dirección que no pertenece al comercio, saldo)",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"branchInfo\": {\n    \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n    \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\"\n  },\n  \"courier\": {\n    \"courierServiceId\": \"019f88a7-40d5-75b5-add9-87e652d9ba69\",\n    \"agencias\": {}\n  },\n  \"location\": {\n    \"latitude\": \"13.692940\",\n    \"longitude\": \"-89.218191\"\n  },\n  \"product\": {\n    \"productDescription\": \"Ropa\",\n    \"totalWeight\": 4,\n    \"cantPackages\": 1,\n    \"inventoryItems\": [\n      {\n        \"productId\": \"1d4ab231-4167-b109-266d-21a3c315c5b4\",\n        \"quantity\": 1823,\n        \"price\": 9297.93140089587\n      },\n      {\n        \"productId\": \"a3e8efc0-824d-7ca2-8a83-659fb94c368a\",\n        \"quantity\": 5987,\n        \"price\": 955.2390458121284\n      }\n    ]\n  },\n  \"order\": {\n    \"shippingAmount\": 10,\n    \"onDelivery\": 1,\n    \"paymentOrderCollection\": 0,\n    \"comments\": \"\",\n    \"integrationOrderRef\": \"string\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Conflict",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 409,\n  \"response_status\": \"Error\",\n  \"response_message\": \"El monto a cobrar ($1.00) no cubre el costo del envío ($3.39) más las comisiones ($0.50). El monto mínimo requerido es $3.89\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "d5ab466e-eca7-4a0b-956c-01f9bc7b85be",
              "name": "La mensajería no pudo generar el comprobante de la guía. Intenta nuevamente o elige otro servicio en la cotización.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"branchInfo\": {\n    \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n    \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\"\n  },\n  \"courier\": {\n    \"courierServiceId\": \"019f88a7-40d5-75b5-add9-87e652d9ba69\",\n    \"agencias\": {}\n  },\n  \"location\": {\n    \"latitude\": \"13.692940\",\n    \"longitude\": \"-89.218191\"\n  },\n  \"product\": {\n    \"productDescription\": \"Ropa\",\n    \"totalWeight\": 4,\n    \"cantPackages\": 1,\n    \"inventoryItems\": [\n      {\n        \"productId\": \"1d4ab231-4167-b109-266d-21a3c315c5b4\",\n        \"quantity\": 1823,\n        \"price\": 9297.93140089587\n      },\n      {\n        \"productId\": \"a3e8efc0-824d-7ca2-8a83-659fb94c368a\",\n        \"quantity\": 5987,\n        \"price\": 955.2390458121284\n      }\n    ]\n  },\n  \"order\": {\n    \"shippingAmount\": 10,\n    \"onDelivery\": 1,\n    \"paymentOrderCollection\": 0,\n    \"comments\": \"\",\n    \"integrationOrderRef\": \"string\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unprocessable Entity (WebDAV) (RFC 4918)",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 422,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Tuvimos un inconveniente al generar el comprobante con el courier. Intenta nuevamente o selecciona otro courier.\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "c8a6e937-0680-4a81-8699-36ccdd27342b",
              "name": "Error interno al crear la orden. El mensaje puede variar e incluir el detalle del error.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"branchInfo\": {\n    \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n    \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\"\n  },\n  \"courier\": {\n    \"courierServiceId\": \"019f88a7-40d5-75b5-add9-87e652d9ba69\",\n    \"agencias\": {}\n  },\n  \"location\": {\n    \"latitude\": \"13.692940\",\n    \"longitude\": \"-89.218191\"\n  },\n  \"product\": {\n    \"productDescription\": \"Ropa\",\n    \"totalWeight\": 4,\n    \"cantPackages\": 1,\n    \"inventoryItems\": [\n      {\n        \"productId\": \"1d4ab231-4167-b109-266d-21a3c315c5b4\",\n        \"quantity\": 1823,\n        \"price\": 9297.93140089587\n      },\n      {\n        \"productId\": \"a3e8efc0-824d-7ca2-8a83-659fb94c368a\",\n        \"quantity\": 5987,\n        \"price\": 955.2390458121284\n      }\n    ]\n  },\n  \"order\": {\n    \"shippingAmount\": 10,\n    \"onDelivery\": 1,\n    \"paymentOrderCollection\": 0,\n    \"comments\": \"\",\n    \"integrationOrderRef\": \"string\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al crear la orden\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "f92fded1-1957-4083-a8ca-d6bc7d768546",
          "name": "Cancelar órdenes",
          "request": {
            "name": "Cancelar órdenes",
            "description": {
              "content": "Cancela una o varias órdenes (máximo 50) en una sola petición.\nLa respuesta general retorna 200 si la solicitud se procesó; el resultado de **cada orden** se valida dentro de `data[]`.\n\nCódigos posibles en cada elemento de `data[]`: `200` (cancelada), un código de error con el motivo si la orden no se puede cancelar (por ejemplo, por su estado actual), `422` si la mensajería no confirmó la cancelación y `500` por un error interno.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "orders"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "PATCH",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reason\": \"Cliente solicitó cancelación\",\n  \"orderIds\": [\n    \"0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\",\n    \"0199a1b2-8888-7e5f-8a6b-1c2d3e4f0009\"\n  ],\n  \"orderId\": \"f75422c2-cdb0-ee9e-c5f6-fbbf2bd30886\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "3af227c1-0cd9-4ec8-b748-426f0ff6b711",
              "name": "Cancelación procesada; revisar el resultado de cada orden en `data[]`",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "PATCH",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"reason\": \"Cliente solicitó cancelación\",\n  \"orderIds\": [\n    \"0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\",\n    \"0199a1b2-8888-7e5f-8a6b-1c2d3e4f0009\"\n  ],\n  \"orderId\": \"f75422c2-cdb0-ee9e-c5f6-fbbf2bd30886\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Cancelación procesada\",\n  \"data\": [\n    {\n      \"orderId\": \"0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\",\n      \"response_code\": 409,\n      \"response_status\": \"Error\",\n      \"response_message\": \"La orden no puede ser cancelada en su estado actual (CANCELADO).\"\n    },\n    {\n      \"orderId\": \"0199a1b2-8888-7e5f-8a6b-1c2d3e4f0009\",\n      \"response_code\": 200,\n      \"response_status\": \"Success\",\n      \"response_message\": \"La orden fue cancelada exitosamente.\",\n      \"requestDate\": \"07/10/2026, 07:52 p. m.\"\n    },\n    {\n      \"orderId\": \"0199a1b2-9999-7e5f-8a6b-1c2d3e4f0010\",\n      \"response_code\": 422,\n      \"response_status\": \"Error\",\n      \"response_message\": \"No se logró cancelar la orden del lado del courier MENSAJERÍA EJEMPLO\"\n    }\n  ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "2fa82505-3a34-4269-912f-0cee9f47b728",
              "name": "Parámetros inválidos. Mensajes posibles: `orderIds debe ser un UUID o un arreglo de UUIDs`, `orderIds no puede estar vacío`,\n`Máximo 50 órdenes por operación`, `Todos los orderIds deben ser UUIDs válidos`, `reason es requerido y debe ser una cadena válida`,\n`reason no puede exceder 255 caracteres`.\n",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "PATCH",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"reason\": \"Cliente solicitó cancelación\",\n  \"orderIds\": [\n    \"0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\",\n    \"0199a1b2-8888-7e5f-8a6b-1c2d3e4f0009\"\n  ],\n  \"orderId\": \"f75422c2-cdb0-ee9e-c5f6-fbbf2bd30886\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"orderIds debe ser un UUID o un arreglo de UUIDs\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "55465ca1-c79f-46ab-b381-87fd8a5d5b34",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "PATCH",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"reason\": \"Cliente solicitó cancelación\",\n  \"orderIds\": [\n    \"0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\",\n    \"0199a1b2-8888-7e5f-8a6b-1c2d3e4f0009\"\n  ],\n  \"orderId\": \"f75422c2-cdb0-ee9e-c5f6-fbbf2bd30886\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "d0189730-59ef-4b9d-84e5-4873e9299345",
              "name": "Error interno al procesar la cancelación, o el body no es un JSON válido",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "PATCH",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"reason\": \"Cliente solicitó cancelación\",\n  \"orderIds\": [\n    \"0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\",\n    \"0199a1b2-8888-7e5f-8a6b-1c2d3e4f0009\"\n  ],\n  \"orderId\": \"f75422c2-cdb0-ee9e-c5f6-fbbf2bd30886\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al procesar cancelación de órdenes\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "da7d99f8-9e6e-4638-887f-3e42c575b970",
          "name": "Obtener URL de la guía de envío",
          "request": {
            "name": "Obtener URL de la guía de envío",
            "description": {
              "content": "Retorna la URL de la guía de envío (para visualizar o imprimir) de una orden del comercio.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "orders"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [
                {
                  "disabled": false,
                  "key": "OrderId",
                  "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008",
                  "description": "(Required) ID de la orden (`data.ordersId` al crearla)."
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET"
          },
          "response": [
            {
              "id": "eb6bde1b-55d0-4b80-bee7-ca9d79d4e64d",
              "name": "Guía obtenida correctamente",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "OrderId",
                      "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Guía obtenida correctamente\",\n  \"data\": {\n    \"guideUrl\": \"https://mensajeria.example.com/guias/GUIA-PRUEBA.pdf\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "5b2f5af0-dabc-49b2-9291-abab4c6d9969",
              "name": "Falta el parámetro OrderId",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "OrderId",
                      "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"OrderId es requerido\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "d68181ec-7640-45dc-8bab-4ce6bea094b6",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "OrderId",
                      "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "8e2d2290-b1ee-41ff-8f0f-6cc1bdd022f4",
              "name": "No se encontró la guía de la orden",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "OrderId",
                      "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 404,\n  \"response_status\": \"Error\",\n  \"response_message\": \"No se ha encontrado la guía correspondiente a este número de orden. Verifique que la orden haya sido procesada correctamente o intente más tarde.\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "92128080-9089-479c-b80e-e9562d110341",
              "name": "Error interno al obtener la guía",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "OrderId",
                      "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener la guía del número de orden\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "4879784d-ed89-4b92-8786-84e5d258b314",
          "name": "Obtener el resumen de seguimiento de una orden",
          "request": {
            "name": "Obtener el resumen de seguimiento de una orden",
            "description": {
              "content": "Retorna el resumen de una orden del comercio: datos del comercio, del destinatario y de la orden, sus movimientos (el último es el estado actual) y las URLs de la guía y del seguimiento público. Los códigos de estado se interpretan con `GET /api/statusMain`.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "orders",
                "tracking"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [
                {
                  "disabled": false,
                  "key": "OrderId",
                  "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008",
                  "description": "(Required) ID de la orden a rastrear."
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET"
          },
          "response": [
            {
              "id": "966f06de-b868-4c0c-a383-85aae54fd584",
              "name": "Resumen de la orden encontrado",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders",
                    "tracking"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "OrderId",
                      "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Resumen de la orden obtenido correctamente\",\n  \"data\": {\n    \"commerce\": {\n      \"branchsId\": \"0199a1b2-0000-7e5f-8a6b-1c2d3e4f0001\",\n      \"branchsName\": \"Comercio Prueba\",\n      \"branchsAddress\": \"Calle Principal 123, Colonia Prueba\",\n      \"branchDepartment\": \"SAN SALVADOR\",\n      \"branchsMunicipality\": \"SAN SALVADOR CENTRO\"\n    },\n    \"recipient\": {\n      \"recipientName\": \"Cliente Prueba\",\n      \"recipientAddress\": \"Calle Ficticia #123\",\n      \"recipientDepartment\": \"LA LIBERTAD\",\n      \"recipientMunicipality\": \"LA LIBERTAD SUR\",\n      \"comments\": \"Entregar en horario de oficina\"\n    },\n    \"order\": {\n      \"orderId\": \"0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\",\n      \"comprobante\": \"VOL-000123\",\n      \"courierName\": \"Mensajería Ejemplo\",\n      \"createdAt\": \"2026-10-07 10:15:00\",\n      \"onDelivery\": true,\n      \"consignmentValue\": 25,\n      \"deliveryCost\": 3.5,\n      \"totalWeight\": 1.5,\n      \"cantPackages\": 1,\n      \"productDescription\": \"Ropa\"\n    },\n    \"trackingMovement\": [\n      {\n        \"statusMainCode\": \"CONFIRMED\",\n        \"statusMainDescription\": \"Pedido confirmado\",\n        \"subStatusCode\": \"CONFIRMED\",\n        \"subStatusDescription\": \"Pedido confirmado\",\n        \"statusColor\": \"#2E7D32\",\n        \"statusIcon\": \"fa-solid fa-check\",\n        \"dateMovement\": \"2026-10-07 10:15:00\",\n        \"datetimeMovementFormatted\": \"07/10/2026 10:15 a. m.\"\n      },\n      {\n        \"statusMainCode\": \"IN_ROUTE\",\n        \"statusMainDescription\": \"En ruta de entrega\",\n        \"subStatusCode\": \"IN_ROUTE\",\n        \"subStatusDescription\": \"En ruta de entrega\",\n        \"statusColor\": \"#1565C0\",\n        \"statusIcon\": \"fa-solid fa-truck\",\n        \"dateMovement\": \"2026-10-07 14:30:00\",\n        \"datetimeMovementFormatted\": \"07/10/2026 2:30 p. m.\"\n      }\n    ],\n    \"guide\": {\n      \"URLguide\": \"https://mensajeria.example.com/guias/GUIA-PRUEBA.pdf\"\n    },\n    \"tracking\": {\n      \"URLtracking\": \"https://tracking.example.com/?orderId=0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008&identifier=abc123\"\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "6a175c07-e0ed-44b7-8a6c-ca9c85f4fb4c",
              "name": "Falta el parámetro OrderId",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders",
                    "tracking"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "OrderId",
                      "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Debe enviar un orderId válido\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "85e4358d-0274-4991-873f-29323c3ceb91",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders",
                    "tracking"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "OrderId",
                      "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "f8c2f562-740b-4ee6-8f5e-774f8d35aa87",
              "name": "Error interno al obtener el resumen de la orden",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders",
                    "tracking"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "OrderId",
                      "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error inesperado al obtener el resumen de la orden\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "d0d16cf9-a94b-49d9-840d-80e0f2f054e8",
          "name": "Obtener órdenes con incidencias",
          "request": {
            "name": "Obtener órdenes con incidencias",
            "description": {
              "content": "Retorna las órdenes del comercio que están actualmente en incidencia (por ejemplo, destinatario ausente o dirección incorrecta), con su última incidencia y el courier.\nIncluye un resumen: total de órdenes en incidencia, couriers y tipos de incidencia distintos, y la fecha de la incidencia más reciente.\n\nEs una consulta: no registra incidencias. El body es obligatorio, pero sus campos son opcionales: con `{}` retorna la primera página (10 órdenes).\nPara ver el detalle de todas las incidencias de una orden, usa `GET /api/orders/incidents/{ordersId}`.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "orders",
                "incidents"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"filters\": {\n    \"search\": \"29137811\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 10\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "eeab4e89-10f7-4aef-b7ec-797aa9b4def2",
              "name": "Órdenes en incidencia obtenidas",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders",
                    "incidents"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"search\": \"29137811\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 10\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"success\",\n  \"response_message\": \"Incidencias actuales obtenidas correctamente.\",\n  \"data\": {\n    \"pagination\": {\n      \"page\": 1,\n      \"limit\": 10,\n      \"total\": 1,\n      \"totalPages\": 1,\n      \"hasNext\": 0,\n      \"hasPrev\": 0\n    },\n    \"summary\": {\n      \"totalOrdersInIncident\": 1,\n      \"totalDistinctCouriers\": 1,\n      \"totalDistinctIncidentStatuses\": 1,\n      \"latestIncidentAt\": \"2026-10-08 09:30:00\"\n    },\n    \"orders\": [\n      {\n        \"orderId\": \"0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\",\n        \"comprobante\": \"29137811\",\n        \"integrationOrderRef\": null,\n        \"courier\": {\n          \"courierId\": \"019f81b1-a481-77d5-be76-6c74b42c1e59\",\n          \"courierName\": \"Mensajería Ejemplo\",\n          \"courierLogo\": \"https://storage.example.com/logos/mensajeria-ejemplo.png\"\n        },\n        \"latestIncident\": {\n          \"incidentId\": \"0199a1b2-1717-7e5f-8a6b-1c2d3e4f0071\",\n          \"statusMainId\": \"0199a1b2-5555-7e5f-8a6b-1c2d3e4f0025\",\n          \"statusDescription\": \"Incidencia\",\n          \"subStatusId\": \"0199a1b2-6666-7e5f-8a6b-1c2d3e4f0035\",\n          \"subStatusDescription\": \"Incidencia reportada\",\n          \"comment\": \"No se encontró al destinatario en la dirección.\",\n          \"reportedAt\": \"2026-10-08 09:30:00\"\n        }\n      }\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "d3c31242-2276-4050-ba89-6160c0407410",
              "name": "Filtro o paginación inválidos. Formato del mensaje: `Error en campo \"<campo>\": <motivo>`.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders",
                    "incidents"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"search\": \"29137811\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 10\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error en campo \\\"filters.search\\\": debe ser texto válido (máx. 250 caracteres)\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "2b3396d7-9f84-4cd9-b27e-aa7d26e3a252",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders",
                    "incidents"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"search\": \"29137811\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 10\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "d5b96b8e-c961-4045-abdd-5602e67e5d69",
              "name": "Error interno",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders",
                    "incidents"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"search\": \"29137811\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 10\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener las incidencias actuales\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "7b480032-e9ac-4dab-9aaf-fe73f14f4890",
          "name": "Obtener las incidencias de una orden (por parámetro)",
          "request": {
            "name": "Obtener las incidencias de una orden (por parámetro)",
            "description": {
              "content": "Igual que `GET /api/orders/incidents/{ordersId}`, pero recibe el ID de la orden como parámetro `OrderId` en la URL.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "orders",
                "incidents"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [
                {
                  "disabled": false,
                  "key": "OrderId",
                  "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008",
                  "description": "(Required) ID de la orden (`data.ordersId` al crearla)."
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET"
          },
          "response": [
            {
              "id": "7ec1b45b-4924-404f-8d32-a949dcb3a05d",
              "name": "Incidencias de la orden obtenidas. Misma respuesta que `GET /api/orders/incidents/{ordersId}`.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders",
                    "incidents"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "OrderId",
                      "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"success\",\n  \"response_message\": \"Incidencias de la orden obtenidas correctamente.\",\n  \"data\": {\n    \"order\": {\n      \"orderId\": \"0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\",\n      \"comprobante\": \"29137811\",\n      \"integrationOrderRef\": null,\n      \"isCurrentlyInIncident\": true,\n      \"currentStatus\": {\n        \"statusMainId\": \"0199a1b2-5555-7e5f-8a6b-1c2d3e4f0025\",\n        \"description\": \"Incidencia\",\n        \"flowGroup\": \"incident\",\n        \"color\": \"#e67e22\",\n        \"icon\": \"triangle-exclamation\"\n      }\n    },\n    \"summary\": {\n      \"totalIncidents\": 1\n    },\n    \"incidents\": [\n      {\n        \"incidentId\": \"0199a1b2-1717-7e5f-8a6b-1c2d3e4f0071\",\n        \"trackingId\": \"0199a1b2-1818-7e5f-8a6b-1c2d3e4f0072\",\n        \"statusMainId\": \"0199a1b2-5555-7e5f-8a6b-1c2d3e4f0025\",\n        \"statusDescription\": \"Incidencia\",\n        \"statusColor\": \"#e67e22\",\n        \"statusIcon\": \"triangle-exclamation\",\n        \"subStatusId\": \"0199a1b2-6666-7e5f-8a6b-1c2d3e4f0035\",\n        \"subStatusDescription\": \"Incidencia reportada\",\n        \"comment\": \"No se encontró al destinatario en la dirección.\",\n        \"source\": \"tracking\",\n        \"reportedAt\": \"2026-10-08 09:30:00\"\n      }\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "868d99a5-478b-4486-b911-2eff51906c02",
              "name": "Falta el parámetro OrderId",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders",
                    "incidents"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "OrderId",
                      "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"OrderId es requerido\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "c801aa2b-be2b-4752-93da-73aee8c28f54",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders",
                    "incidents"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "OrderId",
                      "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "74ff03bc-f5ac-492e-9f9a-0008a1a30f1c",
              "name": "Error interno",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders",
                    "incidents"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "OrderId",
                      "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener las incidencias de la orden\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "59db980b-45ee-45f5-93f2-d38066b56078",
          "name": "Obtener las incidencias de una orden",
          "request": {
            "name": "Obtener las incidencias de una orden",
            "description": {
              "content": "Retorna el estado actual de una orden del comercio y todas sus incidencias, de la más reciente a la más antigua.\n`order.isCurrentlyInIncident` indica si la orden sigue en incidencia.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "orders",
                "incidents",
                ":ordersId"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008",
                  "key": "ordersId",
                  "description": "(Required) ID de la orden (`data.ordersId` al crearla)."
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET"
          },
          "response": [
            {
              "id": "9c058dec-cd05-426e-8f8b-25aa789dad0d",
              "name": "Incidencias de la orden obtenidas",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders",
                    "incidents",
                    ":ordersId"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008",
                      "key": "ordersId",
                      "description": "(Required) ID de la orden (`data.ordersId` al crearla)."
                    }
                  ]
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"success\",\n  \"response_message\": \"Incidencias de la orden obtenidas correctamente.\",\n  \"data\": {\n    \"order\": {\n      \"orderId\": \"0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\",\n      \"comprobante\": \"29137811\",\n      \"integrationOrderRef\": null,\n      \"isCurrentlyInIncident\": true,\n      \"currentStatus\": {\n        \"statusMainId\": \"0199a1b2-5555-7e5f-8a6b-1c2d3e4f0025\",\n        \"description\": \"Incidencia\",\n        \"flowGroup\": \"incident\",\n        \"color\": \"#e67e22\",\n        \"icon\": \"triangle-exclamation\"\n      }\n    },\n    \"summary\": {\n      \"totalIncidents\": 1\n    },\n    \"incidents\": [\n      {\n        \"incidentId\": \"0199a1b2-1717-7e5f-8a6b-1c2d3e4f0071\",\n        \"trackingId\": \"0199a1b2-1818-7e5f-8a6b-1c2d3e4f0072\",\n        \"statusMainId\": \"0199a1b2-5555-7e5f-8a6b-1c2d3e4f0025\",\n        \"statusDescription\": \"Incidencia\",\n        \"statusColor\": \"#e67e22\",\n        \"statusIcon\": \"triangle-exclamation\",\n        \"subStatusId\": \"0199a1b2-6666-7e5f-8a6b-1c2d3e4f0035\",\n        \"subStatusDescription\": \"Incidencia reportada\",\n        \"comment\": \"No se encontró al destinatario en la dirección.\",\n        \"source\": \"tracking\",\n        \"reportedAt\": \"2026-10-08 09:30:00\"\n      }\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "9e2f51d1-6459-4c03-93e0-fda6d5c6a657",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders",
                    "incidents",
                    ":ordersId"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008",
                      "key": "ordersId",
                      "description": "(Required) ID de la orden (`data.ordersId` al crearla)."
                    }
                  ]
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "5cd462ea-b8c1-463d-8aca-c0940f486073",
              "name": "Error interno",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "orders",
                    "incidents",
                    ":ordersId"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008",
                      "key": "ordersId",
                      "description": "(Required) ID de la orden (`data.ordersId` al crearla)."
                    }
                  ]
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener las incidencias de la orden\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "Couriers",
      "item": [
        {
          "id": "c7c72141-5a1f-4912-aaf8-4f89e180365e",
          "name": "Obtener modalidades de servicio",
          "request": {
            "name": "Obtener modalidades de servicio",
            "description": {
              "content": "Retorna las modalidades de servicio disponibles. El `serviceModeCode` se envía como `typeService` al cotizar (`POST /api/courier`).",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "courier",
                "serviceMode"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET"
          },
          "response": [
            {
              "id": "09777c6c-c1e6-46b4-849f-57c2fb3316df",
              "name": "Modalidades obtenidas",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "serviceMode"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Modos de servicio obtenidos correctamente\",\n  \"data\": [\n    {\n      \"serviceModeId\": \"0199a1b2-eeee-7e5f-8a6b-1c2d3e4f000f\",\n      \"serviceModeCode\": \"NORMAL\",\n      \"serviceModeName\": \"Entrega estándar\",\n      \"serviceModeDescription\": \"Entrega en los días hábiles indicados por el courier.\",\n      \"requiresCoverageValidation\": true\n    }\n  ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "62fd0644-0f1d-4c97-b49d-9c859c1ede34",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "serviceMode"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "82e9f5ae-6b51-433f-8189-fd780e5935c4",
              "name": "Error interno",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "serviceMode"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"error\",\n  \"response_message\": \"Error inesperado al obtener modos de servicio\",\n  \"data\": []\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "b16c7103-3a25-4b18-9f41-dda040ac820a",
          "name": "Cotizar envío (couriers disponibles)",
          "request": {
            "name": "Cotizar envío (couriers disponibles)",
            "description": {
              "content": "Retorna los servicios de envío disponibles para una dirección de recolecta y un destino, con su costo, comisión, fechas estimadas y agencias.\nDel servicio elegido se toma el `courierServiceId` para crear la orden (`POST /api/orders`).\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "courier"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n  \"shippingAmount\": 10,\n  \"weight\": 4,\n  \"municipalityCode\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n  \"courierName\": \"\",\n  \"typeService\": \"NORMAL\",\n  \"cantPackages\": 1\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "170de15e-0388-4ea7-9253-b84ff4ae092a",
              "name": "Servicios disponibles con su costo",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n  \"shippingAmount\": 10,\n  \"weight\": 4,\n  \"municipalityCode\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n  \"courierName\": \"\",\n  \"typeService\": \"NORMAL\",\n  \"cantPackages\": 1\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Consulta ejecutada correctamente\",\n  \"data\": [\n    {\n      \"courierId\": \"019f81b1-a481-77d5-be76-6c74b42c1e59\",\n      \"courierServiceId\": \"019f88a7-40d5-75b5-add9-87e652d9ba69\",\n      \"courierName\": \"Mensajería Ejemplo\",\n      \"serviceName\": \"Entrega a domicilio\",\n      \"serviceTypeName\": \"Servicio Normal\",\n      \"path_logo\": \"https://example.com/logos/mensajeria-ejemplo.png\",\n      \"isSameDay\": false,\n      \"enableGeoreference\": false,\n      \"deliveryCost\": 3.39,\n      \"hasDeliveryPromotion\": 0,\n      \"previousDeliveryCost\": null,\n      \"ComCCE\": 0.5,\n      \"hasCommissionPromotion\": 0,\n      \"previousComCCE\": null,\n      \"enablePromotionLabel\": false,\n      \"enableRecommended\": true,\n      \"courierDates\": {\n        \"collectionDate\": \"2026-10-08\",\n        \"collectionDay\": \"Jueves\",\n        \"pickupStartTime\": \"08:00\",\n        \"pickupEndTime\": \"17:00\",\n        \"deliveryDate\": \"2026-10-09\",\n        \"deliveryDay\": \"Viernes\",\n        \"collectionDate_byCoverage\": \"2026-10-08\",\n        \"deliveryDate_byCoverage\": \"2026-10-09\",\n        \"collectionMessage\": \"Recolección hoy\",\n        \"deliveryMessage\": \"Entrega mañana\",\n        \"alertColor_collection\": \"#2E7D32\",\n        \"alertColor_delivery\": \"#2E7D32\",\n        \"collectionAlert\": 0\n      },\n      \"courierInfo\": {\n        \"weightLimit\": 50,\n        \"sizeLimit\": \"60x60x60 cm\",\n        \"additionalPoundCost\": 0.25,\n        \"insuranceCoverage\": 100,\n        \"returnCost\": 2.5,\n        \"returnTimeEstimate\": 3,\n        \"maximumEffectiveLimit\": 500,\n        \"minimumConsignmentRequired\": 0,\n        \"baseCommissionTotal\": 0.5,\n        \"maximumCollectionTime\": \"13:00\",\n        \"collectionTime\": null,\n        \"deliveryTime\": null,\n        \"text_coverage\": \"Cobertura nacional\",\n        \"phoneNumber\": \"70000000\",\n        \"averageRating\": \"4.5\"\n      },\n      \"courierLabels\": {\n        \"labels\": [\n          {\n            \"label\": \"Recomendado\",\n            \"label_color\": \"#2E7D32\",\n            \"icon\": null,\n            \"iconVariant\": null\n          }\n        ],\n        \"customLabels\": []\n      },\n      \"agencies\": []\n    }\n  ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "f11fb31a-fc99-4809-939e-ff22635f780d",
              "name": "Datos inválidos. Formato del mensaje: `Error en campo \"<campo>\": <motivo>`.\nPrimero se revisa que vengan todos los campos obligatorios (`es requerido y no fue enviado`) y después el formato de cada campo; se reporta el primer error.\n\nMotivos por campo:\n- `branchAddressId`, `municipalityCode`: `debe ser un UUID válido`\n- `shippingAmount`: `debe ser un número válido con hasta dos decimales`\n- `weight`: `debe ser un número válido mayor a 0`\n- `cantPackages`: `debe ser un número entero válido mayor a 0`\n- `courierName`: `es texto, puede ir vacío, no debe exceder 100 caracteres`\n- `typeService`: `debe ser un string válido`\n",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n  \"shippingAmount\": 10,\n  \"weight\": 4,\n  \"municipalityCode\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n  \"courierName\": \"\",\n  \"typeService\": \"NORMAL\",\n  \"cantPackages\": 1\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error en campo \\\"typeService\\\": es requerido y no fue enviado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "2dda7807-8aed-4493-a223-d42ecab4fb06",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n  \"shippingAmount\": 10,\n  \"weight\": 4,\n  \"municipalityCode\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n  \"courierName\": \"\",\n  \"typeService\": \"NORMAL\",\n  \"cantPackages\": 1\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "cf3b8f4f-6c50-419c-90f5-690f859c09c8",
              "name": "Error interno. También se responde 500 si el cuerpo no es un JSON válido.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n  \"shippingAmount\": 10,\n  \"weight\": 4,\n  \"municipalityCode\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n  \"courierName\": \"\",\n  \"typeService\": \"NORMAL\",\n  \"cantPackages\": 1\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener couriers\",\n  \"data\": []\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "56f8c66a-5606-4990-b37e-bb4f1b3f92aa",
          "name": "Obtener mensajerías por servicio",
          "request": {
            "name": "Obtener mensajerías por servicio",
            "description": {
              "content": "Retorna los servicios de todos los couriers activos, agrupados por código de servicio, con sus límites, precios y condiciones de entrega.\nLos grupos vienen en orden alfabético, con los servicios de agencia al final.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "courier"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET"
          },
          "response": [
            {
              "id": "6dadc0c4-3330-4348-9990-c30a8394192f",
              "name": "Servicios agrupados por código de servicio. Cada clave de `data` es un código de servicio.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"success\",\n  \"response_message\": \"Couriers obtenidos correctamente\",\n  \"data\": {\n    \"DOMICILIO\": [\n      {\n        \"courierServiceId\": \"019f88a7-40d5-75b5-add9-87e652d9ba69\",\n        \"courier\": {\n          \"courierId\": \"019f81b1-a481-77d5-be76-6c74b42c1e59\",\n          \"courierName\": \"Mensajería Ejemplo\",\n          \"courierLogo\": \"https://example.com/logos/mensajeria-ejemplo.png\",\n          \"courierLabelText\": null,\n          \"courierEnableGeoreference\": false,\n          \"courierAverageRating\": 4.5\n        },\n        \"service\": {\n          \"serviceCode\": \"DOMICILIO\",\n          \"serviceName\": \"Entrega a domicilio\",\n          \"serviceType\": {\n            \"serviceTypeCode\": \"NORMAL\",\n            \"serviceTypeName\": \"Servicio Normal\",\n            \"serviceTypeRequiresCoverageValidation\": true\n          }\n        },\n        \"limits\": {\n          \"limitMaximumWeight\": 50,\n          \"limitWeightUnit\": \"lb\",\n          \"limitMaximumDimensions\": \"60x60x60 cm\",\n          \"limitMaximumCashAmount\": 500,\n          \"limitMaximumPickupTime\": \"17:00\"\n        },\n        \"pricing\": {\n          \"pricingRateRange\": \"$2.50 - $5.00\",\n          \"pricingAdditionalWeightUnitCost\": 0.25,\n          \"pricingInsurancePerShipment\": null,\n          \"pricingReturnCost\": 2.5,\n          \"pricingComCCE\": 0.5\n        },\n        \"delivery\": {\n          \"deliverySameDayService\": false,\n          \"deliveryFreeAttempts\": 2,\n          \"deliveryReturnTimeEstimateDays\": 3,\n          \"deliveryCoverageText\": \"Cobertura nacional\",\n          \"deliveryPromotionLabelEnabled\": false\n        },\n        \"agencies\": {\n          \"agenciesHasAgencies\": false,\n          \"agenciesCount\": 0\n        }\n      }\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "abffbcf5-ecb5-4a10-a780-4a2159047c74",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "ebf7c734-30b1-49fd-8f13-031ac8a9eba6",
              "name": "Error interno",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"error\",\n  \"response_message\": \"Error inesperado al obtener los couriers por servicio\",\n  \"data\": {}\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "12551f17-32e4-4229-9510-68a750ea69bb",
          "name": "Obtener la cobertura de un servicio de courier",
          "request": {
            "name": "Obtener la cobertura de un servicio de courier",
            "description": {
              "content": "Retorna los departamentos, municipios y distritos que cubre un servicio de courier, con los días de cobertura de cada distrito.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "courier",
                "coverage"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [
                {
                  "disabled": false,
                  "key": "courierServiceId",
                  "value": "019f88a7-40d5-75b5-add9-87e652d9ba69",
                  "description": "(Required) Servicio de courier (`courierServiceId` de la cotización o de `GET /api/courier`)."
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET"
          },
          "response": [
            {
              "id": "21efdae1-ffa7-4909-93d5-8e9f735ce598",
              "name": "Cobertura obtenida",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "coverage"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "courierServiceId",
                      "value": "019f88a7-40d5-75b5-add9-87e652d9ba69"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Cobertura obtenida correctamente\",\n  \"data\": [\n    {\n      \"courierId\": \"019f81b1-a481-77d5-be76-6c74b42c1e59\",\n      \"serviceId\": \"0199a1b2-ffff-7e5f-8a6b-1c2d3e4f0010\",\n      \"courierName\": \"Mensajería Ejemplo\",\n      \"departments\": [\n        {\n          \"departmentId\": \"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0004\",\n          \"departmentName\": \"SAN SALVADOR\",\n          \"municipalities\": [\n            {\n              \"municipalityId\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n              \"municipalityName\": \"SAN SALVADOR CENTRO\",\n              \"districts\": [\n                {\n                  \"districtId\": \"0199a1b2-5555-7e5f-8a6b-1c2d3e4f0006\",\n                  \"districtName\": \"SAN SALVADOR\",\n                  \"daysCoverage\": \"Lunes a sábado\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "46cdac81-813b-46cd-9f8c-c5b68c54e132",
              "name": "Falta el courierServiceId o no es un UUID válido",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "coverage"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "courierServiceId",
                      "value": "019f88a7-40d5-75b5-add9-87e652d9ba69"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"courierServiceId es requerido y debe ser un UUID válido\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "abcb3e4e-d749-4dcb-bb8d-f67ac573b593",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "coverage"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "courierServiceId",
                      "value": "019f88a7-40d5-75b5-add9-87e652d9ba69"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "84e9d5d6-c7f7-4124-a3a3-14a9ef6e84fc",
              "name": "Error interno",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "coverage"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "courierServiceId",
                      "value": "019f88a7-40d5-75b5-add9-87e652d9ba69"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener la cobertura del courier.\",\n  \"data\": []\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "0db5e3f1-5f99-424f-8aea-92a457d16104",
          "name": "Obtener agencias de un courier",
          "request": {
            "name": "Obtener agencias de un courier",
            "description": {
              "content": "Retorna las agencias de un courier, para los servicios que entregan o recolectan en agencia. El `agencyId` se envía en `courier.agencias` al crear la orden.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "courier",
                "agencies"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [
                {
                  "disabled": false,
                  "key": "courierId",
                  "value": "019f81b1-a481-77d5-be76-6c74b42c1e59",
                  "description": "(Required) Courier (`courierId` de la cotización o de `GET /api/courier`)."
                },
                {
                  "disabled": false,
                  "key": "searchText",
                  "value": "string",
                  "description": "Opcional. Filtra las agencias por texto."
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET"
          },
          "response": [
            {
              "id": "58ae13bd-d85b-4f8f-b697-655f232c6bed",
              "name": "Agencias obtenidas",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "agencies"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "courierId",
                      "value": "019f81b1-a481-77d5-be76-6c74b42c1e59"
                    },
                    {
                      "key": "searchText",
                      "value": "string"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Agencias obtenidas correctamente\",\n  \"data\": {\n    \"agencies\": [\n      {\n        \"agencyId\": \"0199a1b2-abcd-7e5f-8a6b-1c2d3e4f0011\",\n        \"agencyName\": \"Agencia Centro\",\n        \"agencyAddress\": \"Calle Ficticia #123, San Salvador\",\n        \"scheduleDescription\": \"Lunes a viernes de 8:00 a 17:00\",\n        \"isActive\": true,\n        \"createdAt\": \"2026-01-15T10:00:00Z\",\n        \"location\": {\n          \"district\": {\n            \"districtId\": \"0199a1b2-5555-7e5f-8a6b-1c2d3e4f0006\",\n            \"code\": \"060101\",\n            \"name\": \"SAN SALVADOR\"\n          },\n          \"municipality\": {\n            \"municipalityId\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n            \"code\": \"0601\",\n            \"name\": \"SAN SALVADOR CENTRO\"\n          },\n          \"department\": {\n            \"departmentId\": \"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0004\",\n            \"code\": \"06\",\n            \"name\": \"SAN SALVADOR\"\n          }\n        }\n      }\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "31b7941a-ea55-4aab-9602-eca8655da560",
              "name": "Falta el courierId o no es un UUID válido",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "agencies"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "courierId",
                      "value": "019f81b1-a481-77d5-be76-6c74b42c1e59"
                    },
                    {
                      "key": "searchText",
                      "value": "string"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"El parámetro courierId es requerido y debe ser un UUID válido\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "8060ff54-a73c-4a3f-9aa0-e551a28612d0",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "agencies"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "courierId",
                      "value": "019f81b1-a481-77d5-be76-6c74b42c1e59"
                    },
                    {
                      "key": "searchText",
                      "value": "string"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "4575db6a-be85-4dc9-aa02-9e3c2ed13a83",
              "name": "Error interno",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "agencies"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "courierId",
                      "value": "019f81b1-a481-77d5-be76-6c74b42c1e59"
                    },
                    {
                      "key": "searchText",
                      "value": "string"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener agencias del courier\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "096349a1-7036-4a3e-b9f6-3d893ecb971b",
          "name": "Obtener tarifas generales de los couriers",
          "request": {
            "name": "Obtener tarifas generales de los couriers",
            "description": {
              "content": "Retorna las tarifas generales de los couriers disponibles para el comercio autenticado, por servicio.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "courier",
                "generalRates"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET"
          },
          "response": [
            {
              "id": "64f2e116-2eba-4964-860d-c2a6f9bba1f9",
              "name": "Tarifas obtenidas",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "generalRates"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"success\",\n  \"response_message\": \"Tarifas obtenidas correctamente\",\n  \"data\": [\n    {\n      \"courierId\": \"019f81b1-a481-77d5-be76-6c74b42c1e59\",\n      \"courierLogo\": \"https://example.com/logos/mensajeria-ejemplo.png\",\n      \"courierName\": \"Mensajería Ejemplo\",\n      \"services\": [\n        {\n          \"serviceId\": \"0199a1b2-aaaa-7e5f-8a6b-1c2d3e4f0041\",\n          \"serviceName\": \"DEPARTAMENTAL / NEXT DAY\",\n          \"serviceTypes\": [\n            {\n              \"courierServiceId\": \"019f88a7-40d5-75b5-add9-87e652d9ba69\",\n              \"serviceTypeId\": \"0199a1b2-bbbb-7e5f-8a6b-1c2d3e4f0042\",\n              \"serviceTypeName\": \"Servicio Normal\",\n              \"rate\": 3.1\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "d6e75a8e-94e4-434f-8c1b-f772e075ab77",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "generalRates"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "36ebd66d-a473-41b8-9836-32d6d86c8f83",
              "name": "Error interno",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "generalRates"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"error\",\n  \"response_message\": \"Error al obtener tarifas generales de couriers\",\n  \"data\": []\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "c2c5bae7-9ef8-44af-96a9-badf8c24c493",
          "name": "Obtener couriers por tipo de servicio",
          "request": {
            "name": "Obtener couriers por tipo de servicio",
            "description": {
              "content": "Retorna los servicios de los couriers activos agrupados por tipo de servicio (por ejemplo, `NORMAL` o `PRIORITY`).\nPor cada servicio: el courier, sus límites (peso, dimensiones, monto máximo a cobrar, hora límite de recolección), precios, condiciones de entrega y si trabaja con agencias.\n\nSirve para mostrar las opciones de envío y sus condiciones. Para el precio exacto de un envío, cotiza con `POST /api/courier`.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "courier",
                "services"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [
                {
                  "disabled": false,
                  "key": "serviceTypeId",
                  "value": "1e649c5a-5f3d-7d9b-8fe7-6cc8e2803c36",
                  "description": "Opcional. Retorna solo los servicios de este tipo de servicio (`serviceModeId` de `GET /api/courier/serviceMode`). Si se envía vacío, se ignora."
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET"
          },
          "response": [
            {
              "id": "537b490b-60cd-4744-8606-0829ab965f7c",
              "name": "Couriers agrupados por tipo de servicio. Cada clave de `data` es el código del tipo de servicio.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "services"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "serviceTypeId",
                      "value": "1e649c5a-5f3d-7d9b-8fe7-6cc8e2803c36"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"success\",\n  \"response_message\": \"Couriers agrupados por tipo de servicio obtenidos correctamente\",\n  \"data\": {\n    \"NORMAL\": [\n      {\n        \"courierServiceId\": \"019f88a7-40d5-75b5-add9-87e652d9ba69\",\n        \"flags\": {\n          \"isNextDay\": true,\n          \"isSameDay\": false\n        },\n        \"courier\": {\n          \"courierId\": \"019f81b1-a481-77d5-be76-6c74b42c1e59\",\n          \"courierName\": \"Mensajería Ejemplo\",\n          \"courierLogo\": \"https://example.com/logos/mensajeria-ejemplo.png\",\n          \"courierLabelText\": null,\n          \"courierEnableGeoreference\": false,\n          \"courierAverageRating\": 4.5\n        },\n        \"service\": {\n          \"serviceCode\": \"NEXT_DAY\",\n          \"serviceName\": \"DEPARTAMENTAL / NEXT DAY\",\n          \"serviceType\": {\n            \"serviceTypeCode\": \"NORMAL\",\n            \"serviceTypeName\": \"Servicio Normal\",\n            \"serviceTypeRequiresCoverageValidation\": true\n          }\n        },\n        \"limits\": {\n          \"limitMaximumWeight\": 50,\n          \"limitWeightUnit\": \"lb\",\n          \"limitMaximumDimensions\": \"50x50x50\",\n          \"limitMaximumCashAmount\": 1000,\n          \"limitMaximumPickupTime\": \"13:00:00\"\n        },\n        \"pricing\": {\n          \"pricingRateRange\": \"$3.10\",\n          \"pricingAdditionalWeightUnitCost\": 0.13,\n          \"pricingInsurancePerShipment\": 100,\n          \"pricingReturnCost\": 0,\n          \"pricingComCCE\": 2\n        },\n        \"delivery\": {\n          \"deliverySameDayService\": false,\n          \"deliveryFreeAttempts\": 2,\n          \"deliveryReturnTimeEstimateDays\": 3,\n          \"deliveryCoverageText\": null,\n          \"deliveryPromotionLabelEnabled\": false\n        },\n        \"agencies\": {\n          \"agenciesHasAgencies\": false,\n          \"agenciesCount\": 0\n        }\n      }\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "398b5b65-e301-4f29-a682-1b77e921aacd",
              "name": "serviceTypeId no es un UUID válido",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "services"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "serviceTypeId",
                      "value": "1e649c5a-5f3d-7d9b-8fe7-6cc8e2803c36"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"El parámetro \\\"serviceTypeId\\\" debe ser un UUID válido\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "91388623-a136-4666-bfb1-da740a1822d8",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "services"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "serviceTypeId",
                      "value": "1e649c5a-5f3d-7d9b-8fe7-6cc8e2803c36"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "e0f56231-a77d-48af-84aa-ee10cb945252",
              "name": "Ningún courier activo ofrece el tipo de servicio indicado.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "services"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "serviceTypeId",
                      "value": "1e649c5a-5f3d-7d9b-8fe7-6cc8e2803c36"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 2563,\n  \"response_status\": \"Error\",\n  \"response_message\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "19a3065a-0bad-4da9-a8e1-7032d3a96d78",
              "name": "Error interno",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "services"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "serviceTypeId",
                      "value": "1e649c5a-5f3d-7d9b-8fe7-6cc8e2803c36"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"error\",\n  \"response_message\": \"Error inesperado al obtener los couriers por tipo de servicio\",\n  \"data\": {}\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "65168dc5-6e39-4893-b3dd-22fa8cfbe94d",
          "name": "Obtener promesas de entrega",
          "request": {
            "name": "Obtener promesas de entrega",
            "description": {
              "content": "Retorna el catálogo de promesas de entrega: el tiempo en que se compromete a entregar cada tipo de servicio (por ejemplo, entrega al día siguiente).\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "courier",
                "deliveryPromise"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET"
          },
          "response": [
            {
              "id": "4d3d74d8-e1bc-48d0-bdd8-4a5514d71806",
              "name": "Promesas de entrega obtenidas",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "deliveryPromise"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Promesas de entrega obtenidas correctamente\",\n  \"data\": [\n    {\n      \"deliveryPromiseId\": \"01970000-0000-7000-8000-000000000048\",\n      \"deliveryPromiseCode\": \"NEXT_DAY\",\n      \"deliveryPromiseName\": \"DEPARTAMENTAL / NEXT DAY\",\n      \"deliveryPromiseDescription\": \"Entrega al día siguiente\"\n    }\n  ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "013907b8-4c4d-4489-8d51-71192d000298",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "deliveryPromise"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "cdbe48bf-4be5-46a3-8185-eb4643b960c6",
              "name": "Error interno",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "deliveryPromise"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"error\",\n  \"response_message\": \"Error inesperado al obtener promesas de entrega\",\n  \"data\": []\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "3e358217-cb90-4430-8a87-4d986ffe4f1b",
          "name": "Obtener la cobertura operativa de un servicio",
          "request": {
            "name": "Obtener la cobertura operativa de un servicio",
            "description": {
              "content": "Retorna, por departamento y municipio, dónde opera un servicio de envío: si tiene cobertura de recolección y de entrega, los días en que opera y el horario de recolección.\nSirve para saber antes de cotizar si un servicio llega al municipio del cliente.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "courier",
                "coverage",
                "operational"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [
                {
                  "disabled": false,
                  "key": "courierServiceId",
                  "value": "019f88a7-40d5-75b5-add9-87e652d9ba69",
                  "description": "(Required) Servicio de envío (`courierServiceId` de `POST /api/courier` o de `GET /api/courier/services`)."
                },
                {
                  "disabled": false,
                  "key": "coverageType",
                  "value": "ALL",
                  "description": "Tipo de cobertura, de recolección, de entrega o ambas. No distingue mayúsculas de minúsculas."
                },
                {
                  "disabled": false,
                  "key": "departmentsJson",
                  "value": "[\"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0004\"]",
                  "description": "Opcional. Arreglo JSON con los UUID de los departamentos a consultar (`departmentId` de `GET /api/open/departments`)."
                },
                {
                  "disabled": false,
                  "key": "searchText",
                  "value": "string",
                  "description": "Opcional. Texto a buscar en los nombres de departamentos y municipios."
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET"
          },
          "response": [
            {
              "id": "6b8da203-da87-4554-856c-2d7fb16f802c",
              "name": "Cobertura operativa obtenida",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "coverage",
                    "operational"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "courierServiceId",
                      "value": "019f88a7-40d5-75b5-add9-87e652d9ba69"
                    },
                    {
                      "key": "coverageType",
                      "value": "ALL"
                    },
                    {
                      "key": "departmentsJson",
                      "value": "[\"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0004\"]"
                    },
                    {
                      "key": "searchText",
                      "value": "string"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Coberturas operativas del courier obtenidas correctamente\",\n  \"data\": [\n    {\n      \"courierServiceId\": \"019f88a7-40d5-75b5-add9-87e652d9ba69\",\n      \"courierId\": \"019f81b1-a481-77d5-be76-6c74b42c1e59\",\n      \"courierName\": \"Mensajería Ejemplo\",\n      \"coverageType\": \"ALL\",\n      \"coverage\": {\n        \"label\": \"Coberturas operativas\",\n        \"departments\": [\n          {\n            \"departmentId\": \"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0004\",\n            \"departmentName\": \"Ahuachapán\",\n            \"municipalities\": [\n              {\n                \"municipalityId\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n                \"municipalityName\": \"Ahuachapán\",\n                \"hasPickupCoverage\": true,\n                \"hasDeliveryCoverage\": true,\n                \"daysCoverage\": \"L,M,Mi,J,V,S\",\n                \"pickupStartTime\": \"08:00:00\",\n                \"pickupEndTime\": \"14:00:00\"\n              }\n            ]\n          }\n        ]\n      }\n    }\n  ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "e98c0dff-302d-4f21-95dc-90d29c0b3f35",
              "name": "Parámetros inválidos",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "coverage",
                    "operational"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "courierServiceId",
                      "value": "019f88a7-40d5-75b5-add9-87e652d9ba69"
                    },
                    {
                      "key": "coverageType",
                      "value": "ALL"
                    },
                    {
                      "key": "departmentsJson",
                      "value": "[\"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0004\"]"
                    },
                    {
                      "key": "searchText",
                      "value": "string"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"El parámetro courierServiceId es requerido y debe ser un UUID válido\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "00c83096-851b-41c9-8da2-b6e185b542af",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "coverage",
                    "operational"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "courierServiceId",
                      "value": "019f88a7-40d5-75b5-add9-87e652d9ba69"
                    },
                    {
                      "key": "coverageType",
                      "value": "ALL"
                    },
                    {
                      "key": "departmentsJson",
                      "value": "[\"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0004\"]"
                    },
                    {
                      "key": "searchText",
                      "value": "string"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "566029d9-2a52-49f6-8818-5a8d78819290",
              "name": "El servicio no existe o no está activo",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "coverage",
                    "operational"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "courierServiceId",
                      "value": "019f88a7-40d5-75b5-add9-87e652d9ba69"
                    },
                    {
                      "key": "coverageType",
                      "value": "ALL"
                    },
                    {
                      "key": "departmentsJson",
                      "value": "[\"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0004\"]"
                    },
                    {
                      "key": "searchText",
                      "value": "string"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 404,\n  \"response_status\": \"Error\",\n  \"response_message\": \"El courierServiceId (019f88a7-40d5-75b5-add9-87e652d9ba69) no existe o no está activo\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "bc3d4866-7129-427a-85f5-f91f3c7ad171",
              "name": "Error interno",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "courier",
                    "coverage",
                    "operational"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "courierServiceId",
                      "value": "019f88a7-40d5-75b5-add9-87e652d9ba69"
                    },
                    {
                      "key": "coverageType",
                      "value": "ALL"
                    },
                    {
                      "key": "departmentsJson",
                      "value": "[\"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0004\"]"
                    },
                    {
                      "key": "searchText",
                      "value": "string"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener las coberturas operativas del courier.\",\n  \"data\": []\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "Sucursales",
      "item": [
        {
          "name": "Direcciones de recolecta",
          "item": [
            {
              "id": "f56ef5d0-502d-4325-9c0e-c5d3380ae67b",
              "name": "Obtener direcciones de sucursal",
              "request": {
                "name": "Obtener direcciones de sucursal",
                "description": {
                  "content": "Retorna las direcciones de recolecta del comercio. Envíe `-1` para obtener todas, o el UUID de una dirección para obtener solo esa.",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "branchsAddresses"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "key": "branchAddressId",
                      "value": "-1",
                      "description": "(Required) `-1` para todas las direcciones, o el UUID de una dirección."
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET"
              },
              "response": [
                {
                  "id": "84879ba8-73b8-4b77-8852-cb5258d7943d",
                  "name": "Direcciones obtenidas correctamente",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "branchAddressId",
                          "value": "-1"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Direcciones procesadas correctamente\",\n  \"data\": [\n    {\n      \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n      \"branchAddressName\": \"Casa / Domicilio · Bodega Prueba\",\n      \"defaultAddress\": 1,\n      \"branchsId\": \"0199a1b2-0000-7e5f-8a6b-1c2d3e4f0001\",\n      \"typeBranchAddress\": \"0199a1b2-1111-7e5f-8a6b-1c2d3e4f0002\",\n      \"typeBranchAddressIcon\": \"fa-solid fa-house\",\n      \"nameBranchAddress\": \"Casa / Domicilio\",\n      \"collectionAddress\": \"Bodega Prueba\",\n      \"contactName\": \"Cliente Prueba\",\n      \"principalPhone\": \"70000000\",\n      \"emailContact\": \"cliente.prueba@example.com\",\n      \"georeference\": \"13.692940,-89.218191\",\n      \"municipalityCode\": \"0102\",\n      \"municipalitiesName\": \"APANECA\",\n      \"departmentsCodigo\": \"01\",\n      \"departmentsName\": \"AHUACHAPÁN\"\n    }\n  ]\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "d47de7a5-f763-4eaa-940c-5b8a0c2b88d9",
                  "name": "Falta el parámetro branchAddressId",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "branchAddressId",
                          "value": "-1"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Bad Request",
                  "code": 400,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"branchAddressId es requerido\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "385b21fc-3cb3-40a9-a82d-4906813c858e",
                  "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "branchAddressId",
                          "value": "-1"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Unauthorized",
                  "code": 401,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "29a35d2b-cd27-4144-9cf6-d47901f9a70d",
                  "name": "El comercio no tiene direcciones o la dirección no existe. El mensaje incluye el valor enviado en `branchAddressId`.",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "branchAddressId",
                          "value": "-1"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Not Found",
                  "code": 404,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 404,\n  \"response_status\": \"Error\",\n  \"response_message\": \"No se encontró dirección con branchAddressId 0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n  \"data\": []\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "16eedeba-13c3-4d1e-9619-8eb57489bab5",
                  "name": "Error interno (por ejemplo, un `branchAddressId` que no es `-1` ni un UUID válido).",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "branchAddressId",
                          "value": "-1"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al capturar las direcciones: <detalle>\",\n  \"data\": []\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "id": "b3d8f33c-a4af-490c-a82e-8a1327bba04e",
              "name": "Crear nueva dirección de sucursal",
              "request": {
                "name": "Crear nueva dirección de sucursal",
                "description": {
                  "content": "Registra una nueva dirección de recolecta para el comercio. El tipo de dirección sale de `GET /api/open/typeBranchAddress` y el municipio de `POST /api/open/municipality`.",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "branchsAddresses"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"branchAddressName\": \"Bodega Prueba\",\n  \"collectionAddress\": \"Calle Ficticia #123, Colonia Prueba, San Salvador\",\n  \"contactName\": \"Cliente Prueba\",\n  \"phoneNumber\": \"70000000\",\n  \"emailContact\": \"cliente.prueba@example.com\",\n  \"latitude\": \"13.692940\",\n  \"longitude\": \"-89.218191\",\n  \"municipalityCodigo\": \"0102\",\n  \"typeBranchAddressId\": \"0199a1b2-1111-7e5f-8a6b-1c2d3e4f0002\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "response": [
                {
                  "id": "d4987d3b-2d3d-4770-a19c-a616721635a0",
                  "name": "Dirección registrada",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressName\": \"Bodega Prueba\",\n  \"collectionAddress\": \"Calle Ficticia #123, Colonia Prueba, San Salvador\",\n  \"contactName\": \"Cliente Prueba\",\n  \"phoneNumber\": \"70000000\",\n  \"emailContact\": \"cliente.prueba@example.com\",\n  \"latitude\": \"13.692940\",\n  \"longitude\": \"-89.218191\",\n  \"municipalityCodigo\": \"0102\",\n  \"typeBranchAddressId\": \"0199a1b2-1111-7e5f-8a6b-1c2d3e4f0002\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Created",
                  "code": 201,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 201,\n  \"response_status\": \"success\",\n  \"response_message\": \"Dirección registrada correctamente.\",\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "fb78ddf5-f4c6-42e0-86d4-b9f794edd6b4",
                  "name": "Errores de validación. La API reúne todos los errores en un solo mensaje, separados por `;`.\nMensajes posibles por campo: `es requerido`, `debe ser una cadena`, `debe tener al menos N caracteres`, `no debe exceder los N caracteres`, `tiene un formato inválido`.\n",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressName\": \"Bodega Prueba\",\n  \"collectionAddress\": \"Calle Ficticia #123, Colonia Prueba, San Salvador\",\n  \"contactName\": \"Cliente Prueba\",\n  \"phoneNumber\": \"70000000\",\n  \"emailContact\": \"cliente.prueba@example.com\",\n  \"latitude\": \"13.692940\",\n  \"longitude\": \"-89.218191\",\n  \"municipalityCodigo\": \"0102\",\n  \"typeBranchAddressId\": \"0199a1b2-1111-7e5f-8a6b-1c2d3e4f0002\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Bad Request",
                  "code": 400,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Errores de validación en los campos: \\\"phoneNumber\\\": tiene un formato inválido; \\\"typeBranchAddressId\\\": debe ser una cadena\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "27ed9ca5-f246-4321-a816-873e7bab86b2",
                  "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressName\": \"Bodega Prueba\",\n  \"collectionAddress\": \"Calle Ficticia #123, Colonia Prueba, San Salvador\",\n  \"contactName\": \"Cliente Prueba\",\n  \"phoneNumber\": \"70000000\",\n  \"emailContact\": \"cliente.prueba@example.com\",\n  \"latitude\": \"13.692940\",\n  \"longitude\": \"-89.218191\",\n  \"municipalityCodigo\": \"0102\",\n  \"typeBranchAddressId\": \"0199a1b2-1111-7e5f-8a6b-1c2d3e4f0002\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Unauthorized",
                  "code": 401,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "75a265ac-7ca4-4963-8838-a57a6554770a",
                  "name": "Ya existe una dirección activa con el mismo nombre",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressName\": \"Bodega Prueba\",\n  \"collectionAddress\": \"Calle Ficticia #123, Colonia Prueba, San Salvador\",\n  \"contactName\": \"Cliente Prueba\",\n  \"phoneNumber\": \"70000000\",\n  \"emailContact\": \"cliente.prueba@example.com\",\n  \"latitude\": \"13.692940\",\n  \"longitude\": \"-89.218191\",\n  \"municipalityCodigo\": \"0102\",\n  \"typeBranchAddressId\": \"0199a1b2-1111-7e5f-8a6b-1c2d3e4f0002\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Conflict",
                  "code": 409,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 409,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Ya existe otra dirección activa con el mismo nombre en tu comercio.\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "9d41abb8-d9db-4f2b-9d98-ca7417d9b982",
                  "name": "Error interno",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressName\": \"Bodega Prueba\",\n  \"collectionAddress\": \"Calle Ficticia #123, Colonia Prueba, San Salvador\",\n  \"contactName\": \"Cliente Prueba\",\n  \"phoneNumber\": \"70000000\",\n  \"emailContact\": \"cliente.prueba@example.com\",\n  \"latitude\": \"13.692940\",\n  \"longitude\": \"-89.218191\",\n  \"municipalityCodigo\": \"0102\",\n  \"typeBranchAddressId\": \"0199a1b2-1111-7e5f-8a6b-1c2d3e4f0002\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al crear dirección de recolecta: <detalle>\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "id": "24f23fe4-907d-4773-a095-e75b26a8fbd9",
              "name": "Actualizar dirección de sucursal",
              "request": {
                "name": "Actualizar dirección de sucursal",
                "description": {
                  "content": "Actualiza una dirección de recolecta existente. Se envían todos los campos de la creación más el `branchAddressId`.",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "branchsAddresses"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "PUT",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n  \"branchAddressName\": \"Bodega Prueba\",\n  \"collectionAddress\": \"Calle Ficticia #123, Colonia Prueba, San Salvador\",\n  \"contactName\": \"Cliente Prueba\",\n  \"emailContact\": \"cliente.prueba@example.com\",\n  \"latitude\": \"13.692940\",\n  \"longitude\": \"-89.218191\",\n  \"municipalityCodigo\": \"0102\",\n  \"phoneNumber\": \"70000000\",\n  \"typeBranchAddressId\": \"0199a1b2-1111-7e5f-8a6b-1c2d3e4f0002\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "response": [
                {
                  "id": "0c1bbdfc-98c8-40fb-a0c9-73afd4d685ba",
                  "name": "Dirección actualizada",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "PUT",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n  \"branchAddressName\": \"Bodega Prueba\",\n  \"collectionAddress\": \"Calle Ficticia #123, Colonia Prueba, San Salvador\",\n  \"contactName\": \"Cliente Prueba\",\n  \"emailContact\": \"cliente.prueba@example.com\",\n  \"latitude\": \"13.692940\",\n  \"longitude\": \"-89.218191\",\n  \"municipalityCodigo\": \"0102\",\n  \"phoneNumber\": \"70000000\",\n  \"typeBranchAddressId\": \"0199a1b2-1111-7e5f-8a6b-1c2d3e4f0002\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Dirección actualizada correctamente\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "34035bcd-4b16-4687-9f18-e5e2570d4bab",
                  "name": "Errores de validación (mismo formato que en la creación; incluye `branchAddressId`)",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "PUT",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n  \"branchAddressName\": \"Bodega Prueba\",\n  \"collectionAddress\": \"Calle Ficticia #123, Colonia Prueba, San Salvador\",\n  \"contactName\": \"Cliente Prueba\",\n  \"emailContact\": \"cliente.prueba@example.com\",\n  \"latitude\": \"13.692940\",\n  \"longitude\": \"-89.218191\",\n  \"municipalityCodigo\": \"0102\",\n  \"phoneNumber\": \"70000000\",\n  \"typeBranchAddressId\": \"0199a1b2-1111-7e5f-8a6b-1c2d3e4f0002\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Bad Request",
                  "code": 400,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Errores de validación en los campos: \\\"branchAddressId\\\": es requerido\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "20a1812f-bb28-407c-a4d3-8a229960cb91",
                  "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "PUT",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n  \"branchAddressName\": \"Bodega Prueba\",\n  \"collectionAddress\": \"Calle Ficticia #123, Colonia Prueba, San Salvador\",\n  \"contactName\": \"Cliente Prueba\",\n  \"emailContact\": \"cliente.prueba@example.com\",\n  \"latitude\": \"13.692940\",\n  \"longitude\": \"-89.218191\",\n  \"municipalityCodigo\": \"0102\",\n  \"phoneNumber\": \"70000000\",\n  \"typeBranchAddressId\": \"0199a1b2-1111-7e5f-8a6b-1c2d3e4f0002\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Unauthorized",
                  "code": 401,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "80ac2918-852e-4e43-9ad5-3bec118d15ec",
                  "name": "Regla de negocio (por ejemplo, nombre duplicado)",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "PUT",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n  \"branchAddressName\": \"Bodega Prueba\",\n  \"collectionAddress\": \"Calle Ficticia #123, Colonia Prueba, San Salvador\",\n  \"contactName\": \"Cliente Prueba\",\n  \"emailContact\": \"cliente.prueba@example.com\",\n  \"latitude\": \"13.692940\",\n  \"longitude\": \"-89.218191\",\n  \"municipalityCodigo\": \"0102\",\n  \"phoneNumber\": \"70000000\",\n  \"typeBranchAddressId\": \"0199a1b2-1111-7e5f-8a6b-1c2d3e4f0002\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Conflict",
                  "code": 409,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 409,\n  \"response_status\": \"Error\",\n  \"response_message\": \"<motivo de la regla de negocio>\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "773f6976-b761-48ca-883b-e26cf8fd381f",
                  "name": "Error interno",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "PUT",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\",\n  \"branchAddressName\": \"Bodega Prueba\",\n  \"collectionAddress\": \"Calle Ficticia #123, Colonia Prueba, San Salvador\",\n  \"contactName\": \"Cliente Prueba\",\n  \"emailContact\": \"cliente.prueba@example.com\",\n  \"latitude\": \"13.692940\",\n  \"longitude\": \"-89.218191\",\n  \"municipalityCodigo\": \"0102\",\n  \"phoneNumber\": \"70000000\",\n  \"typeBranchAddressId\": \"0199a1b2-1111-7e5f-8a6b-1c2d3e4f0002\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al actualizar dirección de recolecta: <detalle>\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "id": "cc168e45-91c3-427f-82b7-19268e16894d",
              "name": "Eliminar dirección de sucursal",
              "request": {
                "name": "Eliminar dirección de sucursal",
                "description": {
                  "content": "Elimina una dirección de recolecta del comercio. El id se envía en el body.",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "branchsAddresses"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "DELETE",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "response": [
                {
                  "id": "f695faf1-fb51-4078-9f2e-09dfce844b0c",
                  "name": "Dirección eliminada",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "DELETE",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Dirección eliminada correctamente\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "6e9d316a-f1e5-4e40-a4ae-0b23ba97c9ab",
                  "name": "Falta el branchAddressId o no es texto",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "DELETE",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Bad Request",
                  "code": 400,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"El campo \\\"branchAddressId\\\" es requerido y debe ser una cadena (UUID).\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "1b32a135-2ce8-4ce0-a150-4b5ae0dc5853",
                  "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "DELETE",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Unauthorized",
                  "code": 401,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "998bf42f-b5cb-4c17-bd90-987ea7e3463a",
                  "name": "Error interno",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "DELETE",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al eliminar la dirección de recolecta: <detalle>\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "id": "bc7c008f-635b-439c-a031-dc2c8561d01d",
              "name": "Establecer dirección predeterminada",
              "request": {
                "name": "Establecer dirección predeterminada",
                "description": {
                  "content": "Marca una dirección como la predeterminada del comercio (`defaultAddress = 1`).",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "branchsAddresses"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "PATCH",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "response": [
                {
                  "id": "016627df-3a81-49f3-83cb-7f1fa7d99d3e",
                  "name": "Dirección predeterminada actualizada",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "PATCH",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Dirección predeterminada establecida correctamente\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "d668ccaa-1dee-46a8-a24b-a23633948d48",
                  "name": "Falta el branchAddressId o no es texto",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "PATCH",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Bad Request",
                  "code": 400,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"El campo \\\"branchAddressId\\\" es requerido y debe ser una cadena (UUID).\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "9aa2c904-aad7-4b39-908f-7d8bd5d5d29a",
                  "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "PATCH",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Unauthorized",
                  "code": 401,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "f7f57e16-67bc-410d-8ea2-39eb7e666ed3",
                  "name": "Error interno",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsAddresses"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "PATCH",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchAddressId\": \"0199a1b2-3c4d-7e5f-8a6b-1c2d3e4f5a6b\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al establecer la dirección predeterminada: <detalle>\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ]
        },
        {
          "name": "Clientes y direcciones de entrega",
          "item": [
            {
              "id": "d8da812c-9275-4ef8-a07d-05baea0c6841",
              "name": "Obtener clientes de la sucursal",
              "request": {
                "name": "Obtener clientes de la sucursal",
                "description": {
                  "content": "Retorna los clientes/destinatarios del comercio, ordenados con los favoritos primero. Permite obtener un solo cliente o filtrar por favoritos.",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "branchsClient"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "key": "branchsClientId",
                      "value": "1e649c5a-5f3d-7d9b-8fe7-6cc8e2803c36",
                      "description": "Opcional. UUID de un cliente para obtener solo ese registro. Sin este parámetro, o si no es un UUID válido, se ignora y retorna todos."
                    },
                    {
                      "disabled": false,
                      "key": "favorite",
                      "value": "-1",
                      "description": "`-1` = todos, `1` o `true` = solo favoritos, `0` = solo no favoritos. Si se omite o tiene otro valor se usa `0`: envíe `-1` para obtener todos."
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET"
              },
              "response": [
                {
                  "id": "cef63357-e233-41cd-98ff-96aabae016a4",
                  "name": "Clientes obtenidos",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "branchsClientId",
                          "value": "1e649c5a-5f3d-7d9b-8fe7-6cc8e2803c36"
                        },
                        {
                          "key": "favorite",
                          "value": "-1"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Clientes obtenidos correctamente\",\n  \"data\": [\n    {\n      \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\",\n      \"recipientName\": \"Cliente Prueba\",\n      \"recipientEmail\": \"cliente.prueba@example.com\",\n      \"recipientPhone\": \"70000000\",\n      \"recipientAddress\": \"Calle Ficticia #456, Colonia Prueba, San Salvador\",\n      \"districtId\": \"0199a1b2-5555-7e5f-8a6b-1c2d3e4f0006\",\n      \"districtName\": \"SAN SALVADOR\",\n      \"municipalityId\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n      \"municipalityName\": \"SAN SALVADOR CENTRO\",\n      \"departmentId\": \"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0004\",\n      \"departmentName\": \"SAN SALVADOR\",\n      \"postalCode\": \"1101\",\n      \"favorite\": true,\n      \"recipientCreateAt\": \"lunes 2 de junio a las 12:30\"\n    }\n  ]\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "2d023ec5-64e1-4940-8d92-8aacfdabfa40",
                  "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "branchsClientId",
                          "value": "1e649c5a-5f3d-7d9b-8fe7-6cc8e2803c36"
                        },
                        {
                          "key": "favorite",
                          "value": "-1"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Unauthorized",
                  "code": 401,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "a3d010c6-e654-4712-9d02-0793c4afd4cf",
                  "name": "Error interno",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "branchsClientId",
                          "value": "1e649c5a-5f3d-7d9b-8fe7-6cc8e2803c36"
                        },
                        {
                          "key": "favorite",
                          "value": "-1"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener clientes de la sucursal\",\n  \"data\": []\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "id": "9e41a0f3-5c36-400c-82d0-5eaa826391d4",
              "name": "Registrar nuevo cliente",
              "request": {
                "name": "Registrar nuevo cliente",
                "description": {
                  "content": "Crea un nuevo cliente/destinatario asociado al comercio.",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "branchsClient"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"recipientName\": \"Cliente Prueba\",\n  \"recipientPhone\": \"70000000\",\n  \"recipientAddress\": \"Calle Ficticia #456, Colonia Prueba, San Salvador\",\n  \"municipalityCode\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n  \"recipientEmail\": \"cliente.prueba@example.com\",\n  \"saveClient\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "response": [
                {
                  "id": "d042dd41-e708-473f-b9be-cbf8594c40e2",
                  "name": "Cliente registrado",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"recipientName\": \"Cliente Prueba\",\n  \"recipientPhone\": \"70000000\",\n  \"recipientAddress\": \"Calle Ficticia #456, Colonia Prueba, San Salvador\",\n  \"municipalityCode\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n  \"recipientEmail\": \"cliente.prueba@example.com\",\n  \"saveClient\": true\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Created",
                  "code": 201,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 201,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Cliente procesado correctamente\",\n  \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "b188e11f-e66c-427b-ace9-30f01c516b40",
                  "name": "Errores de validación. La API reúne todos los errores en un solo mensaje, separados por `;`.\nMensajes posibles por campo: `es requerido`, `debe ser una cadena`, `debe tener al menos N caracteres`, `no debe exceder los N caracteres`, `tiene un formato inválido`.\n",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"recipientName\": \"Cliente Prueba\",\n  \"recipientPhone\": \"70000000\",\n  \"recipientAddress\": \"Calle Ficticia #456, Colonia Prueba, San Salvador\",\n  \"municipalityCode\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n  \"recipientEmail\": \"cliente.prueba@example.com\",\n  \"saveClient\": true\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Bad Request",
                  "code": 400,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Errores de validación en los campos: \\\"recipientPhone\\\": es requerido; \\\"municipalityCode\\\": tiene un formato inválido\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "b3116617-9aee-48b4-ac55-9329b1a50251",
                  "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"recipientName\": \"Cliente Prueba\",\n  \"recipientPhone\": \"70000000\",\n  \"recipientAddress\": \"Calle Ficticia #456, Colonia Prueba, San Salvador\",\n  \"municipalityCode\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n  \"recipientEmail\": \"cliente.prueba@example.com\",\n  \"saveClient\": true\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Unauthorized",
                  "code": 401,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "267e4ff7-05bb-4aa8-8b6f-6448a5b66e4a",
                  "name": "Error interno al crear el cliente",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"recipientName\": \"Cliente Prueba\",\n  \"recipientPhone\": \"70000000\",\n  \"recipientAddress\": \"Calle Ficticia #456, Colonia Prueba, San Salvador\",\n  \"municipalityCode\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n  \"recipientEmail\": \"cliente.prueba@example.com\",\n  \"saveClient\": true\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al crear el cliente: <detalle>\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "id": "9122f01a-6e92-44b2-9c10-3e62d35e145d",
              "name": "Actualizar datos de cliente",
              "request": {
                "name": "Actualizar datos de cliente",
                "description": {
                  "content": "Actualiza la información de un cliente existente. Se envían todos los campos más el `branchsClientId`.",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "branchsClient"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "PUT",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\",\n  \"municipalityCode\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n  \"recipientAddress\": \"Calle Ficticia #456, Colonia Prueba, San Salvador\",\n  \"recipientName\": \"Cliente Prueba\",\n  \"recipientPhone\": \"70000000\",\n  \"recipientEmail\": \"cliente.prueba@example.com\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "response": [
                {
                  "id": "4ee4079f-b303-42a4-82e3-7ea0c7fef085",
                  "name": "Cliente actualizado",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "PUT",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\",\n  \"municipalityCode\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n  \"recipientAddress\": \"Calle Ficticia #456, Colonia Prueba, San Salvador\",\n  \"recipientName\": \"Cliente Prueba\",\n  \"recipientPhone\": \"70000000\",\n  \"recipientEmail\": \"cliente.prueba@example.com\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Cliente actualizado correctamente\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "b74dac1f-5fab-4925-b51f-17f77effbf0f",
                  "name": "Errores de validación (mismo formato que en la creación; incluye `branchsClientId`)",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "PUT",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\",\n  \"municipalityCode\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n  \"recipientAddress\": \"Calle Ficticia #456, Colonia Prueba, San Salvador\",\n  \"recipientName\": \"Cliente Prueba\",\n  \"recipientPhone\": \"70000000\",\n  \"recipientEmail\": \"cliente.prueba@example.com\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Bad Request",
                  "code": 400,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Errores de validación en los campos: \\\"branchsClientId\\\": es requerido\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "3f89e002-cca6-48ef-9357-725be434c83c",
                  "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "PUT",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\",\n  \"municipalityCode\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n  \"recipientAddress\": \"Calle Ficticia #456, Colonia Prueba, San Salvador\",\n  \"recipientName\": \"Cliente Prueba\",\n  \"recipientPhone\": \"70000000\",\n  \"recipientEmail\": \"cliente.prueba@example.com\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Unauthorized",
                  "code": 401,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "9183be7d-7d9a-4662-b826-ad434ac91fbe",
                  "name": "Error interno al actualizar el cliente",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "PUT",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\",\n  \"municipalityCode\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n  \"recipientAddress\": \"Calle Ficticia #456, Colonia Prueba, San Salvador\",\n  \"recipientName\": \"Cliente Prueba\",\n  \"recipientPhone\": \"70000000\",\n  \"recipientEmail\": \"cliente.prueba@example.com\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al actualizar el cliente: <detalle>\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "id": "69871913-7c23-4255-a79a-16f0df7d5f3f",
              "name": "Eliminar cliente",
              "request": {
                "name": "Eliminar cliente",
                "description": {
                  "content": "Elimina un cliente del comercio. El id se envía en el body.",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "branchsClient"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "DELETE",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "response": [
                {
                  "id": "a19d440b-b99c-4595-a17b-d81aa5bde29a",
                  "name": "Cliente eliminado",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "DELETE",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Cliente eliminado correctamente\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "25601f67-1993-4b17-9dfd-eecf6d270c93",
                  "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "DELETE",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Unauthorized",
                  "code": 401,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "e7d62490-8458-4a05-a5f7-da72d8388d20",
                  "name": "Falta el branchsClientId o no es un UUID válido",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "DELETE",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Conflict",
                  "code": 409,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 409,\n  \"response_status\": \"Error\",\n  \"response_message\": \"branchsClientId es obligatorio y debe ser un UUID válido\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "919f8aca-5754-493b-98d6-c35a36259cd3",
                  "name": "Error interno al eliminar el cliente",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "DELETE",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al eliminar el cliente: <detalle>\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "id": "1203f7c4-2543-4fed-8f39-91014deb5ae0",
              "name": "Marcar o quitar cliente favorito",
              "request": {
                "name": "Marcar o quitar cliente favorito",
                "description": {
                  "content": "Marca un cliente como favorito o le quita esa marca.",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "branchsClient"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "PATCH",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\",\n  \"favoriteStatus\": 1\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "response": [
                {
                  "id": "bd795a91-08d6-45ed-8ad2-39b82df7fe5c",
                  "name": "Estado de favorito actualizado",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "PATCH",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\",\n  \"favoriteStatus\": 1\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Cliente marcado como favorito\",\n  \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\",\n  \"favorite\": true\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "a744fc6e-dea0-4466-a313-3ed211c55e88",
                  "name": "Falta un parámetro o tiene un valor inválido",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "PATCH",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\",\n  \"favoriteStatus\": 1\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Bad Request",
                  "code": 400,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"branchsClientId (UUID) y favoriteStatus (0, 1, true o false) son obligatorios\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "f75e215d-289a-4ff5-af15-169004e5f451",
                  "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "PATCH",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\",\n  \"favoriteStatus\": 1\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Unauthorized",
                  "code": 401,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "1c576721-3990-48c8-8dca-9ef856cdcab4",
                  "name": "Error interno al actualizar el favorito",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "PATCH",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\",\n  \"favoriteStatus\": 1\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al actualizar favorito del cliente: <detalle>\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "id": "7ce0be3e-6bc9-489c-bcc7-697e5fd840b0",
              "name": "Buscar clientes de la sucursal",
              "request": {
                "name": "Buscar clientes de la sucursal",
                "description": {
                  "content": "Busca clientes del comercio por texto (nombre, teléfono, correo…), con filtro opcional de favoritos. Retorna los favoritos primero.",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "branchsClient",
                    "search"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "key": "search",
                      "value": "Cliente Prueba",
                      "description": "Opcional. Texto a buscar."
                    },
                    {
                      "disabled": false,
                      "key": "favorite",
                      "value": "-1",
                      "description": "`-1` = todos, `1` o `true` = solo favoritos, `0` = solo no favoritos. Si se omite o tiene otro valor se usa `0`: envíe `-1` para buscar entre todos."
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET"
              },
              "response": [
                {
                  "id": "533ddb2c-bbf9-4255-9afb-72815ef1dc0b",
                  "name": "Búsqueda realizada",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient",
                        "search"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "search",
                          "value": "Cliente Prueba"
                        },
                        {
                          "key": "favorite",
                          "value": "-1"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 9515,\n  \"response_status\": \"string\",\n  \"response_message\": \"string\",\n  \"data\": [\n    {\n      \"branchsClientId\": \"f1df0836-b473-2e76-8899-e1c003ff2673\",\n      \"recipientName\": \"string\",\n      \"recipientEmail\": \"string\",\n      \"recipientPhone\": \"string\",\n      \"recipientAddress\": \"string\",\n      \"districtId\": \"08767d61-14e0-a75e-9527-cd2b202cb9e1\",\n      \"districtName\": \"string\",\n      \"municipalityId\": \"e15beb01-dd8d-ca8c-9a9d-55d43f6b8958\",\n      \"municipalityName\": \"string\",\n      \"departmentId\": \"2e7439fa-682f-3983-df99-634911cd9349\",\n      \"departmentName\": \"string\",\n      \"postalCode\": \"string\",\n      \"favorite\": true,\n      \"recipientCreateAt\": \"string\"\n    },\n    {\n      \"branchsClientId\": \"6a0094d5-2688-e7ba-8499-a8a0b17eb5f5\",\n      \"recipientName\": \"string\",\n      \"recipientEmail\": \"string\",\n      \"recipientPhone\": \"string\",\n      \"recipientAddress\": \"string\",\n      \"districtId\": \"1486a599-11af-6564-3a57-7b25763e435a\",\n      \"districtName\": \"string\",\n      \"municipalityId\": \"9a0440c1-139c-8e88-689b-62afe500b196\",\n      \"municipalityName\": \"string\",\n      \"departmentId\": \"f437b966-cc19-9235-9b20-99a4d8053dd5\",\n      \"departmentName\": \"string\",\n      \"postalCode\": \"string\",\n      \"favorite\": false,\n      \"recipientCreateAt\": \"string\"\n    }\n  ]\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "758fb4f8-7540-4fd4-9a0c-d34cd871d29b",
                  "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient",
                        "search"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "search",
                          "value": "Cliente Prueba"
                        },
                        {
                          "key": "favorite",
                          "value": "-1"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Unauthorized",
                  "code": 401,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "0177c291-174d-4735-b583-55836e691d8b",
                  "name": "Error interno",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "branchs",
                        "branchsClient",
                        "search"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "search",
                          "value": "Cliente Prueba"
                        },
                        {
                          "key": "favorite",
                          "value": "-1"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al buscar clientes de la sucursal\",\n  \"data\": []\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Historial",
      "item": [
        {
          "id": "a6215a57-9166-45e8-9592-f7a812229610",
          "name": "Obtener historial de órdenes",
          "request": {
            "name": "Obtener historial de órdenes",
            "description": {
              "content": "Retorna las órdenes del comercio con su estado actual, courier y destinatario, más los totales del periodo (órdenes, en ruta, completadas y canceladas).\nCada orden incluye la URL de su seguimiento público en `tracking.URLtracking`.\n\nEl body es obligatorio (sin body responde 500), pero todos sus campos son opcionales: con `{}` retorna la primera página (20 órdenes), de la más reciente a la más antigua.\nCon `export: 1` también genera un Excel con todos los resultados y retorna su URL en `export.URLDataExcel`.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "branchs",
                "history",
                "orders"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"filters\": {\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\",\n    \"onDelivery\": true\n  },\n  \"order\": {\n    \"by\": \"createdAt\",\n    \"direction\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "e2858225-74bb-4157-89ff-2b05571c02d9",
              "name": "Historial de órdenes obtenido. Las órdenes están en `data.data` y la paginación en `data.pagination`.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "history",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\",\n    \"onDelivery\": true\n  },\n  \"order\": {\n    \"by\": \"createdAt\",\n    \"direction\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"success\",\n  \"response_message\": \"Historial obtenido correctamente\",\n  \"data\": {\n    \"pagination\": {\n      \"page\": 1,\n      \"limit\": 20,\n      \"max_limit\": 50,\n      \"total\": 1,\n      \"total_pages\": 1,\n      \"has_next\": false,\n      \"has_prev\": false,\n      \"from\": 1,\n      \"to\": 1\n    },\n    \"totals\": {\n      \"totalOrders\": {\n        \"value\": 1,\n        \"changePercentage\": 0\n      },\n      \"inRoute\": {\n        \"value\": 1,\n        \"changePercentage\": 0\n      },\n      \"completed\": {\n        \"value\": 0\n      },\n      \"cancelled\": {\n        \"value\": 0\n      }\n    },\n    \"data\": [\n      {\n        \"ordersId\": \"0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\",\n        \"order\": {\n          \"comprobante\": \"29137811\",\n          \"createdAt\": \"2026-10-07 10:15:00\",\n          \"platform\": \"API\",\n          \"productDescription\": \"Ropa\",\n          \"totalWeight\": 4,\n          \"packageCount\": 1,\n          \"onDelivery\": true,\n          \"paidShipping\": false,\n          \"consignmentValue\": 10,\n          \"deliveryCost\": 3.39,\n          \"baseCommissionAmount\": 0.5,\n          \"pcme\": 0,\n          \"branchDepartmentName\": \"SAN SALVADOR\",\n          \"branchMunicipalityName\": \"SAN SALVADOR CENTRO\"\n        },\n        \"status\": {\n          \"statusMainId\": \"0199a1b2-5555-7e5f-8a6b-1c2d3e4f0022\",\n          \"statusDescription\": \"En ruta de entrega\",\n          \"subStatusMainId\": \"0199a1b2-6666-7e5f-8a6b-1c2d3e4f0031\",\n          \"subStatusDescription\": \"En ruta de entrega\",\n          \"flowGroup\": \"delivery\",\n          \"statusColor\": \"#1565C0\",\n          \"lastMovementDate\": \"2026-10-07 14:30:00\"\n        },\n        \"courier\": {\n          \"courierId\": \"019f81b1-a481-77d5-be76-6c74b42c1e59\",\n          \"courierName\": \"Mensajería Ejemplo\",\n          \"courierLogo\": \"https://...\",\n          \"courierPhone\": null\n        },\n        \"recipient\": {\n          \"branchsClientId\": \"0199a1b2-2222-7e5f-8a6b-1c2d3e4f0003\",\n          \"recipientName\": \"Cliente Prueba\",\n          \"recipientPhone\": \"70000000\",\n          \"recipientAddress\": \"Calle Ficticia #456, Colonia Prueba, San Salvador\",\n          \"departmentCode\": \"06\",\n          \"departmentName\": \"SAN SALVADOR\",\n          \"municipalityCode\": \"0614\",\n          \"municipalityName\": \"SAN SALVADOR CENTRO\",\n          \"favoriteClient\": true,\n          \"branchsClientStatus\": true\n        },\n        \"tracking\": {\n          \"URLtracking\": \"https://...\"\n        }\n      }\n    ]\n  },\n  \"export\": {\n    \"URLDataExcel\": \"\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "056d0023-f8d6-4ca2-b8c9-9aa45b22ccb8",
              "name": "Filtro, ordenamiento o paginación inválidos. Se reporta el primer error encontrado, con el formato `Error en campo \"<campo>\": <motivo>`; el campo va sin el prefijo `filters.`.\nMotivos posibles: `debe ser 0 o 1` (`export`), `debe ser formato YYYY-MM-DD válido`, `dateFrom no puede ser mayor a dateTo` (campo `dateRange`), `debe ser un UUID válido`, `debe ser 0, 1, true o false`, `decimal inválido (máx 2 decimales)`, `texto inválido` (`comprobante`, `nomDestinatario`), `valor inválido` (`pagination.page`, `pagination.limit`), `campo inválido` (`order.by`) y `debe ser ASC o DESC` (`order.direction`).\n",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "history",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\",\n    \"onDelivery\": true\n  },\n  \"order\": {\n    \"by\": \"createdAt\",\n    \"direction\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error en campo \\\"dateFrom\\\": debe ser formato YYYY-MM-DD válido\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "ba9c5fef-097b-4e14-84cc-9cbde08599f0",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "history",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\",\n    \"onDelivery\": true\n  },\n  \"order\": {\n    \"by\": \"createdAt\",\n    \"direction\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "f8cb06e9-fb2d-4223-bf00-17118e57c793",
              "name": "Error interno",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "history",
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\",\n    \"onDelivery\": true\n  },\n  \"order\": {\n    \"by\": \"createdAt\",\n    \"direction\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener historial órdenes: <detalle>\",\n  \"data\": {\n    \"pagination\": {\n      \"page\": 1,\n      \"limit\": 20,\n      \"max_limit\": 50,\n      \"total\": 0,\n      \"total_pages\": 0,\n      \"has_next\": false,\n      \"has_prev\": false,\n      \"from\": 0,\n      \"to\": 0\n    },\n    \"data\": []\n  },\n  \"export\": {\n    \"URLDataExcel\": \"\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "1097e54b-ebaa-4d74-8576-c3656aa9c6af",
          "name": "Obtener historial de transacciones y movimientos",
          "request": {
            "name": "Obtener historial de transacciones y movimientos",
            "description": {
              "content": "Retorna las transacciones del comercio (recargas y pagos) con sus movimientos de saldo asociados: cobros de envío, comisiones, devoluciones y beneficios.\nCada transacción incluye el método de pago, el resumen del monedero (saldo anterior, monto usado y saldo restante) y la lista de movimientos con su orden, courier y servicio.\nLos movimientos de beneficio (`movementIsBenefit: true`) traen su detalle en `benefit`; en los demás movimientos `benefit` es `null`.\n\nTodos los campos del body son opcionales: sin body retorna la primera página (20 transacciones), de la más reciente a la más antigua.\nCon `export: 1` también genera un Excel con todos los resultados y retorna su URL en `export.URLDataExcel`.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "branchs",
                "history",
                "transactionsAndMovements"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"filters\": {\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\",\n    \"onlyFilteredMovements\": 0\n  },\n  \"order\": {\n    \"direction\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "c08ea7d6-f562-43cf-831c-c17848974bb9",
              "name": "Transacciones y movimientos obtenidos",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "history",
                    "transactionsAndMovements"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\",\n    \"onlyFilteredMovements\": 0\n  },\n  \"order\": {\n    \"direction\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Movimientos del comercio obtenidos correctamente.\",\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20,\n    \"max_limit\": 50,\n    \"total\": 1,\n    \"total_pages\": 1,\n    \"has_next\": false,\n    \"has_prev\": false,\n    \"from\": 1,\n    \"to\": 1\n  },\n  \"totals\": {\n    \"totalTransactions\": {\n      \"value\": 1,\n      \"changePercentage\": 0\n    },\n    \"totalVolume\": {\n      \"value\": 25,\n      \"changePercentage\": 0\n    },\n    \"totalBenefits\": {\n      \"value\": 0\n    }\n  },\n  \"data\": [\n    {\n      \"transaction\": {\n        \"transactionId\": \"0199a1b2-cccc-7e5f-8a6b-1c2d3e4f0051\",\n        \"createdAt\": \"2026-10-05 09:00:00\",\n        \"transactionAmount\": 25,\n        \"transactionGatewayId\": \"0199a1b2-dddd-7e5f-8a6b-1c2d3e4f0052\",\n        \"transactionGatewayCode\": \"PASARELA_EJEMPLO\",\n        \"transactionGatewayLabel\": \"Pago con tarjeta (Pasarela Ejemplo)\",\n        \"gatewayTransactionReference\": \"REF-000001\",\n        \"internalTransactionReference\": \"INT-000001\"\n      },\n      \"paymentMethod\": {\n        \"paymentCardId\": \"0199a1b2-eeee-7e5f-8a6b-1c2d3e4f0053\",\n        \"cardBin\": \"424242\",\n        \"cardLast4\": \"4242\",\n        \"cardMasked\": \"4242 42** **** 4242\",\n        \"typeCard\": \"VISA\",\n        \"cardOwner\": \"Cliente Prueba\"\n      },\n      \"wallet\": {\n        \"rechargeAmount\": 25,\n        \"previousWalletBalance\": 20.61,\n        \"walletMovementAmount\": 3.89,\n        \"walletNetAmount\": 21.11,\n        \"walletUsedPreviousBalanceAmount\": 0,\n        \"residualWalletBalance\": 41.72,\n        \"benefitAmount\": 0\n      },\n      \"summary\": {\n        \"movementsCount\": 1,\n        \"movementDeliveryCostAmount\": 3.39,\n        \"movementCourierCostAmount\": 2.8,\n        \"movementFeeVolaoAmount\": 0.5,\n        \"movementBenefitAmount\": 0\n      },\n      \"movements\": [\n        {\n          \"transactionMovementId\": \"0199a1b2-ffff-7e5f-8a6b-1c2d3e4f0054\",\n          \"movementReasonId\": \"0199a1b2-1212-7e5f-8a6b-1c2d3e4f0055\",\n          \"movementReasonCode\": \"ORDER_PAYMENT\",\n          \"movementDescription\": \"Shipping Payment\",\n          \"movementIsCredit\": false,\n          \"movementIsBenefit\": false,\n          \"movementDate\": \"2026-10-07 10:15:00\",\n          \"order\": {\n            \"orderId\": \"0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\",\n            \"comprobanteAf\": \"29137811\",\n            \"deliveryCost\": 3.39,\n            \"courierCost\": 2.8,\n            \"feeVolao\": 0.5\n          },\n          \"courier\": {\n            \"courierId\": \"019f81b1-a481-77d5-be76-6c74b42c1e59\",\n            \"courierName\": \"Mensajería Ejemplo\",\n            \"courierLogo\": \"https://...\"\n          },\n          \"service\": {\n            \"courierServiceId\": \"019f88a7-40d5-75b5-add9-87e652d9ba69\",\n            \"serviceId\": \"0199a1b2-aaaa-7e5f-8a6b-1c2d3e4f0041\",\n            \"serviceName\": \"Entrega a domicilio\",\n            \"serviceTypeId\": \"0199a1b2-bbbb-7e5f-8a6b-1c2d3e4f0042\",\n            \"serviceTypeName\": \"Estándar\"\n          },\n          \"balances\": {\n            \"previousBalance\": 45.61,\n            \"transactionBalance\": -3.89,\n            \"newBalance\": 41.72\n          },\n          \"benefit\": null\n        }\n      ]\n    }\n  ],\n  \"export\": {\n    \"URLDataExcel\": \"\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "3d7e571f-bf76-4f7b-80f7-8c5a20ce5464",
              "name": "Filtro, ordenamiento o paginación inválidos. Se reporta el primer error encontrado, con el formato `Error en campo \"<campo>\": <motivo>`.\nMotivos posibles: `debe ser 0 o 1` (`export` y `filters.onlyFilteredMovements`, como número), `debe ser un UUID válido`, `número inválido` (montos negativos o que no son número), `texto inválido (máx N caracteres)`, `debe contener exactamente 4 dígitos`, `debe ser una fecha válida (YYYY-MM-DD)`, `dateFrom no puede ser mayor a dateTo`, `debe ser un entero mayor a 0` (`pagination.page`), `debe ser un entero entre 1 y 50` (`pagination.limit`) y `debe ser ASC o DESC` (`order.direction`).\n",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "history",
                    "transactionsAndMovements"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\",\n    \"onlyFilteredMovements\": 0\n  },\n  \"order\": {\n    \"direction\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error en campo \\\"filters.ordersId\\\": debe ser un UUID válido\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "d46df3bf-986d-4002-b43c-3dfdd5a466aa",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "history",
                    "transactionsAndMovements"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\",\n    \"onlyFilteredMovements\": 0\n  },\n  \"order\": {\n    \"direction\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "b7ae58ea-2173-4aa9-93cc-1b8f73111471",
              "name": "Error interno",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "history",
                    "transactionsAndMovements"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\",\n    \"onlyFilteredMovements\": 0\n  },\n  \"order\": {\n    \"direction\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener los movimientos del comercio\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "af7fc46a-f27d-4146-b07f-1933102cea06",
          "name": "Obtener historial de beneficios",
          "request": {
            "name": "Obtener historial de beneficios",
            "description": {
              "content": "Retorna los beneficios que recibió el comercio, con su orden, courier y el movimiento de saldo que generaron. Por ejemplo, el cashback por envío (`CBE`): un porcentaje del costo de envío que se devuelve al saldo al entregarse la orden, según el nivel de suscripción del comercio.\nIncluye totales del periodo: cantidad y monto de beneficios, monto del mes actual y del anterior, monto revertido y desglose por tipo.\n\nTodos los campos del body son opcionales: sin body retorna la primera página (20 beneficios), del más reciente al más antiguo.\nCon `export: 1` también genera un Excel con todos los resultados y retorna su URL en `export.URLDataExcel`.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "branchs",
                "history",
                "benefits"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"filters\": {\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\",\n    \"status\": \"APPLIED\"\n  },\n  \"order\": {\n    \"direction\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "61477e4d-90f5-4cb4-a746-e64d12ea0c94",
              "name": "Beneficios obtenidos",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "history",
                    "benefits"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\",\n    \"status\": \"APPLIED\"\n  },\n  \"order\": {\n    \"direction\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Beneficios del comercio obtenidos correctamente.\",\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20,\n    \"max_limit\": 50,\n    \"total\": 1,\n    \"total_pages\": 1,\n    \"has_next\": false,\n    \"has_prev\": false,\n    \"from\": 1,\n    \"to\": 1\n  },\n  \"totals\": {\n    \"totalBenefits\": {\n      \"value\": 1,\n      \"changePercentage\": 0\n    },\n    \"totalAmount\": {\n      \"value\": 0.17,\n      \"changePercentage\": 0\n    },\n    \"currentMonthAmount\": 0.17,\n    \"previousMonthAmount\": 0,\n    \"reversedAmount\": 0,\n    \"byType\": [\n      {\n        \"movementCode\": \"CBE\",\n        \"movementName\": \"CASHBACK POR ENVÍO\",\n        \"count\": 1,\n        \"amount\": 0.17\n      }\n    ]\n  },\n  \"data\": [\n    {\n      \"benefit\": {\n        \"benefitId\": \"0199a1b2-1313-7e5f-8a6b-1c2d3e4f0061\",\n        \"movementCode\": \"CBE\",\n        \"movementName\": \"CASHBACK POR ENVÍO\",\n        \"movementColor\": \"rgb(235 243 237)\",\n        \"status\": \"APPLIED\",\n        \"amount\": 0.17,\n        \"baseAmount\": 3.39,\n        \"rate\": 0.05,\n        \"detail\": \"Beneficio aplicado a la orden 29137811\",\n        \"metadata\": {\n          \"tierCode\": \"TIER1\",\n          \"deliveredAt\": \"2026-10-08 11:00:00\"\n        },\n        \"createdAt\": \"2026-10-08 11:00:05\",\n        \"reversedAt\": null\n      },\n      \"subscription\": {\n        \"subscriptionTierId\": \"0199a1b2-1414-7e5f-8a6b-1c2d3e4f0062\",\n        \"tierCode\": \"TIER1\",\n        \"tierName\": \"Tier 1 - Basic Extensions\"\n      },\n      \"order\": {\n        \"orderId\": \"0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\",\n        \"comprobanteAf\": \"29137811\",\n        \"deliveryCost\": 3.39,\n        \"deliveredAt\": null\n      },\n      \"courier\": {\n        \"courierId\": \"019f81b1-a481-77d5-be76-6c74b42c1e59\",\n        \"courierName\": \"Mensajería Ejemplo\",\n        \"courierLogo\": \"https://...\"\n      },\n      \"movement\": {\n        \"balanceTransactionId\": \"0199a1b2-1515-7e5f-8a6b-1c2d3e4f0063\",\n        \"paymentTransactionId\": \"0199a1b2-1616-7e5f-8a6b-1c2d3e4f0064\",\n        \"previousBalance\": 41.72,\n        \"newBalance\": 41.89,\n        \"reversedBalanceTransactionId\": null\n      }\n    }\n  ],\n  \"export\": {\n    \"URLDataExcel\": \"\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "f0b9748c-917e-4ad2-bee1-3fbe86557b44",
              "name": "Filtro, ordenamiento o paginación inválidos. Se reporta el primer error encontrado, con el formato `Error en campo \"<campo>\": <motivo>`.\nMotivos posibles: `debe ser 0 o 1` (`export`, como número), `debe ser un código de texto válido (máx 20 caracteres)` (`filters.movementCode`), `debe ser un UUID válido`, `texto inválido (máx N caracteres)` (`filters.comprobante`, `filters.status`), `debe ser una fecha válida (YYYY-MM-DD)`, `dateFrom no puede ser mayor a dateTo`, `debe ser un entero mayor a 0` (`pagination.page`), `debe ser un entero entre 1 y 50` (`pagination.limit`) y `debe ser ASC o DESC` (`order.direction`).\n",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "history",
                    "benefits"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\",\n    \"status\": \"APPLIED\"\n  },\n  \"order\": {\n    \"direction\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error en campo \\\"filters.ordersId\\\": debe ser un UUID válido\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "69b265d6-a037-45a3-8615-e1e85dce9c95",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "history",
                    "benefits"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\",\n    \"status\": \"APPLIED\"\n  },\n  \"order\": {\n    \"direction\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "1694f256-ba2a-413f-9b81-7c5efa766b98",
              "name": "Error interno",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "history",
                    "benefits"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\",\n    \"status\": \"APPLIED\"\n  },\n  \"order\": {\n    \"direction\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener los beneficios del comercio\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "6482a957-8077-4218-91f6-45660e3fa66f",
          "name": "Obtener historial de liquidaciones",
          "request": {
            "name": "Obtener historial de liquidaciones",
            "description": {
              "content": "Retorna las liquidaciones (actas) del comercio: el pago al comercio de lo cobrado contra entrega, descontando el costo de envío y la comisión.\nCada acta incluye la cuenta bancaria donde se depositó, sus totales y las órdenes que liquida.\n\nTodos los campos del body son opcionales: sin body retorna la primera página (20 actas), de la más reciente a la más antigua.\nCon `export: 1` también genera un Excel con todos los resultados y retorna su URL en `export.URLDataExcel`.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "branchs",
                "history",
                "settlements"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"filters\": {\n    \"dateType\": \"settlementDate\",\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\"\n  },\n  \"order\": {\n    \"orderBy\": \"settlementDate\",\n    \"orderDirection\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "5652a132-96e5-475e-8242-e0d2f9c05923",
              "name": "Historial de liquidaciones obtenido",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "history",
                    "settlements"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"dateType\": \"settlementDate\",\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\"\n  },\n  \"order\": {\n    \"orderBy\": \"settlementDate\",\n    \"orderDirection\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Historial de liquidaciones obtenido correctamente\",\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20,\n    \"max_limit\": 150,\n    \"total\": 1,\n    \"total_pages\": 1,\n    \"has_next\": false,\n    \"has_prev\": false,\n    \"from\": 1,\n    \"to\": 1\n  },\n  \"data\": [\n    {\n      \"acta\": {\n        \"codActa\": 1024,\n        \"settlementDate\": \"2026-10-15\",\n        \"totalOrders\": 1\n      },\n      \"bankAccount\": {\n        \"titular\": \"Comercio Prueba\",\n        \"bankId\": \"0199a1b2-8888-7e5f-8a6b-1c2d3e4f0009\",\n        \"bankName\": \"Banco Prueba\",\n        \"typeAccountId\": \"0199a1b2-9999-7e5f-8a6b-1c2d3e4f0010\",\n        \"typeAccountName\": \"Ahorro\",\n        \"accountNumber\": \"0000000000\"\n      },\n      \"totals\": {\n        \"totalConsignmentValue\": 10,\n        \"totalDeliveryCost\": 3.39,\n        \"totalCommission\": 0.5,\n        \"totalSettledAmount\": 6.11\n      },\n      \"orders\": [\n        {\n          \"orderId\": \"0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\",\n          \"comprobante\": \"29137811\",\n          \"deliveryDate\": \"2026-10-10\",\n          \"consignmentValue\": 10,\n          \"deliveryCost\": 3.39,\n          \"commission\": 0.5,\n          \"settledAmount\": 6.11\n        }\n      ]\n    }\n  ],\n  \"export\": {\n    \"URLDataExcel\": \"\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "8bfae6c6-83de-48cd-a78c-b635e2af4e6b",
              "name": "Filtros, ordenamiento o paginación inválidos. Se reporta el primer error encontrado.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "history",
                    "settlements"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"dateType\": \"settlementDate\",\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\"\n  },\n  \"order\": {\n    \"orderBy\": \"settlementDate\",\n    \"orderDirection\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"orderBy inválido. Valores permitidos: orderId, comprobante, deliveryDate, codActa, settlementDate, titular, bankId, bankName, typeAccountId, typeAccountName, accountNumber, consignmentValue, deliveryCost, commission, settledAmount\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "59c231fb-2c7c-4d76-b5fb-1ba147965879",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "history",
                    "settlements"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"dateType\": \"settlementDate\",\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\"\n  },\n  \"order\": {\n    \"orderBy\": \"settlementDate\",\n    \"orderDirection\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "45030b6f-d40a-47ea-abc6-adeb59d02298",
              "name": "Error interno",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "history",
                    "settlements"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"dateType\": \"settlementDate\",\n    \"dateFrom\": \"2026-10-01\",\n    \"dateTo\": \"2026-10-31\"\n  },\n  \"order\": {\n    \"orderBy\": \"settlementDate\",\n    \"orderDirection\": \"DESC\"\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20\n  },\n  \"export\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener el historial de liquidaciones\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "fc2275f9-ab1c-431c-a353-beef552edb0b",
          "name": "Obtener el detalle de una liquidación",
          "request": {
            "name": "Obtener el detalle de una liquidación",
            "description": {
              "content": "Retorna el detalle de un acta de liquidación del comercio: la cuenta bancaria donde se depositó, las órdenes que incluye con sus montos y los totales.\nPor cada orden: el monto cobrado (`montoEnvio`), el costo del envío (`costoEnvio`), la comisión (`cme`) y el monto liquidado al comercio (`montoLiquidado`).\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "branchs",
                "settlements",
                "liquidationActs"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"codActa\": \"0199a1b2-1919-7e5f-8a6b-1c2d3e4f0081\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "0082c985-7fdc-43a2-9f64-7c50a2b63552",
              "name": "Detalle de la liquidación obtenido",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "settlements",
                    "liquidationActs"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"codActa\": \"0199a1b2-1919-7e5f-8a6b-1c2d3e4f0081\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Datos de liquidación obtenidos correctamente\",\n  \"data\": {\n    \"accountData\": {\n      \"codActa\": 1024,\n      \"actaFecha\": \"2026-10-15\",\n      \"branchId\": \"0199a1b2-0000-7e5f-8a6b-1c2d3e4f0001\",\n      \"branchName\": \"Comercio Prueba\",\n      \"branchEmail\": \"comercio.prueba@example.com\",\n      \"titular\": \"Comercio Prueba\",\n      \"bankName\": \"Banco Prueba\",\n      \"typeAccount\": \"Ahorro\",\n      \"accountNumber\": \"0000000000\"\n    },\n    \"orders\": [\n      {\n        \"ordersId\": \"0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\",\n        \"montoEnvio\": 10,\n        \"costoEnvio\": 3.39,\n        \"cme\": 0.5,\n        \"montoLiquidado\": 6.11\n      }\n    ],\n    \"totals\": {\n      \"totalMontoEnvio\": 10,\n      \"totalCostoEnvio\": 3.39,\n      \"totalCme\": 0.5,\n      \"totalLiquidado\": 6.11\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "6d689b66-e876-4c08-befe-0a5e7bc606b8",
              "name": "codActa falta o no es un UUID válido",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "settlements",
                    "liquidationActs"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"codActa\": \"0199a1b2-1919-7e5f-8a6b-1c2d3e4f0081\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"codActa es requerido y debe ser un UUID válido\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "aa02c1e1-1a5c-46b1-b722-1c068e713ba1",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "settlements",
                    "liquidationActs"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"codActa\": \"0199a1b2-1919-7e5f-8a6b-1c2d3e4f0081\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "2fa54ab4-f409-4eaf-af8f-c24f10ecc89c",
              "name": "Error interno",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "branchs",
                    "settlements",
                    "liquidationActs"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"codActa\": \"0199a1b2-1919-7e5f-8a6b-1c2d3e4f0081\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener los datos del acta de liquidación\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "Operaciones masivas",
      "item": [
        {
          "id": "45d7b875-5947-4a91-b568-3ec459755dc6",
          "name": "Generar plantilla Excel para envíos masivos",
          "request": {
            "name": "Generar plantilla Excel para envíos masivos",
            "description": {
              "content": "Genera la plantilla Excel (.xlsx) configurada para el comercio y retorna una URL temporal para descargarla. Se llena una fila por orden y se carga con `POST /api/batchShipping`.\n\nLa plantilla trae listas desplegables con las direcciones de recolecta del comercio, los couriers con sus servicios y tipos de servicio, y los departamentos y municipios. Tiene espacio para 499 órdenes (filas 2 a 500).\n\nLa URL es pública (no requiere token) y el archivo es temporal: descárguelo en cuanto lo reciba.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "batchShipping"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET"
          },
          "response": [
            {
              "id": "cd32d77b-30d8-4bd9-b29e-501d76aab263",
              "name": "Plantilla generada",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "batchShipping"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"success\",\n  \"response_message\": \"Plantilla Excel generada correctamente\",\n  \"data\": {\n    \"url\": \"https://api.volao.app/api/tmp/shipping-template-0199a1b2-0000-7000-8000-000000000001-1759900000000.xlsx\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "bb681cf1-0fbf-4df9-a5e4-aee515b37917",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "batchShipping"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "94b25080-1da3-46e2-9fcd-cd2b3881b382",
              "name": "Error al generar la plantilla",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "batchShipping"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"error\",\n  \"response_message\": \"Error al generar la plantilla Excel\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "1f179c05-a57d-46f7-a7a9-a7a83b91ee3a",
          "name": "Crear órdenes masivas (carga de Excel)",
          "request": {
            "name": "Crear órdenes masivas (carga de Excel)",
            "description": {
              "content": "Crea varias órdenes a partir de la plantilla Excel llena (`GET /api/batchShipping`). Cada fila se valida y se procesa por separado.\n**La respuesta es 200 aunque algunas filas fallen:** revise `isValid` y `response_message` de cada fila en `data[]`.\n`codeExcel` es el número de fila del Excel, para ubicar los errores.\n\n**Cómo enviar el archivo**\n\n- Se envía como `multipart/form-data` en el campo `file`, con el tipo de contenido de Excel\n  (`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`). Si el archivo llega con otro tipo\n  (por ejemplo `application/octet-stream`), se rechaza. Con curl: `-F \"file=@plantilla.xlsx;type=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"`.\n- Solo se lee el formato .xlsx. Un .xls (formato antiguo) se rechaza con `El archivo no pudo ser leído como Excel`.\n- Se lee la primera hoja; la fila 1 son los encabezados y las filas vacías se omiten.\n- Llene la plantilla en Excel u otra hoja de cálculo que guarde el resultado de las fórmulas: las columnas ocultas\n  calculan los IDs (dirección, municipio, servicio) a partir de lo elegido en las listas. Si el archivo se genera\n  con una librería que no calcula fórmulas, las filas fallan.\n\n**Columnas y validaciones por fila**\n\nCada fila se valida en este orden y se reporta solo el primer error:\n\n| Columna | Dato | Regla | Mensaje si falla |\n| --- | --- | --- | --- |\n| B | Nombre de cliente | Obligatorio, de 2 a 150 caracteres | `El nombre del cliente es obligatorio y no puede estar vacío`, `El nombre del cliente debe contener al menos 2 caracteres`, `El nombre del cliente es demasiado largo. No puede superar los 150 caracteres` |\n| C | Teléfono de cliente | Obligatorio, de 7 a 9 caracteres: números y, opcionalmente, guion | `El número de teléfono del cliente es obligatorio`, `El número de teléfono del cliente no puede tener más de 9 caracteres. Puede ingresarse con o sin guion`, `El número de teléfono del cliente solo puede contener números y, opcionalmente, un guion` |\n| D | Dirección de envío | Obligatoria, de 5 a 250 caracteres | `La dirección del cliente es obligatoria y no puede estar vacía`, `La dirección del cliente es demasiado corta. Debe contener al menos 5 caracteres`, `La dirección del cliente es demasiado larga. No puede superar los 250 caracteres` |\n| E, F | Departamento y municipio | Elegidos de la lista | `No se pudo identificar el municipio del cliente. Verifica que el municipio exista y esté correctamente seleccionado` |\n| A | Dirección de recolección | Elegida de la lista | `Seleccione una dirección de recolección válida` |\n| I | Courier | Obligatorio | `Seleccione un courier válido` |\n| J | Servicio | Obligatorio | `Seleccione un servicio` |\n| K | Tipo de servicio | Obligatorio; la combinación de courier, servicio y tipo debe existir en la lista | `Seleccione un tipo de servicio`, `La combinación de courier, servicio y tipo de servicio no es válida` |\n| L | Tipo de entrega | `Entrega Normal (Sin Cobro)` o `Cobro Contra Entrega` | `Seleccione un tipo de entrega válido` |\n| N | Descripción del producto | Obligatoria, máximo 150 caracteres | `Ingrese una descripción del producto`, `La descripción del producto es demasiado larga` |\n| H | Peso (lb) | Número mayor que 0 | `Ingrese un peso válido` |\n| G | Cantidad de paquetes | Entero de 1 a 50 | `Ingrese una cantidad de paquetes válida` |\n| M | Monto a cobrar | Mayor que 0 con `Cobro Contra Entrega`; sin cobro, vacío o mayor o igual a 0 | `Ingrese un monto a cobrar válido, por ejemplo 15.50`, `El monto a cobrar no puede ser negativo` |\n| O | Comentarios | Opcional, máximo 300 caracteres | `Los comentarios son demasiado largos` |\n\n**Qué hace cada fila válida**\n\nGuarda o actualiza el destinatario en los clientes del comercio y crea la orden igual que `POST /api/orders`:\ngenera la guía y descuenta el costo del saldo. Si la creación falla (por ejemplo, por saldo o por un error del courier),\nla fila llega con `isValid: false` y el mensaje de ese error. Las demás filas se procesan igual.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "batchShipping"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "multipart/form-data"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "file",
                  "type": "file",
                  "contentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                  "description": "(Required) Plantilla Excel (.xlsx) de `GET /api/batchShipping` con al menos una fila de datos. El cuerpo de la petición admite hasta 30 MB."
                }
              ]
            }
          },
          "response": [
            {
              "id": "acfab92d-a117-4548-99b5-4dd37431120a",
              "name": "Archivo procesado; revisar el resultado de cada fila",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "batchShipping"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "description": {
                        "content": "(Required) Plantilla Excel (.xlsx) de `GET /api/batchShipping` con al menos una fila de datos. El cuerpo de la petición admite hasta 30 MB.",
                        "type": "text/plain"
                      },
                      "key": "file",
                      "type": "file",
                      "contentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"success\",\n  \"response_message\": \"Archivo procesado\",\n  \"data\": [\n    {\n      \"codeExcel\": 2,\n      \"ordersId\": \"0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\",\n      \"courierName\": \"Mensajería Ejemplo\",\n      \"comprobante\": \"29137811\",\n      \"recipientName\": \"Cliente Prueba\",\n      \"departmentName\": \"SAN SALVADOR\",\n      \"municipalityName\": \"SAN SALVADOR CENTRO\",\n      \"recipientAddress\": \"Calle Ficticia #123, Colonia Prueba\",\n      \"totalWeight\": 4,\n      \"cantPackages\": 1,\n      \"shippingAmount\": 10,\n      \"onDelivery\": 1,\n      \"isValid\": true,\n      \"response_message\": \"Orden creada correctamente\",\n      \"guide\": {\n        \"URLguide\": \"https://mensajeria.example.com/guias/GUIA-PRUEBA.pdf\"\n      },\n      \"tracking\": {\n        \"URLtracking\": \"https://tracking.example.com/?orderId=0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008\"\n      }\n    },\n    {\n      \"codeExcel\": 3,\n      \"ordersId\": 0,\n      \"courierName\": \"Mensajería Ejemplo\",\n      \"comprobante\": \"\",\n      \"recipientName\": \"Cliente Prueba\",\n      \"departmentName\": \"SANTA ANA\",\n      \"municipalityName\": \"SANTA ANA CENTRO\",\n      \"recipientAddress\": \"\",\n      \"totalWeight\": 0,\n      \"cantPackages\": 0,\n      \"shippingAmount\": 0,\n      \"onDelivery\": 0,\n      \"isValid\": false,\n      \"response_message\": \"El número de teléfono del cliente solo puede contener números y, opcionalmente, un guion\",\n      \"guide\": {\n        \"URLguide\": \"\"\n      },\n      \"tracking\": {\n        \"URLtracking\": \"\"\n      }\n    }\n  ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "bc1a7730-302a-4124-908f-ae771a60f4cf",
              "name": "El archivo no es válido. Mensajes posibles: `No se envió ningún archivo`, `El archivo enviado no es válido`,\n`El archivo enviado no es un archivo Excel válido`, `El archivo no pudo ser leído como Excel`,\n`El archivo Excel no contiene hojas`, `El archivo Excel no contiene registros`.\n",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "batchShipping"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "description": {
                        "content": "(Required) Plantilla Excel (.xlsx) de `GET /api/batchShipping` con al menos una fila de datos. El cuerpo de la petición admite hasta 30 MB.",
                        "type": "text/plain"
                      },
                      "key": "file",
                      "type": "file",
                      "contentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"error\",\n  \"response_message\": \"No se envió ningún archivo\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "8d389b6d-2d79-444a-b597-f893bb3c11b5",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "batchShipping"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "description": {
                        "content": "(Required) Plantilla Excel (.xlsx) de `GET /api/batchShipping` con al menos una fila de datos. El cuerpo de la petición admite hasta 30 MB.",
                        "type": "text/plain"
                      },
                      "key": "file",
                      "type": "file",
                      "contentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "e0fdb8af-4154-4eea-8490-e1989462bb9e",
              "name": "Error interno al procesar el archivo",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "batchShipping"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "description": {
                        "content": "(Required) Plantilla Excel (.xlsx) de `GET /api/batchShipping` con al menos una fila de datos. El cuerpo de la petición admite hasta 30 MB.",
                        "type": "text/plain"
                      },
                      "key": "file",
                      "type": "file",
                      "contentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
                    }
                  ]
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"error\",\n  \"response_message\": \"Error al procesar el archivo Excel\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "51085547-a65d-4057-857e-722420c0512c",
          "name": "Generar guías masivas",
          "request": {
            "name": "Generar guías masivas",
            "description": {
              "content": "Genera un solo documento PDF con las guías de varias órdenes de un mismo courier y retorna su URL.\nSolo está disponible para los couriers que admiten guía masiva; con los demás responde 500 `No se pudo generar la guía masiva`.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "batchShipping",
                "guides"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"courierId\": \"019f81b1-a481-77d5-be76-6c74b42c1e59\",\n  \"comprobantes\": [\n    \"29137811\",\n    \"29137812\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "1b8c60a7-80e3-4037-a636-7e54f9e87eb6",
              "name": "Guías generadas",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "batchShipping",
                    "guides"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"courierId\": \"019f81b1-a481-77d5-be76-6c74b42c1e59\",\n  \"comprobantes\": [\n    \"29137811\",\n    \"29137812\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Guías generadas exitosamente\",\n  \"data\": {\n    \"guideUrl\": \"https://api.volao.app/api/tmp/GUIAS-POR-LOTE-1759900000000.pdf\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "bd04e3cf-4d3f-49cb-8a8f-0a7e0e604b87",
              "name": "Faltan parámetros (`courierId` o una lista de comprobantes no vacía), o los comprobantes no son válidos para el courier",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "batchShipping",
                    "guides"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"courierId\": \"019f81b1-a481-77d5-be76-6c74b42c1e59\",\n  \"comprobantes\": [\n    \"29137811\",\n    \"29137812\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Los parámetros courierId y orders (o comprobantes) son requeridos\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "a6335efd-0fad-4786-af07-a51789facd31",
              "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "batchShipping",
                    "guides"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"courierId\": \"019f81b1-a481-77d5-be76-6c74b42c1e59\",\n  \"comprobantes\": [\n    \"29137811\",\n    \"29137812\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "7ca6e79c-f4fc-49eb-8e03-5e7fb2a5c0b3",
              "name": "No se pudo generar el documento de guías",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "batchShipping",
                    "guides"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"courierId\": \"019f81b1-a481-77d5-be76-6c74b42c1e59\",\n  \"comprobantes\": [\n    \"29137811\",\n    \"29137812\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"No se pudo generar la guía masiva\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "Catálogos",
      "item": [
        {
          "name": "Datos públicos",
          "item": [
            {
              "id": "a4eb35aa-9eec-4746-88eb-d00d04fa0dc8",
              "name": "Obtener todos los departamentos",
              "request": {
                "name": "Obtener todos los departamentos",
                "description": {
                  "content": "Retorna el catálogo de departamentos. El `departmentId` es el valor que se envía para consultar municipios.",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "open",
                    "departments"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "auth": {
                  "type": "noauth"
                }
              },
              "response": [
                {
                  "id": "7c3268bf-6a58-40ab-bf60-8bfed175fd90",
                  "name": "Departamentos obtenidos",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "open",
                        "departments"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Departamentos procesados correctamente\",\n  \"data\": [\n    {\n      \"departmentId\": \"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0004\",\n      \"departmentsCode\": \"01\",\n      \"departmentName\": \"AHUACHAPÁN\"\n    },\n    {\n      \"departmentId\": \"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0014\",\n      \"departmentsCode\": \"02\",\n      \"departmentName\": \"SANTA ANA\"\n    }\n  ]\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "2d8844ce-d1c3-423a-88e3-07de557386c7",
                  "name": "No hay departamentos registrados",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "open",
                        "departments"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Not Found",
                  "code": 404,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 404,\n  \"response_status\": \"Error\",\n  \"response_message\": \"No se encontraron departamentos\",\n  \"data\": null\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "87c75121-5d4e-4617-976e-d060f8402c79",
                  "name": "Error interno",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "open",
                        "departments"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error inesperado al obtener los departamentos.\",\n  \"data\": null\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "id": "632d8c65-b44f-4cb0-8758-6971036d0f6d",
              "name": "Obtener municipios por departamento",
              "request": {
                "name": "Obtener municipios por departamento",
                "description": {
                  "content": "Retorna los municipios de un departamento. El `municipalityId` se usa al crear clientes y al cotizar envíos.",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "open",
                    "municipality"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "noauth"
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"departmentId\": \"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0004\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "response": [
                {
                  "id": "f686dd48-09be-4323-9e05-5c46855e3501",
                  "name": "Municipios obtenidos",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "open",
                        "municipality"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"departmentId\": \"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0004\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Municipios procesados correctamente\",\n  \"data\": [\n    {\n      \"municipalityId\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0005\",\n      \"municipalityCode\": \"0101\",\n      \"municipalityName\": \"AHUACHAPÁN\"\n    },\n    {\n      \"municipalityId\": \"0199a1b2-4444-7e5f-8a6b-1c2d3e4f0015\",\n      \"municipalityCode\": \"0102\",\n      \"municipalityName\": \"APANECA\"\n    }\n  ]\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "d368adb6-94a5-47ae-b442-45bd30d3fdd9",
                  "name": "Falta el departmentId o no es un UUID válido",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "open",
                        "municipality"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"departmentId\": \"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0004\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Bad Request",
                  "code": 400,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"El campo departmentId es requerido y debe ser un UUID válido\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "fd0a7069-9517-48f5-8245-06ae713039be",
                  "name": "El departamento no existe",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "open",
                        "municipality"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"departmentId\": \"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0004\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Not Found",
                  "code": 404,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 404,\n  \"response_status\": \"Error\",\n  \"response_message\": \"El departamento \\\"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0004\\\" no corresponde a ningún departamento válido registrado en el sistema.\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "2f085ff5-4c50-4dc0-b351-81ce7986b432",
                  "name": "Error interno, o el cuerpo no es un JSON válido",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "open",
                        "municipality"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"departmentId\": \"0199a1b2-3333-7e5f-8a6b-1c2d3e4f0004\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error inesperado al obtener los municipios.\",\n  \"data\": null\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "id": "54811ff4-dfe4-4fa7-a91a-87de4ead4953",
              "name": "Obtener tipos de direcciones de sucursal",
              "request": {
                "name": "Obtener tipos de direcciones de sucursal",
                "description": {
                  "content": "Retorna los tipos de dirección (casa, tienda, bodega…). El `TypeBranchAddressId` se envía como `typeBranchAddressId` al crear o actualizar una dirección de recolecta.",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "open",
                    "typeBranchAddress"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "auth": {
                  "type": "noauth"
                }
              },
              "response": [
                {
                  "id": "cab3f1d4-fd80-45ec-9836-106e0e5c8b97",
                  "name": "Tipos de dirección obtenidos",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "open",
                        "typeBranchAddress"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Tipos de dirección obtenidos correctamente\",\n  \"data\": [\n    {\n      \"TypeBranchAddressId\": \"0199a1b2-1111-7e5f-8a6b-1c2d3e4f0002\",\n      \"codeBranchAddress\": \"CASA\",\n      \"icon\": \"fa-solid fa-house\"\n    },\n    {\n      \"TypeBranchAddressId\": \"0199a1b2-1111-7e5f-8a6b-1c2d3e4f0012\",\n      \"codeBranchAddress\": \"TIENDA\",\n      \"icon\": \"fa-solid fa-store\"\n    }\n  ]\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "259e1dab-ae98-48a6-9ba6-ce3829a3fdc5",
                  "name": "Error interno",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "open",
                        "typeBranchAddress"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener los tipos de direcciones\",\n  \"data\": []\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "id": "c8d67674-2719-49f4-ac09-c5870d7f0c56",
              "name": "Obtener listado de bancos",
              "request": {
                "name": "Obtener listado de bancos",
                "description": {
                  "content": "Retorna los bancos habilitados y los tipos de cuenta, para registrar la cuenta bancaria del comercio.",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "open",
                    "banks"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "auth": {
                  "type": "noauth"
                }
              },
              "response": [
                {
                  "id": "a8ab8600-7afe-4ad8-87a4-358271e28e30",
                  "name": "Bancos y tipos de cuenta obtenidos",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "open",
                        "banks"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Bancos obtenidos correctamente\",\n  \"data\": {\n    \"banks\": [\n      {\n        \"banksId\": \"0199a1b2-cccc-7e5f-8a6b-1c2d3e4f000d\",\n        \"banksName\": \"Banco Prueba\",\n        \"swiftCode\": \"BPRUSVSS\",\n        \"localBankCode\": \"001\"\n      }\n    ],\n    \"typeAccount\": [\n      {\n        \"typeAccountId\": \"0199a1b2-dddd-7e5f-8a6b-1c2d3e4f000e\",\n        \"accountCode\": \"AHORRO\",\n        \"accountName\": \"Cuenta de ahorro\"\n      }\n    ]\n  }\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "2d05fbba-f8cb-4883-868e-3c82a7305d1c",
                  "name": "Error interno; el mensaje incluye el detalle del error",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "open",
                        "banks"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener bancos: <detalle del error>\",\n  \"data\": {\n    \"banks\": [],\n    \"typeAccount\": []\n  }\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "id": "274ce1be-e7aa-423e-9b69-5290b332cc08",
              "name": "Obtener tipos de documentos de persona",
              "request": {
                "name": "Obtener tipos de documentos de persona",
                "description": {
                  "content": "Retorna los tipos de persona (natural, jurídica…) con los documentos que cada uno debe presentar (DUI, NIT, etc.).",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "open",
                    "typePersonDocument"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "auth": {
                  "type": "noauth"
                }
              },
              "response": [
                {
                  "id": "d6809848-dac9-4b17-871c-995b6c8eacfe",
                  "name": "Tipos de persona y documentos obtenidos",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "open",
                        "typePersonDocument"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Tipos de documentos obtenidos correctamente\",\n  \"data\": [\n    {\n      \"TypePersonId\": 1,\n      \"namePerson\": \"Persona natural\",\n      \"documents\": [\n        {\n          \"documentId\": 1,\n          \"documentName\": \"DUI\",\n          \"isRequired\": true\n        }\n      ]\n    }\n  ]\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "5425fc0c-a917-452a-a2e2-5da97e5d580b",
                  "name": "Error interno; el mensaje incluye el detalle del error",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "open",
                        "typePersonDocument"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener tipos de documentos: <detalle del error>\",\n  \"data\": []\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "id": "d47a48d0-9195-4e18-bb31-4352a7172b68",
              "name": "Seguimiento público de órdenes",
              "request": {
                "name": "Seguimiento público de órdenes",
                "description": {
                  "content": "Retorna el estado y el historial de movimientos de una orden, sin token.\nEs el endpoint que usa la página pública de seguimiento que se comparte con el destinatario.\n",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "open",
                    "trackingComp"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "key": "OrderId",
                      "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008",
                      "description": "(Required) UUID de la orden."
                    },
                    {
                      "disabled": false,
                      "key": "identifier",
                      "value": "string",
                      "description": "Opcional. Identificador cifrado del comercio, incluido en los enlaces de seguimiento que genera Volao. No cambia la respuesta; no es necesario enviarlo."
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "auth": {
                  "type": "noauth"
                }
              },
              "response": [
                {
                  "id": "1539fde6-0fe6-4894-a94e-5af714c0b711",
                  "name": "Seguimiento obtenido",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "open",
                        "trackingComp"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "OrderId",
                          "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008"
                        },
                        {
                          "key": "identifier",
                          "value": "string"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Tracking obtenido correctamente\",\n  \"data\": {\n    \"generalData\": {\n      \"comment\": null,\n      \"creationDate\": \"2026-10-07 10:15:00\",\n      \"branchName\": \"Comercio Prueba\",\n      \"cantPackages\": 1,\n      \"courierName\": \"Mensajería Ejemplo\",\n      \"statusMainDescription\": \"EN RUTA\",\n      \"subStatusDescription\": \"En ruta de entrega\",\n      \"colorMovement\": \"#1565C0\",\n      \"flowGroup\": null,\n      \"publicNotice\": {\n        \"hasNotice\": false,\n        \"type\": null,\n        \"message\": null\n      },\n      \"recipientName\": \"Cliente Prueba\",\n      \"collectionDate\": \"2026-10-07\",\n      \"deliveryDate\": null,\n      \"deliveryMessage\": null,\n      \"alertColor_delivery\": null\n    },\n    \"geolocation\": {\n      \"latitude\": \"13.692940\",\n      \"longitude\": \"-89.218191\"\n    },\n    \"resources\": {\n      \"imgURL\": null,\n      \"markedMap\": null\n    },\n    \"trackingMovement\": [\n      {\n        \"iconMovement\": \"fa-solid fa-truck\",\n        \"colorMovement\": \"#1565C0\",\n        \"statusMainDescription\": \"EN RUTA\",\n        \"flowGroup\": null,\n        \"dateMovement\": \"2026-10-07 14:30:00\"\n      }\n    ]\n  }\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "fd00bfdb-cbaa-4080-b731-17bca6876432",
                  "name": "Falta el OrderId o no es un UUID válido",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "open",
                        "trackingComp"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "OrderId",
                          "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008"
                        },
                        {
                          "key": "identifier",
                          "value": "string"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Bad Request",
                  "code": 400,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"OrderId es requerido\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "af059ee7-04ea-4d3c-a4eb-eb349285f79c",
                  "name": "Error interno",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "open",
                        "trackingComp"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "OrderId",
                          "value": "0199a1b2-7777-7e5f-8a6b-1c2d3e4f0008"
                        },
                        {
                          "key": "identifier",
                          "value": "string"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al capturar tracking de envío\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ]
        },
        {
          "name": "Estados",
          "item": [
            {
              "id": "69e7d526-cced-43be-af94-030063a129a8",
              "name": "Obtener estados de orden",
              "request": {
                "name": "Obtener estados de orden",
                "description": {
                  "content": "Retorna el catálogo de estados principales de una orden (`CONFIRMED`, `IN_WAREHOUSE`, `IN_ROUTE`, `INCIDENT`, `DELIVERED`, `CANCELLED`…).\n\nSirve para:\n- Interpretar el estado de una orden en el seguimiento (`GET /api/orders/tracking`).\n- Obtener el `statusMainId` para consultar los subestados (`GET /api/subStatusMain`).\n",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "statusMain"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "key": "flowGroups",
                      "value": "delivery,return",
                      "description": "Opcional. Grupos de flujo a incluir, separados por coma y sin repetidos. Sin este parámetro retorna todos los estados."
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET"
              },
              "response": [
                {
                  "id": "ab5c4fa3-b029-4946-aa83-39a621beb59f",
                  "name": "Estados obtenidos",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "statusMain"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "flowGroups",
                          "value": "delivery,return"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"success\",\n  \"response_message\": \"Estados principales obtenidos correctamente.\",\n  \"data\": [\n    {\n      \"statusMainId\": \"0199a1b2-5555-7e5f-8a6b-1c2d3e4f0021\",\n      \"statusCode\": \"CONFIRMED\",\n      \"descriptionStatus\": \"Pedido confirmado\",\n      \"flowGroup\": \"delivery\"\n    },\n    {\n      \"statusMainId\": \"0199a1b2-5555-7e5f-8a6b-1c2d3e4f0022\",\n      \"statusCode\": \"IN_ROUTE\",\n      \"descriptionStatus\": \"En ruta de entrega\",\n      \"flowGroup\": \"delivery\"\n    },\n    {\n      \"statusMainId\": \"0199a1b2-5555-7e5f-8a6b-1c2d3e4f0023\",\n      \"statusCode\": \"DELIVERED\",\n      \"descriptionStatus\": \"Entregado\",\n      \"flowGroup\": \"delivery\"\n    },\n    {\n      \"statusMainId\": \"0199a1b2-5555-7e5f-8a6b-1c2d3e4f0024\",\n      \"statusCode\": \"REFUNDED\",\n      \"descriptionStatus\": \"Devuelto y reembolsado\",\n      \"flowGroup\": \"return\"\n    }\n  ]\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "49a85bde-8ebe-49ed-b26f-fc0e1ae1cd37",
                  "name": "flowGroups contiene valores repetidos",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "statusMain"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "flowGroups",
                          "value": "delivery,return"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Bad Request",
                  "code": 400,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"flowGroups no puede contener valores repetidos\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "caa879a2-e595-420f-b2ca-8775494ba3e9",
                  "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "statusMain"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "flowGroups",
                          "value": "delivery,return"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Unauthorized",
                  "code": 401,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "2ee2584d-4e23-4084-8a22-83dc6938f2bc",
                  "name": "Error interno",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "statusMain"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "flowGroups",
                          "value": "delivery,return"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"error\",\n  \"response_message\": \"Error al obtener status main\",\n  \"data\": []\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "id": "2af4861b-d6d3-4efe-88c2-d886411ac209",
              "name": "Obtener subestados de un estado",
              "request": {
                "name": "Obtener subestados de un estado",
                "description": {
                  "content": "Retorna los subestados de un estado principal. El subestado detalla el estado de la orden en el seguimiento\n(por ejemplo, dentro de `INCIDENT`: dirección incorrecta, destinatario ausente…).\nEl `statusMainId` se obtiene de `GET /api/statusMain`.\n",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "subStatusMain"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "key": "statusMainId",
                      "value": "0199a1b2-5555-7e5f-8a6b-1c2d3e4f0022",
                      "description": "(Required) ID del estado principal (`statusMainId` de `GET /api/statusMain`)."
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET"
              },
              "response": [
                {
                  "id": "22e98030-fcde-4c4a-b542-c5710c238b91",
                  "name": "Subestados obtenidos",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "subStatusMain"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "statusMainId",
                          "value": "0199a1b2-5555-7e5f-8a6b-1c2d3e4f0022"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Subestados obtenidos correctamente\",\n  \"data\": [\n    {\n      \"subStatusMainId\": \"0199a1b2-6666-7e5f-8a6b-1c2d3e4f0031\",\n      \"subStatusDescription\": \"En ruta de entrega\"\n    },\n    {\n      \"subStatusMainId\": \"0199a1b2-6666-7e5f-8a6b-1c2d3e4f0032\",\n      \"subStatusDescription\": \"Reprogramado para el siguiente día\"\n    }\n  ]\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "2d3a324c-8d69-4504-9fce-76ec750c6f11",
                  "name": "statusMainId no enviado o no es un UUID válido",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "subStatusMain"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "statusMainId",
                          "value": "0199a1b2-5555-7e5f-8a6b-1c2d3e4f0022"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Bad Request",
                  "code": 400,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 400,\n  \"response_status\": \"Error\",\n  \"response_message\": \"El parámetro \\\"statusMainId\\\" es requerido y debe ser un UUID válido\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "9cda4e2a-fc4f-4aa7-a1a1-16fbbb57698b",
                  "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "subStatusMain"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "statusMainId",
                          "value": "0199a1b2-5555-7e5f-8a6b-1c2d3e4f0022"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Unauthorized",
                  "code": 401,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "73b0dd4f-f0c3-4e07-b967-855031492b41",
                  "name": "Error interno",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "subStatusMain"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [
                        {
                          "key": "statusMainId",
                          "value": "0199a1b2-5555-7e5f-8a6b-1c2d3e4f0022"
                        }
                      ],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error al obtener los subestados\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "id": "5372a850-65d4-456e-b68c-022dd56d6a9a",
              "name": "Obtener motivos de movimiento",
              "request": {
                "name": "Obtener motivos de movimiento",
                "description": {
                  "content": "Retorna el catálogo de motivos de movimiento de saldo (recarga, cobro de envío, devolución, beneficio…). El `movementTypeId` se usa como filtro `filters.movementReasonId` en `POST /api/branchs/history/transactionsAndMovements`.",
                  "type": "text/plain"
                },
                "url": {
                  "path": [
                    "api",
                    "movementReason"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET"
              },
              "response": [
                {
                  "id": "15c85bcf-e374-4a2f-b798-fa07bdf31cf6",
                  "name": "Motivos obtenidos",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "movementReason"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Motivos de movimiento procesados correctamente\",\n  \"data\": [\n    {\n      \"movementTypeId\": \"0199a1b2-1234-7e5f-8a6b-1c2d3e4f0013\",\n      \"movementCode\": \"RECHARGE\",\n      \"movementDescription\": \"Recarga de Saldo\",\n      \"movementDirection\": \"credit\",\n      \"affectsBalance\": true\n    },\n    {\n      \"movementTypeId\": \"0199a1b2-1238-7e5f-8a6b-1c2d3e4f0017\",\n      \"movementCode\": \"PACKAGE_CHANGE_CREDIT\",\n      \"movementDescription\": \"Reintegro por reducción de paquetes\",\n      \"movementDirection\": \"credit\",\n      \"affectsBalance\": true\n    }\n  ]\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "2fcc8111-0748-45ba-bad2-78198512428b",
                  "name": "Falta el token, venció (dura 15 minutos) o no es válido. Repite el login para obtener uno nuevo.",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "movementReason"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Unauthorized",
                  "code": 401,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 401,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Token inválido o expirado\"\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "d476c30a-2096-421d-ba39-9239fad3b7b8",
                  "name": "No hay motivos registrados",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "movementReason"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Not Found",
                  "code": 404,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 404,\n  \"response_status\": \"Error\",\n  \"response_message\": \"No se encontraron motivos de movimiento\",\n  \"data\": null\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                },
                {
                  "id": "a52209e1-4883-455c-9168-a2621cfec1d0",
                  "name": "Error interno",
                  "originalRequest": {
                    "url": {
                      "path": [
                        "api",
                        "movementReason"
                      ],
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "query": [],
                      "variable": []
                    },
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "GET",
                    "body": {}
                  },
                  "status": "Internal Server Error",
                  "code": 500,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"response_code\": 500,\n  \"response_status\": \"Error\",\n  \"response_message\": \"Error inesperado al obtener los motivos de movimiento\",\n  \"data\": null\n}",
                  "cookie": [],
                  "_postman_previewlanguage": "json"
                }
              ],
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ]
        }
      ]
    }
  ],
  "event": [],
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.volao.app",
      "type": "string",
      "description": "URL base de la API. Producción: https://api.volao.app · Desarrollo: https://api.dev.volao.app"
    },
    {
      "key": "client_id",
      "value": "client_demo",
      "type": "string",
      "description": "Tu client_id (credenciales del cliente API)."
    },
    {
      "key": "client_secret",
      "value": "secret_demo",
      "type": "string",
      "description": "Tu client_secret (credenciales del cliente API)."
    },
    {
      "key": "access_token",
      "value": "",
      "type": "string",
      "description": "Se llena solo al enviar el login. Vence a los 15 minutos."
    }
  ],
  "info": {
    "name": "API de Volao",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "description": {
      "content": "## Cómo empezar\n\n1. En la pestaña **Variables** de la colección, cambia `client_id` y `client_secret` por tus credenciales.\n2. Envía **Autenticación › Login de cliente API**: el token se guarda solo en `access_token`.\n3. Prueba cualquier otro endpoint: todos usan ese token. Cuando venza (15 minutos), repite el login.\n\nPara usar el servidor de desarrollo, cambia `baseUrl` por `https://api.dev.volao.app`.\n\n---\n\nLa API REST de Volao conecta tu tienda o sistema con la plataforma de envíos de Volao. Con ella puedes cotizar envíos entre varias mensajerías, crear y cancelar órdenes, obtener la guía de cada envío y seguir su recorrido, además de administrar las direcciones de recolecta y los clientes de tu comercio.\n\n## Qué puedes hacer\n\n| Área | Para qué sirve |\n| --- | --- |\n| **Autenticación** | Obtener el token de acceso con tus credenciales. |\n| **Órdenes** | Crear órdenes de envío, cancelarlas, obtener la guía, consultar el seguimiento y sus incidencias. |\n| **Mensajerías** | Cotizar un envío, y consultar las mensajerías disponibles, sus modalidades de servicio, promesas de entrega, cobertura, agencias y tarifas. |\n| **Sucursales** | Administrar las direcciones de recolecta y los clientes (destinatarios) de tu comercio. |\n| **Historial** | Consultar el historial de órdenes, de transacciones y movimientos de saldo, de liquidaciones y de beneficios del comercio. |\n| **Operaciones masivas** | Crear órdenes y generar guías por lote a partir de un archivo Excel. |\n| **Catálogos y datos públicos** | Departamentos, municipios, tipos de dirección, bancos, tipos de documento, motivos de movimiento y seguimiento público de órdenes. |\n\n## URL base\n\nTodas las rutas empiezan con `/api` y se concatenan a la URL del servidor. Por ejemplo: `{servidor}/api/orders`. En el panel **Petición** de cada endpoint puedes ver y elegir el servidor.\n\n## Autenticación\n\n1. Solicita tus credenciales (`client_id` y `client_secret`) al equipo de Volao.\n2. Obtén un token con `POST /api/auth/client/login`.\n3. Envía el token en el header de cada petición: `Authorization: Bearer <access_token>`.\n\nEl token dura **15 minutos** y no se puede renovar: cuando vence, repite el login. Los endpoints bajo `/api/open/` son públicos y no requieren token.\n\n## Formato de las peticiones\n\n- Los parámetros de los endpoints `GET` se envían en la URL (query string).\n- El cuerpo de las peticiones `POST`, `PUT`, `PATCH` y `DELETE` se envía en JSON, con el header `Content-Type: application/json`.\n- La excepción es la carga masiva de órdenes, que recibe el archivo Excel como `multipart/form-data`.\n\n## Formato de las respuestas\n\nTodas las respuestas comparten la misma estructura:\n\n```json\n{\n  \"response_code\": 200,\n  \"response_status\": \"Success\",\n  \"response_message\": \"Operación exitosa\",\n  \"data\": {}\n}\n```\n\n`response_code` repite el código HTTP y `data` contiene el resultado. `response_status` puede llegar como `Success`/`Error` o `success`/`error`, así que compáralo sin distinguir mayúsculas o usa `response_code`.\n\n## Códigos de estado\n\n| Código | Significado |\n| --- | --- |\n| `200` | La operación se realizó correctamente. |\n| `201` | El recurso se creó correctamente (por ejemplo, una orden, una dirección o un cliente). |\n| `400` | La petición tiene datos inválidos o le faltan parámetros. |\n| `401` | Las credenciales son inválidas, o el token falta, venció o no es válido. |\n| `403` | El cliente API está desactivado. |\n| `404` | El recurso solicitado no existe. |\n| `409` | La operación no se puede realizar por una regla de negocio (por ejemplo, saldo insuficiente o un nombre repetido). El motivo viene en `response_message`. |\n| `500` | Error interno del servidor. |\n\n## Flujo para crear un envío\n\n1. **Autentícate** con `POST /api/auth/client/login`.\n2. **Consulta los catálogos** de departamentos y municipios (`/api/open/...`) para obtener los códigos de ubicación.\n3. **Elige o registra la dirección de recolecta** en `/api/branchs/branchsAddresses`.\n4. **Elige o registra al cliente** (destinatario) en `/api/branchs/branchsClient`.\n5. **Cotiza el envío** con `POST /api/courier` para ver las mensajerías disponibles y su precio.\n6. **Crea la orden** con `POST /api/orders`.\n7. **Obtén la guía** con `GET /api/orders` y **sigue el envío** con `GET /api/orders/tracking`.\n\n## Probar desde esta documentación\n\nCada endpoint incluye un panel para enviar peticiones reales:\n\n1. Abre **Login de cliente API**, escribe tus credenciales y presiona **Enviar petición**.\n2. Copia el `access_token` de la respuesta.\n3. En cualquier otro endpoint, pégalo en el campo **Autenticación** del panel. Se mantiene mientras no cierres la pestaña.\n\n## Más información\n\n- [Primeros pasos](/docs/guides/gettingStarted): credenciales y primera petición.\n- [Autenticación](/docs/guides/authentication): vigencia del token y errores.\n- [Formato de respuesta](/docs/guides/responseEnvelope): estructura común de las respuestas.\n\nContact Support:\n Name: Equipo Volao",
      "type": "text/markdown"
    }
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{access_token}}",
        "type": "string"
      }
    ]
  }
}
