{
  "info": {
    "name": "LibellumCore API - Integracion DIAN",
    "_postman_id": "862f91ac-8100-4f6f-9c96-libellumcore",
    "description": "Coleccion oficial para validar token, crear documentos JSON estructurados, consultar estado y descargar adjuntos.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://libellumplus.com"
    },
    {
      "key": "api_token",
      "value": "REEMPLAZAR_TOKEN"
    },
    {
      "key": "document_id",
      "value": "0"
    }
  ],
  "item": [
    {
      "name": "1. Validar token",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{api_token}}"
          }
        ],
        "url": {
          "raw": "{{base_url}}/rest/apikey/validate",
          "host": [
            "{{base_url}}"
          ],
          "path": [
            "rest",
            "apikey",
            "validate"
          ]
        },
        "description": "Debe responder 200 antes de intentar crear documentos."
      }
    },
    {
      "name": "2. Crear factura electronica",
      "event": [
        {
          "listen": "test",
          "script": {
            "exec": [
              "if (pm.response.code === 201) {",
              "  const json = pm.response.json();",
              "  if (json.id) pm.collectionVariables.set('document_id', json.id);",
              "}"
            ],
            "type": "text/javascript"
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{api_token}}"
          },
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"prefijo\": \"FAR\",\n  \"numero_documento\": \"1001\",\n  \"fecha_emision\": \"2026-07-01\",\n  \"hora_emision\": \"10:15:00\",\n  \"fecha_vencimiento\": \"2026-07-31\",\n  \"codigo_moneda\": \"COP\",\n  \"orden_compra\": \"OC-001\",\n  \"codigo_metodo_pago\": \"1\",\n  \"codigo_medio_pago\": \"10\",\n  \"adquiriente\": {\n    \"razon_social\": \"CLIENTE DE PRUEBAS SAS\",\n    \"documento\": \"900000001\",\n    \"dv\": 1,\n    \"tipo_persona\": 1,\n    \"regimen\": \"48\",\n    \"tipo_identificacion_fiscal\": \"31\",\n    \"codigo_responsabilidad_fiscal\": \"R-99-PN\",\n    \"codigo_municipio\": \"11001\",\n    \"codigo_departamento\": \"11\",\n    \"nombre_municipio\": \"Bogota\",\n    \"nombre_departamento\": \"Bogota D.C.\",\n    \"direccion\": \"Calle 1 # 2-3\",\n    \"codigo_pais\": \"169\",\n    \"codigo_pais_alfa_2\": \"CO\",\n    \"codigo_postal\": \"110111\",\n    \"correo_electronico\": \"compras@example.com\",\n    \"telefono\": \"3000000000\"\n  },\n  \"total_bruto\": 100000,\n  \"total_cargos\": 0,\n  \"total_descuentos\": 0,\n  \"total_impuestos\": 19000,\n  \"valor_total\": 119000,\n  \"notas\": [\n    \"Documento de prueba generado por integracion API.\"\n  ],\n  \"items\": [\n    {\n      \"codigo_producto\": \"SERV-001\",\n      \"codigo_unidad_medida\": \"94\",\n      \"cantidad\": 1,\n      \"valor_unitario\": 100000,\n      \"inc_bolsa\": false,\n      \"descripcion\": \"Servicio de prueba\",\n      \"descripcion_adicional\": null,\n      \"marca\": null,\n      \"modelo\": null,\n      \"codigo_generacion\": null,\n      \"descripcion_generacion\": null,\n      \"descuentos\": [],\n      \"impuestos\": {\n        \"base_imponible\": 100000,\n        \"porcentaje\": 19,\n        \"monto_impuesto\": 19000,\n        \"codigo_impuesto\": \"01\"\n      }\n    }\n  ]\n}"
        },
        "url": {
          "raw": "{{base_url}}/rest/document/generate",
          "host": [
            "{{base_url}}"
          ],
          "path": [
            "rest",
            "document",
            "generate"
          ]
        },
        "description": "Ajustar prefijo y consecutivo segun los datos habilitados para el cliente."
      }
    },
    {
      "name": "3. Consultar estado",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{api_token}}"
          }
        ],
        "url": {
          "raw": "{{base_url}}/rest/document/info/{{document_id}}",
          "host": [
            "{{base_url}}"
          ],
          "path": [
            "rest",
            "document",
            "info",
            "{{document_id}}"
          ]
        },
        "description": "Repetir hasta que el estado sea COMPLETED, REJECTED o ERROR_PROCESSING."
      }
    },
    {
      "name": "4. Descargar adjunto ZIP",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{api_token}}"
          }
        ],
        "url": {
          "raw": "{{base_url}}/rest/document/attachment/{{document_id}}",
          "host": [
            "{{base_url}}"
          ],
          "path": [
            "rest",
            "document",
            "attachment",
            "{{document_id}}"
          ]
        },
        "description": "El campo zip viene en base64. Decodificarlo y guardarlo como .zip."
      }
    }
  ]
}

