{
  "info": {
    "_postman_id": "3944bc27-a6e6-4535-a891-7c8a062a8bc0",
    "name": "API de Trevol (2026-10-22)",
    "description": "La API pública de Trevol (documentos electrónicos ante la DIAN). Pon tu llave en la variable TREVOL_API_KEY (tvl_test_… llama a la habilitación; tvl_live_…, a producción). https://platform.trevol.si/docs",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{TREVOL_API_KEY}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.trevol.si/v1",
      "type": "string"
    },
    {
      "key": "TREVOL_API_KEY",
      "value": "",
      "type": "secret"
    }
  ],
  "item": [
    {
      "name": "General",
      "description": "Salud, la empresa de la llave y la consulta de adquirientes.",
      "item": [
        {
          "name": "Salud",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/health",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "health"
              ]
            },
            "description": "Salud\n\nDocumentación: https://platform.trevol.si/docs/api#getHealth"
          },
          "response": []
        },
        {
          "name": "La empresa de la llave",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/company",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "company"
              ]
            },
            "description": "La empresa de la llave: NIT, razón social, ambiente y numeraciones activas. Desde la fase 3 trae `capabilities`, un resumen de lo que ESTA llave puede emitir ahora: documento soporte (con su numeración), documento equivalente (con los prefijos POS), nómina (`status`: `enabled`, `testing`, `not_registered` o `not_enabled`, según el ambiente de la llave) y eventos RADIAN (representante legal). Es informativo: si una lectura falla, esa clave no aparece.\n\nDocumentación: https://platform.trevol.si/docs/api#retrieveCompany"
          },
          "response": []
        },
        {
          "name": "Datos del adquiriente en la DIAN",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/dian/acquirer?document_type=31&document_number=900373591",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "dian",
                "acquirer"
              ],
              "query": [
                {
                  "key": "document_type",
                  "value": "31"
                },
                {
                  "key": "document_number",
                  "value": "900373591"
                }
              ]
            },
            "description": "Datos del adquiriente en la DIAN\n\nDocumentación: https://platform.trevol.si/docs/api#retrieveDianAcquirer"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Saldo",
      "description": "El saldo prepago de la cuenta (lo comparten sus empresas), sus movimientos y las recargas con Wompi.",
      "item": [
        {
          "name": "El saldo de la cuenta (lo comparten sus empresas)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/balance",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "balance"
              ]
            },
            "description": "El saldo prepago de Trevol. Es de la **cuenta**, no de la empresa: todas las empresas de la cuenta lo comparten (`shared: true`) y cualquier llave de cualquiera de ellas, de lectura o de escritura, `test` o `live`, ve el mismo. Solo lo que se emite en producción (llaves `live`) lo consume; la habilitación (`test`) no cobra. `available` es lo que se puede gastar (en pesos); `held`, lo apartado por documentos que la DIAN todavía valida; `overdraft`, cuánto puede bajar `available` de cero al apartar un documento; `low_threshold`, el umbral del aviso de saldo bajo (el 20 % de la última recarga; `null` sin recargas). `level`: `empty` con `available` ≤ 0, `low` por debajo de `low_threshold`, si no `ok`. Con `available` por debajo del precio de un documento, emitir en producción responde 402 `insufficient_balance`. El evento `balance.low` avisa por webhook.\n\nDocumentación: https://platform.trevol.si/docs/api#retrieveBalance"
          },
          "response": []
        },
        {
          "name": "Los movimientos del saldo de la cuenta",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/balance/transactions?limit=100",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "balance",
                "transactions"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100"
                }
              ]
            },
            "description": "Los movimientos del saldo de la cuenta (de todas sus empresas), del más nuevo al más viejo: lo mismo que «Saldo y recargas» en la app. Un documento es UNA fila (`type: document`) con su `status`: `pending` (apartado mientras la DIAN lo valida), `charged` (validado y cobrado) o `released` (la DIAN lo rechazó: no se cobró y `amount` es 0); `company` dice qué empresa lo emitió. Lo demás es una fila por movimiento: `top_up` (recarga, con su `reference`), `top_up_reversal`, `bonus`, `adjustment`, `license_fee`, `expiration` u `other`. `amount` es lo que el movimiento hizo con el disponible, con signo; `available_after`, el disponible justo después. Filtro `type`: `all` (por defecto), `documents`, `funding` (todo lo que no es un documento) o `top_ups`. Paginación por cursor: `limit` (1 a 100, 25 por defecto) y `starting_after` (el `id` de la última fila que tienes).\n\nDocumentación: https://platform.trevol.si/docs/api#listBalanceTransactions"
          },
          "response": []
        },
        {
          "name": "Preparar una recarga del saldo (para el widget de Wompi)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount_cop\": 50000\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/balance/top_ups",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "balance",
                "top_ups"
              ]
            },
            "description": "Prepara una recarga del saldo de la cuenta y devuelve lo que necesita el widget de Wompi (`WidgetCheckout`: `publicKey`, `currency`, `amountInCents`, `reference`, `signature: {integrity}` y `expirationTime`). El pago se hace en el widget; cuando Wompi lo aprueba, Trevol abona el saldo (y la factura de la recarga sale a nombre de `buyer`). Preparar no mueve saldo y la firma vence en una hora: si el widget venció, prepara otra. Solo llaves de escritura; exige `Idempotency-Key` (repetir con la misma clave devuelve la MISMA recarga). Sin `buyer`, la factura va a nombre de la empresa de la llave con sus datos (NIT, DV, razón social, correo, teléfono, dirección y municipio); si no alcanzan, 422 en `buyer.*`. El monto va entre la recarga mínima y la máxima (422 `top_up_below_minimum` / `top_up_above_maximum` con `minimum_cop` / `maximum_cop`). Es dinero real con cualquier llave (también `test`): el saldo es uno solo. Hasta 20 por llave cada 10 minutos (429).\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nOtros ejemplos de cuerpo en la documentación: empresa, comprador.\n\nDocumentación: https://platform.trevol.si/docs/api#createBalanceTopUp"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Facturas",
      "description": "Emitir, consultar, corregir y reenviar facturas electrónicas, incluidas la exportación, la moneda extranjera, el AIU, los mandatos, el transporte, los notarios, las divisas y el sector salud.",
      "item": [
        {
          "name": "Emitir una factura",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"VENTA-2026-000123\",\n  \"customer\": {\n    \"document_type\": \"31\",\n    \"document_number\": \"900123456\",\n    \"name\": \"COMERCIALIZADORA ANDINA SAS\",\n    \"person_type\": \"legal\",\n    \"email\": \"facturacion@comercializadoraandina.example\",\n    \"address\": \"Calle 72 # 10-34, Oficina 501\",\n    \"municipality_code\": \"11001\"\n  },\n  \"items\": [\n    {\n      \"code\": \"LIC-ANUAL\",\n      \"description\": \"Licencia anual de software\",\n      \"quantity\": \"2\",\n      \"unit_price\": \"150000\",\n      \"taxes\": [\n        {\n          \"code\": \"01\",\n          \"rate\": \"19\"\n        }\n      ]\n    },\n    {\n      \"code\": \"SOP-MES\",\n      \"description\": \"Soporte técnico mensual\",\n      \"quantity\": \"1\",\n      \"unit_price\": \"80000\",\n      \"taxes\": [\n        {\n          \"code\": \"01\",\n          \"rate\": \"19\"\n        }\n      ]\n    }\n  ],\n  \"payment\": {\n    \"form\": \"credit\",\n    \"term_days\": 30\n  },\n  \"notes\": [\n    \"Gracias por su compra\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/invoices",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "invoices"
              ]
            },
            "description": "Valida, numera, firma y envía una factura a la DIAN. Además de la factura nacional acepta la exportación (`document_type: \"02\"`), la moneda extranjera (`currency`), los términos de entrega (`delivery_terms`), el AIU, los mandatos, el transporte de carga, los notarios, las divisas y el sector salud (`operation_type`). El envío físico de la mercancía va en `shipment` (no en `delivery`: ese es el estado del PDF, el ZIP y el correo en la respuesta). Las notas crédito y débito no admiten estos campos.\n\n**Respuestas.** `201` la DIAN lo validó (`status: accepted`). `202` solo en la versión 2026-10-22: la DIAN no contestó (`processing`), otra petición lo está enviando (`sending`) o, en habilitación, el set de pruebas todavía lo valida (`validating`, en las dos versiones); trae `Location` y `Retry-After`, y el resultado llega por GET y por webhook: **no crees otro documento para la misma operación**. `422` `validation_error` (se revisó a fondo ANTES de reservar: no se gastó el número, y `errors[]` dice el campo), `dian_rejected` (con `document` y las reglas traducidas; corrige con `PUT` y el mismo número), `company_not_enabled` o `numbering_unavailable` (con `reason`). `402` `insufficient_balance` (producción sin saldo: queda `pending` con su número). `409` `external_id_in_use` o `duplicate_document` (con `existing_id`). `503` `dian_unavailable` en la 2026-10-21. Pide `Idempotency-Key`: repetir la misma devuelve lo mismo sin enviar nada.\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nOtros ejemplos de cuerpo en la documentación: venta, exportacion.\n\nDocumentación: https://platform.trevol.si/docs/api#createInvoice"
          },
          "response": []
        },
        {
          "name": "Listar (factura)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/invoices?limit=100",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "invoices"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100"
                }
              ]
            },
            "description": "Listar (factura)\n\nDocumentación: https://platform.trevol.si/docs/api#listInvoices"
          },
          "response": []
        },
        {
          "name": "Calcular una factura sin emitirla",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"VENTA-2026-000123\",\n  \"customer\": {\n    \"document_type\": \"31\",\n    \"document_number\": \"900123456\",\n    \"name\": \"COMERCIALIZADORA ANDINA SAS\",\n    \"person_type\": \"legal\",\n    \"email\": \"facturacion@comercializadoraandina.example\",\n    \"address\": \"Calle 72 # 10-34, Oficina 501\",\n    \"municipality_code\": \"11001\"\n  },\n  \"items\": [\n    {\n      \"code\": \"LIC-ANUAL\",\n      \"description\": \"Licencia anual de software\",\n      \"quantity\": \"2\",\n      \"unit_price\": \"150000\",\n      \"taxes\": [\n        {\n          \"code\": \"01\",\n          \"rate\": \"19\"\n        }\n      ]\n    },\n    {\n      \"code\": \"SOP-MES\",\n      \"description\": \"Soporte técnico mensual\",\n      \"quantity\": \"1\",\n      \"unit_price\": \"80000\",\n      \"taxes\": [\n        {\n          \"code\": \"01\",\n          \"rate\": \"19\"\n        }\n      ]\n    }\n  ],\n  \"payment\": {\n    \"form\": \"credit\",\n    \"term_days\": 30\n  },\n  \"notes\": [\n    \"Gracias por su compra\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/invoices/preview",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "invoices",
                "preview"
              ]
            },
            "description": "Calcular una factura sin emitirla\n\nOtros ejemplos de cuerpo en la documentación: venta, exportacion.\n\nDocumentación: https://platform.trevol.si/docs/api#previewInvoice"
          },
          "response": []
        },
        {
          "name": "Una factura",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/invoices/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "invoices",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "inv_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Una factura\n\nDocumentación: https://platform.trevol.si/docs/api#retrieveInvoice"
          },
          "response": []
        },
        {
          "name": "Corregir una factura rechazada (mismo número) y reenviarla",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"VENTA-2026-000123\",\n  \"customer\": {\n    \"document_type\": \"31\",\n    \"document_number\": \"900123456\",\n    \"name\": \"COMERCIALIZADORA ANDINA SAS\",\n    \"person_type\": \"legal\",\n    \"email\": \"facturacion@comercializadoraandina.example\",\n    \"address\": \"Calle 72 # 10-34, Oficina 501\",\n    \"municipality_code\": \"11001\"\n  },\n  \"items\": [\n    {\n      \"code\": \"LIC-ANUAL\",\n      \"description\": \"Licencia anual de software\",\n      \"quantity\": \"2\",\n      \"unit_price\": \"150000\",\n      \"taxes\": [\n        {\n          \"code\": \"01\",\n          \"rate\": \"19\"\n        }\n      ]\n    },\n    {\n      \"code\": \"SOP-MES\",\n      \"description\": \"Soporte técnico mensual\",\n      \"quantity\": \"1\",\n      \"unit_price\": \"80000\",\n      \"taxes\": [\n        {\n          \"code\": \"01\",\n          \"rate\": \"19\"\n        }\n      ]\n    }\n  ],\n  \"payment\": {\n    \"form\": \"credit\",\n    \"term_days\": 30\n  },\n  \"notes\": [\n    \"Gracias por su compra\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/invoices/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "invoices",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "inv_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Corregir una factura rechazada (mismo número) y reenviarla\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nOtros ejemplos de cuerpo en la documentación: venta, exportacion.\n\nDocumentación: https://platform.trevol.si/docs/api#correctInvoice"
          },
          "response": []
        },
        {
          "name": "Reenviar una pendiente o en error",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/invoices/:id/send",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "invoices",
                ":id",
                "send"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "inv_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Reenviar una pendiente o en error\n\nDocumentación: https://platform.trevol.si/docs/api#sendInvoice"
          },
          "response": []
        },
        {
          "name": "Archivo pdf",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/invoices/:id/pdf",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "invoices",
                ":id",
                "pdf"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "inv_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Archivo pdf\n\nDocumentación: https://platform.trevol.si/docs/api#downloadInvoicePdf"
          },
          "response": []
        },
        {
          "name": "Archivo xml",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/invoices/:id/xml",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "invoices",
                ":id",
                "xml"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "inv_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Archivo xml\n\nDocumentación: https://platform.trevol.si/docs/api#downloadInvoiceXml"
          },
          "response": []
        },
        {
          "name": "Archivo zip",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/invoices/:id/zip",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "invoices",
                ":id",
                "zip"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "inv_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Archivo zip\n\nDocumentación: https://platform.trevol.si/docs/api#downloadInvoiceZip"
          },
          "response": []
        },
        {
          "name": "Archivo dian_response",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/invoices/:id/dian_response",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "invoices",
                ":id",
                "dian_response"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "inv_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Archivo dian_response\n\nDocumentación: https://platform.trevol.si/docs/api#downloadInvoiceDianResponse"
          },
          "response": []
        },
        {
          "name": "¿Procede ya la aceptación tácita (034) de esta factura?",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/invoices/:id/tacit_acceptance",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "invoices",
                ":id",
                "tacit_acceptance"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "inv_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Consulta GetStatusEvent (con el certificado de la empresa) y aplica la regla de los 3 días hábiles; no envía nada. Usa el mismo historial que el envío del 034 (`POST /v1/radian_events`), así que la consulta y el envío no se contradicen. 404 si la factura no es de la empresa y el ambiente de la llave; 422 si no está validada, no es a crédito o es de consumidor final; 429 con más de 30 consultas por minuto por llave; 503 si la DIAN no contesta (reintentable).\n\nDocumentación: https://platform.trevol.si/docs/api#retrieveInvoiceTacitAcceptance"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Notas crédito",
      "description": "Notas crédito electrónicas.",
      "item": [
        {
          "name": "Emitir una nota crédito",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"DEV-2026-000045\",\n  \"concept\": \"1\",\n  \"description\": \"Devolución de una unidad por empaque dañado\",\n  \"invoice\": {\n    \"id\": \"inv_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b\"\n  },\n  \"items\": [\n    {\n      \"description\": \"Café especial 500 g\",\n      \"code\": \"CAF-500\",\n      \"unit\": \"94\",\n      \"quantity\": \"1\",\n      \"unit_price\": \"32000\",\n      \"taxes\": [\n        {\n          \"code\": \"01\",\n          \"rate\": \"19\"\n        }\n      ]\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/credit_notes",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "credit_notes"
              ]
            },
            "description": "Emitir una nota crédito\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nDocumentación: https://platform.trevol.si/docs/api#createCreditNote"
          },
          "response": []
        },
        {
          "name": "Listar (nota crédito)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/credit_notes?limit=100",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "credit_notes"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100"
                }
              ]
            },
            "description": "Listar (nota crédito)\n\nDocumentación: https://platform.trevol.si/docs/api#listCreditNotes"
          },
          "response": []
        },
        {
          "name": "Calcular una nota crédito sin emitirla",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"DEV-2026-000045\",\n  \"concept\": \"1\",\n  \"description\": \"Devolución de una unidad por empaque dañado\",\n  \"invoice\": {\n    \"id\": \"inv_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b\"\n  },\n  \"items\": [\n    {\n      \"description\": \"Café especial 500 g\",\n      \"code\": \"CAF-500\",\n      \"unit\": \"94\",\n      \"quantity\": \"1\",\n      \"unit_price\": \"32000\",\n      \"taxes\": [\n        {\n          \"code\": \"01\",\n          \"rate\": \"19\"\n        }\n      ]\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/credit_notes/preview",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "credit_notes",
                "preview"
              ]
            },
            "description": "Calcular una nota crédito sin emitirla\n\nDocumentación: https://platform.trevol.si/docs/api#previewCreditNote"
          },
          "response": []
        },
        {
          "name": "Una nota crédito",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/credit_notes/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "credit_notes",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "cn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Una nota crédito\n\nDocumentación: https://platform.trevol.si/docs/api#retrieveCreditNote"
          },
          "response": []
        },
        {
          "name": "Corregir una nota crédito rechazada (mismo número) y reenviarla",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"DEV-2026-000045\",\n  \"concept\": \"1\",\n  \"description\": \"Devolución de una unidad por empaque dañado\",\n  \"invoice\": {\n    \"id\": \"inv_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b\"\n  },\n  \"items\": [\n    {\n      \"description\": \"Café especial 500 g\",\n      \"code\": \"CAF-500\",\n      \"unit\": \"94\",\n      \"quantity\": \"1\",\n      \"unit_price\": \"32000\",\n      \"taxes\": [\n        {\n          \"code\": \"01\",\n          \"rate\": \"19\"\n        }\n      ]\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/credit_notes/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "credit_notes",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "cn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Corregir una nota crédito rechazada (mismo número) y reenviarla\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nDocumentación: https://platform.trevol.si/docs/api#correctCreditNote"
          },
          "response": []
        },
        {
          "name": "Reenviar una pendiente o en error",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/credit_notes/:id/send",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "credit_notes",
                ":id",
                "send"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "cn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Reenviar una pendiente o en error\n\nDocumentación: https://platform.trevol.si/docs/api#sendCreditNote"
          },
          "response": []
        },
        {
          "name": "Archivo pdf",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/credit_notes/:id/pdf",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "credit_notes",
                ":id",
                "pdf"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "cn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Archivo pdf\n\nDocumentación: https://platform.trevol.si/docs/api#downloadCreditNotePdf"
          },
          "response": []
        },
        {
          "name": "Archivo xml",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/credit_notes/:id/xml",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "credit_notes",
                ":id",
                "xml"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "cn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Archivo xml\n\nDocumentación: https://platform.trevol.si/docs/api#downloadCreditNoteXml"
          },
          "response": []
        },
        {
          "name": "Archivo zip",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/credit_notes/:id/zip",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "credit_notes",
                ":id",
                "zip"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "cn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Archivo zip\n\nDocumentación: https://platform.trevol.si/docs/api#downloadCreditNoteZip"
          },
          "response": []
        },
        {
          "name": "Archivo dian_response",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/credit_notes/:id/dian_response",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "credit_notes",
                ":id",
                "dian_response"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "cn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Archivo dian_response\n\nDocumentación: https://platform.trevol.si/docs/api#downloadCreditNoteDianResponse"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Notas débito",
      "description": "Notas débito electrónicas.",
      "item": [
        {
          "name": "Emitir una nota débito",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"INT-2026-000012\",\n  \"concept\": \"1\",\n  \"description\": \"Intereses de mora de la factura de septiembre\",\n  \"invoice\": {\n    \"id\": \"inv_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b\"\n  },\n  \"items\": [\n    {\n      \"description\": \"Intereses de mora\",\n      \"unit\": \"94\",\n      \"quantity\": \"1\",\n      \"unit_price\": \"45000\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/debit_notes",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "debit_notes"
              ]
            },
            "description": "Emitir una nota débito\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nDocumentación: https://platform.trevol.si/docs/api#createDebitNote"
          },
          "response": []
        },
        {
          "name": "Listar (nota débito)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/debit_notes?limit=100",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "debit_notes"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100"
                }
              ]
            },
            "description": "Listar (nota débito)\n\nDocumentación: https://platform.trevol.si/docs/api#listDebitNotes"
          },
          "response": []
        },
        {
          "name": "Calcular una nota débito sin emitirla",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"INT-2026-000012\",\n  \"concept\": \"1\",\n  \"description\": \"Intereses de mora de la factura de septiembre\",\n  \"invoice\": {\n    \"id\": \"inv_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b\"\n  },\n  \"items\": [\n    {\n      \"description\": \"Intereses de mora\",\n      \"unit\": \"94\",\n      \"quantity\": \"1\",\n      \"unit_price\": \"45000\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/debit_notes/preview",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "debit_notes",
                "preview"
              ]
            },
            "description": "Calcular una nota débito sin emitirla\n\nDocumentación: https://platform.trevol.si/docs/api#previewDebitNote"
          },
          "response": []
        },
        {
          "name": "Una nota débito",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/debit_notes/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "debit_notes",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "dn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Una nota débito\n\nDocumentación: https://platform.trevol.si/docs/api#retrieveDebitNote"
          },
          "response": []
        },
        {
          "name": "Corregir una nota débito rechazada (mismo número) y reenviarla",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"INT-2026-000012\",\n  \"concept\": \"1\",\n  \"description\": \"Intereses de mora de la factura de septiembre\",\n  \"invoice\": {\n    \"id\": \"inv_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b\"\n  },\n  \"items\": [\n    {\n      \"description\": \"Intereses de mora\",\n      \"unit\": \"94\",\n      \"quantity\": \"1\",\n      \"unit_price\": \"45000\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/debit_notes/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "debit_notes",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "dn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Corregir una nota débito rechazada (mismo número) y reenviarla\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nDocumentación: https://platform.trevol.si/docs/api#correctDebitNote"
          },
          "response": []
        },
        {
          "name": "Reenviar una pendiente o en error",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/debit_notes/:id/send",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "debit_notes",
                ":id",
                "send"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "dn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Reenviar una pendiente o en error\n\nDocumentación: https://platform.trevol.si/docs/api#sendDebitNote"
          },
          "response": []
        },
        {
          "name": "Archivo pdf",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/debit_notes/:id/pdf",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "debit_notes",
                ":id",
                "pdf"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "dn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Archivo pdf\n\nDocumentación: https://platform.trevol.si/docs/api#downloadDebitNotePdf"
          },
          "response": []
        },
        {
          "name": "Archivo xml",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/debit_notes/:id/xml",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "debit_notes",
                ":id",
                "xml"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "dn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Archivo xml\n\nDocumentación: https://platform.trevol.si/docs/api#downloadDebitNoteXml"
          },
          "response": []
        },
        {
          "name": "Archivo zip",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/debit_notes/:id/zip",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "debit_notes",
                ":id",
                "zip"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "dn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Archivo zip\n\nDocumentación: https://platform.trevol.si/docs/api#downloadDebitNoteZip"
          },
          "response": []
        },
        {
          "name": "Archivo dian_response",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/debit_notes/:id/dian_response",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "debit_notes",
                ":id",
                "dian_response"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "dn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Archivo dian_response\n\nDocumentación: https://platform.trevol.si/docs/api#downloadDebitNoteDianResponse"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Documento soporte",
      "description": "Documento soporte en adquisiciones a no obligados a facturar (05) y su nota de ajuste (95). Se generan, no se expiden: sin PDF, ZIP ni correo.",
      "item": [
        {
          "name": "Emitir un documento soporte",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"OC-991\",\n  \"seller\": {\n    \"resident\": true,\n    \"person_type\": \"natural\",\n    \"document_type\": \"31\",\n    \"document_number\": \"1020304050\",\n    \"name\": \"PEREZ GOMEZ ANA MARIA\",\n    \"address\": \"Vereda El Silencio, finca La Esperanza\",\n    \"municipality_code\": \"25053\",\n    \"postal_code\": \"252007\",\n    \"tax_responsibilities\": [\n      \"R-99-PN\"\n    ]\n  },\n  \"items\": [\n    {\n      \"description\": \"Leche cruda\",\n      \"unit\": \"LTR\",\n      \"quantity\": \"120\",\n      \"unit_price\": \"1800\"\n    }\n  ],\n  \"payment\": {\n    \"form\": \"cash\",\n    \"methods\": [\n      {\n        \"code\": \"10\"\n      }\n    ]\n  },\n  \"notes\": [\n    \"Compra de la semana 42 de octubre\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/support_documents",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "support_documents"
              ]
            },
            "description": "Genera un **documento soporte** (tipo 05): el respaldo de una compra a quien no está obligado a facturar (una persona natural, un campesino, un proveedor del exterior). Trevol valida a fondo ANTES de reservar un número, numera con el rango de documento soporte vigente más nuevo (o el del prefijo de `numbering`), firma con el certificado de la empresa y lo manda a la DIAN. **Se genera, no se expide**: no hay PDF, ZIP ni correo; el XML y la respuesta de la DIAN se descargan en las dos versiones. La empresa necesita su software registrado ante la DIAN (`company_not_enabled` con `reason: missing_software`) y un rango vigente con números libres (`numbering_unavailable`, `no_resolution`). La `purchase_date` de cada línea no puede ser posterior a hoy (DSFC02b/c). Cuenta como documento de facturación en el cobro.\n\n**Respuestas.** `201` la DIAN lo validó (`status: accepted`). `202` solo en la versión 2026-10-22: la DIAN no contestó (`processing`), otra petición lo está enviando (`sending`) o, en habilitación, el set de pruebas todavía lo valida (`validating`, en las dos versiones); trae `Location` y `Retry-After`, y el resultado llega por GET y por webhook: **no crees otro documento para la misma operación**. `422` `validation_error` (se revisó a fondo ANTES de reservar: no se gastó el número, y `errors[]` dice el campo), `dian_rejected` (con `document` y las reglas traducidas; corrige con `PUT` y el mismo número), `company_not_enabled` o `numbering_unavailable` (con `reason`). `402` `insufficient_balance` (producción sin saldo: queda `pending` con su número). `409` `external_id_in_use` o `duplicate_document` (con `existing_id`). `503` `dian_unavailable` en la 2026-10-21. Pide `Idempotency-Key`: repetir la misma devuelve lo mismo sin enviar nada.\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nDocumentación: https://platform.trevol.si/docs/api#createSupportDocument"
          },
          "response": []
        },
        {
          "name": "Listar (documento soporte)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/support_documents?limit=100",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "support_documents"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100"
                }
              ]
            },
            "description": "Paginación por cursor (`limit` hasta 100, `starting_after`) y filtros `status`, `external_id`, `created_from` y `created_to`. `status=error` trae también los que están en verificación (`processing`).\n\nDocumentación: https://platform.trevol.si/docs/api#listSupportDocuments"
          },
          "response": []
        },
        {
          "name": "Calcular un documento soporte sin emitirlo",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"OC-991\",\n  \"seller\": {\n    \"resident\": true,\n    \"person_type\": \"natural\",\n    \"document_type\": \"31\",\n    \"document_number\": \"1020304050\",\n    \"name\": \"PEREZ GOMEZ ANA MARIA\",\n    \"address\": \"Vereda El Silencio, finca La Esperanza\",\n    \"municipality_code\": \"25053\",\n    \"postal_code\": \"252007\",\n    \"tax_responsibilities\": [\n      \"R-99-PN\"\n    ]\n  },\n  \"items\": [\n    {\n      \"description\": \"Leche cruda\",\n      \"unit\": \"LTR\",\n      \"quantity\": \"120\",\n      \"unit_price\": \"1800\"\n    }\n  ],\n  \"payment\": {\n    \"form\": \"cash\",\n    \"methods\": [\n      {\n        \"code\": \"10\"\n      }\n    ]\n  },\n  \"notes\": [\n    \"Compra de la semana 42 de octubre\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/support_documents/preview",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "support_documents",
                "preview"
              ]
            },
            "description": "Valida y calcula los totales del documento soporte **sin** reservar un número ni enviar nada. No pide `Idempotency-Key` y no se cobra.\n\nDocumentación: https://platform.trevol.si/docs/api#previewSupportDocument"
          },
          "response": []
        },
        {
          "name": "Un documento soporte",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/support_documents/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "support_documents",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "sd_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El documento soporte tal como se emitió: lo que mandaste, los totales, el CUDS y la respuesta de la DIAN. `delivery` no aplica (`status: null`).\n\nDocumentación: https://platform.trevol.si/docs/api#retrieveSupportDocument"
          },
          "response": []
        },
        {
          "name": "Corregir un documento soporte rechazado (mismo número) y reenviarlo",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"OC-991\",\n  \"seller\": {\n    \"resident\": true,\n    \"person_type\": \"natural\",\n    \"document_type\": \"31\",\n    \"document_number\": \"1020304050\",\n    \"name\": \"PEREZ GOMEZ ANA MARIA\",\n    \"address\": \"Vereda El Silencio, finca La Esperanza\",\n    \"municipality_code\": \"25053\",\n    \"postal_code\": \"252007\",\n    \"tax_responsibilities\": [\n      \"R-99-PN\"\n    ]\n  },\n  \"items\": [\n    {\n      \"description\": \"Leche cruda\",\n      \"unit\": \"LTR\",\n      \"quantity\": \"120\",\n      \"unit_price\": \"1800\"\n    }\n  ],\n  \"payment\": {\n    \"form\": \"cash\",\n    \"methods\": [\n      {\n        \"code\": \"10\"\n      }\n    ]\n  },\n  \"notes\": [\n    \"Compra de la semana 42 de octubre\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/support_documents/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "support_documents",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "sd_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Corrige un documento soporte rechazado con el **mismo número** y lo vuelve a enviar.\n\nSolo si el documento está `rejected`, `error` o `pending`. Uno `accepted` no se corrige (se ajusta con una nota) y uno que la DIAN todavía verifica es `409 invalid_state`: espera el resultado. El `external_id` y la numeración no se cambian. Pide `Idempotency-Key`.\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nDocumentación: https://platform.trevol.si/docs/api#correctSupportDocument"
          },
          "response": []
        },
        {
          "name": "Reenviar una pendiente o en error",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/support_documents/:id/send",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "support_documents",
                ":id",
                "send"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "sd_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Vuelve a enviar un documento soporte `pending` o `error` (por ejemplo, después de recargar saldo).\n\nSin cuerpo. Con un documento `accepted` responde `200` con el documento tal cual; con uno que la DIAN todavía verifica no reenvía nada (`202`); con uno `rejected` es `409 invalid_state` (se corrige con `PUT`). No pide `Idempotency-Key` (reintentarlo es seguro).\n\nDocumentación: https://platform.trevol.si/docs/api#sendSupportDocument"
          },
          "response": []
        },
        {
          "name": "Archivo xml",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/support_documents/:id/xml",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "support_documents",
                ":id",
                "xml"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "sd_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El XML firmado que se mandó a la DIAN (`application/xml`).\n\nDocumentación: https://platform.trevol.si/docs/api#downloadSupportDocumentXml"
          },
          "response": []
        },
        {
          "name": "Archivo dian_response",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/support_documents/:id/dian_response",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "support_documents",
                ":id",
                "dian_response"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "sd_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El `ApplicationResponse` con que la DIAN contestó (`application/xml`), en las dos versiones.\n\nDocumentación: https://platform.trevol.si/docs/api#downloadSupportDocumentDianResponse"
          },
          "response": []
        },
        {
          "name": "Emitir una nota de ajuste del documento soporte",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"OC-991-ANULA\",\n  \"concept\": \"2\",\n  \"description\": \"Anulación: la compra de leche se registró dos veces en el ERP\",\n  \"support_document\": {\n    \"id\": \"sd_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b\"\n  },\n  \"items\": [\n    {\n      \"description\": \"Leche cruda\",\n      \"unit\": \"LTR\",\n      \"quantity\": \"120\",\n      \"unit_price\": \"1800\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/support_document_adjustments",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "support_document_adjustments"
              ]
            },
            "description": "Genera la **nota de ajuste de un documento soporte** (95): corrige o anula una compra ya validada. El documento que ajusta es de Trevol (`support_document.id`) o de otra plataforma (`number`, `cuds`, `issue_date` y `total`). `concept` 1 a 5; el 2 anula y lleva exactamente los valores del documento. Sin `seller` hereda el del documento de Trevol. La suma de las notas no puede pasar del saldo del documento. Un documento soporte rechazado no se ajusta: se corrige con `PUT`.\n\n**Respuestas.** `201` la DIAN lo validó (`status: accepted`). `202` solo en la versión 2026-10-22: la DIAN no contestó (`processing`), otra petición lo está enviando (`sending`) o, en habilitación, el set de pruebas todavía lo valida (`validating`, en las dos versiones); trae `Location` y `Retry-After`, y el resultado llega por GET y por webhook: **no crees otro documento para la misma operación**. `422` `validation_error` (se revisó a fondo ANTES de reservar: no se gastó el número, y `errors[]` dice el campo), `dian_rejected` (con `document` y las reglas traducidas; corrige con `PUT` y el mismo número), `company_not_enabled` o `numbering_unavailable` (con `reason`). `402` `insufficient_balance` (producción sin saldo: queda `pending` con su número). `409` `external_id_in_use` o `duplicate_document` (con `existing_id`). `503` `dian_unavailable` en la 2026-10-21. Pide `Idempotency-Key`: repetir la misma devuelve lo mismo sin enviar nada.\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nDocumentación: https://platform.trevol.si/docs/api#createSupportDocumentAdjustment"
          },
          "response": []
        },
        {
          "name": "Listar (nota de ajuste del documento soporte)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/support_document_adjustments?limit=100",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "support_document_adjustments"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100"
                }
              ]
            },
            "description": "Paginación por cursor (`limit` hasta 100, `starting_after`) y filtros `status`, `external_id`, `created_from` y `created_to`. `status=error` trae también los que están en verificación (`processing`).\n\nDocumentación: https://platform.trevol.si/docs/api#listSupportDocumentAdjustments"
          },
          "response": []
        },
        {
          "name": "Calcular una nota de ajuste del documento soporte sin emitirla",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"OC-991-ANULA\",\n  \"concept\": \"2\",\n  \"description\": \"Anulación: la compra de leche se registró dos veces en el ERP\",\n  \"support_document\": {\n    \"id\": \"sd_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b\"\n  },\n  \"items\": [\n    {\n      \"description\": \"Leche cruda\",\n      \"unit\": \"LTR\",\n      \"quantity\": \"120\",\n      \"unit_price\": \"1800\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/support_document_adjustments/preview",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "support_document_adjustments",
                "preview"
              ]
            },
            "description": "Valida y calcula la nota de ajuste **sin** reservar un número ni enviar nada.\n\nDocumentación: https://platform.trevol.si/docs/api#previewSupportDocumentAdjustment"
          },
          "response": []
        },
        {
          "name": "Una nota de ajuste del documento soporte",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/support_document_adjustments/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "support_document_adjustments",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "sda_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "La nota de ajuste del documento soporte, con `support_document` (el documento que ajusta).\n\nDocumentación: https://platform.trevol.si/docs/api#retrieveSupportDocumentAdjustment"
          },
          "response": []
        },
        {
          "name": "Corregir una nota de ajuste del documento soporte rechazada (mismo número) y reenviarla",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"OC-991-ANULA\",\n  \"concept\": \"2\",\n  \"description\": \"Anulación: la compra de leche se registró dos veces en el ERP\",\n  \"support_document\": {\n    \"id\": \"sd_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b\"\n  },\n  \"items\": [\n    {\n      \"description\": \"Leche cruda\",\n      \"unit\": \"LTR\",\n      \"quantity\": \"120\",\n      \"unit_price\": \"1800\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/support_document_adjustments/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "support_document_adjustments",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "sda_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Corrige una nota de ajuste rechazada con el **mismo número** y la vuelve a enviar.\n\nSolo si el documento está `rejected`, `error` o `pending`. Uno `accepted` no se corrige (se ajusta con una nota) y uno que la DIAN todavía verifica es `409 invalid_state`: espera el resultado. El `external_id` y la numeración no se cambian. Pide `Idempotency-Key`.\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nDocumentación: https://platform.trevol.si/docs/api#correctSupportDocumentAdjustment"
          },
          "response": []
        },
        {
          "name": "Reenviar una pendiente o en error",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/support_document_adjustments/:id/send",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "support_document_adjustments",
                ":id",
                "send"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "sda_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Vuelve a enviar una nota de ajuste `pending` o `error`.\n\nSin cuerpo. Con un documento `accepted` responde `200` con el documento tal cual; con uno que la DIAN todavía verifica no reenvía nada (`202`); con uno `rejected` es `409 invalid_state` (se corrige con `PUT`). No pide `Idempotency-Key` (reintentarlo es seguro).\n\nDocumentación: https://platform.trevol.si/docs/api#sendSupportDocumentAdjustment"
          },
          "response": []
        },
        {
          "name": "Archivo xml",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/support_document_adjustments/:id/xml",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "support_document_adjustments",
                ":id",
                "xml"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "sda_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El XML firmado que se mandó a la DIAN (`application/xml`).\n\nDocumentación: https://platform.trevol.si/docs/api#downloadSupportDocumentAdjustmentXml"
          },
          "response": []
        },
        {
          "name": "Archivo dian_response",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/support_document_adjustments/:id/dian_response",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "support_document_adjustments",
                ":id",
                "dian_response"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "sda_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El `ApplicationResponse` con que la DIAN contestó (`application/xml`).\n\nDocumentación: https://platform.trevol.si/docs/api#downloadSupportDocumentAdjustmentDianResponse"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Documento equivalente",
      "description": "Documento equivalente electrónico (tiquete POS 20 y los tipos 25, 27, 30, 35, 40, 45, 50, 55 y 60) y su nota de ajuste (crédito 94 y débito 93). Se expiden como la factura: PDF, ZIP y correo.",
      "item": [
        {
          "name": "Emitir un documento equivalente",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"TIQ-1\",\n  \"customer\": {\n    \"final_consumer\": true\n  },\n  \"pos\": {\n    \"register\": {\n      \"plate\": \"CJ-01\",\n      \"location\": \"Local 1, Jamundí\",\n      \"cashier\": \"PEREZ ANA\",\n      \"type\": \"Caja principal\"\n    }\n  },\n  \"numbering\": {\n    \"prefix\": \"POS2\"\n  },\n  \"payment\": {\n    \"form\": \"cash\",\n    \"methods\": [\n      {\n        \"code\": \"10\"\n      }\n    ]\n  },\n  \"items\": [\n    {\n      \"description\": \"Gaseosa 400 ml\",\n      \"code\": \"GAS-1\",\n      \"unit\": \"94\",\n      \"quantity\": \"2\",\n      \"unit_price\": \"3000\",\n      \"taxes\": [\n        {\n          \"code\": \"01\",\n          \"rate\": \"19\"\n        }\n      ]\n    },\n    {\n      \"description\": \"Almuerzo\",\n      \"unit\": \"94\",\n      \"quantity\": \"1\",\n      \"unit_price\": \"18000\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/equivalent_documents",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_documents"
              ]
            },
            "description": "Genera un **documento equivalente electrónico**: el tiquete POS (20, por defecto) o cualquiera de los otros nueve tipos de la tabla 16.3 (`document_type`: 25 cine, 27 espectáculos, 30 juegos, 35 transporte, 40 peajes, 45 extracto, 50 tiquete aéreo, 55 bolsa de valores, 60 servicios públicos; cada uno con su información propia en `extension`). El POS lleva su caja en `pos.register` y, si la empresa tiene varias cajas, el prefijo de su resolución en `numbering.prefix`. Se expide como la factura: PDF, ZIP y correo después del 201 (espera `equivalent_document.delivered` o consulta `delivery.status`). La contingencia 07 (documento físico) se pide con `contingency`; la 08 (la DIAN no contestó) la decide Trevol y responde `202` con `status: contingency`. En habilitación, el set de pruebas por tipo es automático: mientras la DIAN lo valida responde `202 validating` en las dos versiones y reintentar no vuelve a mandarlo. Cómo se calcula el CUDE del POS depende del despliegue del servicio, no de la empresa.\n\n**Respuestas.** `201` la DIAN lo validó (`status: accepted`). `202` solo en la versión 2026-10-22: la DIAN no contestó (`processing`), otra petición lo está enviando (`sending`) o, en habilitación, el set de pruebas todavía lo valida (`validating`, en las dos versiones); trae `Location` y `Retry-After`, y el resultado llega por GET y por webhook: **no crees otro documento para la misma operación**. `422` `validation_error` (se revisó a fondo ANTES de reservar: no se gastó el número, y `errors[]` dice el campo), `dian_rejected` (con `document` y las reglas traducidas; corrige con `PUT` y el mismo número), `company_not_enabled` o `numbering_unavailable` (con `reason`). `402` `insufficient_balance` (producción sin saldo: queda `pending` con su número). `409` `external_id_in_use` o `duplicate_document` (con `existing_id`). `503` `dian_unavailable` en la 2026-10-21. Pide `Idempotency-Key`: repetir la misma devuelve lo mismo sin enviar nada.\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nDocumentación: https://platform.trevol.si/docs/api#createEquivalentDocument"
          },
          "response": []
        },
        {
          "name": "Listar (documento equivalente)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/equivalent_documents?limit=100",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_documents"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100"
                }
              ]
            },
            "description": "Paginación por cursor (`limit` hasta 100, `starting_after`) y filtros `status`, `external_id`, `created_from` y `created_to`. `status=error` trae también los que están en verificación (`processing`). Además, `document_type` filtra por tipo.\n\nDocumentación: https://platform.trevol.si/docs/api#listEquivalentDocuments"
          },
          "response": []
        },
        {
          "name": "Calcular un documento equivalente sin emitirlo",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"TIQ-1\",\n  \"customer\": {\n    \"final_consumer\": true\n  },\n  \"pos\": {\n    \"register\": {\n      \"plate\": \"CJ-01\",\n      \"location\": \"Local 1, Jamundí\",\n      \"cashier\": \"PEREZ ANA\",\n      \"type\": \"Caja principal\"\n    }\n  },\n  \"numbering\": {\n    \"prefix\": \"POS2\"\n  },\n  \"payment\": {\n    \"form\": \"cash\",\n    \"methods\": [\n      {\n        \"code\": \"10\"\n      }\n    ]\n  },\n  \"items\": [\n    {\n      \"description\": \"Gaseosa 400 ml\",\n      \"code\": \"GAS-1\",\n      \"unit\": \"94\",\n      \"quantity\": \"2\",\n      \"unit_price\": \"3000\",\n      \"taxes\": [\n        {\n          \"code\": \"01\",\n          \"rate\": \"19\"\n        }\n      ]\n    },\n    {\n      \"description\": \"Almuerzo\",\n      \"unit\": \"94\",\n      \"quantity\": \"1\",\n      \"unit_price\": \"18000\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/equivalent_documents/preview",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_documents",
                "preview"
              ]
            },
            "description": "Valida y calcula los totales **sin** reservar un número ni enviar nada. No pide `Idempotency-Key`.\n\nDocumentación: https://platform.trevol.si/docs/api#previewEquivalentDocument"
          },
          "response": []
        },
        {
          "name": "Un documento equivalente",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/equivalent_documents/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_documents",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pos_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El documento equivalente tal como se emitió. `contingency` dice si salió en contingencia (07 u 08) y, en la 08, cuándo se mandó el respaldo POS.\n\nDocumentación: https://platform.trevol.si/docs/api#retrieveEquivalentDocument"
          },
          "response": []
        },
        {
          "name": "Corregir un documento equivalente rechazado (mismo número) y reenviarlo",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"TIQ-1\",\n  \"customer\": {\n    \"final_consumer\": true\n  },\n  \"pos\": {\n    \"register\": {\n      \"plate\": \"CJ-01\",\n      \"location\": \"Local 1, Jamundí\",\n      \"cashier\": \"PEREZ ANA\",\n      \"type\": \"Caja principal\"\n    }\n  },\n  \"numbering\": {\n    \"prefix\": \"POS2\"\n  },\n  \"payment\": {\n    \"form\": \"cash\",\n    \"methods\": [\n      {\n        \"code\": \"10\"\n      }\n    ]\n  },\n  \"items\": [\n    {\n      \"description\": \"Gaseosa 400 ml\",\n      \"code\": \"GAS-1\",\n      \"unit\": \"94\",\n      \"quantity\": \"2\",\n      \"unit_price\": \"3000\",\n      \"taxes\": [\n        {\n          \"code\": \"01\",\n          \"rate\": \"19\"\n        }\n      ]\n    },\n    {\n      \"description\": \"Almuerzo\",\n      \"unit\": \"94\",\n      \"quantity\": \"1\",\n      \"unit_price\": \"18000\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/equivalent_documents/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_documents",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pos_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Corrige un documento equivalente rechazado con el **mismo número** y lo vuelve a enviar. Con el set de pruebas en curso responde `409 invalid_state`.\n\nSolo si el documento está `rejected`, `error` o `pending`. Uno `accepted` no se corrige (se ajusta con una nota) y uno que la DIAN todavía verifica es `409 invalid_state`: espera el resultado. El `external_id` y la numeración no se cambian. Pide `Idempotency-Key`.\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nDocumentación: https://platform.trevol.si/docs/api#correctEquivalentDocument"
          },
          "response": []
        },
        {
          "name": "Reenviar una pendiente o en error",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/equivalent_documents/:id/send",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_documents",
                ":id",
                "send"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pos_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Vuelve a enviar un documento equivalente `pending` o `error`. En contingencia devuelve el documento (lo reenvía Trevol). Con el set de pruebas en curso (`validating`) solo consulta: no lo vuelve a mandar.\n\nSin cuerpo. Con un documento `accepted` responde `200` con el documento tal cual; con uno que la DIAN todavía verifica no reenvía nada (`202`); con uno `rejected` es `409 invalid_state` (se corrige con `PUT`). No pide `Idempotency-Key` (reintentarlo es seguro).\n\nDocumentación: https://platform.trevol.si/docs/api#sendEquivalentDocument"
          },
          "response": []
        },
        {
          "name": "Archivo pdf",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/equivalent_documents/:id/pdf",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_documents",
                ":id",
                "pdf"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pos_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "La representación gráfica (`application/pdf`). Si todavía no se hizo, se genera en el momento.\n\nDocumentación: https://platform.trevol.si/docs/api#downloadEquivalentDocumentPdf"
          },
          "response": []
        },
        {
          "name": "Archivo xml",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/equivalent_documents/:id/xml",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_documents",
                ":id",
                "xml"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pos_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El XML firmado que se mandó a la DIAN (`application/xml`).\n\nDocumentación: https://platform.trevol.si/docs/api#downloadEquivalentDocumentXml"
          },
          "response": []
        },
        {
          "name": "Archivo zip",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/equivalent_documents/:id/zip",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_documents",
                ":id",
                "zip"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pos_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El ZIP de entrega con el XML firmado y el PDF (`application/zip`).\n\nDocumentación: https://platform.trevol.si/docs/api#downloadEquivalentDocumentZip"
          },
          "response": []
        },
        {
          "name": "Archivo dian_response",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/equivalent_documents/:id/dian_response",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_documents",
                ":id",
                "dian_response"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pos_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El `ApplicationResponse` con que la DIAN contestó (`application/xml`).\n\nDocumentación: https://platform.trevol.si/docs/api#downloadEquivalentDocumentDianResponse"
          },
          "response": []
        },
        {
          "name": "Emitir una nota de ajuste del documento equivalente",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"TIQ-1-DEV\",\n  \"note_type\": \"credit\",\n  \"concept\": \"1\",\n  \"equivalent_document\": {\n    \"id\": \"pos_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b\"\n  },\n  \"items\": [\n    {\n      \"description\": \"Devolución gaseosa\",\n      \"unit\": \"94\",\n      \"quantity\": \"1\",\n      \"unit_price\": \"3000\",\n      \"taxes\": [\n        {\n          \"code\": \"01\",\n          \"rate\": \"19\"\n        }\n      ]\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/equivalent_document_adjustments",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_document_adjustments"
              ]
            },
            "description": "Genera la **nota de ajuste de un documento equivalente**: crédito (94) o débito (93) según `note_type`. El documento que ajusta es de Trevol (`equivalent_document.id`) o de otra plataforma. `concept` 1 a 5 (el 2 anula y lleva exactamente los valores del documento). Sin `customer` toma el del documento; en juegos el adquirente es la DIAN. Se expide como el documento: PDF, ZIP y correo.\n\n**Respuestas.** `201` la DIAN lo validó (`status: accepted`). `202` solo en la versión 2026-10-22: la DIAN no contestó (`processing`), otra petición lo está enviando (`sending`) o, en habilitación, el set de pruebas todavía lo valida (`validating`, en las dos versiones); trae `Location` y `Retry-After`, y el resultado llega por GET y por webhook: **no crees otro documento para la misma operación**. `422` `validation_error` (se revisó a fondo ANTES de reservar: no se gastó el número, y `errors[]` dice el campo), `dian_rejected` (con `document` y las reglas traducidas; corrige con `PUT` y el mismo número), `company_not_enabled` o `numbering_unavailable` (con `reason`). `402` `insufficient_balance` (producción sin saldo: queda `pending` con su número). `409` `external_id_in_use` o `duplicate_document` (con `existing_id`). `503` `dian_unavailable` en la 2026-10-21. Pide `Idempotency-Key`: repetir la misma devuelve lo mismo sin enviar nada.\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nDocumentación: https://platform.trevol.si/docs/api#createEquivalentDocumentAdjustment"
          },
          "response": []
        },
        {
          "name": "Listar (nota de ajuste del documento equivalente)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/equivalent_document_adjustments?limit=100",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_document_adjustments"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100"
                }
              ]
            },
            "description": "Paginación por cursor (`limit` hasta 100, `starting_after`) y filtros `status`, `external_id`, `created_from` y `created_to`. `status=error` trae también los que están en verificación (`processing`).\n\nDocumentación: https://platform.trevol.si/docs/api#listEquivalentDocumentAdjustments"
          },
          "response": []
        },
        {
          "name": "Calcular una nota de ajuste del documento equivalente sin emitirla",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"TIQ-1-DEV\",\n  \"note_type\": \"credit\",\n  \"concept\": \"1\",\n  \"equivalent_document\": {\n    \"id\": \"pos_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b\"\n  },\n  \"items\": [\n    {\n      \"description\": \"Devolución gaseosa\",\n      \"unit\": \"94\",\n      \"quantity\": \"1\",\n      \"unit_price\": \"3000\",\n      \"taxes\": [\n        {\n          \"code\": \"01\",\n          \"rate\": \"19\"\n        }\n      ]\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/equivalent_document_adjustments/preview",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_document_adjustments",
                "preview"
              ]
            },
            "description": "Valida y calcula la nota de ajuste **sin** reservar un número ni enviar nada.\n\nDocumentación: https://platform.trevol.si/docs/api#previewEquivalentDocumentAdjustment"
          },
          "response": []
        },
        {
          "name": "Una nota de ajuste del documento equivalente",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/equivalent_document_adjustments/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_document_adjustments",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "posa_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "La nota de ajuste del documento equivalente, con `equivalent_document` (el documento que ajusta).\n\nDocumentación: https://platform.trevol.si/docs/api#retrieveEquivalentDocumentAdjustment"
          },
          "response": []
        },
        {
          "name": "Corregir una nota de ajuste del documento equivalente rechazada (mismo número) y reenviarla",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"TIQ-1-DEV\",\n  \"note_type\": \"credit\",\n  \"concept\": \"1\",\n  \"equivalent_document\": {\n    \"id\": \"pos_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b\"\n  },\n  \"items\": [\n    {\n      \"description\": \"Devolución gaseosa\",\n      \"unit\": \"94\",\n      \"quantity\": \"1\",\n      \"unit_price\": \"3000\",\n      \"taxes\": [\n        {\n          \"code\": \"01\",\n          \"rate\": \"19\"\n        }\n      ]\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/equivalent_document_adjustments/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_document_adjustments",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "posa_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Corrige una nota de ajuste rechazada con el **mismo número** y la vuelve a enviar.\n\nSolo si el documento está `rejected`, `error` o `pending`. Uno `accepted` no se corrige (se ajusta con una nota) y uno que la DIAN todavía verifica es `409 invalid_state`: espera el resultado. El `external_id` y la numeración no se cambian. Pide `Idempotency-Key`.\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nDocumentación: https://platform.trevol.si/docs/api#correctEquivalentDocumentAdjustment"
          },
          "response": []
        },
        {
          "name": "Reenviar una pendiente o en error",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/equivalent_document_adjustments/:id/send",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_document_adjustments",
                ":id",
                "send"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "posa_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Vuelve a enviar una nota de ajuste `pending` o `error`.\n\nSin cuerpo. Con un documento `accepted` responde `200` con el documento tal cual; con uno que la DIAN todavía verifica no reenvía nada (`202`); con uno `rejected` es `409 invalid_state` (se corrige con `PUT`). No pide `Idempotency-Key` (reintentarlo es seguro).\n\nDocumentación: https://platform.trevol.si/docs/api#sendEquivalentDocumentAdjustment"
          },
          "response": []
        },
        {
          "name": "Archivo pdf",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/equivalent_document_adjustments/:id/pdf",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_document_adjustments",
                ":id",
                "pdf"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "posa_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "La representación gráfica (`application/pdf`).\n\nDocumentación: https://platform.trevol.si/docs/api#downloadEquivalentDocumentAdjustmentPdf"
          },
          "response": []
        },
        {
          "name": "Archivo xml",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/equivalent_document_adjustments/:id/xml",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_document_adjustments",
                ":id",
                "xml"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "posa_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El XML firmado que se mandó a la DIAN (`application/xml`).\n\nDocumentación: https://platform.trevol.si/docs/api#downloadEquivalentDocumentAdjustmentXml"
          },
          "response": []
        },
        {
          "name": "Archivo zip",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/equivalent_document_adjustments/:id/zip",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_document_adjustments",
                ":id",
                "zip"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "posa_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El ZIP de entrega (`application/zip`).\n\nDocumentación: https://platform.trevol.si/docs/api#downloadEquivalentDocumentAdjustmentZip"
          },
          "response": []
        },
        {
          "name": "Archivo dian_response",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/equivalent_document_adjustments/:id/dian_response",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "equivalent_document_adjustments",
                ":id",
                "dian_response"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "posa_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El `ApplicationResponse` con que la DIAN contestó (`application/xml`).\n\nDocumentación: https://platform.trevol.si/docs/api#downloadEquivalentDocumentAdjustmentDianResponse"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Nómina electrónica",
      "description": "Documento soporte de pago de nómina electrónica (102) y su nota de ajuste (103: Reemplazar o Eliminar). Un 102 por trabajador y por mes en producción (y en habilitación cuando la empresa ya pasó el set de pruebas). Sin PDF ni correo: `xml`, `zip` y `dian_response`. El trabajador solo sale al dueño de la llave.",
      "item": [
        {
          "name": "Emitir una nómina electrónica",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"NOM-2026-09-001\",\n  \"period\": {\n    \"hire_date\": \"2024-03-01\",\n    \"start\": \"2026-09-01\",\n    \"end\": \"2026-09-30\"\n  },\n  \"pay_period\": \"5\",\n  \"notes\": [\n    \"Nómina de septiembre de 2026\"\n  ],\n  \"employee\": {\n    \"type\": \"01\",\n    \"subtype\": \"00\",\n    \"high_risk_pension\": false,\n    \"document_type\": \"13\",\n    \"document_number\": \"1000000101\",\n    \"first_surname\": \"PRUEBA\",\n    \"second_surname\": \"NOMINA01\",\n    \"first_name\": \"TRABAJADOR\",\n    \"other_names\": \"DE PRUEBA\",\n    \"workplace\": {\n      \"country\": \"CO\",\n      \"municipality_code\": \"76001\",\n      \"address\": \"Calle 1 # 1-1\"\n    },\n    \"integral_salary\": false,\n    \"contract_type\": \"2\",\n    \"salary\": \"1423500\",\n    \"code\": \"TRAB-01\"\n  },\n  \"payment\": {\n    \"form\": \"1\",\n    \"method\": \"42\",\n    \"bank\": \"Banco de Pruebas\",\n    \"account_type\": \"Ahorros\",\n    \"account_number\": \"0001234501\"\n  },\n  \"payment_dates\": [\n    \"2026-09-30\"\n  ],\n  \"earnings\": {\n    \"basic\": {\n      \"days\": 30,\n      \"amount\": \"1423500\"\n    },\n    \"transport\": [\n      {\n        \"allowance\": \"200000\"\n      }\n    ]\n  },\n  \"deductions\": {\n    \"health\": {\n      \"percent\": \"4\",\n      \"amount\": \"56940\"\n    },\n    \"pension\": {\n      \"percent\": \"4\",\n      \"amount\": \"56940\"\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/payrolls",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payrolls"
              ]
            },
            "description": "Emite el documento soporte de pago de **nómina electrónica** (102) de un trabajador para un periodo. Trevol valida todo el contrato (periodo, trabajador, devengados y deducciones) ANTES de reservar, calcula los totales, numera (prefijo de nómina de la empresa), firma y lo manda a la DIAN. **En producción hay un solo 102 por trabajador y por mes** (art. 1.5.3.2.2): otro es `409 duplicate_document` con `existing_id`; para cambiarlo usa `POST /v1/payroll_adjustments`. La empresa debe tener la nómina habilitada ante la DIAN (`company_not_enabled`, `payroll_not_enabled`): con una llave `live`, `habilitada`; con una `test`, también el set de pruebas (`GET /v1/company` → `capabilities.payroll`). En el set de pruebas de habilitación responde `202 validating` en las dos versiones y reintentar no lo reenvía. No hay PDF ni correo: `xml`, `zip` y `dian_response`. Se cobra por empleado. Los datos del trabajador solo salen al dueño de la llave: no van en los webhooks ni en el registro de peticiones, y la respuesta guardada para la idempotencia no los copia.\n\n**Respuestas.** `201` la DIAN lo validó (`status: accepted`). `202` solo en la versión 2026-10-22: la DIAN no contestó (`processing`), otra petición lo está enviando (`sending`) o, en habilitación, el set de pruebas todavía lo valida (`validating`, en las dos versiones); trae `Location` y `Retry-After`, y el resultado llega por GET y por webhook: **no crees otro documento para la misma operación**. `422` `validation_error` (se revisó a fondo ANTES de reservar: no se gastó el número, y `errors[]` dice el campo), `dian_rejected` (con `document` y las reglas traducidas; corrige con `PUT` y el mismo número), `company_not_enabled` o `numbering_unavailable` (con `reason`). `402` `insufficient_balance` (producción sin saldo: queda `pending` con su número). `409` `external_id_in_use` o `duplicate_document` (con `existing_id`). `503` `dian_unavailable` en la 2026-10-21. Pide `Idempotency-Key`: repetir la misma devuelve lo mismo sin enviar nada.\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nDocumentación: https://platform.trevol.si/docs/api#createPayroll"
          },
          "response": []
        },
        {
          "name": "Listar (nómina electrónica)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/payrolls?limit=100",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payrolls"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100"
                }
              ]
            },
            "description": "Paginación por cursor y filtros `status`, `external_id`, `created_from`, `created_to`, `employee_code` (el código interno del empleado) y `period_end_from` / `period_end_to`. **No se filtra por el documento del trabajador**: la cédula en la URL quedaría en los registros del servidor.\n\nDocumentación: https://platform.trevol.si/docs/api#listPayrolls"
          },
          "response": []
        },
        {
          "name": "Calcular una nómina electrónica sin emitirla",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"NOM-2026-09-001\",\n  \"period\": {\n    \"hire_date\": \"2024-03-01\",\n    \"start\": \"2026-09-01\",\n    \"end\": \"2026-09-30\"\n  },\n  \"pay_period\": \"5\",\n  \"notes\": [\n    \"Nómina de septiembre de 2026\"\n  ],\n  \"employee\": {\n    \"type\": \"01\",\n    \"subtype\": \"00\",\n    \"high_risk_pension\": false,\n    \"document_type\": \"13\",\n    \"document_number\": \"1000000101\",\n    \"first_surname\": \"PRUEBA\",\n    \"second_surname\": \"NOMINA01\",\n    \"first_name\": \"TRABAJADOR\",\n    \"other_names\": \"DE PRUEBA\",\n    \"workplace\": {\n      \"country\": \"CO\",\n      \"municipality_code\": \"76001\",\n      \"address\": \"Calle 1 # 1-1\"\n    },\n    \"integral_salary\": false,\n    \"contract_type\": \"2\",\n    \"salary\": \"1423500\",\n    \"code\": \"TRAB-01\"\n  },\n  \"payment\": {\n    \"form\": \"1\",\n    \"method\": \"42\",\n    \"bank\": \"Banco de Pruebas\",\n    \"account_type\": \"Ahorros\",\n    \"account_number\": \"0001234501\"\n  },\n  \"payment_dates\": [\n    \"2026-09-30\"\n  ],\n  \"earnings\": {\n    \"basic\": {\n      \"days\": 30,\n      \"amount\": \"1423500\"\n    },\n    \"transport\": [\n      {\n        \"allowance\": \"200000\"\n      }\n    ]\n  },\n  \"deductions\": {\n    \"health\": {\n      \"percent\": \"4\",\n      \"amount\": \"56940\"\n    },\n    \"pension\": {\n      \"percent\": \"4\",\n      \"amount\": \"56940\"\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/payrolls/preview",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payrolls",
                "preview"
              ]
            },
            "description": "Valida y calcula los totales de la nómina **sin** reservar un número ni enviar nada. No pide `Idempotency-Key` y no se cobra. El trabajador que mandaste vuelve en la respuesta; Trevol no lo guarda.\n\nDocumentación: https://platform.trevol.si/docs/api#previewPayroll"
          },
          "response": []
        },
        {
          "name": "Una nómina electrónica",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/payrolls/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payrolls",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pr_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "La nómina tal como se emitió, con el trabajador, los devengados, las deducciones y los totales (`earnings`, `deductions`, `net`).\n\nDocumentación: https://platform.trevol.si/docs/api#retrievePayroll"
          },
          "response": []
        },
        {
          "name": "Corregir una nómina electrónica rechazada (mismo número) y reenviarla",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"NOM-2026-09-001\",\n  \"period\": {\n    \"hire_date\": \"2024-03-01\",\n    \"start\": \"2026-09-01\",\n    \"end\": \"2026-09-30\"\n  },\n  \"pay_period\": \"5\",\n  \"notes\": [\n    \"Nómina de septiembre de 2026\"\n  ],\n  \"employee\": {\n    \"type\": \"01\",\n    \"subtype\": \"00\",\n    \"high_risk_pension\": false,\n    \"document_type\": \"13\",\n    \"document_number\": \"1000000101\",\n    \"first_surname\": \"PRUEBA\",\n    \"second_surname\": \"NOMINA01\",\n    \"first_name\": \"TRABAJADOR\",\n    \"other_names\": \"DE PRUEBA\",\n    \"workplace\": {\n      \"country\": \"CO\",\n      \"municipality_code\": \"76001\",\n      \"address\": \"Calle 1 # 1-1\"\n    },\n    \"integral_salary\": false,\n    \"contract_type\": \"2\",\n    \"salary\": \"1423500\",\n    \"code\": \"TRAB-01\"\n  },\n  \"payment\": {\n    \"form\": \"1\",\n    \"method\": \"42\",\n    \"bank\": \"Banco de Pruebas\",\n    \"account_type\": \"Ahorros\",\n    \"account_number\": \"0001234501\"\n  },\n  \"payment_dates\": [\n    \"2026-09-30\"\n  ],\n  \"earnings\": {\n    \"basic\": {\n      \"days\": 30,\n      \"amount\": \"1423500\"\n    },\n    \"transport\": [\n      {\n        \"allowance\": \"200000\"\n      }\n    ]\n  },\n  \"deductions\": {\n    \"health\": {\n      \"percent\": \"4\",\n      \"amount\": \"56940\"\n    },\n    \"pension\": {\n      \"percent\": \"4\",\n      \"amount\": \"56940\"\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/payrolls/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payrolls",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pr_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Corrige una nómina rechazada con el **mismo número** y la vuelve a enviar. `409 invalid_state` si el set de pruebas la está validando.\n\nSolo si el documento está `rejected`, `error` o `pending`. Uno `accepted` no se corrige (se ajusta con una nota) y uno que la DIAN todavía verifica es `409 invalid_state`: espera el resultado. El `external_id` y la numeración no se cambian. Pide `Idempotency-Key`.\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nDocumentación: https://platform.trevol.si/docs/api#correctPayroll"
          },
          "response": []
        },
        {
          "name": "Reenviar una pendiente o en error",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/payrolls/:id/send",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payrolls",
                ":id",
                "send"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pr_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Vuelve a enviar una nómina `pending` o `error`. Si el set de pruebas la valida (`validating`), solo consulta.\n\nSin cuerpo. Con un documento `accepted` responde `200` con el documento tal cual; con uno que la DIAN todavía verifica no reenvía nada (`202`); con uno `rejected` es `409 invalid_state` (se corrige con `PUT`). No pide `Idempotency-Key` (reintentarlo es seguro).\n\nDocumentación: https://platform.trevol.si/docs/api#sendPayroll"
          },
          "response": []
        },
        {
          "name": "Archivo xml",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/payrolls/:id/xml",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payrolls",
                ":id",
                "xml"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pr_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El XML firmado que se mandó a la DIAN (`application/xml`).\n\nDocumentación: https://platform.trevol.si/docs/api#downloadPayrollXml"
          },
          "response": []
        },
        {
          "name": "Archivo zip",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/payrolls/:id/zip",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payrolls",
                ":id",
                "zip"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pr_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El ZIP del documento (`application/zip`).\n\nDocumentación: https://platform.trevol.si/docs/api#downloadPayrollZip"
          },
          "response": []
        },
        {
          "name": "Archivo dian_response",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/payrolls/:id/dian_response",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payrolls",
                ":id",
                "dian_response"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pr_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El `ApplicationResponse` con que la DIAN contestó (`application/xml`), si la DIAN lo devolvió.\n\nDocumentación: https://platform.trevol.si/docs/api#downloadPayrollDianResponse"
          },
          "response": []
        },
        {
          "name": "Emitir una nota de ajuste de nómina",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"NOM-2026-09-001-R\",\n  \"period\": {\n    \"hire_date\": \"2024-03-01\",\n    \"start\": \"2026-09-01\",\n    \"end\": \"2026-09-30\"\n  },\n  \"pay_period\": \"5\",\n  \"notes\": [\n    \"Nómina de septiembre de 2026\"\n  ],\n  \"employee\": {\n    \"type\": \"01\",\n    \"subtype\": \"00\",\n    \"high_risk_pension\": false,\n    \"document_type\": \"13\",\n    \"document_number\": \"1000000101\",\n    \"first_surname\": \"PRUEBA\",\n    \"second_surname\": \"NOMINA01\",\n    \"first_name\": \"TRABAJADOR\",\n    \"other_names\": \"DE PRUEBA\",\n    \"workplace\": {\n      \"country\": \"CO\",\n      \"municipality_code\": \"76001\",\n      \"address\": \"Calle 1 # 1-1\"\n    },\n    \"integral_salary\": false,\n    \"contract_type\": \"2\",\n    \"salary\": \"1423500\",\n    \"code\": \"TRAB-01\"\n  },\n  \"payment\": {\n    \"form\": \"1\",\n    \"method\": \"42\",\n    \"bank\": \"Banco de Pruebas\",\n    \"account_type\": \"Ahorros\",\n    \"account_number\": \"0001234501\"\n  },\n  \"payment_dates\": [\n    \"2026-09-30\"\n  ],\n  \"earnings\": {\n    \"basic\": {\n      \"days\": 30,\n      \"amount\": \"1423500\"\n    },\n    \"transport\": [\n      {\n        \"allowance\": \"210000\"\n      }\n    ]\n  },\n  \"deductions\": {\n    \"health\": {\n      \"percent\": \"4\",\n      \"amount\": \"56940\"\n    },\n    \"pension\": {\n      \"percent\": \"4\",\n      \"amount\": \"56940\"\n    }\n  },\n  \"type\": \"replace\",\n  \"predecessor\": {\n    \"id\": \"pr_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/payroll_adjustments",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payroll_adjustments"
              ]
            },
            "description": "Emite la **nota de ajuste de nómina electrónica** (103). `type: \"replace\"` (Reemplazar) lleva la nómina completa corregida; `type: \"delete\"` (Eliminar) solo el predecesor y las notas. El `predecessor` es una nómina de Trevol (`pr_…` o `pra_…`, validada) o una de otra plataforma (`number`, `cune`, `issue_date`); es de la misma empresa y ambiente de la llave, del mismo trabajador, y el último de su cadena. Una nómina eliminada no se ajusta.\n\n**Respuestas.** `201` la DIAN lo validó (`status: accepted`). `202` solo en la versión 2026-10-22: la DIAN no contestó (`processing`), otra petición lo está enviando (`sending`) o, en habilitación, el set de pruebas todavía lo valida (`validating`, en las dos versiones); trae `Location` y `Retry-After`, y el resultado llega por GET y por webhook: **no crees otro documento para la misma operación**. `422` `validation_error` (se revisó a fondo ANTES de reservar: no se gastó el número, y `errors[]` dice el campo), `dian_rejected` (con `document` y las reglas traducidas; corrige con `PUT` y el mismo número), `company_not_enabled` o `numbering_unavailable` (con `reason`). `402` `insufficient_balance` (producción sin saldo: queda `pending` con su número). `409` `external_id_in_use` o `duplicate_document` (con `existing_id`). `503` `dian_unavailable` en la 2026-10-21. Pide `Idempotency-Key`: repetir la misma devuelve lo mismo sin enviar nada.\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nOtros ejemplos de cuerpo en la documentación: reemplazar, eliminar.\n\nDocumentación: https://platform.trevol.si/docs/api#createPayrollAdjustment"
          },
          "response": []
        },
        {
          "name": "Listar (nota de ajuste de nómina)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/payroll_adjustments?limit=100",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payroll_adjustments"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100"
                }
              ]
            },
            "description": "Paginación por cursor y los mismos filtros de `GET /v1/payrolls` (sin documento del trabajador).\n\nDocumentación: https://platform.trevol.si/docs/api#listPayrollAdjustments"
          },
          "response": []
        },
        {
          "name": "Calcular una nota de ajuste de nómina sin emitirla",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"NOM-2026-09-001-R\",\n  \"period\": {\n    \"hire_date\": \"2024-03-01\",\n    \"start\": \"2026-09-01\",\n    \"end\": \"2026-09-30\"\n  },\n  \"pay_period\": \"5\",\n  \"notes\": [\n    \"Nómina de septiembre de 2026\"\n  ],\n  \"employee\": {\n    \"type\": \"01\",\n    \"subtype\": \"00\",\n    \"high_risk_pension\": false,\n    \"document_type\": \"13\",\n    \"document_number\": \"1000000101\",\n    \"first_surname\": \"PRUEBA\",\n    \"second_surname\": \"NOMINA01\",\n    \"first_name\": \"TRABAJADOR\",\n    \"other_names\": \"DE PRUEBA\",\n    \"workplace\": {\n      \"country\": \"CO\",\n      \"municipality_code\": \"76001\",\n      \"address\": \"Calle 1 # 1-1\"\n    },\n    \"integral_salary\": false,\n    \"contract_type\": \"2\",\n    \"salary\": \"1423500\",\n    \"code\": \"TRAB-01\"\n  },\n  \"payment\": {\n    \"form\": \"1\",\n    \"method\": \"42\",\n    \"bank\": \"Banco de Pruebas\",\n    \"account_type\": \"Ahorros\",\n    \"account_number\": \"0001234501\"\n  },\n  \"payment_dates\": [\n    \"2026-09-30\"\n  ],\n  \"earnings\": {\n    \"basic\": {\n      \"days\": 30,\n      \"amount\": \"1423500\"\n    },\n    \"transport\": [\n      {\n        \"allowance\": \"210000\"\n      }\n    ]\n  },\n  \"deductions\": {\n    \"health\": {\n      \"percent\": \"4\",\n      \"amount\": \"56940\"\n    },\n    \"pension\": {\n      \"percent\": \"4\",\n      \"amount\": \"56940\"\n    }\n  },\n  \"type\": \"replace\",\n  \"predecessor\": {\n    \"id\": \"pr_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/payroll_adjustments/preview",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payroll_adjustments",
                "preview"
              ]
            },
            "description": "Valida y calcula la nota de ajuste **sin** reservar un número ni enviar nada.\n\nOtros ejemplos de cuerpo en la documentación: reemplazar, eliminar.\n\nDocumentación: https://platform.trevol.si/docs/api#previewPayrollAdjustment"
          },
          "response": []
        },
        {
          "name": "Una nota de ajuste de nómina",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/payroll_adjustments/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payroll_adjustments",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pra_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "La nota de ajuste, con `type` y `predecessor` (con el prefijo de la clase de su predecesor). El Eliminar no trae trabajador, devengados ni deducciones.\n\nDocumentación: https://platform.trevol.si/docs/api#retrievePayrollAdjustment"
          },
          "response": []
        },
        {
          "name": "Corregir una nota de ajuste de nómina rechazada (mismo número) y reenviarla",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"NOM-2026-09-001-R\",\n  \"period\": {\n    \"hire_date\": \"2024-03-01\",\n    \"start\": \"2026-09-01\",\n    \"end\": \"2026-09-30\"\n  },\n  \"pay_period\": \"5\",\n  \"notes\": [\n    \"Nómina de septiembre de 2026\"\n  ],\n  \"employee\": {\n    \"type\": \"01\",\n    \"subtype\": \"00\",\n    \"high_risk_pension\": false,\n    \"document_type\": \"13\",\n    \"document_number\": \"1000000101\",\n    \"first_surname\": \"PRUEBA\",\n    \"second_surname\": \"NOMINA01\",\n    \"first_name\": \"TRABAJADOR\",\n    \"other_names\": \"DE PRUEBA\",\n    \"workplace\": {\n      \"country\": \"CO\",\n      \"municipality_code\": \"76001\",\n      \"address\": \"Calle 1 # 1-1\"\n    },\n    \"integral_salary\": false,\n    \"contract_type\": \"2\",\n    \"salary\": \"1423500\",\n    \"code\": \"TRAB-01\"\n  },\n  \"payment\": {\n    \"form\": \"1\",\n    \"method\": \"42\",\n    \"bank\": \"Banco de Pruebas\",\n    \"account_type\": \"Ahorros\",\n    \"account_number\": \"0001234501\"\n  },\n  \"payment_dates\": [\n    \"2026-09-30\"\n  ],\n  \"earnings\": {\n    \"basic\": {\n      \"days\": 30,\n      \"amount\": \"1423500\"\n    },\n    \"transport\": [\n      {\n        \"allowance\": \"210000\"\n      }\n    ]\n  },\n  \"deductions\": {\n    \"health\": {\n      \"percent\": \"4\",\n      \"amount\": \"56940\"\n    },\n    \"pension\": {\n      \"percent\": \"4\",\n      \"amount\": \"56940\"\n    }\n  },\n  \"type\": \"replace\",\n  \"predecessor\": {\n    \"id\": \"pr_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/payroll_adjustments/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payroll_adjustments",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pra_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Corrige una nota de ajuste rechazada con el **mismo número** y la vuelve a enviar.\n\nSolo si el documento está `rejected`, `error` o `pending`. Uno `accepted` no se corrige (se ajusta con una nota) y uno que la DIAN todavía verifica es `409 invalid_state`: espera el resultado. El `external_id` y la numeración no se cambian. Pide `Idempotency-Key`.\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nOtros ejemplos de cuerpo en la documentación: reemplazar, eliminar.\n\nDocumentación: https://platform.trevol.si/docs/api#correctPayrollAdjustment"
          },
          "response": []
        },
        {
          "name": "Reenviar una pendiente o en error",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/payroll_adjustments/:id/send",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payroll_adjustments",
                ":id",
                "send"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pra_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Vuelve a enviar una nota de ajuste `pending` o `error`.\n\nSin cuerpo. Con un documento `accepted` responde `200` con el documento tal cual; con uno que la DIAN todavía verifica no reenvía nada (`202`); con uno `rejected` es `409 invalid_state` (se corrige con `PUT`). No pide `Idempotency-Key` (reintentarlo es seguro).\n\nDocumentación: https://platform.trevol.si/docs/api#sendPayrollAdjustment"
          },
          "response": []
        },
        {
          "name": "Archivo xml",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/payroll_adjustments/:id/xml",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payroll_adjustments",
                ":id",
                "xml"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pra_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El XML firmado que se mandó a la DIAN (`application/xml`).\n\nDocumentación: https://platform.trevol.si/docs/api#downloadPayrollAdjustmentXml"
          },
          "response": []
        },
        {
          "name": "Archivo zip",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/payroll_adjustments/:id/zip",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payroll_adjustments",
                ":id",
                "zip"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pra_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El ZIP del documento (`application/zip`).\n\nDocumentación: https://platform.trevol.si/docs/api#downloadPayrollAdjustmentZip"
          },
          "response": []
        },
        {
          "name": "Archivo dian_response",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/payroll_adjustments/:id/dian_response",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payroll_adjustments",
                ":id",
                "dian_response"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "pra_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El `ApplicationResponse` con que la DIAN contestó (`application/xml`), si la DIAN lo devolvió.\n\nDocumentación: https://platform.trevol.si/docs/api#downloadPayrollAdjustmentDianResponse"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Eventos RADIAN",
      "description": "Eventos sobre facturas: el acuse (030), el reclamo (031), el recibo del bien (032) y la aceptación expresa (033) de una factura RECIBIDA, y la aceptación tácita (034) de una factura PROPIA a crédito. Un rechazo es final: el siguiente intento es otro evento. Solo `xml`. Los eventos 035 a 051 necesitan un participante RADIAN y no están disponibles.",
      "item": [
        {
          "name": "Emitir un evento RADIAN",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "type": "text",
                "description": "Una nueva en cada envío; fija una para reintentar la misma llamada."
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"external_id\": \"ERP-ACUSE-OJ1234\",\n  \"event_code\": \"030\",\n  \"invoice\": {\n    \"cufe\": \"cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd\",\n    \"number\": \"OJ1234\",\n    \"type\": \"01\",\n    \"issuer\": {\n      \"nit\": \"890330031\",\n      \"check_digit\": 3,\n      \"document_type\": \"31\",\n      \"name\": \"OSPINA Y ASOCIADOS SAS\"\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/radian_events",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "radian_events"
              ]
            },
            "description": "Envía un **evento RADIAN** sobre una factura: el acuse de recibo (030), el reclamo (031), el recibo del bien o servicio (032) y la aceptación expresa (033) de una factura RECIBIDA (`invoice`), o la aceptación tácita (034) de una factura PROPIA a crédito: de Trevol (`invoice_id`) o emitida antes con otro software y traída por la sincronización con la DIAN (`invoice: {cufe, number?}`; exactamente uno de los dos). Los eventos 035 a 051 necesitan un participante RADIAN y no están disponibles. El 030 y el 032 necesitan el representante legal de la empresa (lo firma): se configura en la app. **Un rechazo es final**: el siguiente intento es otro evento, con otro número (`POST` nuevo). Un evento vivo del mismo código sobre la misma factura es `409 duplicate_document` con `existing_id`: reintenta ese con `POST …/send`. `already_registered: true` (con `201`) solo significa que la DIAN ya mostraba el CUDE de ESTE evento; si la factura ya tenía ese evento por otro camino es `422 dian_rejected` con `already_registered_elsewhere: true`. La DIAN pide el evento anterior antes del siguiente: en la 2026-10-21 es `409 previous_event_pending`; en la 2026-10-22, `202 processing` y Trevol lo manda cuando aparezca. Si la DIAN contesta 98 («en proceso de validación») es `202 validating`: no reenvíes. Para saber si el 034 procede antes de pedirlo, usa `GET /v1/invoices/{id}/tacit_acceptance` (o, por CUFE, `GET /v1/radian_events/tacit_acceptance?cufe=…`).\n\n**Respuestas.** `201` la DIAN lo validó (`status: accepted`). `202` solo en la versión 2026-10-22: la DIAN no contestó (`processing`), otra petición lo está enviando (`sending`) o, en habilitación, el set de pruebas todavía lo valida (`validating`, en las dos versiones); trae `Location` y `Retry-After`, y el resultado llega por GET y por webhook: **no crees otro documento para la misma operación**. `422` `validation_error` (se revisó a fondo ANTES de reservar: no se gastó el número, y `errors[]` dice el campo), `dian_rejected` (con `document` y las reglas traducidas; un rechazo es final: el siguiente intento es otro `POST`, con otro número), `company_not_enabled` o `numbering_unavailable` (con `reason`). `402` `insufficient_balance` (producción sin saldo: queda `pending` con su número). `409` `external_id_in_use` o `duplicate_document` (con `existing_id`). `503` `dian_unavailable` en la 2026-10-21. Pide `Idempotency-Key`: repetir la misma devuelve lo mismo sin enviar nada.\n\nIdempotency-Key: se genera una nueva en cada envío; para reintentar la MISMA llamada, fija una (p. ej. «VENTA-2026-000123»).\n\nOtros ejemplos de cuerpo en la documentación: acuse, reclamo, tacita, tacita_cufe.\n\nDocumentación: https://platform.trevol.si/docs/api#createRadianEvent"
          },
          "response": []
        },
        {
          "name": "Listar (evento RADIAN)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/radian_events?limit=100",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "radian_events"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100"
                }
              ]
            },
            "description": "Paginación por cursor y filtros `status`, `external_id`, `created_from`, `created_to`, `event_code` y `invoice_cufe` (el CUFE de la factura).\n\nDocumentación: https://platform.trevol.si/docs/api#listRadianEvents"
          },
          "response": []
        },
        {
          "name": "Un evento radian",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/radian_events/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "radian_events",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "rev_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El evento tal como se envió, con su número, su CUDE, la factura y la respuesta de la DIAN. `already_registered`, `already_registered_elsewhere` y `tacit` se deducen de lo guardado.\n\nDocumentación: https://platform.trevol.si/docs/api#retrieveRadianEvent"
          },
          "response": []
        },
        {
          "name": "Reenviar una pendiente o en error",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/radian_events/:id/send",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "radian_events",
                ":id",
                "send"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "rev_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Vuelve a enviar un evento `pending` o `error` con el **mismo número** (por ejemplo, un 034 que todavía no procedía o un 031 que esperaba al evento anterior). Un evento que la DIAN verifica (`validating`) solo consulta; uno `rejected` es final (`409 invalid_state`): crea otro con `POST`.\n\nSin cuerpo. Con un documento `accepted` responde `200` con el documento tal cual; con uno que la DIAN todavía verifica no reenvía nada (`202`); con uno `rejected` es `409 invalid_state` (se corrige con `PUT`). No pide `Idempotency-Key` (reintentarlo es seguro).\n\nDocumentación: https://platform.trevol.si/docs/api#sendRadianEvent"
          },
          "response": []
        },
        {
          "name": "Archivo xml",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/radian_events/:id/xml",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "radian_events",
                ":id",
                "xml"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "rev_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El ApplicationResponse firmado que se mandó a la DIAN (`application/xml`). Los eventos no tienen PDF, ZIP ni `dian_response`.\n\nDocumentación: https://platform.trevol.si/docs/api#downloadRadianEventXml"
          },
          "response": []
        },
        {
          "name": "¿Procede ya la aceptación tácita (034) de esta factura? (por CUFE)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/radian_events/tacit_acceptance?cufe=abababababababababababababababababababababababababababababababababababababababababababababababab",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "radian_events",
                "tacit_acceptance"
              ],
              "query": [
                {
                  "key": "cufe",
                  "value": "abababababababababababababababababababababababababababababababababababababababababababababababab"
                }
              ]
            },
            "description": "Lo mismo que `GET /v1/invoices/{id}/tacit_acceptance`, pero por el CUFE de la factura propia: sirve también para las facturas que no se emitieron con Trevol (emitidas antes, con otro software, y traídas por la sincronización con la DIAN; la sincronización trae las de producción). Consulta GetStatusEvent y aplica la regla de los 3 días hábiles; no envía nada. `invoice_id` solo sale si la factura es de Trevol. 404 si el CUFE no es de una factura propia de la empresa y el ambiente de la llave; 422 si falta `cufe` o la factura no admite el 034 (de contado, una nota, a consumidor final, sin el XML leído por la sincronización…); 429 con más de 30 consultas por minuto por llave (el mismo límite de la otra consulta); 503 si la DIAN no contesta (reintentable).\n\nDocumentación: https://platform.trevol.si/docs/api#retrieveTacitAcceptanceByCufe"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Webhooks",
      "description": "Endpoints que reciben avisos firmados (Standard Webhooks) cuando un documento cambia.",
      "item": [
        {
          "name": "Los endpoints de webhooks de la empresa y el ambiente",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/webhook_endpoints",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhook_endpoints"
              ]
            },
            "description": "Los de la empresa y el ambiente de la llave (máximo 5). Las llaves de lectura ven el esquema y el host de la `url`, con el camino enmascarado («https://tu-servidor.co/…»): a veces es un secreto. Las de escritura la ven completa.\n\nDocumentación: https://platform.trevol.si/docs/api#listWebhookEndpoints"
          },
          "response": []
        },
        {
          "name": "Crear un endpoint de webhooks (máximo 5 por empresa y ambiente)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"url\": \"https://tu-servidor.co/webhooks/trevol\",\n  \"description\": \"Producción: facturación\",\n  \"events\": [\n    \"invoice.accepted\",\n    \"invoice.rejected\",\n    \"credit_note.accepted\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/webhook_endpoints",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhook_endpoints"
              ]
            },
            "description": "El `secret` (whsec_…) viene SOLO en esta respuesta. Cada entrega lleva `webhook-id` (el mismo en cada reintento: deduplica con él), `webhook-timestamp` y `webhook-signature`: `v1,` + base64(HMAC-SHA256(clave, `{webhook-id}.{webhook-timestamp}.{cuerpo}`)), con la clave de los 32 bytes que siguen a `whsec_`. No usa Idempotency-Key: la respuesta lleva el secreto y no se guarda.\n\nDocumentación: https://platform.trevol.si/docs/api#createWebhookEndpoint"
          },
          "response": []
        },
        {
          "name": "Un endpoint",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/webhook_endpoints/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhook_endpoints",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "we_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El endpoint (nunca el secreto: solo se muestra al crear o rotar). Un id de otra empresa o de otro ambiente es 404.\n\nDocumentación: https://platform.trevol.si/docs/api#retrieveWebhookEndpoint"
          },
          "response": []
        },
        {
          "name": "Cambiar la URL, la descripción, los eventos o pausar y reactivar",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"description\": \"Pausado mientras migramos el servidor\",\n  \"status\": \"paused\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/webhook_endpoints/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhook_endpoints",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "we_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Solo cambia lo que mandes. `status: paused` cancela las entregas pendientes; `status: enabled` reactiva el endpoint (también uno que Trevol desactivó por fallos sostenidos) y pone en cero el contador de fallos. `disabled` no se puede pedir.\n\nDocumentación: https://platform.trevol.si/docs/api#updateWebhookEndpoint"
          },
          "response": []
        },
        {
          "name": "Borrar el endpoint (con sus entregas)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/webhook_endpoints/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhook_endpoints",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "we_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Tu servidor deja de recibir avisos de inmediato. No se puede deshacer; si solo quieres detenerlo un rato, pausa el endpoint.\n\nDocumentación: https://platform.trevol.si/docs/api#deleteWebhookEndpoint"
          },
          "response": []
        },
        {
          "name": "Rotar el secreto",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"grace_period_hours\": 24\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/webhook_endpoints/:id/rotate_secret",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhook_endpoints",
                ":id",
                "rotate_secret"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "we_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El `secret` (whsec_…) viene SOLO en esta respuesta. Cada entrega lleva `webhook-id` (el mismo en cada reintento: deduplica con él), `webhook-timestamp` y `webhook-signature`: `v1,` + base64(HMAC-SHA256(clave, `{webhook-id}.{webhook-timestamp}.{cuerpo}`)), con la clave de los 32 bytes que siguen a `whsec_`. El secreto anterior sigue firmando `grace_period_hours` (0 a 72; 24 por defecto): durante la gracia cada entrega lleva las dos firmas, separadas por un espacio.\n\nDocumentación: https://platform.trevol.si/docs/api#rotateWebhookEndpointSecret"
          },
          "response": []
        },
        {
          "name": "Mandar un evento `webhook.test` solo a este endpoint (debe estar activo)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/webhook_endpoints/:id/test",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhook_endpoints",
                ":id",
                "test"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "we_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Encola una entrega manual de prueba (3 intentos) y despierta el envío: en segundos llega a tu servidor con la firma de siempre. Hasta 60 por hora. Mira cómo salió en …/deliveries.\n\nDocumentación: https://platform.trevol.si/docs/api#testWebhookEndpoint"
          },
          "response": []
        },
        {
          "name": "Las entregas de este endpoint, de la más nueva a la más vieja",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/webhook_endpoints/:id/deliveries?limit=100",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhook_endpoints",
                ":id",
                "deliveries"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100"
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "we_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Cada intento con su estado HTTP, su error (`timeout`, `http_5xx`, `blocked_address`…) y su duración. Nunca guardamos la respuesta de tu servidor. Se conservan 30 días.\n\nDocumentación: https://platform.trevol.si/docs/api#listWebhookEndpointDeliveries"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Eventos",
      "description": "Los eventos que Trevol manda a tus webhooks, guardados 30 días, y su reenvío.",
      "item": [
        {
          "name": "Los eventos de 30 días de la empresa y el ambiente",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/events?limit=100",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "events"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100"
                }
              ]
            },
            "description": "Solo se guardan eventos si la empresa tiene al menos un endpoint en este ambiente. Útil para recuperar lo que se perdió mientras tu servidor estaba caído.\n\nDocumentación: https://platform.trevol.si/docs/api#listEvents"
          },
          "response": []
        },
        {
          "name": "Un evento",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/events/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "events",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "evt_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "El evento tal como se mandó al endpoint.\n\nDocumentación: https://platform.trevol.si/docs/api#retrieveEvent"
          },
          "response": []
        },
        {
          "name": "Reenviar un evento a un endpoint (entrega manual nueva; el `webhook-id` es el mismo)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"endpoint_id\": \"we_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/events/:id/resend",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "events",
                ":id",
                "resend"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "evt_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
                }
              ]
            },
            "description": "Vuelve a mandar el evento a un endpoint activo de la misma empresa y el mismo ambiente. Lleva el mismo `webhook-id`: si tu servidor ya lo procesó, deduplica con él. Hasta 60 por hora.\n\nDocumentación: https://platform.trevol.si/docs/api#resendEvent"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Registro de peticiones",
      "description": "Qué pidió tu software a la API, cómo le fue y cuánto tardó (30 días, sin cuerpos).",
      "item": [
        {
          "name": "El registro de peticiones de la empresa y el ambiente de la llave (30 días)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('2xx', function () { pm.expect(pm.response.code).to.be.within(200, 299); });"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Trevol-Version",
                "value": "2026-10-22",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/requests?limit=100",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "requests"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100"
                }
              ]
            },
            "description": "Cada petición que pasó la autenticación de una llave, aunque terminara en 403, 422 o 429. Sin cuerpos, consultas, IP ni llaves; `path` es la plantilla.\n\nDocumentación: https://platform.trevol.si/docs/api#listRequests"
          },
          "response": []
        }
      ]
    }
  ]
}
