{
  "info": {
    "name": "Respondo.pe · API de Partners",
    "description": "Da de alta el Libro de Reclamaciones de tus clientes, consulta lo que creaste y limpia tus pruebas.\n\nAntes de empezar:\n1. Entra a https://respondo.pe/partner → Clave API y genera la tuya.\n2. Pégala en la variable `partner_key` de esta colección.\n\nDocumentación completa: https://respondo.pe/partners/docs",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://respondo.pe/api/v1",
      "type": "string"
    },
    {
      "key": "partner_key",
      "value": "rsp_partner_pega_aqui_tu_clave",
      "type": "string"
    },
    {
      "key": "ruc_de_prueba",
      "value": "20512345678",
      "type": "string"
    }
  ],
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "X-Partner-Key",
        "type": "string"
      },
      {
        "key": "value",
        "value": "{{partner_key}}",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "item": [
    {
      "name": "1. Dar de alta el libro de un cliente",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{base_url}}/partners/books",
          "host": [
            "{{base_url}}"
          ],
          "path": [
            "partners",
            "books"
          ]
        },
        "description": "Crea la cuenta, la empresa y el libro en una llamada.\n\nEl ejemplo va con TODOS los campos, opcionales incluidos, para que veas la forma completa. Lo mínimo obligatorio es `usuario.email` y los seis de `empresa`.\n\nEl objeto `libro` es opcional: si lo quitas, hereda los datos de la empresa.\n\n`estado` te dice qué pasó:\n- `creado` — nuevo, con 30 días de prueba\n- `existente` — ese RUC ya tenía su libro contigo\n- `requiere_pago` — el libro existe pero NO recibe reclamos: esa cuenta ya gastó su prueba.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"usuario\": {\n    \"email\": \"rosa@bodegacentral.pe\",\n    \"nombre\": \"Rosa Quispe\",\n    \"whatsapp\": \"+51987654321\"\n  },\n  \"empresa\": {\n    \"ruc\": \"{{ruc_de_prueba}}\",\n    \"razon_social\": \"Bodega Central S.A.C.\",\n    \"direccion\": \"Av. Angamos Este 1234\",\n    \"departamento\": \"Lima\",\n    \"provincia\": \"Lima\",\n    \"distrito\": \"Surquillo\"\n  },\n  \"libro\": {\n    \"nombre\": \"Bodega Central - Surquillo\",\n    \"direccion\": \"Av. Angamos Este 1234\",\n    \"departamento\": \"Lima\",\n    \"provincia\": \"Lima\",\n    \"distrito\": \"Surquillo\",\n    \"url_libro\": \"bodega-central-surquillo\",\n    \"url_sitio\": \"https://bodegacentral.pe\",\n    \"logo_url\": \"https://bodegacentral.pe/logo.png\"\n  }\n}"
        }
      },
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const cuerpo = pm.response.json()",
              "",
              "pm.test('responde 200 o 201', () => pm.expect([200, 201]).to.include(pm.response.code))",
              "pm.test('trae el libro', () => pm.expect(cuerpo.data.libro.url_publica).to.be.a('string'))",
              "",
              "if (cuerpo.success) {",
              "  console.log('Libro:', cuerpo.data.libro.url_publica)",
              "  if (cuerpo.data.estado === 'requiere_pago') {",
              "    console.warn('OJO: el libro NO recibe reclamos. Esa cuenta ya usó su prueba gratis.')",
              "  }",
              "}"
            ]
          }
        }
      ]
    },
    {
      "name": "2. Comprobar que quedó vivo",
      "request": {
        "method": "GET",
        "header": [],
        "url": {
          "raw": "{{base_url}}/partners/books?ruc={{ruc_de_prueba}}",
          "host": [
            "{{base_url}}"
          ],
          "path": [
            "partners",
            "books"
          ],
          "query": [
            {
              "key": "ruc",
              "value": "{{ruc_de_prueba}}"
            }
          ]
        },
        "description": "Devuelve solo lo que tú diste de alta.\n\nNo te fíes del 201 del alta: lo que importa es `recibe_reclamos`. Si sale `false`, el libro existe pero está mudo de cara al consumidor.\n\nQuita el parámetro `ruc` para listarlo todo."
      },
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const cuerpo = pm.response.json()",
              "",
              "pm.test('responde 200', () => pm.response.to.have.status(200))",
              "pm.test('encuentra el libro', () => pm.expect(cuerpo.data.length).to.be.above(0))",
              "pm.test('el libro recibe reclamos', () => pm.expect(cuerpo.data[0].recibe_reclamos).to.be.true)"
            ]
          }
        }
      ]
    },
    {
      "name": "3. Borrar la prueba (empresa, libros y cuenta)",
      "request": {
        "method": "DELETE",
        "header": [],
        "url": {
          "raw": "{{base_url}}/partners/companies/{{ruc_de_prueba}}",
          "host": [
            "{{base_url}}"
          ],
          "path": [
            "partners",
            "companies",
            "{{ruc_de_prueba}}"
          ]
        },
        "description": "Deshace el alta entera: la empresa, sus libros y la cuenta que creamos para ella. El RUC queda libre.\n\nSolo si la empresa NO tiene reclamos. Con reclamos responde 409: eso lo borra su dueño desde su panel.\n\nLa cuenta solo se va si la creamos nosotros en TU integración. Si ese correo ya tenía cuenta, si la persona está en el equipo de otra empresa, o si es la cuenta de un partner, se queda y `cuenta_borrada` viene en false.\n\nLo que no vuelve es la prueba gratis: queda marcada contra el correo y el RUC aunque la cuenta se borre. Usa un RUC y un correo nuevos para volver a ver `creado`."
      },
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "pm.test('responde 200', () => pm.response.to.have.status(200))",
              "",
              "const d = pm.response.json().data",
              "console.log(`Empresa borrada con ${d.libros} libro(s).`)",
              "if (d.cuenta_borrada) console.log('La cuenta también se fue: el alta quedó deshecha.')",
              "else console.log('La cuenta se quedó: no la creamos nosotros o alguien más la usa.')"
            ]
          }
        }
      ]
    },
    {
      "name": "Tu comisión y tu saldo",
      "request": {
        "method": "GET",
        "header": [],
        "url": {
          "raw": "{{base_url}}/partners/me",
          "host": [
            "{{base_url}}"
          ],
          "path": [
            "partners",
            "me"
          ]
        },
        "description": "Lo que llevas ganado, lo que ya te pagamos y lo que te debemos.\n\n`movimientos` viene truncado a los 100 más recientes. Los totales de arriba sí se calculan sobre todos: esos son la fuente de verdad.\n\nLo mismo, sin escribir código, está en https://respondo.pe/partner"
      },
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "pm.test('responde 200', () => pm.response.to.have.status(200))",
              "",
              "const d = pm.response.json().data",
              "console.log(`${d.referidos_pagando} de ${d.referidos_total} pagando · saldo S/ ${d.saldo}`)"
            ]
          }
        }
      ]
    },
    {
      "name": "Consultar un RUC en SUNAT (público, sin clave)",
      "request": {
        "method": "GET",
        "auth": {
          "type": "noauth"
        },
        "header": [],
        "url": {
          "raw": "{{base_url}}/ruc/{{ruc_de_prueba}}",
          "host": [
            "{{base_url}}"
          ],
          "path": [
            "ruc",
            "{{ruc_de_prueba}}"
          ]
        },
        "description": "Gratis y sin autenticación. Te devuelve razón social, dirección y ubigeo a partir del RUC, así tu formulario no le pide a nadie lo que SUNAT ya sabe."
      }
    }
  ]
}
