{"openapi":"3.1.0","info":{"title":"ConfIA5 API","version":"1.0.0","description":"API pública de ConfIA5 (Data5). Importes en céntimos, fechas ISO 8601, paginación por cursor e `Idempotency-Key` obligatoria en los POST.\n\n**ConfIA5 no emite una factura definitiva sin que su titular la confirme.** Tu programa puede pedirla (`POST /v1/pedidos`), pero la decisión es del titular.\n\n**Procesamiento en la UE:** llama siempre con `?forceFunctionRegion=eu-central-1` (región UE del proyecto), por ejemplo `https://qrdeuihavrwyxutyuejo.supabase.co/functions/v1/api-publica/v1/empresas?forceFunctionRegion=eu-central-1`. Sin ese parámetro, la petición se procesa en la región más cercana a tu servidor, que puede estar fuera de la UE. La respuesta confirma la región en la cabecera `x-sb-edge-region`."},"servers":[{"url":"https://qrdeuihavrwyxutyuejo.supabase.co/functions/v1/api-publica","description":"El entorno sale de la clave: c5_test_ → sandbox, c5_live_ → real. Añade siempre ?forceFunctionRegion=eu-central-1 (procesamiento en la UE)."}],"security":[{"clave":[]}],"tags":[{"name":"Empresas"},{"name":"Facturas"},{"name":"Presupuestos y albaranes"},{"name":"Gastos"},{"name":"DeCA"},{"name":"Cobros"},{"name":"Contactos"},{"name":"Pedidos"},{"name":"Exportaciones"},{"name":"Webhooks"},{"name":"Sandbox"}],"paths":{"/v1/empresas":{"get":{"summary":"Empresas de la clave","description":"Una si la clave es de empresa; las autorizadas si es de asesoría.\n\nAlcance: `empresas:leer`.","tags":["Empresas"],"parameters":[{"$ref":"#/components/parameters/RegionUE"}],"responses":{"200":{"description":"Respuesta","content":{"application/json":{"example":{"datos":[{"id":"8f1c…","nombre":"Transportes Valdeoca SL","nif":"B09000000"}]}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/v1/facturas":{"get":{"summary":"Facturas emitidas","description":"Importes en céntimos. Filtros por fecha, estado de cobro y NIF del cliente.\n\nAlcance: `facturas:leer`.","tags":["Facturas"],"parameters":[{"name":"empresa_id","in":"query","required":false,"description":"Con claves de asesoría: la empresa (si la clave ve varias).","schema":{"type":"string"}},{"name":"desde","in":"query","required":false,"description":"AAAA-MM-DD","schema":{"type":"string"}},{"name":"hasta","in":"query","required":false,"description":"AAAA-MM-DD","schema":{"type":"string"}},{"name":"estado_cobro","in":"query","required":false,"description":"cobrada · pendiente · vencida","schema":{"type":"string"}},{"name":"cliente_nif","in":"query","required":false,"description":"NIF del cliente","schema":{"type":"string"}},{"name":"limite","in":"query","required":false,"description":"Entre 1 y 100 (por defecto 50).","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"Cursor opaco de la página siguiente (`siguiente` de la respuesta anterior).","schema":{"type":"string"}},{"$ref":"#/components/parameters/RegionUE"}],"responses":{"200":{"description":"Respuesta","content":{"application/json":{"example":{"datos":[{"id":"b2e1…","numero":"F-2026-0142","fecha":"2026-10-14","cliente":{"nombre":"Logística del Duero SL","nif":"B09111111"},"base_centimos":65000,"iva_centimos":13650,"retencion_centimos":0,"total_centimos":78650,"moneda":"EUR","estado_cobro":"pendiente"}],"siguiente":null}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}},"post":{"summary":"No existe: la emisión es del titular","description":"Siempre `405 emision_requiere_titular`. Para pedir una factura usa `POST /v1/pedidos`.","tags":["Facturas"],"parameters":[{"$ref":"#/components/parameters/RegionUE"},{"name":"Idempotency-Key","in":"header","required":true,"description":"Obligatoria en todos los POST (24 h).","schema":{"type":"string","maxLength":200}}],"responses":{"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"405":{"description":"Respuesta","content":{"application/json":{"example":{"error":{"codigo":"emision_requiere_titular","mensaje":"ConfIA5 no emite una factura sin que su titular la confirme. Usa POST /v1/pedidos.","doc_url":"…","peticion_id":"req_…"}}}}},"429":{"$ref":"#/components/responses/Error"}}}},"/v1/facturas/{id}":{"get":{"summary":"Una factura","description":"Con sus importes y estado de cobro.\n\nAlcance: `facturas:leer`.","tags":["Facturas"],"parameters":[{"name":"id","in":"path","required":true,"description":"Id de la factura","schema":{"type":"string"}},{"$ref":"#/components/parameters/RegionUE"}],"responses":{"200":{"description":"Respuesta"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/v1/facturas/{id}/pdf":{"get":{"summary":"PDF de una factura","description":"Devuelve una URL firmada que caduca en 5 minutos.\n\nAlcance: `facturas:leer`.","tags":["Facturas"],"parameters":[{"name":"id","in":"path","required":true,"description":"Id de la factura","schema":{"type":"string"}},{"$ref":"#/components/parameters/RegionUE"}],"responses":{"200":{"description":"Respuesta","content":{"application/json":{"example":{"url":"https://…","caduca_s":300}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/v1/presupuestos":{"get":{"summary":"Presupuestos","description":"Lectura.\n\nAlcance: `presupuestos:leer`.","tags":["Presupuestos y albaranes"],"parameters":[{"name":"empresa_id","in":"query","required":false,"description":"Con claves de asesoría: la empresa (si la clave ve varias).","schema":{"type":"string"}},{"name":"limite","in":"query","required":false,"description":"Entre 1 y 100 (por defecto 50).","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"Cursor opaco de la página siguiente (`siguiente` de la respuesta anterior).","schema":{"type":"string"}},{"$ref":"#/components/parameters/RegionUE"}],"responses":{"200":{"description":"Respuesta"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/v1/albaranes":{"get":{"summary":"Albaranes","description":"Lectura.\n\nAlcance: `presupuestos:leer`.","tags":["Presupuestos y albaranes"],"parameters":[{"name":"empresa_id","in":"query","required":false,"description":"Con claves de asesoría: la empresa (si la clave ve varias).","schema":{"type":"string"}},{"name":"limite","in":"query","required":false,"description":"Entre 1 y 100 (por defecto 50).","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"Cursor opaco de la página siguiente (`siguiente` de la respuesta anterior).","schema":{"type":"string"}},{"$ref":"#/components/parameters/RegionUE"}],"responses":{"200":{"description":"Respuesta"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/v1/gastos":{"get":{"summary":"Gastos","description":"Gastos registrados con su categoría (provisional hasta que la valida la asesoría).\n\nAlcance: `gastos:leer`.","tags":["Gastos"],"parameters":[{"name":"empresa_id","in":"query","required":false,"description":"Con claves de asesoría: la empresa (si la clave ve varias).","schema":{"type":"string"}},{"name":"desde","in":"query","required":false,"description":"AAAA-MM-DD","schema":{"type":"string"}},{"name":"hasta","in":"query","required":false,"description":"AAAA-MM-DD","schema":{"type":"string"}},{"name":"limite","in":"query","required":false,"description":"Entre 1 y 100 (por defecto 50).","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"Cursor opaco de la página siguiente (`siguiente` de la respuesta anterior).","schema":{"type":"string"}},{"$ref":"#/components/parameters/RegionUE"}],"responses":{"200":{"description":"Respuesta"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/v1/deca":{"get":{"summary":"DeCA emitidos","description":"Metadatos.\n\nAlcance: `deca:leer`.","tags":["DeCA"],"parameters":[{"name":"empresa_id","in":"query","required":false,"description":"Con claves de asesoría: la empresa (si la clave ve varias).","schema":{"type":"string"}},{"name":"limite","in":"query","required":false,"description":"Entre 1 y 100 (por defecto 50).","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"Cursor opaco de la página siguiente (`siguiente` de la respuesta anterior).","schema":{"type":"string"}},{"$ref":"#/components/parameters/RegionUE"}],"responses":{"200":{"description":"Respuesta"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/v1/cobros":{"get":{"summary":"Pendiente de cobro","description":"Facturas con saldo pendiente.\n\nAlcance: `cobros:leer`.","tags":["Cobros"],"parameters":[{"name":"empresa_id","in":"query","required":false,"description":"Con claves de asesoría: la empresa (si la clave ve varias).","schema":{"type":"string"}},{"$ref":"#/components/parameters/RegionUE"}],"responses":{"200":{"description":"Respuesta"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/v1/facturas/{id}/cobros":{"post":{"summary":"Registrar un cobro","description":"Sin importe salda lo pendiente. Nunca emite nada. Auditado.\n\nAlcance: `cobros:escribir`.","tags":["Cobros"],"parameters":[{"name":"id","in":"path","required":true,"description":"Id de la factura","schema":{"type":"string"}},{"$ref":"#/components/parameters/RegionUE"},{"name":"Idempotency-Key","in":"header","required":true,"description":"Obligatoria en todos los POST (24 h).","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Respuesta"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"fecha":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"importe_centimos":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["fecha"],"additionalProperties":false},"example":{"fecha":"2026-10-15"}}}}}},"/v1/contactos":{"get":{"summary":"Clientes y proveedores","description":"Lectura.\n\nAlcance: `contactos:leer`.","tags":["Contactos"],"parameters":[{"name":"empresa_id","in":"query","required":false,"description":"Con claves de asesoría: la empresa (si la clave ve varias).","schema":{"type":"string"}},{"name":"limite","in":"query","required":false,"description":"Entre 1 y 100 (por defecto 50).","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"Cursor opaco de la página siguiente (`siguiente` de la respuesta anterior).","schema":{"type":"string"}},{"$ref":"#/components/parameters/RegionUE"}],"responses":{"200":{"description":"Respuesta"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}},"post":{"summary":"Alta de un contacto","description":"Auditado. No toca el IBAN ni nada de un pedido pendiente.\n\nAlcance: `contactos:escribir`.","tags":["Contactos"],"parameters":[{"$ref":"#/components/parameters/RegionUE"},{"name":"Idempotency-Key","in":"header","required":true,"description":"Obligatoria en todos los POST (24 h).","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Respuesta"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"nombre":{"type":"string","minLength":1,"maxLength":160},"nif":{"type":"string","pattern":"^[A-Z0-9]{8,12}$"},"email":{"type":"string","maxLength":200,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"tipo":{"default":"cliente","type":"string","enum":["cliente","proveedor"]}},"required":["nombre"],"additionalProperties":false},"example":{"nombre":"Logística del Duero SL","nif":"B09111111","email":"admin@logistica.example"}}}}}},"/v1/pedidos":{"post":{"summary":"Pedir una factura","description":"`202` con `estado: pendiente_confirmacion`. ConfIA5 prepara el borrador y Lola pide la confirmación al titular por WhatsApp. Solo entonces se emite y recibes `factura.emitida`.\n\nAlcance: `pedidos:escribir`.","tags":["Pedidos"],"parameters":[{"$ref":"#/components/parameters/RegionUE"},{"name":"Idempotency-Key","in":"header","required":true,"description":"Obligatoria en todos los POST (24 h).","schema":{"type":"string","maxLength":200}}],"responses":{"202":{"description":"Respuesta","content":{"application/json":{"example":{"id":"6d0a…","estado":"pendiente_confirmacion","caduca_en":"2026-10-18T10:00:00Z"}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"empresa_id":{"description":"Solo con claves de asesoría: la empresa del pedido.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"tipo":{"default":"factura","type":"string","const":"factura"},"contacto_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contacto":{"type":"object","properties":{"nombre":{"type":"string","minLength":1,"maxLength":160},"nif":{"type":"string","pattern":"^[A-Z0-9]{8,12}$"},"email":{"type":"string","maxLength":200,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"tipo":{"default":"cliente","type":"string","enum":["cliente","proveedor"]}},"required":["nombre"],"additionalProperties":false},"lineas":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"concepto":{"type":"string","minLength":1,"maxLength":200},"cantidad":{"default":1,"type":"number","exclusiveMinimum":0,"maximum":1000000},"precio_unitario_centimos":{"type":"integer","minimum":0,"maximum":1000000000},"tipo_iva":{"default":21,"anyOf":[{"type":"number","const":0},{"type":"number","const":4},{"type":"number","const":10},{"type":"number","const":21}]}},"required":["concepto","precio_unitario_centimos"],"additionalProperties":false}},"retencion_irpf":{"default":0,"anyOf":[{"type":"number","const":0},{"type":"number","const":1},{"type":"number","const":2},{"type":"number","const":7},{"type":"number","const":15},{"type":"number","const":19}]},"observaciones":{"type":"string","minLength":1,"maxLength":200},"referencia_externa":{"type":"string","maxLength":80}},"required":["lineas"],"additionalProperties":false},"example":{"contacto":{"nombre":"Logística del Duero SL","nif":"B09111111"},"lineas":[{"concepto":"Porte Burgos-Valladolid","cantidad":3,"precio_unitario_centimos":45000,"tipo_iva":21}]}}}}}},"/v1/pedidos/{id}":{"get":{"summary":"Estado de un pedido","description":"recibido → validando → necesita_datos | pendiente_confirmacion → confirmado → emitido | rechazado | caducado | error.\n\nAlcance: `pedidos:escribir`.","tags":["Pedidos"],"parameters":[{"name":"id","in":"path","required":true,"description":"Id del pedido","schema":{"type":"string"}},{"$ref":"#/components/parameters/RegionUE"}],"responses":{"200":{"description":"Respuesta"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/v1/exportaciones":{"post":{"summary":"Exportar a tu contabilidad","description":"Formato `universal` (PDF + libros en CSV). Los formatos de programa solo cuando existan.\n\nAlcance: `exportaciones:crear`.","tags":["Exportaciones"],"parameters":[{"$ref":"#/components/parameters/RegionUE"},{"name":"Idempotency-Key","in":"header","required":true,"description":"Obligatoria en todos los POST (24 h).","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Respuesta"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"empresa_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"formato":{"default":"universal","type":"string","const":"universal"},"desde":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"hasta":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["desde","hasta"],"additionalProperties":false},"example":{"formato":"universal","desde":"2026-07-01","hasta":"2026-09-30"}}}}}},"/v1/exportaciones/{id}":{"get":{"summary":"Descargar una exportación","description":"URL firmada de 5 minutos.\n\nAlcance: `exportaciones:crear`.","tags":["Exportaciones"],"parameters":[{"name":"id","in":"path","required":true,"description":"Id de la exportación","schema":{"type":"string"}},{"$ref":"#/components/parameters/RegionUE"}],"responses":{"200":{"description":"Respuesta"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/v1/webhooks":{"get":{"summary":"Destinos","description":"Lista de destinos de la clave.\n\nAlcance: `webhooks:gestionar`.","tags":["Webhooks"],"parameters":[{"$ref":"#/components/parameters/RegionUE"}],"responses":{"200":{"description":"Respuesta"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}},"post":{"summary":"Crear un destino","description":"Solo https, puerto 443 y dominio público. Devuelve el secreto de firma UNA vez. Con clave live, solo desde el portal (pide confirmación).\n\nAlcance: `webhooks:gestionar`.","tags":["Webhooks"],"parameters":[{"$ref":"#/components/parameters/RegionUE"},{"name":"Idempotency-Key","in":"header","required":true,"description":"Obligatoria en todos los POST (24 h).","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Respuesta"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string","maxLength":500,"format":"uri"},"eventos":{"minItems":1,"maxItems":16,"type":"array","items":{"type":"string","enum":["factura.emitida","factura.cobrada","factura.vencida","pedido.necesita_datos","pedido.rechazado","pedido.caducado","presupuesto.aceptado","gasto.registrado","gasto.validado","deca.emitido","paquete.listo","exportacion.lista","autorizacion.concedida","autorizacion.revocada","empresa.baja","clave.caduca_pronto"]}}},"required":["url","eventos"],"additionalProperties":false},"example":{"url":"https://erp.ejemplo.es/confia5","eventos":["factura.emitida"]}}}}}},"/v1/webhooks/{id}":{"delete":{"summary":"Borrar un destino","description":"\n\nAlcance: `webhooks:gestionar`.","tags":["Webhooks"],"parameters":[{"name":"id","in":"path","required":true,"description":"Id del destino","schema":{"type":"string"}},{"$ref":"#/components/parameters/RegionUE"}],"responses":{"200":{"description":"Respuesta"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/v1/sandbox/pedidos/{id}/simular":{"post":{"summary":"Simular la respuesta del titular","description":"Solo con claves c5_test_ (con una live: 404).\n\nAlcance: `pedidos:escribir`.","tags":["Sandbox"],"parameters":[{"name":"id","in":"path","required":true,"description":"Id del pedido","schema":{"type":"string"}},{"$ref":"#/components/parameters/RegionUE"},{"name":"Idempotency-Key","in":"header","required":true,"description":"Obligatoria en todos los POST (24 h).","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Respuesta"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"decision":{"type":"string","enum":["confirmar","rechazar","cambiar"]}},"required":["decision"],"additionalProperties":false},"example":{"decision":"confirmar"}}}}}}},"components":{"securitySchemes":{"clave":{"type":"http","scheme":"bearer","description":"Authorization: Bearer c5_test_… o c5_live_…. Nunca en la URL."}},"parameters":{"RegionUE":{"name":"forceFunctionRegion","in":"query","required":false,"description":"Región UE del proyecto. Envíala SIEMPRE (`eu-central-1`) para que la petición se procese en la UE; sin ella se procesa en la región más cercana a quien llama. La respuesta lo confirma en la cabecera `x-sb-edge-region`.","schema":{"type":"string","default":"eu-central-1","example":"eu-central-1"}}},"responses":{"Error":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"codigo":{"type":"string","enum":["autenticacion_invalida","clave_caducada","clave_en_url","alcance_insuficiente","autorizacion_revocada","ip_no_permitida","navegador_no_permitido","no_encontrado","emision_requiere_titular","idempotencia_requerida","validacion","idempotencia_conflicto","validacion_fiscal","limite_superado","proveedor_no_disponible","error_interno"]},"mensaje":{"type":"string"},"doc_url":{"type":"string"},"peticion_id":{"type":"string"}},"required":["codigo","mensaje","peticion_id"]}}}}}}}}}