{
  "info": {
    "name": "Publicas",
    "description": "Endpoints sin token. Ademas de su uso normal, sirven de sonda de salud del servidor: si responden 200 con datos, entonces PHP, rutas, base de datos, migraciones y seeders estan bien.\n\nLimitados por throttle:catalogos-publicos, contado POR IP: no hay credencial que identificar.\n\nNo consumen cuota de facturacion: la cuota solo la descuentan las dos rutas que construyen XML y lo envian a SUNAT.\n\nLos catalogos de aqui son los que alimentan los campos del comprobante: catalogo 01 para customer.document_type_code, 03 para items.*.unit_code, 07 para items.*.igv_type_code, 51 para operation_type_code.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": { "type": "noauth" },
  "item": [
    {
      "name": "Ubigeos",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "pm.test('Responde 200', () => pm.response.to.have.status(200));",
              "",
              "if (pm.response.code === 429) {",
              "    console.warn('429: limite de rafaga por IP. Espera un minuto.');",
              "}"
            ]
          }
        }
      ],
      "request": {
        "method": "GET",
        "header": [{ "key": "Accept", "value": "application/json" }],
        "url": {
          "raw": "{{base_url}}/api/ubigeos?search=miraflores",
          "host": ["{{base_url}}"],
          "path": ["api", "ubigeos"],
          "query": [{ "key": "search", "value": "miraflores" }]
        },
        "description": "Requiere al menos 3 caracteres en search; con menos devuelve 200 y lista vacia (no es un error)."
      }
    },
    {
      "name": "Catalogos",
      "request": {
        "method": "GET",
        "header": [{ "key": "Accept", "value": "application/json" }],
        "url": {
          "raw": "{{base_url}}/api/sunat/catalogos",
          "host": ["{{base_url}}"],
          "path": ["api", "sunat", "catalogos"]
        },
        "description": "Lista los 36 catalogos SUNAT (Anexo N.o 8)."
      }
    },
    {
      "name": "Catalogo 01 - Tipos de documento de identidad",
      "request": {
        "method": "GET",
        "header": [{ "key": "Accept", "value": "application/json" }],
        "url": {
          "raw": "{{base_url}}/api/sunat/catalogos/01/items",
          "host": ["{{base_url}}"],
          "path": ["api", "sunat", "catalogos", "01", "items"]
        },
        "description": "Lo que va en customer.document_type_code al emitir.\n\nLos habituales: 1 = DNI, 6 = RUC, 0 = sin documento (solo boletas de importe menor)."
      }
    },
    {
      "name": "Catalogo 03 - Unidades de medida",
      "request": {
        "method": "GET",
        "header": [{ "key": "Accept", "value": "application/json" }],
        "url": {
          "raw": "{{base_url}}/api/sunat/catalogos/03/items",
          "host": ["{{base_url}}"],
          "path": ["api", "sunat", "catalogos", "03", "items"]
        },
        "description": "Lo que va en items.*.unit_code.\n\nLos dos que resuelven casi todo: NIU para bienes (unidad) y ZZ para servicios."
      }
    },
    {
      "name": "Catalogo 07 - Tipos de afectacion del IGV",
      "request": {
        "method": "GET",
        "header": [{ "key": "Accept", "value": "application/json" }],
        "url": {
          "raw": "{{base_url}}/api/sunat/catalogos/07/items",
          "host": ["{{base_url}}"],
          "path": ["api", "sunat", "catalogos", "07", "items"]
        },
        "description": "Lo que va en items.*.igv_type_code, y lo que decide a que total suma cada linea:\n\n- 10 Gravado: suma a taxable_amount y genera IGV.\n- 20 Exonerado: suma a exonerated_amount, sin IGV.\n- 30 Inafecto: suma a unaffected_amount, sin IGV.\n\nEs el campo donde mas se descuadran los totales. Ver el ejemplo \"Factura mixta\" en la coleccion Facturacion."
      }
    },
    {
      "name": "Catalogo 51 - Tipos de operacion",
      "request": {
        "method": "GET",
        "header": [{ "key": "Accept", "value": "application/json" }],
        "url": {
          "raw": "{{base_url}}/api/sunat/catalogos/51/items",
          "host": ["{{base_url}}"],
          "path": ["api", "sunat", "catalogos", "51", "items"]
        },
        "description": "Lo que va en operation_type_code. El 0101 (venta interna) cubre el caso normal."
      }
    },
    {
      "name": "ErrorSunat",
      "request": {
        "method": "GET",
        "header": [{ "key": "Accept", "value": "application/json" }],
        "url": {
          "raw": "{{base_url}}/api/sunat/billing-errors",
          "host": ["{{base_url}}"],
          "path": ["api", "sunat", "billing-errors"]
        },
        "description": "Catalogo de errores de facturacion SUNAT: sirve para traducir el codigo que devuelve un rechazo.\n\nExiste tambien la variante paginada: /api/sunat/billing-errors/paginated"
      }
    }
  ]
}
