{
  "info": {
    "name": "Lucky Cobros · API v1.0",
    "description": "Colección de la API pública de Lucky Cobros (v1.0, 28/10/2026).\n\n1. Completá las variables de la colección: `apiKey` (te la damos en el alta), `cbuDestino`, `callbackUrl` y `webhookSecret`.\n2. Todas las llamadas mandan `X-API-Key: {{apiKey}}` (auth de la colección), salvo \"Estado del servicio\".\n3. ATENCIÓN: hoy hay un solo entorno, el de producción. \"Pedir un retiro\" mueve plata real: revisá `cbuDestino` y el monto antes de enviarlo.\n4. Retiros: cambiá `idempotencyKey` por un valor nuevo para cada retiro nuevo. Si un retiro respondió 500 o se cortó, NO la cambies: reintentá con la misma.\n5. La acreditación automática de cobros y los avisos `transaction.*` están en Próximamente.\n\nDocumentación completa: en la página de documentación de la API, cuyo enlace te damos en el alta.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "X-API-Key",
        "type": "string"
      },
      {
        "key": "value",
        "value": "{{apiKey}}",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.luckycobros.com.ar/api/v1",
      "type": "string",
      "description": "URL base de la API (producción)."
    },
    {
      "key": "apiKey",
      "value": "PEGA_ACA_TU_API_KEY",
      "type": "string",
      "description": "API key de 64 caracteres que te damos en el alta."
    },
    {
      "key": "idempotencyKey",
      "value": "RT-000398",
      "type": "string",
      "description": "Clave del retiro. Una nueva por retiro; la misma para reintentar."
    },
    {
      "key": "webhookSecret",
      "value": "PEGA_ACA_TU_SECRETO",
      "type": "string",
      "description": "Secreto para firmar los avisos. Generá uno propio con openssl rand -hex 32; nunca uses uno publicado."
    },
    {
      "key": "cbuDestino",
      "value": "",
      "type": "string",
      "description": "CBU o CVU de 22 dígitos al que querés transferir. Vacío a propósito: completalo vos."
    },
    {
      "key": "callbackUrl",
      "value": "",
      "type": "string",
      "description": "URL https de TU sistema que recibe los avisos. Vacía a propósito: completala vos."
    }
  ],
  "item": [
    {
      "name": "Sistema",
      "item": [
        {
          "name": "Estado del servicio",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/health",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "health"
              ]
            },
            "description": "Responde {\"status\":\"ok\"} si la API está en línea. Sin API key.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": [
            {
              "name": "En línea",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/health",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "health"
                  ]
                },
                "description": "Responde {\"status\":\"ok\"} si la API está en línea. Sin API key.",
                "auth": {
                  "type": "noauth"
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"ok\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Saldos y cuentas",
      "item": [
        {
          "name": "Consultar saldo",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/external/balance",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "external",
                "balance"
              ]
            },
            "description": "Saldo total y por cuenta CVU. Permiso read."
          },
          "response": [
            {
              "name": "Saldo",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/external/balance",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "external",
                    "balance"
                  ]
                },
                "description": "Saldo total y por cuenta CVU. Permiso read."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"saldo_real\": 8942438,\n  \"saldo_neto\": 8942438,\n  \"cantidad_cuentas\": 4,\n  \"cuentas\": [\n    {\n      \"id\": \"7b1f2c4e-9a0d-4c55-8f3e-2d6a1b9c0e11\",\n      \"cvu\": \"0000003100047812369019\",\n      \"alias\": \"rio.cobros.central1\",\n      \"saldo_real\": 4812345.6\n    },\n    {\n      \"id\": \"c3d9a8b2-1e4f-4a7b-9c6d-5e8f7a6b4c22\",\n      \"cvu\": \"0000003100052290418737\",\n      \"alias\": \"rio.cobros.central2\",\n      \"saldo_real\": 2106780.25\n    },\n    {\n      \"id\": \"e5a7c9d1-3f2b-4d6e-8a0c-9b1d3f5e7a33\",\n      \"cvu\": \"0000003100061174205583\",\n      \"alias\": \"rio.cobros.rosario\",\n      \"saldo_real\": 1384902.15\n    },\n    {\n      \"id\": \"a1c3e5f7-9b2d-4f6a-8c0e-2d4f6a8c0e44\",\n      \"cvu\": \"0000003100078836512094\",\n      \"alias\": \"rio.cobros.mendoza\",\n      \"saldo_real\": 638410\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Pedir un CVU para cobrar",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/external/cbu",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "external",
                "cbu"
              ]
            },
            "description": "Cuenta CVU asignada por la rotación. Permiso read."
          },
          "response": [
            {
              "name": "CVU",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/external/cbu",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "external",
                    "cbu"
                  ]
                },
                "description": "Cuenta CVU asignada por la rotación. Permiso read."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"cvu\": \"0000003100052290418737\",\n  \"cbu\": null,\n  \"alias\": \"rio.cobros.central2\",\n  \"titular\": \"RIO GAMING S.A.\",\n  \"moneda\": \"ARS\"\n}"
            },
            {
              "name": "Sin cuentas operativas",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/external/cbu",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "external",
                    "cbu"
                  ]
                },
                "description": "Cuenta CVU asignada por la rotación. Permiso read."
              },
              "status": "Bad Request",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"statusCode\": 400,\n  \"message\": \"el operador no tiene cuentas operativas\",\n  \"error\": \"Bad Request\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Cobros",
      "item": [
        {
          "name": "Listar transacciones",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/external/transactions?page=1&limit=3",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "external",
                "transactions"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "Página, desde 1."
                },
                {
                  "key": "limit",
                  "value": "3",
                  "description": "Filas por página (hasta 100)."
                }
              ]
            },
            "description": "Cobros y retiros, del más nuevo al más viejo. Campos en camelCase; montos como texto. Permiso read."
          },
          "response": [
            {
              "name": "Página",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/external/transactions?page=1&limit=3",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "external",
                    "transactions"
                  ],
                  "query": [
                    {
                      "key": "page",
                      "value": "1",
                      "description": "Página, desde 1."
                    },
                    {
                      "key": "limit",
                      "value": "3",
                      "description": "Filas por página (hasta 100)."
                    }
                  ]
                },
                "description": "Cobros y retiros, del más nuevo al más viejo. Campos en camelCase; montos como texto. Permiso read."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"data\": [\n    {\n      \"id\": \"0f5c1e7a-3b2d-4e8f-9a6c-1d2e3f4a5b6c\",\n      \"operadorId\": \"5a4b3c2d-1e0f-4a9b-8c7d-6e5f4a3b2c1d\",\n      \"cuentaId\": \"7b1f2c4e-9a0d-4c55-8f3e-2d6a1b9c0e11\",\n      \"codigoCoelsa\": \"MP36D4CPEC9G\",\n      \"idempotencyKey\": null,\n      \"referenciaExterna\": null,\n      \"tipo\": \"cobro\",\n      \"monto\": \"25000\",\n      \"montoEsperado\": \"25000\",\n      \"status\": \"confirmada\",\n      \"trafficType\": \"ftd\",\n      \"contraparteNombre\": \"MICAELA SOSA\",\n      \"contraparteCuit\": \"27402187354\",\n      \"contraparteCbu\": null,\n      \"isDelayed\": false,\n      \"createdAt\": \"2026-10-28T17:03:11.482Z\"\n    },\n    {\n      \"id\": \"9e8d7c6b-5a4f-4e3d-8c1b-0a9f8e7d6c5b\",\n      \"operadorId\": \"5a4b3c2d-1e0f-4a9b-8c7d-6e5f4a3b2c1d\",\n      \"cuentaId\": \"7b1f2c4e-9a0d-4c55-8f3e-2d6a1b9c0e11\",\n      \"codigoCoelsa\": \"N4QX8T2LMC5R\",\n      \"idempotencyKey\": \"RT-000398\",\n      \"referenciaExterna\": \"RT-000398\",\n      \"tipo\": \"pago\",\n      \"monto\": \"1500000\",\n      \"montoEsperado\": null,\n      \"status\": \"confirmada\",\n      \"trafficType\": null,\n      \"contraparteNombre\": null,\n      \"contraparteCuit\": null,\n      \"contraparteCbu\": \"0070999830004123456781\",\n      \"isDelayed\": false,\n      \"createdAt\": \"2026-10-28T16:20:09.317Z\"\n    },\n    {\n      \"id\": \"6d5c4b3a-2f1e-4d0c-9b8a-7f6e5d4c3b2a\",\n      \"operadorId\": \"5a4b3c2d-1e0f-4a9b-8c7d-6e5f4a3b2c1d\",\n      \"cuentaId\": \"7b1f2c4e-9a0d-4c55-8f3e-2d6a1b9c0e11\",\n      \"codigoCoelsa\": null,\n      \"idempotencyKey\": null,\n      \"referenciaExterna\": \"RT-000394\",\n      \"tipo\": \"pago\",\n      \"monto\": \"92500\",\n      \"montoEsperado\": null,\n      \"status\": \"fallida\",\n      \"trafficType\": null,\n      \"contraparteNombre\": null,\n      \"contraparteCuit\": null,\n      \"contraparteCbu\": \"2850590940090418135209\",\n      \"isDelayed\": false,\n      \"createdAt\": \"2026-10-27T18:42:30.904Z\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": 8353,\n    \"page\": 1,\n    \"limit\": 3,\n    \"totalPages\": 2785,\n    \"hasMore\": true\n  }\n}"
            }
          ]
        },
        {
          "name": "Crear un depósito esperado",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/external/deposit/create",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "external",
                "deposit",
                "create"
              ]
            },
            "description": "Registra un cobro esperado (monto + CUIT del jugador) y devuelve el CVU. No es idempotente. Permiso write.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"monto\": 25000,\n  \"contraparte_cuil_cuit\": \"27402187354\",\n  \"traffic_type\": \"ftd\",\n  \"ttl_minutes\": 30\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Creado",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/external/deposit/create",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "external",
                    "deposit",
                    "create"
                  ]
                },
                "description": "Registra un cobro esperado (monto + CUIT del jugador) y devuelve el CVU. No es idempotente. Permiso write.",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"monto\": 25000,\n  \"contraparte_cuil_cuit\": \"27402187354\",\n  \"traffic_type\": \"ftd\",\n  \"ttl_minutes\": 30\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Created",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"3c2b1a09-8f7e-4d6c-9b4a-39281706f5e4\",\n  \"cvu\": \"0000003100047812369019\",\n  \"expires_at\": \"2026-10-28T17:33:11.482Z\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Retiros",
      "item": [
        {
          "name": "Validar un destino",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/external/transfer/verify",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "external",
                "transfer",
                "verify"
              ]
            },
            "description": "Formato del CBU/CVU y, si es conocido, titular y CUIT. valid:true no confirma que la cuenta exista. Permiso write.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"cbu\": \"{{cbuDestino}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Destino conocido",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/external/transfer/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "external",
                    "transfer",
                    "verify"
                  ]
                },
                "description": "Formato del CBU/CVU y, si es conocido, titular y CUIT. valid:true no confirma que la cuenta exista. Permiso write.",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cbu\": \"{{cbuDestino}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Created",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"holderName\": \"RIO GAMING S.A.\",\n  \"cuit\": \"30715832649\",\n  \"valid\": true\n}"
            },
            {
              "name": "Solo formato",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/external/transfer/verify",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "external",
                    "transfer",
                    "verify"
                  ]
                },
                "description": "Formato del CBU/CVU y, si es conocido, titular y CUIT. valid:true no confirma que la cuenta exista. Permiso write.",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cbu\": \"{{cbuDestino}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Created",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"holderName\": null,\n  \"cuit\": null,\n  \"valid\": true\n}"
            }
          ]
        },
        {
          "name": "Pedir un retiro",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/external/transfer",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "external",
                "transfer"
              ]
            },
            "description": "ATENCIÓN: mueve plata real (hoy el único entorno es producción). Completá `cbuDestino` y revisá el monto antes de enviarlo.\n\nTransfiere a un CBU o CVU. Mirá `status` en la respuesta: hoy `done` o `duplicate` (`pending` y `error` son parte del contrato, pero hoy no se producen). Ante 500 o corte, reintentá con la MISMA idempotency_key. La idempotency_key es obligatoria y única por retiro. Permiso write.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"cbu\": \"{{cbuDestino}}\",\n  \"monto\": 1,\n  \"concepto\": \"Prueba de integración\",\n  \"idempotency_key\": \"{{idempotencyKey}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Ejecutado",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/external/transfer",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "external",
                    "transfer"
                  ]
                },
                "description": "Transfiere a un CBU o CVU. Mirá `status` en la respuesta: done, pending, error o duplicate. Ante 500 o corte, reintentá con la MISMA idempotency_key. Permiso write.",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cbu\": \"{{cbuDestino}}\",\n  \"monto\": 1,\n  \"concepto\": \"Prueba de integración\",\n  \"idempotency_key\": \"{{idempotencyKey}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Created",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"done\",\n  \"coelsaId\": \"N4QX8T2LMC5R\",\n  \"event\": \"withdrawal.completed\"\n}"
            },
            {
              "name": "Repetido",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/external/transfer",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "external",
                    "transfer"
                  ]
                },
                "description": "Transfiere a un CBU o CVU. Mirá `status` en la respuesta: done, pending, error o duplicate. Ante 500 o corte, reintentá con la MISMA idempotency_key. Permiso write.",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cbu\": \"{{cbuDestino}}\",\n  \"monto\": 1,\n  \"concepto\": \"Prueba de integración\",\n  \"idempotency_key\": \"{{idempotencyKey}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Created",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"duplicate\"\n}"
            },
            {
              "name": "Saldo insuficiente",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/external/transfer",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "external",
                    "transfer"
                  ]
                },
                "description": "Transfiere a un CBU o CVU. Mirá `status` en la respuesta: done, pending, error o duplicate. Ante 500 o corte, reintentá con la MISMA idempotency_key. Permiso write.",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cbu\": \"{{cbuDestino}}\",\n  \"monto\": 1,\n  \"concepto\": \"Prueba de integración\",\n  \"idempotency_key\": \"{{idempotencyKey}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"statusCode\": 400,\n  \"message\": \"saldo insuficiente para el retiro\",\n  \"error\": \"Bad Request\"\n}"
            },
            {
              "name": "Clave ya usada",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/external/transfer",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "external",
                    "transfer"
                  ]
                },
                "description": "Transfiere a un CBU o CVU. Mirá `status` en la respuesta: done, pending, error o duplicate. Ante 500 o corte, reintentá con la MISMA idempotency_key. Permiso write.",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cbu\": \"{{cbuDestino}}\",\n  \"monto\": 1,\n  \"concepto\": \"Prueba de integración\",\n  \"idempotency_key\": \"{{idempotencyKey}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Conflict",
              "code": 409,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"statusCode\": 409,\n  \"message\": \"ya existe un pago con esa idempotency_key\",\n  \"error\": \"Conflict\"\n}"
            },
            {
              "name": "En duda o rechazado antes de ejecutarse",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/external/transfer",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "external",
                    "transfer"
                  ]
                },
                "description": "Transfiere a un CBU o CVU. Mirá `status` en la respuesta: done, pending, error o duplicate. Ante 500 o corte, reintentá con la MISMA idempotency_key. Permiso write.",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cbu\": \"{{cbuDestino}}\",\n  \"monto\": 1,\n  \"concepto\": \"Prueba de integración\",\n  \"idempotency_key\": \"{{idempotencyKey}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Internal Server Error",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"statusCode\": 500,\n  \"message\": \"Internal server error\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Webhooks",
      "item": [
        {
          "name": "Leer la configuración del webhook",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/external/webhook",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "external",
                "webhook"
              ]
            },
            "description": "URL y secreto completo. Permiso read."
          },
          "response": [
            {
              "name": "Configurado",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/external/webhook",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "external",
                    "webhook"
                  ]
                },
                "description": "URL y secreto completo. Permiso read."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"callback_url\": \"https://tu-sistema.example.com/webhooks/cobros\",\n  \"webhook_secret\": \"PEGA_ACA_TU_SECRETO_DE_64_CARACTERES\"\n}"
            }
          ]
        },
        {
          "name": "Configurar el webhook",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/external/webhook",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "external",
                "webhook"
              ]
            },
            "description": "URL de TU sistema que recibe los avisos y secreto de firma. Completá `callbackUrl` y `webhookSecret` antes de enviarlo. Sin secreto no se envía ningún aviso. Si mandás `callback_url: null`, se borra la URL y dejás de recibir avisos. Permiso write.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"callback_url\": \"{{callbackUrl}}\",\n  \"webhook_secret\": \"{{webhookSecret}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Guardado",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/external/webhook",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "external",
                    "webhook"
                  ]
                },
                "description": "URL que recibe los avisos y secreto de firma. Sin secreto no se envía ningún aviso. Permiso write.",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"callback_url\": \"{{callbackUrl}}\",\n  \"webhook_secret\": \"{{webhookSecret}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"callback_url\": \"https://tu-sistema.example.com/webhooks/cobros\",\n  \"webhook_secret\": \"PEGA_ACA_TU_SECRETO_DE_64_CARACTERES\"\n}"
            }
          ]
        }
      ]
    }
  ]
}
