{
  "info": {
    "name": "API do Kobana Dunning (v1.0.0)",
    "description": "API pública de Regla de Cobranza — el motor de cobranza de Kobana. Gestiona clientes, cobros, reglas de cobranza, acuerdos, disputas y webhooks de forma programática. Autentícate con una clave de API (Bearer) creada en el panel en Configuración → Seguridad; el acceso se limita por los alcances de la clave (`dunning.dashboard.<recurso>.<acción>`).",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{bearerToken}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.dunning.kobana.com.br",
      "type": "string",
      "description": "https://api.dunning.kobana.com.br — Producción\nhttps://api.dunning.sandbox.kobana.com.br — Sandbox — entorno de pruebas aislado, separado de producción."
    },
    {
      "key": "bearerToken",
      "value": "",
      "type": "string",
      "description": "JWT (HS512) usado no header Authorization: Bearer."
    }
  ],
  "item": [
    {
      "name": "Clientes",
      "item": [
        {
          "name": "Listar clientes",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/people?page=1&per_page=20&sort_by=createdAt&sort_order=asc&search=&classification_id=00000000-0000-0000-0000-000000000000&status=active",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "people"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "Número de página (desde 1).",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Elementos por página (máx. 100). Alias legado: `limit`.",
                  "disabled": true
                },
                {
                  "key": "sort_by",
                  "value": "createdAt",
                  "description": "Campo de ordenación. Alias legado: `sortField`.",
                  "disabled": true
                },
                {
                  "key": "sort_order",
                  "value": "asc",
                  "description": "Dirección de ordenación (`asc` | `desc`). Alias legado: `sortDirection`.",
                  "disabled": true
                },
                {
                  "key": "search",
                  "value": "",
                  "description": "Búsqueda por nombre, documento o correo.",
                  "disabled": true
                },
                {
                  "key": "classification_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por clasificación (UUID).",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "active",
                  "description": "Filtra por estado del registro (`active` | `deleted`).",
                  "disabled": true
                }
              ]
            },
            "description": "Lista los clientes de la organización con paginación y filtros."
          },
          "response": []
        },
        {
          "name": "Crear cliente",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/people",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "people"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"classificationId\": \"00000000-0000-0000-0000-000000000000\",\n  \"documentNumber\": \"\",\n  \"documentType\": \"cpf\",\n  \"kind\": \"natural\",\n  \"name\": \"\",\n  \"legalName\": \"\",\n  \"nickname\": \"\",\n  \"birthday\": \"2026-01-01T00:00:00Z\",\n  \"addresses\": [\n    {\n      \"street\": \"\",\n      \"number\": \"\",\n      \"complement\": \"\",\n      \"neighborhood\": \"\",\n      \"city\": \"\",\n      \"state\": \"SP\",\n      \"zipCode\": \"01310100\"\n    }\n  ],\n  \"phones\": [\n    {\n      \"kind\": \"mobile\",\n      \"countryCode\": \"55\",\n      \"areaCode\": \"11\",\n      \"number\": \"999998888\"\n    }\n  ],\n  \"emails\": [\n    {\n      \"label\": \"personal\",\n      \"address\": \"user@example.com\"\n    }\n  ],\n  \"externalId\": \"\",\n  \"tags\": [\n    \"\"\n  ],\n  \"notes\": \"\",\n  \"customData\": {}\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Crea un cliente en la cartera. `externalId` y `documentNumber` se usan para deduplicación en importaciones e integraciones."
          },
          "response": []
        },
        {
          "name": "Consultar cliente",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/people/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "people",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Devuelve un cliente por ID."
          },
          "response": []
        },
        {
          "name": "Actualizar cliente",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/people/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "people",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"classificationId\": \"00000000-0000-0000-0000-000000000000\",\n  \"documentNumber\": \"\",\n  \"documentType\": \"cpf\",\n  \"kind\": \"natural\",\n  \"name\": \"\",\n  \"legalName\": \"\",\n  \"nickname\": \"\",\n  \"birthday\": \"2026-01-01T00:00:00Z\",\n  \"addresses\": [\n    {\n      \"street\": \"\",\n      \"number\": \"\",\n      \"complement\": \"\",\n      \"neighborhood\": \"\",\n      \"city\": \"\",\n      \"state\": \"SP\",\n      \"zipCode\": \"01310100\"\n    }\n  ],\n  \"phones\": [\n    {\n      \"kind\": \"mobile\",\n      \"countryCode\": \"55\",\n      \"areaCode\": \"11\",\n      \"number\": \"999998888\"\n    }\n  ],\n  \"emails\": [\n    {\n      \"label\": \"personal\",\n      \"address\": \"user@example.com\"\n    }\n  ],\n  \"externalId\": \"\",\n  \"tags\": [\n    \"\"\n  ],\n  \"notes\": \"\",\n  \"customData\": {}\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Actualiza los datos de un cliente (parcial)."
          },
          "response": []
        },
        {
          "name": "Eliminar cliente",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/people/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "people",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Elimina (borrado lógico) un cliente. Los cobros y el historial permanecen para la pista de auditoría."
          },
          "response": []
        },
        {
          "name": "Estado de cuenta del deudor (PDF)",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/people/:id/statement-pdf",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "people",
                ":id",
                "statement-pdf"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Genera el estado de cuenta del deudor en PDF: todos los cobros de la persona (documento, vencimiento, estado, importe original y actual) con los totales pendiente, vencido y ya pagado. Delimitado por la organización. Responde `application/pdf` como adjunto binario."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Cobros",
      "item": [
        {
          "name": "Listar cobros",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/charges?page=1&per_page=20&sort_by=createdAt&sort_order=asc&search=&person_id=00000000-0000-0000-0000-000000000000&status=pending,overdue&due_date_from=2026-01-01&due_date_to=2026-12-31&include=person",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "charges"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "Número de página (desde 1).",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Elementos por página (máx. 100). Alias legado: `limit`.",
                  "disabled": true
                },
                {
                  "key": "sort_by",
                  "value": "createdAt",
                  "description": "Campo de ordenación. Alias legado: `sortField`.",
                  "disabled": true
                },
                {
                  "key": "sort_order",
                  "value": "asc",
                  "description": "Dirección de ordenación (`asc` | `desc`). Alias legado: `sortDirection`.",
                  "disabled": true
                },
                {
                  "key": "search",
                  "value": "",
                  "description": "Búsqueda por número de documento, descripción, `externalId`, nombre o documento del cliente.",
                  "disabled": true
                },
                {
                  "key": "person_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por los cobros de un cliente (UUID).",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "pending,overdue",
                  "description": "Filtra por estado. Acepta un valor o una lista separada por comas (`pending`, `paid`, `overdue`, `cancelled`, `negotiated`, `protested`, `negatived`, `written_off`).",
                  "disabled": true
                },
                {
                  "key": "due_date_from",
                  "value": "2026-01-01",
                  "description": "Vencimiento desde (inclusive, `YYYY-MM-DD` o datetime ISO).",
                  "disabled": true
                },
                {
                  "key": "due_date_to",
                  "value": "2026-12-31",
                  "description": "Vencimiento hasta (inclusive, `YYYY-MM-DD` o datetime ISO).",
                  "disabled": true
                },
                {
                  "key": "include",
                  "value": "person",
                  "description": "Relaciones a incluir en la respuesta (`person`).",
                  "disabled": true
                }
              ]
            },
            "description": "Lista los cobros de la organización con paginación y filtros. Los cobros pendientes vencidos se promueven a `overdue` en la lectura."
          },
          "response": []
        },
        {
          "name": "Crear cobro",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/charges",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "charges"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"personId\": \"00000000-0000-0000-0000-000000000000\",\n  \"collectionRuleId\": \"00000000-0000-0000-0000-000000000000\",\n  \"documentNumber\": \"\",\n  \"description\": \"\",\n  \"originalAmount\": 1500,\n  \"interestAmount\": 0,\n  \"fineAmount\": 0,\n  \"discountAmount\": 0,\n  \"issueDate\": \"2026-07-01\",\n  \"dueDate\": \"2026-08-01\",\n  \"status\": \"pending\",\n  \"paymentMethod\": \"boleto\",\n  \"barcode\": \"\",\n  \"pixEmv\": \"\",\n  \"paymentUrl\": \"https://example.com\",\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ],\n  \"chargePolicy\": {\n    \"fine\": {\n      \"disabled\": true\n    },\n    \"interest\": {\n      \"disabled\": true\n    },\n    \"discount\": {\n      \"disabled\": true\n    },\n    \"correction\": {\n      \"index\": \"none\"\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Crea un cobro para un cliente. Sin `collectionRuleId`, se aplica la regla de cobranza predeterminada de la organización. `currentAmount` = original + intereses + multa − descuento; un cobro ya vencido entra como `overdue`."
          },
          "response": []
        },
        {
          "name": "Consultar cobro",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/charges/:id?include=person,engine",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "charges",
                ":id"
              ],
              "query": [
                {
                  "key": "include",
                  "value": "person,engine",
                  "description": "Relaciones a incluir en la respuesta (`person`, `engine` — telemetría de la regla).",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Devuelve un cobro por ID. Usa `include=engine` para recibir la telemetría del motor (inscripción en la regla y ejecuciones de etapa)."
          },
          "response": []
        },
        {
          "name": "Actualizar cobro",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/charges/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "charges",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"personId\": \"00000000-0000-0000-0000-000000000000\",\n  \"collectionRuleId\": \"00000000-0000-0000-0000-000000000000\",\n  \"documentNumber\": \"\",\n  \"description\": \"\",\n  \"originalAmount\": 1500,\n  \"interestAmount\": 0,\n  \"fineAmount\": 0,\n  \"discountAmount\": 0,\n  \"issueDate\": \"2026-07-01\",\n  \"dueDate\": \"2026-08-01\",\n  \"status\": \"pending\",\n  \"paymentMethod\": \"boleto\",\n  \"barcode\": \"\",\n  \"pixEmv\": \"\",\n  \"paymentUrl\": \"https://example.com\",\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ],\n  \"chargePolicy\": {\n    \"fine\": {\n      \"disabled\": true\n    },\n    \"interest\": {\n      \"disabled\": true\n    },\n    \"discount\": {\n      \"disabled\": true\n    },\n    \"correction\": {\n      \"index\": \"none\"\n    }\n  },\n  \"paidAmount\": 0,\n  \"paidAt\": \"2026-08-03\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Actualiza los datos de un cobro (parcial)."
          },
          "response": []
        },
        {
          "name": "Eliminar cobro",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/charges/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "charges",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Elimina (borrado lógico) un cobro junto con las tareas y ofertas relacionadas. Un cobro con notificaciones, interacciones, negativaciones o protestos asociados no puede eliminarse (409)."
          },
          "response": []
        },
        {
          "name": "Carta de finiquito (PDF)",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/charges/:id/settlement-pdf",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "charges",
                ":id",
                "settlement-pdf"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Genera la carta de finiquito del cobro en PDF (documento jurídico), delimitada por la organización. Solo se permite cuando el cobro está pagado (estado `paid`); de lo contrario devuelve 409 (`CHARGE_NOT_SETTLED`). Responde `application/pdf` como adjunto binario."
          },
          "response": []
        },
        {
          "name": "Notificar cobro",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/charges/:id/notify",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "charges",
                ":id",
                "notify"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"channel\": \"email\",\n  \"recipient\": \"maria@exemplo.com.br\",\n  \"subject\": \"\",\n  \"body\": \"\",\n  \"collectionRuleStepId\": \"00000000-0000-0000-0000-000000000000\",\n  \"metadata\": {}\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Crea una notificación manual para el cobro y la envía a la cola de procesamiento. Actualiza `lastNotificationAt` y, cuando se informa `collectionRuleStepId`, el `currentStep` del cobro."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Acuerdos",
      "item": [
        {
          "name": "Listar acuerdos",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/agreements?page=1&per_page=20&sort_by=createdAt&sort_order=asc&status=proposed&person_id=00000000-0000-0000-0000-000000000000&include=person,installments",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "agreements"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "Número de página (desde 1).",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Elementos por página (máx. 100). Alias legado: `limit`.",
                  "disabled": true
                },
                {
                  "key": "sort_by",
                  "value": "createdAt",
                  "description": "Campo de ordenación. Alias legado: `sortField`.",
                  "disabled": true
                },
                {
                  "key": "sort_order",
                  "value": "asc",
                  "description": "Dirección de ordenación (`asc` | `desc`). Alias legado: `sortDirection`.",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "proposed",
                  "description": "Filtra por estado del acuerdo.",
                  "disabled": true
                },
                {
                  "key": "person_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por los acuerdos de un cliente (UUID).",
                  "disabled": true
                },
                {
                  "key": "include",
                  "value": "person,installments",
                  "description": "Relaciones a incluir en la respuesta (`person`, `installments`, `negotiationOffer`).",
                  "disabled": true
                }
              ]
            },
            "description": "Lista los acuerdos de la organización con paginación y filtros."
          },
          "response": []
        },
        {
          "name": "Crear acuerdo",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/agreements",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "agreements"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"personId\": \"00000000-0000-0000-0000-000000000000\",\n  \"negotiationOfferId\": \"00000000-0000-0000-0000-000000000000\",\n  \"originalTotal\": 1500,\n  \"discountAmount\": 300,\n  \"numberOfInstallments\": 6,\n  \"firstDueDate\": \"2026-08-01\",\n  \"termsAccepted\": \"\",\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Crea un acuerdo con estado `proposed`. `finalTotal` = `originalTotal` − `discountAmount` (debe ser mayor que cero) e `installmentValue` = `finalTotal` / `numberOfInstallments`."
          },
          "response": []
        },
        {
          "name": "Consultar acuerdo",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/agreements/:id?include=installments,negotiationOffer",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "agreements",
                ":id"
              ],
              "query": [
                {
                  "key": "include",
                  "value": "installments,negotiationOffer",
                  "description": "Relaciones a incluir en la respuesta (`installments`, `negotiationOffer`).",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Devuelve un acuerdo por ID (siempre incluye datos resumidos del cliente)."
          },
          "response": []
        },
        {
          "name": "Actualizar acuerdo",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/agreements/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "agreements",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"originalTotal\": 0,\n  \"discountAmount\": 0,\n  \"numberOfInstallments\": 0,\n  \"firstDueDate\": \"2026-08-01\",\n  \"termsAccepted\": \"\",\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Actualiza un acuerdo (parcial). Permitido solo con estado `proposed` o `accepted` (409 en los demás)."
          },
          "response": []
        },
        {
          "name": "Eliminar acuerdo",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/agreements/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "agreements",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Elimina (borrado lógico) un acuerdo, marcándolo como `cancelled`. Los acuerdos `completed` no pueden eliminarse (409)."
          },
          "response": []
        },
        {
          "name": "Aceptar acuerdo",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/agreements/:id/accept",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "agreements",
                ":id",
                "accept"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"acceptedIp\": \"\",\n  \"termsAccepted\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Acepta un acuerdo `proposed` (409 en los demás estados): registra `acceptedAt`/`acceptedIp` y crea las cuotas con vencimientos mensuales a partir de `firstDueDate`."
          },
          "response": []
        },
        {
          "name": "Cancelar acuerdo",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/agreements/:id/cancel",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "agreements",
                ":id",
                "cancel"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reason\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Cancela un acuerdo, registrando `cancelledAt` y el motivo, y cancela las cuotas pendientes/vencidas. Los acuerdos `completed` o ya cancelados devuelven 409."
          },
          "response": []
        },
        {
          "name": "Término de acuerdo (PDF)",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/agreements/:id/pdf",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "agreements",
                ":id",
                "pdf"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Genera el término de acuerdo en PDF (documento jurídico) con acreedor, deudor, totales y cuotas, delimitado por la organización. Responde `application/pdf` como adjunto binario."
          },
          "response": []
        },
        {
          "name": "Listar cuotas del acuerdo",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/agreements/:id/installments",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "agreements",
                ":id",
                "installments"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Lista las cuotas de un acuerdo (ordenadas por número) con un resumen agregado."
          },
          "response": []
        },
        {
          "name": "Actualizar cuota del acuerdo",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/agreements/:id/installments",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "agreements",
                ":id",
                "installments"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"installmentNumber\": 1,\n  \"paidAmount\": 0,\n  \"paidAt\": \"2026-08-03\",\n  \"status\": \"pending\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Actualiza una cuota (pago/estado). Permitido solo en acuerdos `accepted` o `active`; las cuotas canceladas no pueden modificarse (409). El primer pago activa el acuerdo; con todas las cuotas pagadas, el acuerdo se completa (`completed`)."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Disputas",
      "item": [
        {
          "name": "Listar disputas",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/disputes?page=1&per_page=20&status=open&charge_id=00000000-0000-0000-0000-000000000000&person_id=00000000-0000-0000-0000-000000000000",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "disputes"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "Número de página (desde 1).",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Elementos por página (máx. 100). Alias legado: `limit`.",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "open",
                  "description": "Filtra por estado (`open` | `under_review` | `resolved_valid` | `resolved_invalid` | `canceled`).",
                  "disabled": true
                },
                {
                  "key": "charge_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por cobro (UUID).",
                  "disabled": true
                },
                {
                  "key": "person_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por cliente (UUID).",
                  "disabled": true
                }
              ]
            },
            "description": "Lista las disputas de la organización, ordenadas por apertura (la más reciente primero). No admite ordenación personalizada."
          },
          "response": []
        },
        {
          "name": "Abrir disputa",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/disputes",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "disputes"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"chargeId\": \"00000000-0000-0000-0000-000000000000\",\n  \"type\": \"already_paid\",\n  \"reason\": \"\",\n  \"disputedAmount\": 150,\n  \"documents\": [\n    {}\n  ],\n  \"assignedToId\": \"00000000-0000-0000-0000-000000000000\",\n  \"slaDays\": 5\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Abre una disputa sobre un cobro y pausa la regla de inmediato. Si el cobro ya tiene una disputa abierta o en revisión, devuelve la existente (no duplica). Admite `Idempotency-Key`."
          },
          "response": []
        },
        {
          "name": "Consultar disputa",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/disputes/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "disputes",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Devuelve una disputa por ID, con el cobro completo, el cliente y el responsable."
          },
          "response": []
        },
        {
          "name": "Ejecutar acción en la disputa",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/disputes/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "disputes",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"action\": \"start_review\",\n  \"assignedToId\": \"00000000-0000-0000-0000-000000000000\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Ejecuta una acción de flujo en la disputa: `start_review`, `resolve` o `cancel`. Las transiciones inválidas (p. ej., `start_review` cuando el estado no es `open`) devuelven 409."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Tareas",
      "item": [
        {
          "name": "Listar tareas",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/tasks?page=1&per_page=20&sort_by=createdAt&sort_order=asc&status=pending&priority=low&task_type=call&assigned_to_id=00000000-0000-0000-0000-000000000000&person_id=00000000-0000-0000-0000-000000000000&charge_id=00000000-0000-0000-0000-000000000000&include=person,assignedTo,charge",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "tasks"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "Número de página (desde 1).",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Elementos por página (máx. 100). Alias legado: `limit`.",
                  "disabled": true
                },
                {
                  "key": "sort_by",
                  "value": "createdAt",
                  "description": "Campo de ordenación. Alias legado: `sortField`.",
                  "disabled": true
                },
                {
                  "key": "sort_order",
                  "value": "asc",
                  "description": "Dirección de ordenación (`asc` | `desc`). Alias legado: `sortDirection`.",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "pending",
                  "description": "Filtra por estado (`pending` | `in_progress` | `completed` | `cancelled`).",
                  "disabled": true
                },
                {
                  "key": "priority",
                  "value": "low",
                  "description": "Filtra por prioridad (`low` | `medium` | `high` | `urgent`).",
                  "disabled": true
                },
                {
                  "key": "task_type",
                  "value": "call",
                  "description": "Filtra por tipo (`call` | `email` | `visit` | `review` | `follow_up`).",
                  "disabled": true
                },
                {
                  "key": "assigned_to_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por responsable (UUID).",
                  "disabled": true
                },
                {
                  "key": "person_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por cliente (UUID).",
                  "disabled": true
                },
                {
                  "key": "charge_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por cobro (UUID).",
                  "disabled": true
                },
                {
                  "key": "include",
                  "value": "person,assignedTo,charge",
                  "description": "Relaciones a incluir, separadas por comas (`person`, `assignedTo`, `charge`).",
                  "disabled": true
                }
              ]
            },
            "description": "Lista las tareas de la organización con paginación y filtros. Ordenable vía `sort_by` (`title` | `priority` | `status` | `dueAt` | `createdAt` | `updatedAt`)."
          },
          "response": []
        },
        {
          "name": "Crear tarea",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/tasks",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "tasks"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"personId\": \"00000000-0000-0000-0000-000000000000\",\n  \"chargeId\": \"00000000-0000-0000-0000-000000000000\",\n  \"assignedToId\": \"00000000-0000-0000-0000-000000000000\",\n  \"title\": \"\",\n  \"description\": \"\",\n  \"taskType\": \"call\",\n  \"priority\": \"medium\",\n  \"status\": \"pending\",\n  \"dueAt\": \"2026-01-01T00:00:00Z\",\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Crea una tarea, opcionalmente vinculada a un cliente, un cobro y un responsable (todos de la propia organización). Admite `Idempotency-Key`."
          },
          "response": []
        },
        {
          "name": "Consultar tarea",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/tasks/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "tasks",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Devuelve una tarea por ID, con resúmenes de cliente, responsable y cobro."
          },
          "response": []
        },
        {
          "name": "Actualizar tarea",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/tasks/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "tasks",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"personId\": \"00000000-0000-0000-0000-000000000000\",\n  \"chargeId\": \"00000000-0000-0000-0000-000000000000\",\n  \"assignedToId\": \"00000000-0000-0000-0000-000000000000\",\n  \"title\": \"\",\n  \"description\": \"\",\n  \"taskType\": \"call\",\n  \"priority\": \"low\",\n  \"status\": \"pending\",\n  \"dueAt\": \"2026-01-01T00:00:00Z\",\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Actualiza los datos de una tarea (parcial)."
          },
          "response": []
        },
        {
          "name": "Eliminar tarea",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/tasks/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "tasks",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Elimina lógicamente una tarea: el estado pasa a `cancelled` (el registro permanece)."
          },
          "response": []
        },
        {
          "name": "Completar tarea",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/tasks/:id/complete",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "tasks",
                ":id",
                "complete"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Marca la tarea como completada y completa `completedAt`. Devuelve 409 si la tarea ya está completada o cancelada."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Interacciones",
      "item": [
        {
          "name": "Listar interacciones",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/interactions?page=1&per_page=20&sort_by=createdAt&sort_order=asc&interaction_type=call&direction=inbound&outcome=promise_to_pay&person_id=00000000-0000-0000-0000-000000000000&charge_id=00000000-0000-0000-0000-000000000000&include=person,user,charge",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "interactions"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "Número de página (desde 1).",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Elementos por página (máx. 100). Alias legado: `limit`.",
                  "disabled": true
                },
                {
                  "key": "sort_by",
                  "value": "createdAt",
                  "description": "Campo de ordenación. Alias legado: `sortField`.",
                  "disabled": true
                },
                {
                  "key": "sort_order",
                  "value": "asc",
                  "description": "Dirección de ordenación (`asc` | `desc`). Alias legado: `sortDirection`.",
                  "disabled": true
                },
                {
                  "key": "interaction_type",
                  "value": "call",
                  "description": "Filtra por tipo (`call` | `email` | `whatsapp` | `meeting` | `note`).",
                  "disabled": true
                },
                {
                  "key": "direction",
                  "value": "inbound",
                  "description": "Filtra por dirección (`inbound` | `outbound`).",
                  "disabled": true
                },
                {
                  "key": "outcome",
                  "value": "promise_to_pay",
                  "description": "Filtra por resultado (`promise_to_pay` | `negotiation` | `dispute` | `no_contact` | `callback_requested` | `payment_confirmed`).",
                  "disabled": true
                },
                {
                  "key": "person_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por cliente (UUID).",
                  "disabled": true
                },
                {
                  "key": "charge_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por cobro (UUID).",
                  "disabled": true
                },
                {
                  "key": "include",
                  "value": "person,user,charge",
                  "description": "Relaciones a incluir, separadas por comas (`person`, `user`, `charge`).",
                  "disabled": true
                }
              ]
            },
            "description": "Lista las interacciones de la organización con paginación y filtros. Ordenable vía `sort_by` (`contactedAt` | `interactionType` | `createdAt` | `updatedAt`; por defecto `contactedAt` desc)."
          },
          "response": []
        },
        {
          "name": "Registrar interacción",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/interactions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "interactions"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"personId\": \"00000000-0000-0000-0000-000000000000\",\n  \"chargeId\": \"00000000-0000-0000-0000-000000000000\",\n  \"interactionType\": \"call\",\n  \"direction\": \"inbound\",\n  \"summary\": \"\",\n  \"outcome\": \"promise_to_pay\",\n  \"promiseDate\": \"2026-01-01T00:00:00Z\",\n  \"promisedAmount\": 200,\n  \"contactedAt\": \"2026-01-01T00:00:00Z\",\n  \"durationSeconds\": 0,\n  \"metadata\": {},\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Registra una interacción con un cliente, opcionalmente vinculada a un cobro. Admite `Idempotency-Key`."
          },
          "response": []
        },
        {
          "name": "Consultar interacción",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/interactions/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "interactions",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Devuelve una interacción por ID, con resúmenes de cliente, usuario y cobro."
          },
          "response": []
        },
        {
          "name": "Actualizar interacción",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/interactions/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "interactions",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"summary\": \"\",\n  \"notes\": \"\",\n  \"outcome\": \"promise_to_pay\",\n  \"promiseDate\": \"2026-01-01T00:00:00Z\",\n  \"promisedAmount\": 0,\n  \"metadata\": {},\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Actualiza los campos editables de una interacción (parcial)."
          },
          "response": []
        },
        {
          "name": "Eliminar interacción",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/interactions/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "interactions",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Elimina (borrado lógico) una interacción; el registro permanece para la pista de auditoría."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Notificaciones",
      "item": [
        {
          "name": "Listar notificaciones",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/notifications?page=1&per_page=20&sort_by=createdAt&sort_order=asc&channel=email,whatsapp&status=failed,bounced&person_id=00000000-0000-0000-0000-000000000000&charge_id=00000000-0000-0000-0000-000000000000&include=person,charge,step",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "notifications"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "Número de página (desde 1).",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Elementos por página (máx. 100). Alias legado: `limit`.",
                  "disabled": true
                },
                {
                  "key": "sort_by",
                  "value": "createdAt",
                  "description": "Campo de ordenación. Alias legado: `sortField`.",
                  "disabled": true
                },
                {
                  "key": "sort_order",
                  "value": "asc",
                  "description": "Dirección de ordenación (`asc` | `desc`). Alias legado: `sortDirection`.",
                  "disabled": true
                },
                {
                  "key": "channel",
                  "value": "email,whatsapp",
                  "description": "Filtra por canal; acepta un valor único o una lista separada por comas (`email` | `sms` | `whatsapp` | `voice` | `manual`).",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "failed,bounced",
                  "description": "Filtra por estado; acepta un valor único o una lista separada por comas (`pending` | `queued` | `sent` | `delivered` | `read` | `failed` | `bounced`).",
                  "disabled": true
                },
                {
                  "key": "person_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por cliente (UUID).",
                  "disabled": true
                },
                {
                  "key": "charge_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por cobro (UUID).",
                  "disabled": true
                },
                {
                  "key": "include",
                  "value": "person,charge,step",
                  "description": "Relaciones a incluir, separadas por comas (`person`, `charge`, `step`; `template` equivale a `step`).",
                  "disabled": true
                }
              ]
            },
            "description": "Lista las notificaciones de la organización con paginación y filtros. Ordenable vía `sort_by` (`createdAt` | `updatedAt` | `sentAt` | `deliveredAt` | `channel` | `status`)."
          },
          "response": []
        },
        {
          "name": "Crear notificación",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/notifications",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "notifications"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"personId\": \"00000000-0000-0000-0000-000000000000\",\n  \"chargeId\": \"00000000-0000-0000-0000-000000000000\",\n  \"collectionRuleStepId\": \"00000000-0000-0000-0000-000000000000\",\n  \"channel\": \"email\",\n  \"recipient\": \"\",\n  \"subject\": \"\",\n  \"body\": \"\",\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ],\n  \"metadata\": {}\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Crea una notificación manual para un cliente, opcionalmente vinculada a un cobro y a un paso de la regla. El destinatario se valida según el canal."
          },
          "response": []
        },
        {
          "name": "Consultar notificación",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/notifications/:id?include=person,charge,step",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "notifications",
                ":id"
              ],
              "query": [
                {
                  "key": "include",
                  "value": "person,charge,step",
                  "description": "Relaciones a incluir, separadas por comas (`person`, `charge`, `step`; `template` equivale a `step`).",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Devuelve una notificación por ID; usa `include` para anexar relaciones."
          },
          "response": []
        },
        {
          "name": "Actualizar notificación",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/notifications/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "notifications",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"pending\",\n  \"sentAt\": \"\",\n  \"deliveredAt\": \"\",\n  \"readAt\": \"\",\n  \"failedAt\": \"\",\n  \"failureReason\": \"\",\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ],\n  \"metadata\": {},\n  \"cost\": 0\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Actualiza el estado, los timestamps de entrega y los metadatos de una notificación (parcial). Útil para integraciones que confirman envío/entrega."
          },
          "response": []
        },
        {
          "name": "Eliminar notificación",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/notifications/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "notifications",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Elimina una notificación DEFINITIVAMENTE (borrado físico — el modelo no tiene borrado lógico)."
          },
          "response": []
        },
        {
          "name": "Reenviar notificación",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/notifications/:id/resend",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "notifications",
                ":id",
                "resend"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Crea una NUEVA notificación `pending` copiando la original (el `metadata` de la nueva referencia la original en `resendOf`). Solo se permite cuando la original está `failed` o `bounced`; en caso contrario devuelve 400. Admite `Idempotency-Key`."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Reglas de cobranza",
      "item": [
        {
          "name": "Listar reglas",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/collection-rules?page=1&per_page=20&classification_id=00000000-0000-0000-0000-000000000000&is_default=true&activated_at=true&include=steps",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "collection-rules"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "Número de página (desde 1).",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Elementos por página (máx. 100). Alias legado: `limit`.",
                  "disabled": true
                },
                {
                  "key": "classification_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por la clasificación asociada (UUID).",
                  "disabled": true
                },
                {
                  "key": "is_default",
                  "value": "true",
                  "description": "Filtra por la regla predeterminada (`true` | `false`).",
                  "disabled": true
                },
                {
                  "key": "activated_at",
                  "value": "true",
                  "description": "Filtra por activación: `true` = activas, `false` = inactivas.",
                  "disabled": true
                },
                {
                  "key": "include",
                  "value": "steps",
                  "description": "Relaciones a incluir, separadas por coma. Soportado: `steps`.",
                  "disabled": true
                }
              ]
            },
            "description": "Lista las reglas de cobranza de la organización, ordenadas por prioridad. `_count.charges` trae el total de cobros activos en la regla."
          },
          "response": []
        },
        {
          "name": "Crear regla",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/collection-rules",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "collection-rules"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"classificationId\": \"00000000-0000-0000-0000-000000000000\",\n  \"name\": \"\",\n  \"description\": \"\",\n  \"isDefault\": false,\n  \"priority\": 0,\n  \"activatedAt\": \"2026-01-01T00:00:00Z\",\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ],\n  \"steps\": [\n    {\n      \"messageTemplateId\": \"00000000-0000-0000-0000-000000000000\",\n      \"position\": 0,\n      \"name\": \"\",\n      \"triggerType\": \"before_due\",\n      \"triggerDays\": 0,\n      \"actionType\": \"notification\",\n      \"channels\": [\n        \"email\"\n      ],\n      \"tone\": \"friendly\",\n      \"preferredTime\": \"\",\n      \"activatedAt\": \"2026-01-01T00:00:00Z\",\n      \"externalId\": \"\",\n      \"customData\": {},\n      \"tags\": [\n        \"\"\n      ]\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Crea una regla de cobranza, opcionalmente ya con etapas. Marcar `isDefault` desmarca la regla predeterminada anterior."
          },
          "response": []
        },
        {
          "name": "Consultar regla",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/collection-rules/:id?include=steps",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "collection-rules",
                ":id"
              ],
              "query": [
                {
                  "key": "include",
                  "value": "steps",
                  "description": "Relaciones a incluir, separadas por coma. Soportado: `steps`.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Devuelve una regla por ID. Usa `include=steps` para incluir las etapas."
          },
          "response": []
        },
        {
          "name": "Actualizar regla",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/collection-rules/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "collection-rules",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"classificationId\": \"00000000-0000-0000-0000-000000000000\",\n  \"name\": \"\",\n  \"description\": \"\",\n  \"isDefault\": false,\n  \"priority\": 0,\n  \"activatedAt\": \"2026-01-01T00:00:00Z\",\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ],\n  \"steps\": [\n    {\n      \"id\": \"00000000-0000-0000-0000-000000000000\",\n      \"name\": \"\",\n      \"position\": 0,\n      \"triggerType\": \"before_due\",\n      \"triggerDays\": 0,\n      \"actionType\": \"notification\",\n      \"channels\": [\n        \"email\"\n      ],\n      \"messageTemplateId\": \"00000000-0000-0000-0000-000000000000\",\n      \"tone\": \"friendly\",\n      \"preferredTime\": \"\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Actualiza los datos de la regla (parcial). El array `steps`, cuando se envía, hace upsert y elimina las etapas ausentes."
          },
          "response": []
        },
        {
          "name": "Eliminar regla",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/collection-rules/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "collection-rules",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Elimina (borrado lógico) la regla y sus etapas. Falla con 409 si hay cobros usando la regla."
          },
          "response": []
        },
        {
          "name": "Listar etapas de la regla",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/collection-rules/:id/steps",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "collection-rules",
                ":id",
                "steps"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Lista las etapas de la regla ordenadas por `position`, con la plantilla de mensaje incluida."
          },
          "response": []
        },
        {
          "name": "Crear etapa",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/collection-rules/:id/steps",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "collection-rules",
                ":id",
                "steps"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messageTemplateId\": \"00000000-0000-0000-0000-000000000000\",\n  \"position\": 0,\n  \"name\": \"\",\n  \"triggerType\": \"before_due\",\n  \"triggerDays\": 0,\n  \"actionType\": \"notification\",\n  \"channels\": [\n    \"email\"\n  ],\n  \"tone\": \"friendly\",\n  \"preferredTime\": \"\",\n  \"activatedAt\": \"2026-01-01T00:00:00Z\",\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Crea una etapa en la regla. Sin `position` entra al final; con `position`, desplaza las etapas siguientes."
          },
          "response": []
        },
        {
          "name": "Actualizar etapa",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/collection-rules/:id/steps/:stepId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "collection-rules",
                ":id",
                "steps",
                ":stepId"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                },
                {
                  "key": "stepId",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) de la etapa."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messageTemplateId\": \"00000000-0000-0000-0000-000000000000\",\n  \"position\": 0,\n  \"name\": \"\",\n  \"triggerType\": \"before_due\",\n  \"triggerDays\": 0,\n  \"actionType\": \"notification\",\n  \"channels\": [\n    \"email\"\n  ],\n  \"tone\": \"friendly\",\n  \"preferredTime\": \"\",\n  \"activatedAt\": \"2026-01-01T00:00:00Z\",\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Actualiza una etapa (parcial). Cambiar `position` reordena automáticamente las demás etapas."
          },
          "response": []
        },
        {
          "name": "Eliminar etapa",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/collection-rules/:id/steps/:stepId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "collection-rules",
                ":id",
                "steps",
                ":stepId"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                },
                {
                  "key": "stepId",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) de la etapa."
                }
              ]
            },
            "description": "Elimina (borrado lógico) una etapa y reordena las restantes. Falla con 409 si la etapa tiene notificaciones asociadas."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Plantillas de mensaje",
      "item": [
        {
          "name": "Listar plantillas",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/templates?page=1&per_page=20&search=&channel=email&category=reminder&tone=friendly&is_active=true&sort_by=createdAt&sort_order=asc",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "templates"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "Número de página (desde 1).",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Elementos por página (máx. 100). Alias legado: `limit`.",
                  "disabled": true
                },
                {
                  "key": "search",
                  "value": "",
                  "description": "Búsqueda por nombre, asunto o cuerpo.",
                  "disabled": true
                },
                {
                  "key": "channel",
                  "value": "email",
                  "description": "Filtra por canal.",
                  "disabled": true
                },
                {
                  "key": "category",
                  "value": "reminder",
                  "description": "Filtra por categoría.",
                  "disabled": true
                },
                {
                  "key": "tone",
                  "value": "friendly",
                  "description": "Filtra por tono.",
                  "disabled": true
                },
                {
                  "key": "is_active",
                  "value": "true",
                  "description": "Filtra por activación: `true` = activas, `false` = inactivas.",
                  "disabled": true
                },
                {
                  "key": "sort_by",
                  "value": "createdAt",
                  "description": "Campo de ordenación. Alias legado: `sortField`.",
                  "disabled": true
                },
                {
                  "key": "sort_order",
                  "value": "asc",
                  "description": "Dirección de ordenación (`asc` | `desc`). Alias legado: `sortDirection`.",
                  "disabled": true
                }
              ]
            },
            "description": "Lista las plantillas de mensaje de la organización con paginación, búsqueda y filtros."
          },
          "response": []
        },
        {
          "name": "Crear plantilla",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/templates",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "templates"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"\",\n  \"channel\": \"email\",\n  \"category\": \"reminder\",\n  \"tone\": \"friendly\",\n  \"subject\": \"\",\n  \"body\": \"\",\n  \"variables\": [\n    \"\"\n  ],\n  \"activatedAt\": \"2026-01-01T00:00:00Z\",\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Crea una plantilla de mensaje. Falla con 409 si ya existe una plantilla con el mismo `name` o `externalId`."
          },
          "response": []
        },
        {
          "name": "Consultar plantilla",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/templates/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "templates",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Devuelve una plantilla por ID."
          },
          "response": []
        },
        {
          "name": "Actualizar plantilla",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/templates/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "templates",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"\",\n  \"channel\": \"email\",\n  \"category\": \"reminder\",\n  \"tone\": \"friendly\",\n  \"subject\": \"\",\n  \"body\": \"\",\n  \"variables\": [\n    \"\"\n  ],\n  \"activatedAt\": \"2026-01-01T00:00:00Z\",\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Actualiza una plantilla (parcial). Falla con 409 si el nuevo `name` o `externalId` ya está en uso."
          },
          "response": []
        },
        {
          "name": "Eliminar plantilla",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/templates/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "templates",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Elimina (borrado lógico) una plantilla. Falla con 409 si está en uso por etapas de regla."
          },
          "response": []
        },
        {
          "name": "Duplicar plantilla",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/templates/:id/duplicate",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "templates",
                ":id",
                "duplicate"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Crea una copia de la plantilla con el nombre indicado. La copia nace inactiva (`activatedAt` null) y sin `externalId`."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Clasificaciones",
      "item": [
        {
          "name": "Listar clasificaciones",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/classifications?page=1&per_page=20&is_default=true&auto_assign=true&activated_at=true&include=_count&sort=name&order=asc",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "classifications"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "Número de página (desde 1).",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Elementos por página (máx. 100). Alias legado: `limit`.",
                  "disabled": true
                },
                {
                  "key": "is_default",
                  "value": "true",
                  "description": "Filtra por la clasificación predeterminada (`true` | `false`).",
                  "disabled": true
                },
                {
                  "key": "auto_assign",
                  "value": "true",
                  "description": "Filtra por asignación automática (`true` | `false`).",
                  "disabled": true
                },
                {
                  "key": "activated_at",
                  "value": "true",
                  "description": "Filtra por activación: `true` = activas, `false` o `null` = inactivas.",
                  "disabled": true
                },
                {
                  "key": "include",
                  "value": "_count",
                  "description": "Relaciones a incluir. Soportado: `_count` (clientes y reglas).",
                  "disabled": true
                },
                {
                  "key": "sort",
                  "value": "name",
                  "description": "Campo de ordenación (`name` | `code` | `priority` | `createdAt` | `updatedAt`).",
                  "disabled": true
                },
                {
                  "key": "order",
                  "value": "asc",
                  "description": "Dirección de ordenación (`asc` | `desc`).",
                  "disabled": true
                }
              ]
            },
            "description": "Lista las clasificaciones de la organización, por defecto ordenadas por `priority` y `name`. Usa `include=_count` para los contadores."
          },
          "response": []
        },
        {
          "name": "Crear clasificación",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/classifications",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "classifications"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"\",\n  \"code\": \"good_payer\",\n  \"description\": \"\",\n  \"color\": \"#22c55e\",\n  \"priority\": 0,\n  \"isDefault\": false,\n  \"autoAssign\": false,\n  \"criteria\": {\n    \"minOnTimePercentage\": 0,\n    \"maxOnTimePercentage\": 0,\n    \"maxConsecutiveDelays\": 0,\n    \"maxCurrentOverdueDays\": 0,\n    \"evaluationPeriodMonths\": 0,\n    \"minChargesCount\": 0,\n    \"maxChargesCount\": 0,\n    \"hasNegativationHistory\": false,\n    \"hasProtestHistory\": false\n  },\n  \"activatedAt\": \"2026-01-01T00:00:00Z\",\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Crea una clasificación. Marcar `isDefault` desmarca la predeterminada anterior; un `code` duplicado falla con 409."
          },
          "response": []
        },
        {
          "name": "Consultar clasificación",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/classifications/:id?include=_count",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "classifications",
                ":id"
              ],
              "query": [
                {
                  "key": "include",
                  "value": "_count",
                  "description": "Relaciones a incluir. Soportado: `_count` (clientes y reglas).",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Devuelve una clasificación por ID. Usa `include=_count` para los contadores."
          },
          "response": []
        },
        {
          "name": "Actualizar clasificación",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/classifications/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "classifications",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"\",\n  \"code\": \"good_payer\",\n  \"description\": \"\",\n  \"color\": \"#22c55e\",\n  \"priority\": 0,\n  \"isDefault\": false,\n  \"autoAssign\": false,\n  \"criteria\": {\n    \"minOnTimePercentage\": 0,\n    \"maxOnTimePercentage\": 0,\n    \"maxConsecutiveDelays\": 0,\n    \"maxCurrentOverdueDays\": 0,\n    \"evaluationPeriodMonths\": 0,\n    \"minChargesCount\": 0,\n    \"maxChargesCount\": 0,\n    \"hasNegativationHistory\": false,\n    \"hasProtestHistory\": false\n  },\n  \"activatedAt\": \"2026-01-01T00:00:00Z\",\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Actualiza una clasificación (parcial). Un `code` duplicado falla con 409."
          },
          "response": []
        },
        {
          "name": "Eliminar clasificación",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/classifications/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "classifications",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Elimina (borrado lógico) una clasificación. Falla con 409 si hay clientes o reglas asociados. El `code` sigue reservado."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Campañas de negociación",
      "item": [
        {
          "name": "Listar campañas",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/negotiation-campaigns",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "negotiation-campaigns"
              ]
            },
            "description": "Lista las campañas de negociación de la organización (activas y finalizadas), de la más reciente a la más antigua. Sin paginación."
          },
          "response": []
        },
        {
          "name": "Crear campaña",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/negotiation-campaigns",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "negotiation-campaigns"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"\",\n  \"discountPercentage\": 30,\n  \"maxInstallments\": 1,\n  \"minDaysOverdue\": 0,\n  \"maxDaysOverdue\": 0,\n  \"validUntil\": \"2026-12-31\",\n  \"terms\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Crea y activa una campaña de descuento. El portal del deudor comienza a ofrecerla a los cobros dentro del rango de atraso configurado."
          },
          "response": []
        },
        {
          "name": "Finalizar campaña",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/negotiation-campaigns/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "negotiation-campaigns",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Finaliza la campaña (desactiva; `activatedAt` pasa a null). El registro se mantiene y el portal deja de ofrecerla."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Negativaciones",
      "item": [
        {
          "name": "Listar negativaciones",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/negativations?page=1&per_page=20&sort_by=createdAt&sort_order=asc&status=pending&bureau=serasa&person_id=00000000-0000-0000-0000-000000000000&charge_id=00000000-0000-0000-0000-000000000000&include=person,charge",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "negativations"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "Número de página (desde 1).",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Elementos por página (máx. 100). Alias legado: `limit`.",
                  "disabled": true
                },
                {
                  "key": "sort_by",
                  "value": "createdAt",
                  "description": "Campo de ordenación (`createdAt` | `updatedAt` | `amount` | `registeredAt`). Alias legado: `sortField`.",
                  "disabled": true
                },
                {
                  "key": "sort_order",
                  "value": "asc",
                  "description": "Dirección de ordenación (`asc` | `desc`). Alias legado: `sortDirection`.",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "pending",
                  "description": "Filtra por estado (`pending` | `active` | `removed` | `failed`).",
                  "disabled": true
                },
                {
                  "key": "bureau",
                  "value": "serasa",
                  "description": "Filtra por buró de crédito (`serasa` | `spc` | `boa_vista`).",
                  "disabled": true
                },
                {
                  "key": "person_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por cliente (UUID).",
                  "disabled": true
                },
                {
                  "key": "charge_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por cobro (UUID).",
                  "disabled": true
                },
                {
                  "key": "include",
                  "value": "person,charge",
                  "description": "Relaciones a incluir, separadas por coma (`person`, `charge`).",
                  "disabled": true
                }
              ]
            },
            "description": "Lista las negativaciones de la organización con paginación y filtros. Usa `include=person,charge` para incluir los resúmenes de cliente y cobro."
          },
          "response": []
        },
        {
          "name": "Crear negativación",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/negativations",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "negativations"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"personId\": \"00000000-0000-0000-0000-000000000000\",\n  \"chargeId\": \"00000000-0000-0000-0000-000000000000\",\n  \"bureau\": \"serasa\",\n  \"amount\": 150,\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Registra una negativación para un cobro. El registro nace `pending` y SOLO se envía al buró tras la revisión y aprobación humana (flujo legal; evento `negativation.review_required`). Devuelve 409 si ya existe una negativación `pending`/`active` para el mismo cobro en el mismo buró."
          },
          "response": []
        },
        {
          "name": "Consultar negativación",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/negativations/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "negativations",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Devuelve una negativación por ID, con los resúmenes de cliente y cobro."
          },
          "response": []
        },
        {
          "name": "Actualizar negativación",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/negativations/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "negativations",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"pending\",\n  \"externalId\": \"\",\n  \"registeredAt\": \"2026-01-01T00:00:00Z\",\n  \"removedAt\": \"2026-01-01T00:00:00Z\",\n  \"removalReason\": \"\",\n  \"responseData\": {},\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Actualiza una negativación (parcial). Es la etapa de aprobación del flujo legal: exige el permiso de revisión (`approve`) y es donde el estado pasa de `pending` a `active` tras la revisión humana."
          },
          "response": []
        },
        {
          "name": "Eliminar negativación",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/negativations/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "negativations",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Baja lógica: marca la negativación como `removed` y registra `removedAt`. El registro permanece para la pista de auditoría."
          },
          "response": []
        },
        {
          "name": "Solicitar baja de la negativación",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/negativations/:id/remove",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "negativations",
                ":id",
                "remove"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"removalReason\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Solicita la baja de una negativación en el buró. Solo se permite para registros `active`; el estado pasa a `removed` y el motivo (si se envía) queda en `removalReason`."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Protestos",
      "item": [
        {
          "name": "Listar protestos",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/protests?page=1&per_page=20&sort_by=createdAt&sort_order=asc&status=pending&person_id=00000000-0000-0000-0000-000000000000&charge_id=00000000-0000-0000-0000-000000000000&include=person,charge",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "protests"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "Número de página (desde 1).",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Elementos por página (máx. 100). Alias legado: `limit`.",
                  "disabled": true
                },
                {
                  "key": "sort_by",
                  "value": "createdAt",
                  "description": "Campo de ordenación (`createdAt` | `updatedAt` | `amount` | `protestDate` | `sentAt`). Alias legado: `sortField`.",
                  "disabled": true
                },
                {
                  "key": "sort_order",
                  "value": "asc",
                  "description": "Dirección de ordenación (`asc` | `desc`). Alias legado: `sortDirection`.",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "pending",
                  "description": "Filtra por estado (`pending` | `sent` | `intimated` | `protested` | `paid` | `cancelled`).",
                  "disabled": true
                },
                {
                  "key": "person_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por cliente (UUID).",
                  "disabled": true
                },
                {
                  "key": "charge_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por cobro (UUID).",
                  "disabled": true
                },
                {
                  "key": "include",
                  "value": "person,charge",
                  "description": "Relaciones a incluir, separadas por coma (`person`, `charge`).",
                  "disabled": true
                }
              ]
            },
            "description": "Lista los protestos de la organización con paginación y filtros. Usa `include=person,charge` para incluir los resúmenes de cliente y cobro."
          },
          "response": []
        },
        {
          "name": "Crear protesto",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/protests",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "protests"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"personId\": \"00000000-0000-0000-0000-000000000000\",\n  \"chargeId\": \"00000000-0000-0000-0000-000000000000\",\n  \"amount\": 150,\n  \"notary\": \"\",\n  \"notaryCode\": \"\",\n  \"fees\": 12.5,\n  \"externalId\": \"\",\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Registra un protesto para un cobro. El registro nace `pending` y SOLO se envía a la notaría tras la revisión y aprobación humana (flujo legal; evento `protest.review_required`). Devuelve 409 si ya existe un protesto activo (`pending`/`sent`/`intimated`/`protested`) para el mismo cobro."
          },
          "response": []
        },
        {
          "name": "Consultar protesto",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/protests/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "protests",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Devuelve un protesto por ID, con los resúmenes de cliente y cobro."
          },
          "response": []
        },
        {
          "name": "Actualizar protesto",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/protests/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "protests",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"pending\",\n  \"notary\": \"\",\n  \"notaryCode\": \"\",\n  \"fees\": 0,\n  \"externalId\": \"\",\n  \"sentAt\": \"2026-01-01T00:00:00Z\",\n  \"intimationDate\": \"2026-01-01T00:00:00Z\",\n  \"protestDate\": \"2026-01-01T00:00:00Z\",\n  \"paymentDate\": \"2026-01-01T00:00:00Z\",\n  \"cancellationDate\": \"2026-01-01T00:00:00Z\",\n  \"responseData\": {},\n  \"customData\": {},\n  \"tags\": [\n    \"\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Actualiza un protesto (parcial). Es la etapa de aprobación del flujo legal: exige el permiso de revisión (`approve`) y es donde el estado avanza de `pending` a `sent`/`intimated`/`protested` tras la revisión humana."
          },
          "response": []
        },
        {
          "name": "Eliminar protesto",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/protests/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "protests",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Baja lógica: marca el protesto como `cancelled` y registra `cancellationDate`. El registro permanece para la pista de auditoría."
          },
          "response": []
        },
        {
          "name": "Solicitar cancelación del protesto",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/protests/:id/cancel",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "protests",
                ":id",
                "cancel"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"cancellationReason\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Solicita la cancelación de un protesto. No se permite para protestos ya `cancelled` ni `paid`; el estado pasa a `cancelled` y el motivo (si se envía) queda en `responseData.cancellationReason`."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Importaciones",
      "item": [
        {
          "name": "Listar importaciones",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/imports",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "imports"
              ]
            },
            "description": "Historial de las 50 importaciones más recientes de la organización (sin paginación). El contenido del archivo y los errores por línea quedan fuera; consulta GET /imports/{id} para el detalle."
          },
          "response": []
        },
        {
          "name": "Crear importación",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/imports",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "imports"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"resourceType\": \"people\",\n  \"fileName\": \"clientes.csv\",\n  \"content\": \"nome,documento,email\\nMaria da Silva,12345678901,maria@example.com\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Sube una planilla CSV de clientes o cobros y agenda el procesamiento asíncrono (cola). El cuerpo es JSON con el CSV en texto plano en el campo `content` (máx. 2 MB). Las líneas inválidas no tumban el lote: se registran en `errors` (`[{ line, error }]`) y el resto se procesa. Sigue el avance con GET /imports/{id}. Responde 202."
          },
          "response": []
        },
        {
          "name": "Consultar importación",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/imports/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "imports",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Devuelve el estado de una importación con contadores de progreso y los errores por línea rechazada (`errors: [{ line, error }]`; la línea 1 es el encabezado, los datos empiezan en la línea 2)."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Exportaciones",
      "item": [
        {
          "name": "Exportar clientes (CSV síncrono)",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/exports/people",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "exports",
                "people"
              ]
            },
            "description": "Genera y responde al instante el CSV de clientes (`text/csv; charset=utf-8` con BOM, `Content-Disposition: attachment`). Columnas: nome, documento, tipo_documento, email, telefone, classificacao, external_id, tags, criado_em. Tope de 10 mil líneas; por encima usa la exportación asíncrona (POST /exports/jobs)."
          },
          "response": []
        },
        {
          "name": "Exportar cobros (CSV síncrono)",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/exports/charges?status=overdue&from=2026-01-01&to=2026-06-30",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "exports",
                "charges"
              ],
              "query": [
                {
                  "key": "status",
                  "value": "overdue",
                  "description": "Filtra los cobros por estado (ej.: `pending`, `overdue`, `paid`).",
                  "disabled": true
                },
                {
                  "key": "from",
                  "value": "2026-01-01",
                  "description": "Vencimiento desde (fecha ISO `YYYY-MM-DD`).",
                  "disabled": true
                },
                {
                  "key": "to",
                  "value": "2026-06-30",
                  "description": "Vencimiento hasta (fecha ISO `YYYY-MM-DD`).",
                  "disabled": true
                }
              ]
            },
            "description": "Genera y responde al instante el CSV de cobros (`text/csv; charset=utf-8` con BOM, `Content-Disposition: attachment`), con filtros opcionales de estado y período de vencimiento. Columnas: cliente, documento_cliente, numero_documento, descricao, valor_original, valor_atual, vencimento, dias_atraso, status, origem, external_id. Tope de 10 mil líneas; por encima usa la exportación asíncrona (POST /exports/jobs)."
          },
          "response": []
        },
        {
          "name": "Listar exportaciones asíncronas",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/exports/jobs",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "exports",
                "jobs"
              ]
            },
            "description": "Historial de las 50 exportaciones asíncronas más recientes de la organización (sin paginación). Usa esta ruta para seguir el estado de los jobs; el CSV en sí no viene en el listado."
          },
          "response": []
        },
        {
          "name": "Crear exportación asíncrona",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/exports/jobs",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "exports",
                "jobs"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"resourceType\": \"people\",\n  \"fileName\": \"cobrancas-junho.csv\",\n  \"filters\": {\n    \"status\": \"overdue\",\n    \"from\": \"2026-01-01\",\n    \"to\": \"2026-06-30\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Agenda la generación del CSV en un worker, sin el tope de 10 mil líneas del modo síncrono y sin bloquear la request. Sigue el estado en GET /exports/jobs y descarga el archivo en GET /exports/jobs/{id}/download antes de `expiresAt`. Responde 202."
          },
          "response": []
        },
        {
          "name": "Descargar CSV de la exportación",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/exports/jobs/:id/download",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "exports",
                "jobs",
                ":id",
                "download"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Entrega el CSV ya generado de una exportación asíncrona (`text/csv; charset=utf-8` con BOM). Solo disponible cuando el job está `completed` y dentro de la validez (`expiresAt`)."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Webhooks",
      "item": [
        {
          "name": "Listar endpoints de webhook",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-endpoints",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-endpoints"
              ]
            },
            "description": "Lista los endpoints de webhook de la organización con contadores de entrega por estado. `secret` y `authConfig` nunca aparecen en el listado."
          },
          "response": []
        },
        {
          "name": "Crear endpoint de webhook",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-endpoints",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-endpoints"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"url\": \"https://example.com/webhooks/kobana\",\n  \"description\": \"\",\n  \"events\": [\n    \"charge.paid\",\n    \"charge.overdue\"\n  ],\n  \"authType\": \"none\",\n  \"authConfig\": {\n    \"token\": \"meu-token-secreto\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Crea un endpoint de webhook. La URL exige HTTPS y se valida contra direcciones internas (SSRF). El `secret` se devuelve solo en esta respuesta — guárdalo con seguridad."
          },
          "response": []
        },
        {
          "name": "Consultar endpoint de webhook",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-endpoints/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-endpoints",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Devuelve el endpoint con sus últimas 20 entregas. El `secret` nunca se devuelve."
          },
          "response": []
        },
        {
          "name": "Actualizar endpoint de webhook",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-endpoints/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-endpoints",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"url\": \"https://example.com\",\n  \"description\": \"\",\n  \"events\": [\n    \"charge.paid\"\n  ],\n  \"isActive\": false,\n  \"authType\": \"none\",\n  \"authConfig\": {\n    \"token\": \"meu-token-secreto\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Actualiza el endpoint (parcial). La URL, si se envía, se revalida (HTTPS + SSRF); `authConfig` se cifra y nunca se devuelve."
          },
          "response": []
        },
        {
          "name": "Eliminar endpoint de webhook",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-endpoints/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-endpoints",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Elimina (borrado lógico) el endpoint; las entregas pendientes dejan de procesarse."
          },
          "response": []
        },
        {
          "name": "Rotar secret",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-endpoints/:id/rotate-secret",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-endpoints",
                ":id",
                "rotate-secret"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Genera un nuevo secret HMAC; el anterior deja de validar de inmediato. El nuevo secret se devuelve solo en esta respuesta — guárdalo con seguridad."
          },
          "response": []
        },
        {
          "name": "Disparar evento de prueba",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-endpoints/:id/test",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-endpoints",
                ":id",
                "test"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Entrega un evento `webhook.test` REAL al endpoint, por el mismo pipeline de los eventos de negocio (cola, firma HMAC, captura de request/response, retry) — valida tu consumidor de punta a punta sin esperar un evento real. Entregado solo al endpoint objetivo, independiente de la lista de eventos suscritos. Falla con 409 si el endpoint está inactivo."
          },
          "response": []
        },
        {
          "name": "Listar entregas del endpoint",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-endpoints/:id/deliveries?page=1&per_page=20&status=pending",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-endpoints",
                ":id",
                "deliveries"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "Número de página (desde 1).",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Elementos por página (máx. 100). Alias legado: `limit`.",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "pending",
                  "description": "Filtra por el estado de la entrega.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                }
              ]
            },
            "description": "Lista las entregas del endpoint (paginado, más recientes primero) con la captura de request/response para inspección y debug."
          },
          "response": []
        },
        {
          "name": "Reenviar entrega",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-endpoints/:id/deliveries/:deliveryId/retry",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-endpoints",
                ":id",
                "deliveries",
                ":deliveryId",
                "retry"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) del recurso."
                },
                {
                  "key": "deliveryId",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Identificador (UUID) de la entrega."
                }
              ]
            },
            "description": "Reencola una entrega para un reintento inmediato (el estado vuelve a `pending`). Falla con 409 si el endpoint está inactivo o eliminado."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Pista de auditoría",
      "item": [
        {
          "name": "Consultar pista de auditoría",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/audit-logs?page=1&per_page=20&action=&entity_type=&entity_id=00000000-0000-0000-0000-000000000000&actor_type=user&actor_id=&from=2026-01-01T00:00:00Z&to=2026-01-01T00:00:00Z",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "audit-logs"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "Número de página (desde 1).",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Elementos por página (máx. 100). Alias legado: `limit`.",
                  "disabled": true
                },
                {
                  "key": "action",
                  "value": "",
                  "description": "Filtra por acción (búsqueda parcial, `contains`).",
                  "disabled": true
                },
                {
                  "key": "entity_type",
                  "value": "",
                  "description": "Filtra por tipo de entidad.",
                  "disabled": true
                },
                {
                  "key": "entity_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Filtra por entidad (UUID).",
                  "disabled": true
                },
                {
                  "key": "actor_type",
                  "value": "user",
                  "description": "Filtra por tipo de actor (`user` | `system` | `job`).",
                  "disabled": true
                },
                {
                  "key": "actor_id",
                  "value": "",
                  "description": "Filtra por actor (ID del usuario, nombre del job o del sistema).",
                  "disabled": true
                },
                {
                  "key": "from",
                  "value": "2026-01-01T00:00:00Z",
                  "description": "Inicio del período (ISO 8601, inclusive).",
                  "disabled": true
                },
                {
                  "key": "to",
                  "value": "2026-01-01T00:00:00Z",
                  "description": "Fin del período (ISO 8601, inclusive).",
                  "disabled": true
                }
              ]
            },
            "description": "Lista los registros de la pista de auditoría de la organización (más recientes primero), con filtros por acción, entidad, actor y período."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Métricas",
      "item": [
        {
          "name": "Métricas de recuperación",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/metrics/recovery?months=6",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "metrics",
                "recovery"
              ],
              "query": [
                {
                  "key": "months",
                  "value": "6",
                  "description": "Ventana en meses (1–24; por defecto 6).",
                  "disabled": true
                }
              ]
            },
            "description": "Devuelve las métricas de recuperación del período (por defecto: últimos 6 meses, contados desde el primer día del mes inicial)."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Layouts de correo",
      "item": [
        {
          "name": "Listar layouts de correo",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/email-layouts",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "email-layouts"
              ]
            },
            "description": "Lista los layouts de correo de la organización (predeterminado primero) y el layout integrado de referencia."
          },
          "response": []
        },
        {
          "name": "Crear layout de correo",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/email-layouts",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "email-layouts"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Layout institucional\",\n  \"htmlBody\": \"<html><body><header>ACME</header>{{content}}</body></html>\",\n  \"isDefault\": false\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Crea un layout de correo. El `htmlBody` debe contener el placeholder `{{content}}` (si no, 400 `MISSING_CONTENT_PLACEHOLDER`). `isDefault: true` desmarca el predeterminado anterior."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Preferencias de notificación",
      "item": [
        {
          "name": "Consultar preferencias de notificación",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/notification-preferences",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "notification-preferences"
              ]
            },
            "description": "Devuelve el gate efectivo por tipo de mensaje — los tipos sin registro guardado aparecen con todos los canales habilitados."
          },
          "response": []
        },
        {
          "name": "Actualizar preferencias de notificación",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "User-Agent",
                "value": "Kevin Mitnick <kmitnick@kobana.com.br>",
                "type": "text"
              },
              {
                "key": "X-Idempotency-Key",
                "value": "00000000-0000-0000-0000-000000000000",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/notification-preferences",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "notification-preferences"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"preferences\": [\n    {\n      \"type\": \"reminder\",\n      \"emailEnabled\": false,\n      \"smsEnabled\": false,\n      \"whatsappEnabled\": false\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Hace upsert de las preferencias enviadas (parcial: solo los tipos incluidos se modifican)."
          },
          "response": []
        }
      ]
    }
  ]
}
