{"openapi":"3.0.3","info":{"title":"Ruxi API de facturaci\u00f3n","version":"1.0.0","description":"Emite comprobantes electr\u00f3nicos, consulta su estado y descarga XML y RIDE. Crea tu clave API en https:\/\/ruxi.ec\/cuenta\/claves; cada clave est\u00e1 asociada a una empresa, un ambiente y permisos. Administra los datos de tu empresa, logo y firma electr\u00f3nica desde https:\/\/ruxi.ec\/cuenta.\n\n## Emisi\u00f3n\n\nEnv\u00eda tu clave desde el servidor con `Authorization: Bearer <clave>`. Cada clave pertenece a una empresa y ambiente; las cookies del portal no autentican solicitudes API.\n\nUsa `factura\/simple` para calcular impuestos y totales a partir de las l\u00edneas. Los dem\u00e1s formatos reciben los importes calculados por tu aplicaci\u00f3n. Env\u00eda `Content-Type: application\/json` e `Idempotency-Key` de 8\u2013128 caracteres. Omite `fechaEmision` para usar el d\u00eda actual de Ecuador.\n\nGuarda `data.id` y consulta `GET \/comprobantes\/{reference}`. HTTP 202 confirma la admisi\u00f3n; el resultado fiscal est\u00e1 en `data.estado`. Descarga XML y RIDE cuando sea `AUTORIZADO`.\n\n## Reintentos\n\nTras un timeout, consulta el comprobante antes de repetir la solicitud. Reutiliza el tipo, contenido e `Idempotency-Key` originales, incluso despu\u00e9s de medianoche o de rotar la clave API. Cambiar el contenido devuelve `idempotency_conflict`.\n\nCada correcci\u00f3n nueva usa otra `Idempotency-Key` y el documento completo dentro de `payload`. Sus reintentos conservan esa clave. El reenv\u00edo contin\u00faa el mismo comprobante sin reservar otro documento.\n\n## Errores\n\nLos errores HTTP devuelven `error.code`, `error.message` y `requestId`. Programa el manejo por c\u00f3digo; los mensajes y el HTTP pueden variar seg\u00fan el caso. `requestId` coincide con `X-Request-ID` y sirve para soporte. Selecciona un ejemplo de respuesta para ver el JSON y la acci\u00f3n recomendada. No se devuelve un desglose de errores por campo.\n\nEn respuestas 200\/202, `data.error` contiene un c\u00f3digo operativo. Consulta `data.estado` y los mensajes fiscales en `data.detalle.mensajes`. Si la respuesta no es JSON, consulta antes de repetir la operaci\u00f3n y conserva su Idempotency-Key.\n\n## Cuota y l\u00edmites\n\n`reserved`: cupo reservado mientras se conoce el resultado. `consumed`: consumo por autorizaci\u00f3n. `released`: reserva liberada tras rechazo. Una correcci\u00f3n nueva reserva cupo nuevamente. El historial y las descargas siguen disponibles tras vencer la suscripci\u00f3n si la cuenta y credencial est\u00e1n habilitadas.\n\nM\u00e1ximo de cuerpo: 2 MiB. Paginaci\u00f3n: 1\u2013100 documentos.\n\nL\u00edmites t\u00e9cnicos de referencia por operaci\u00f3n, independientes entre s\u00ed:\n- **Emisi\u00f3n, correcci\u00f3n y reenv\u00edo**: 60 por minuto por clave y 300 por cuenta.\n- **Consulta de comprobantes**: 120 por minuto por clave y 600 por cuenta.\n- **Descarga de XML\/RIDE**: 30 por minuto por clave y 120 por cuenta.\n\nEl tope por clave contiene una credencial concreta; el de cuenta suma todas las claves y empresas. El plan contratado puede ampliar el tope de cuenta y el portal muestra los vigentes en Suscripci\u00f3n y pagos; los cambios de plan aplican a nuevas compras y cada per\u00edodo conserva el snapshot contratado. Cada respuesta incluye `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` y `X-RateLimit-Scope`; \u00fasalas para regular tus env\u00edos antes de recibir un 429. Ante `rate_limited`, espera el `Retry-After` real. Ante `quota_exhausted` o `sandbox_limit`, revisa el cupo o espera la siguiente ventana; 60 segundos no garantizan su renovaci\u00f3n y esas respuestas pueden no incluir `Retry-After`.\n\n## Webhooks\n\nRegistra destinos en https:\/\/ruxi.ec\/cuenta\/webhooks con tu autenticador. Cada destino pertenece a una empresa y ambiente. Ruxi env\u00eda un POST JSON (RuxiWebhookEvent) por transici\u00f3n seleccionada: document.authorized para AUTORIZADO; document.rejected para NO_AUTORIZADO, DEVUELTA_CORREGIBLE o ERROR_VALIDACION; document.status_updated para los dem\u00e1s cambios. webhook.test no emite documentos.\n\nVerifica X-Ruxi-Signature: t=timestamp,v1=hex calculando HMAC-SHA256(timestamp + \".\" + cuerpo_original, secreto_del_webhook). Compara en tiempo constante y rechaza diferencias de reloj superiores a 300 segundos. X-Ruxi-Event-Id coincide con id; X-Ruxi-Delivery-Id identifica la entrega al destino. El secreto no es tu clave API.\n\nResponde HTTP 2xx despu\u00e9s de guardar la recepci\u00f3n, en menos de 10 segundos. Deduplica por id y compara data.version: la entrega es al menos una vez y no garantiza orden. Hasta 8 intentos autom\u00e1ticos: inicial y reintentos tras 1, 5, 15 minutos, 1, 3, 6 y 12 horas desde el fallo anterior. Hasta 3 ciclos manuales adicionales. Los reintentos conservan cuerpo e ID y actualizan timestamp y firma. El env\u00edo comienza al detectar el cambio de estado; puede demorarse por cola o reintentos.\n\nSolo HTTPS\/443 en dominios con IPv4 p\u00fablica, sin redirecciones, credenciales ni par\u00e1metros de consulta. Los avisos no contienen datos del comprador, XML, RIDE ni credenciales. Consulta o descarga documentos con tu clave API. Para cambiar URL, eventos o secreto, crea otro destino y revoca el anterior. No hay reenv\u00edo retroactivo. Una suspensi\u00f3n o revocaci\u00f3n cancela pendientes; peticiones ya enviadas pueden terminar. Gu\u00eda con ejemplo PHP: https:\/\/ruxi.ec\/cuenta\/webhooks\/guia."},"servers":[{"url":"https:\/\/api.ruxi.ec\/v1"}],"security":[{"bearerAuth":[]}],"paths":{"\/comprobantes\/factura":{"post":{"operationId":"emitir_factura","summary":"Emitir una factura completa","description":"Requiere documents:write. La emisi\u00f3n es as\u00edncrona: consulta el estado con el id recibido hasta obtener el resultado. En producci\u00f3n necesitas cupo de suscripci\u00f3n o saldo prepago autorizado. Solo los comprobantes AUTORIZADO consumen documentos; los reintentos con la misma Idempotency-Key no generan cargos adicionales.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128,"example":"pedido-1001-v1"},"description":"Identidad estable de la operaci\u00f3n, independiente de la clave API. Reutiliza exactamente el mismo contenido al reintentar.","example":"pedido-1001-v1"}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/CreateFacturaDto"},"examples":{"factura":{"summary":"M\u00ednimo requerido","description":"Solo los campos obligatorios; Ruxi calcula fecha, secuenciales y totales cuando el tipo lo permite.","value":{"estab":"001","ptoEmi":"001","comprador":{"tipoIdentificacion":"04","identificacion":"1790011674001","razonSocial":"Cliente de ejemplo S.A."},"infoFactura":{"totalSinImpuestos":100,"totalConImpuestos":{"totalImpuesto":[{"codigo":"2","codigoPorcentaje":"2","baseImponible":100,"valor":12}]},"importeTotal":112,"pagos":[{"formaPago":"01","total":112}]},"detalles":[{"codigoPrincipal":"SERV-001","descripcion":"Servicio de ejemplo","cantidad":1,"precioUnitario":100,"precioTotalSinImpuesto":100,"impuestos":[{"codigo":"2","codigoPorcentaje":"2","tarifa":12,"baseImponible":100,"valor":12}]}]}},"factura-completo":{"summary":"Completo","description":"Incluye campos opcionales frecuentes. Los valores son ficticios y deben reemplazarse por los datos fiscales reales.","value":{"estab":"001","ptoEmi":"001","fechaEmision":"15\/09\/2026","infoAdicional":[{"nombre":"Referencia","valor":"EJEMPLO-001"}],"comprador":{"tipoIdentificacion":"04","identificacion":"1790011674001","razonSocial":"Cliente de ejemplo S.A.","direccion":"Av. Ejemplo 123 y Calle Falsa","email":"compras@example.test"},"infoFactura":{"dirEstablecimiento":"Av. Ejemplo 123","contribuyenteEspecial":"5368","obligadoContabilidad":"SI","comercioExterior":"EJEMPLO comercioExterior","incoTermFactura":"EJEMPLO incoTermFactura","lugarIncoTerm":"EJEMPLO lugarIncoTerm","paisOrigen":"EC","puertoEmbarque":"EJEMPLO puertoEmbarque","puertoDestino":"EJEMPLO puertoDestino","paisDestino":"EC","paisAdquisicion":"EJEMPLO paisAdquisicion","guiaRemision":"001-001-000000002","totalSinImpuestos":100,"totalSubsidio":0,"incoTermTotalSinImpuestos":"EJEMPLO incoTermTotalSinImpuestos","totalDescuento":0,"codDocReembolso":"01","totalComprobantesReembolso":1,"totalBaseImponibleReembolso":100,"totalImpuestoReembolso":12,"totalConImpuestos":{"totalImpuesto":[{"codigo":"2","codigoPorcentaje":"2","baseImponible":100,"valor":12,"descuentoAdicional":0,"tarifa":12,"valorDevolucionIva":0}]},"compensaciones":[{"codigo":"2","tarifa":12,"valor":12}],"propina":0,"fleteInternacional":100,"seguroInternacional":100,"gastosAduaneros":100,"gastosTransporteOtros":100,"importeTotal":112,"moneda":"DOLAR","placa":"ABC1234","pagos":[{"formaPago":"01","total":112,"plazo":30,"unidadTiempo":"dias"}],"valorRetIva":0,"valorRetRenta":0},"detalles":[{"codigoPrincipal":"SERV-001","codigoAuxiliar":"SERV-001-A","descripcion":"Servicio de ejemplo","cantidad":1,"precioUnitario":100,"precioSinSubsidio":100,"descuento":0,"precioTotalSinImpuesto":100,"unidadMedida":"Unidad","impuestos":[{"codigo":"2","codigoPorcentaje":"2","tarifa":12,"baseImponible":100,"valor":12}],"detallesAdicionales":[{"nombre":"Referencia","valor":"EJEMPLO-001"}]}],"reembolsos":[{"tipoIdentificacionProveedorReembolso":"04","identificacionProveedorReembolso":"1790011674001","codPaisPagoProveedorReembolso":"EJEMPLO codPaisPagoProveedorReembolso","tipoProveedorReembolso":"01","codDocReembolso":"01","estabDocReembolso":"001","ptoEmiDocReembolso":"001","secuencialDocReembolso":"000000001","fechaEmisionDocReembolso":"10\/09\/2026","numeroautorizacionDocReemb":"EJEMPLO numeroautorizacionDocReemb","detalleImpuestos":[{"codigo":"2","codigoPorcentaje":"2","tarifa":12,"baseImponibleReembolso":100,"impuestoReembolso":12}],"compensacionesReembolso":[{"codigo":"2","tarifa":12,"valor":12}]}],"retenciones":[{"codigo":"2","codigoPorcentaje":"2","tarifa":12,"valor":12}],"infoSustitutivaGuiaRemision":{"dirPartida":"Av. Origen 123","dirDestinatario":"Av. Destino 456","fechaIniTransporte":"15\/09\/2026","fechaFinTransporte":"16\/09\/2026","razonSocialTransportista":"Transportes de ejemplo S.A.","tipoIdentificacionTransportista":"04","rucTransportista":"1790011674001","placa":"ABC1234","destinos":[{"motivoTraslado":"01","docAduaneroUnico":"EJEMPLO docAduaneroUnico","codEstabDestino":"001","ruta":"EJEMPLO ruta"}]},"otrosRubrosTerceros":[{"concepto":"EJEMPLO concepto","total":112}],"tipoNegociable":{"correo":"compras@example.test"},"maquinaFiscal":{"marca":"Marca de ejemplo","modelo":"Modelo 1","serie":"001"}}}}}}},"responses":{"202":{"description":"Solicitud admitida o repetida sin crear otro expediente.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiDocumentEnvelope"},"examples":{"pendiente":{"summary":"Comprobante pendiente","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"seguimiento":{"summary":"Servicio no disponible; cupo reservado","description":"Consulta por data.id. Reutiliza Idempotency-Key y el cuerpo original al reintentar.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":"fiscal_service_unavailable","createdAt":"2026-09-15T15:00:00.000000Z"}}},"pendienteEnvio":{"summary":"PENDIENTE_ENVIO","description":"Admisi\u00f3n sin clave de acceso todav\u00eda. Consulta por data.id.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"recepcionIncierta":{"summary":"RECEPCION_INCIERTA","description":"El env\u00edo al SRI qued\u00f3 incierto; conserva la reserva y consulta antes de repetir.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"RECEPCION_INCIERTA","cuota":"reserved","error":"fiscal_service_unavailable","createdAt":"2026-09-15T15:00:00.000000Z"}}},"enProcesamiento":{"summary":"EN_PROCESAMIENTO","description":"El SRI a\u00fan procesa el comprobante.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"EN_PROCESAMIENTO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"autorizado":{"summary":"AUTORIZADO","description":"Comprobante autorizado; ya puedes descargar XML y RIDE.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"AUTORIZADO","cuota":"consumed","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"devueltaCorregible":{"summary":"DEVUELTA_CORREGIBLE","description":"Rechazo corregible: la reserva se liber\u00f3 y puedes corregir el expediente.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"DEVUELTA_CORREGIBLE","cuota":"released","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"noAutorizado":{"summary":"NO_AUTORIZADO","description":"Rechazo definitivo; corrige o revisa los mensajes fiscales.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"NO_AUTORIZADO","cuota":"released","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}}}}}},"400":{"description":"C\u00f3digos y mensajes:\n\n- **https_required** \u2014 Se requiere HTTPS.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"https_required":{"summary":"https_required: Se requiere HTTPS.","description":"Usa la base HTTPS publicada.","value":{"error":{"code":"https_required","message":"Se requiere HTTPS."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"401":{"description":"C\u00f3digos y mensajes:\n\n- **unauthenticated** \u2014 Credencial inv\u00e1lida.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"unauthenticated":{"summary":"unauthenticated: Credencial inv\u00e1lida.","description":"Revisa Authorization: Bearer y que la clave, cuenta, empresa y ambiente est\u00e9n habilitados.","value":{"error":{"code":"unauthenticated","message":"Credencial inv\u00e1lida."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"402":{"description":"C\u00f3digos y mensajes:\n\n- **subscription_required** \u2014 Activa una suscripci\u00f3n o el uso de saldo prepago para emitir.\n\n- **insufficient_balance** \u2014 Recarga saldo para emitir otro documento.\n\n- **wallet_unavailable** \u2014 No se pudo reservar saldo. Revisa el monedero de tu cuenta.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"subscription_required":{"summary":"subscription_required: Activa una suscripci\u00f3n o el uso de saldo prepago para emitir.","description":"Revisa la suscripci\u00f3n o la habilitaci\u00f3n del saldo prepago en el portal.","value":{"error":{"code":"subscription_required","message":"Activa una suscripci\u00f3n o el uso de saldo prepago para emitir."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"insufficient_balance":{"summary":"insufficient_balance: Recarga saldo para emitir otro documento.","description":"Recarga el monedero antes de reintentar.","value":{"error":{"code":"insufficient_balance","message":"Recarga saldo para emitir otro documento."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"wallet_unavailable":{"summary":"wallet_unavailable: No se pudo reservar saldo. Revisa el monedero de tu cuenta.","description":"Comprueba el monedero y su habilitaci\u00f3n en el portal.","value":{"error":{"code":"wallet_unavailable","message":"No se pudo reservar saldo. Revisa el monedero de tu cuenta."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"403":{"description":"C\u00f3digos y mensajes:\n\n- **insufficient_scope** \u2014 La clave no tiene permiso para esta operaci\u00f3n.\n\n- **issuer_mismatch** \u2014 El RUC no pertenece a esta credencial.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"insufficient_scope":{"summary":"insufficient_scope: La clave no tiene permiso para esta operaci\u00f3n.","description":"Crea o utiliza una clave con el permiso indicado en esta operaci\u00f3n.","value":{"error":{"code":"insufficient_scope","message":"La clave no tiene permiso para esta operaci\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"issuer_mismatch":{"summary":"issuer_mismatch: El RUC no pertenece a esta credencial.","description":"Omite emisorRuc o utiliza el RUC vinculado a la clave.","value":{"error":{"code":"issuer_mismatch","message":"El RUC no pertenece a esta credencial."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"404":{"description":"C\u00f3digos y mensajes:\n\n- **not_found** \u2014 Recurso no encontrado.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"not_found":{"summary":"not_found: Recurso no encontrado.","description":"Comprueba el host, la ruta y que la API est\u00e9 habilitada.","value":{"error":{"code":"not_found","message":"Recurso no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"409":{"description":"C\u00f3digos y mensajes:\n\n- **company_limit** \u2014 La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso.\n\n- **idempotency_conflict** \u2014 La clave ya pertenece a otro contenido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"company_limit":{"summary":"company_limit: La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso.","description":"Revisa el n\u00famero de empresas activas en el portal.","value":{"error":{"code":"company_limit","message":"La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"idempotency_conflict":{"summary":"idempotency_conflict: La clave ya pertenece a otro contenido.","description":"Para reintentar env\u00eda el mismo tipo y contenido. Usa una clave nueva solo para una operaci\u00f3n nueva.","value":{"error":{"code":"idempotency_conflict","message":"La clave ya pertenece a otro contenido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"413":{"description":"C\u00f3digos y mensajes:\n\n- **body_too_large** \u2014 El contenido excede el l\u00edmite permitido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"body_too_large":{"summary":"body_too_large: El contenido excede el l\u00edmite permitido.","description":"Reduce el cuerpo. El l\u00edmite de aplicaci\u00f3n es 2 MiB (2097152 bytes).","value":{"error":{"code":"body_too_large","message":"El contenido excede el l\u00edmite permitido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"415":{"description":"C\u00f3digos y mensajes:\n\n- **json_required** \u2014 Env\u00eda contenido application\/json.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"json_required":{"summary":"json_required: Env\u00eda contenido application\/json.","description":"Env\u00eda Content-Type: application\/json.","value":{"error":{"code":"json_required","message":"Env\u00eda contenido application\/json."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"422":{"description":"C\u00f3digos y mensajes:\n\n- **invalid_json** \u2014 JSON inv\u00e1lido.\n\n- **invalid_json** \u2014 Se requiere un objeto JSON.\n\n- **forbidden_field** \u2014 La configuraci\u00f3n fiscal se administra en el portal.\n\n- **invalid_request** \u2014 Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres.\n\n- **invalid_emission_date** \u2014 La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente.\n\n- **invalid_document** \u2014 El servicio fiscal rechaz\u00f3 la estructura o los datos del documento.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"invalid_json":{"summary":"invalid_json: JSON inv\u00e1lido.","description":"Revisa la sintaxis JSON y el l\u00edmite de 64 niveles de anidaci\u00f3n.","value":{"error":{"code":"invalid_json","message":"JSON inv\u00e1lido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_json_2":{"summary":"invalid_json: Se requiere un objeto JSON.","description":"El cuerpo debe ser un objeto JSON con al menos una propiedad.","value":{"error":{"code":"invalid_json","message":"Se requiere un objeto JSON."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"forbidden_field":{"summary":"forbidden_field: La configuraci\u00f3n fiscal se administra en el portal.","description":"Omite ambiente, environment, secuencial, codigoNumerico y credenciales de firma; administra esa configuraci\u00f3n en el portal.","value":{"error":{"code":"forbidden_field","message":"La configuraci\u00f3n fiscal se administra en el portal."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_request":{"summary":"invalid_request: Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres.","description":"Usa un tipo documentado y una Idempotency-Key de 8 a 128 caracteres.","value":{"error":{"code":"invalid_request","message":"Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_emission_date":{"summary":"invalid_emission_date: La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente.","description":"Omite fechaEmision en la emisi\u00f3n nueva. Conserva el contenido original en reintentos, tambi\u00e9n despu\u00e9s de medianoche.","value":{"error":{"code":"invalid_emission_date","message":"La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_document":{"summary":"invalid_document: El servicio fiscal rechaz\u00f3 la estructura o los datos del documento.","description":"Revisa el esquema de entrada. El listado puede contener el comprobante en ERROR_VALIDACION y sin clave de acceso.","value":{"error":{"code":"invalid_document","message":"El servicio fiscal rechaz\u00f3 la estructura o los datos del documento."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"429":{"description":"C\u00f3digos y mensajes:\n\n- **rate_limited** \u2014 Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.\n\n- **sandbox_limit** \u2014 Se alcanz\u00f3 el l\u00edmite diario de pruebas.\n\n- **quota_exhausted** \u2014 El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi.\n\n- **quota_exhausted** \u2014 La cuota de documentos est\u00e1 consumida o reservada.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Retry-After":{"description":"Segundos reales de espera m\u00ednima para rate_limited. Puede faltar en l\u00edmites de cupo o pruebas; 60 segundos no garantiza que el cupo o el l\u00edmite diario se hayan renovado.","schema":{"type":"integer","minimum":1,"example":22}},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"rate_limited":{"summary":"rate_limited: Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.","description":"L\u00edmite por clave, cuenta o capacidad del servicio. Emisi\u00f3n, consulta y descarga tienen cupos independientes y el plan puede ampliar el de la cuenta. Espera el Retry-After real antes de reintentar.","value":{"error":{"code":"rate_limited","message":"Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"sandbox_limit":{"summary":"sandbox_limit: Se alcanz\u00f3 el l\u00edmite diario de pruebas.","description":"Espera la siguiente ventana diaria UTC. Retry-After: 60 no significa que el l\u00edmite diario se reinicie en un minuto.","value":{"error":{"code":"sandbox_limit","message":"Se alcanz\u00f3 el l\u00edmite diario de pruebas."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_exhausted":{"summary":"quota_exhausted: El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi.","description":"Solicita ampliaci\u00f3n o revisa las reservas del acceso demo.","value":{"error":{"code":"quota_exhausted","message":"El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_exhausted_2":{"summary":"quota_exhausted: La cuota de documentos est\u00e1 consumida o reservada.","description":"Revisa cupo, reservas y uso de saldo prepago. Esperar 60 segundos no garantiza capacidad disponible.","value":{"error":{"code":"quota_exhausted","message":"La cuota de documentos est\u00e1 consumida o reservada."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"503":{"description":"C\u00f3digos y mensajes:\n\n- **request_failed** \u2014 No se pudo completar la solicitud.\n\n- **service_unavailable** \u2014 No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.\n\n- **quota_unavailable** \u2014 No se pudo resolver el cupo mensual. Contacta a soporte.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed: No se pudo completar la solicitud.","description":"Consulta el comprobante antes de reintentar. Reutiliza Idempotency-Key y el cuerpo original; guarda requestId para soporte.","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"service_unavailable":{"summary":"service_unavailable: No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.","description":"La operaci\u00f3n puede haberse admitido. Consulta el comprobante antes de reintentar con la misma Idempotency-Key y contenido.","value":{"error":{"code":"service_unavailable","message":"No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_unavailable":{"summary":"quota_unavailable: No se pudo resolver el cupo mensual. Contacta a soporte.","description":"Contacta a soporte con requestId; conserva la identidad de la operaci\u00f3n.","value":{"error":{"code":"quota_unavailable","message":"No se pudo resolver el cupo mensual. Contacta a soporte."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"default":{"description":"request_failed: ruta desconocida (404), m\u00e9todo no permitido (405) o servicio no disponible (503). Guarda requestId para soporte.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}}},"tags":["Emisi\u00f3n"]}},"\/comprobantes\/factura\/simple":{"post":{"operationId":"emitir_factura_simple","summary":"Emitir una factura calculada por la API","description":"Requiere documents:write. La emisi\u00f3n es as\u00edncrona: consulta el estado con el id recibido hasta obtener el resultado. En producci\u00f3n necesitas cupo de suscripci\u00f3n o saldo prepago autorizado. Solo los comprobantes AUTORIZADO consumen documentos; los reintentos con la misma Idempotency-Key no generan cargos adicionales.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128,"example":"pedido-1001-v1"},"description":"Identidad estable de la operaci\u00f3n, independiente de la clave API. Reutiliza exactamente el mismo contenido al reintentar.","example":"pedido-1001-v1"}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/CreateFacturaSimpleDto"},"examples":{"factura-simple":{"summary":"M\u00ednimo requerido","description":"Solo los campos obligatorios; Ruxi calcula fecha, secuenciales y totales cuando el tipo lo permite.","value":{"estab":"001","ptoEmi":"001","comprador":{"tipoIdentificacion":"04","identificacion":"1790011674001","razonSocial":"Cliente de ejemplo S.A."},"detalles":[{"descripcion":"Servicio de ejemplo","cantidad":1,"precioUnitario":100}]}},"factura-simple-completo":{"summary":"Completo","description":"Incluye campos opcionales frecuentes. Los valores son ficticios y deben reemplazarse por los datos fiscales reales.","value":{"estab":"001","ptoEmi":"001","fechaEmision":"15\/09\/2026","infoAdicional":[{"nombre":"Referencia","valor":"EJEMPLO-001"}],"comprador":{"tipoIdentificacion":"04","identificacion":"1790011674001","razonSocial":"Cliente de ejemplo S.A.","direccion":"Av. Ejemplo 123 y Calle Falsa","email":"compras@example.test"},"detalles":[{"codigoPrincipal":"SERV-001","codigoAuxiliar":"SERV-001-A","descripcion":"Servicio de ejemplo","cantidad":1,"precioUnitario":100,"descuento":0,"unidadMedida":"Unidad","detallesAdicionales":[{"nombre":"Referencia","valor":"EJEMPLO-001"}],"impuestoCodigo":"EJEMPLO impuestoCodigo","impuestoCodigoPorcentaje":"EJEMPLO impuestoCodigoPorcentaje","impuestoTarifa":100}],"formaPago":"01","moneda":"DOLAR","placa":"ABC1234","dirEstablecimiento":"Av. Ejemplo 123","contribuyenteEspecial":"5368","obligadoContabilidad":"SI","guiaRemision":"001-001-000000002","propina":0,"valorRetIva":0,"valorRetRenta":0,"tipoNegociable":"NEGOCIABLE"}},"facturaSimple":{"summary":"Factura a consumidor final","description":"Reemplaza la serie y el producto. Ruxi asigna la fecha actual y aplica los impuestos predeterminados del esquema.","value":{"estab":"001","ptoEmi":"001","comprador":{"tipoIdentificacion":"07","identificacion":"9999999999999","razonSocial":"CONSUMIDOR FINAL"},"detalles":[{"descripcion":"Producto de ejemplo","cantidad":1,"precioUnitario":10}],"formaPago":"01"}}}}}},"responses":{"202":{"description":"Solicitud admitida o repetida sin crear otro expediente.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiDocumentEnvelope"},"examples":{"pendiente":{"summary":"Comprobante pendiente","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura\/simple","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"seguimiento":{"summary":"Servicio no disponible; cupo reservado","description":"Consulta por data.id. Reutiliza Idempotency-Key y el cuerpo original al reintentar.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura\/simple","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":"fiscal_service_unavailable","createdAt":"2026-09-15T15:00:00.000000Z"}}},"pendienteEnvio":{"summary":"PENDIENTE_ENVIO","description":"Admisi\u00f3n sin clave de acceso todav\u00eda. Consulta por data.id.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura\/simple","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"recepcionIncierta":{"summary":"RECEPCION_INCIERTA","description":"El env\u00edo al SRI qued\u00f3 incierto; conserva la reserva y consulta antes de repetir.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura\/simple","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"RECEPCION_INCIERTA","cuota":"reserved","error":"fiscal_service_unavailable","createdAt":"2026-09-15T15:00:00.000000Z"}}},"enProcesamiento":{"summary":"EN_PROCESAMIENTO","description":"El SRI a\u00fan procesa el comprobante.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura\/simple","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"EN_PROCESAMIENTO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"autorizado":{"summary":"AUTORIZADO","description":"Comprobante autorizado; ya puedes descargar XML y RIDE.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura\/simple","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"AUTORIZADO","cuota":"consumed","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"devueltaCorregible":{"summary":"DEVUELTA_CORREGIBLE","description":"Rechazo corregible: la reserva se liber\u00f3 y puedes corregir el expediente.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura\/simple","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"DEVUELTA_CORREGIBLE","cuota":"released","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"noAutorizado":{"summary":"NO_AUTORIZADO","description":"Rechazo definitivo; corrige o revisa los mensajes fiscales.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura\/simple","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"NO_AUTORIZADO","cuota":"released","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}}}}}},"400":{"description":"C\u00f3digos y mensajes:\n\n- **https_required** \u2014 Se requiere HTTPS.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"https_required":{"summary":"https_required: Se requiere HTTPS.","description":"Usa la base HTTPS publicada.","value":{"error":{"code":"https_required","message":"Se requiere HTTPS."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"401":{"description":"C\u00f3digos y mensajes:\n\n- **unauthenticated** \u2014 Credencial inv\u00e1lida.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"unauthenticated":{"summary":"unauthenticated: Credencial inv\u00e1lida.","description":"Revisa Authorization: Bearer y que la clave, cuenta, empresa y ambiente est\u00e9n habilitados.","value":{"error":{"code":"unauthenticated","message":"Credencial inv\u00e1lida."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"402":{"description":"C\u00f3digos y mensajes:\n\n- **subscription_required** \u2014 Activa una suscripci\u00f3n o el uso de saldo prepago para emitir.\n\n- **insufficient_balance** \u2014 Recarga saldo para emitir otro documento.\n\n- **wallet_unavailable** \u2014 No se pudo reservar saldo. Revisa el monedero de tu cuenta.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"subscription_required":{"summary":"subscription_required: Activa una suscripci\u00f3n o el uso de saldo prepago para emitir.","description":"Revisa la suscripci\u00f3n o la habilitaci\u00f3n del saldo prepago en el portal.","value":{"error":{"code":"subscription_required","message":"Activa una suscripci\u00f3n o el uso de saldo prepago para emitir."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"insufficient_balance":{"summary":"insufficient_balance: Recarga saldo para emitir otro documento.","description":"Recarga el monedero antes de reintentar.","value":{"error":{"code":"insufficient_balance","message":"Recarga saldo para emitir otro documento."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"wallet_unavailable":{"summary":"wallet_unavailable: No se pudo reservar saldo. Revisa el monedero de tu cuenta.","description":"Comprueba el monedero y su habilitaci\u00f3n en el portal.","value":{"error":{"code":"wallet_unavailable","message":"No se pudo reservar saldo. Revisa el monedero de tu cuenta."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"403":{"description":"C\u00f3digos y mensajes:\n\n- **insufficient_scope** \u2014 La clave no tiene permiso para esta operaci\u00f3n.\n\n- **issuer_mismatch** \u2014 El RUC no pertenece a esta credencial.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"insufficient_scope":{"summary":"insufficient_scope: La clave no tiene permiso para esta operaci\u00f3n.","description":"Crea o utiliza una clave con el permiso indicado en esta operaci\u00f3n.","value":{"error":{"code":"insufficient_scope","message":"La clave no tiene permiso para esta operaci\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"issuer_mismatch":{"summary":"issuer_mismatch: El RUC no pertenece a esta credencial.","description":"Omite emisorRuc o utiliza el RUC vinculado a la clave.","value":{"error":{"code":"issuer_mismatch","message":"El RUC no pertenece a esta credencial."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"404":{"description":"C\u00f3digos y mensajes:\n\n- **not_found** \u2014 Recurso no encontrado.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"not_found":{"summary":"not_found: Recurso no encontrado.","description":"Comprueba el host, la ruta y que la API est\u00e9 habilitada.","value":{"error":{"code":"not_found","message":"Recurso no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"409":{"description":"C\u00f3digos y mensajes:\n\n- **company_limit** \u2014 La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso.\n\n- **idempotency_conflict** \u2014 La clave ya pertenece a otro contenido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"company_limit":{"summary":"company_limit: La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso.","description":"Revisa el n\u00famero de empresas activas en el portal.","value":{"error":{"code":"company_limit","message":"La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"idempotency_conflict":{"summary":"idempotency_conflict: La clave ya pertenece a otro contenido.","description":"Para reintentar env\u00eda el mismo tipo y contenido. Usa una clave nueva solo para una operaci\u00f3n nueva.","value":{"error":{"code":"idempotency_conflict","message":"La clave ya pertenece a otro contenido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"413":{"description":"C\u00f3digos y mensajes:\n\n- **body_too_large** \u2014 El contenido excede el l\u00edmite permitido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"body_too_large":{"summary":"body_too_large: El contenido excede el l\u00edmite permitido.","description":"Reduce el cuerpo. El l\u00edmite de aplicaci\u00f3n es 2 MiB (2097152 bytes).","value":{"error":{"code":"body_too_large","message":"El contenido excede el l\u00edmite permitido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"415":{"description":"C\u00f3digos y mensajes:\n\n- **json_required** \u2014 Env\u00eda contenido application\/json.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"json_required":{"summary":"json_required: Env\u00eda contenido application\/json.","description":"Env\u00eda Content-Type: application\/json.","value":{"error":{"code":"json_required","message":"Env\u00eda contenido application\/json."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"422":{"description":"C\u00f3digos y mensajes:\n\n- **invalid_json** \u2014 JSON inv\u00e1lido.\n\n- **invalid_json** \u2014 Se requiere un objeto JSON.\n\n- **forbidden_field** \u2014 La configuraci\u00f3n fiscal se administra en el portal.\n\n- **invalid_request** \u2014 Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres.\n\n- **invalid_emission_date** \u2014 La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente.\n\n- **invalid_document** \u2014 El servicio fiscal rechaz\u00f3 la estructura o los datos del documento.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"invalid_json":{"summary":"invalid_json: JSON inv\u00e1lido.","description":"Revisa la sintaxis JSON y el l\u00edmite de 64 niveles de anidaci\u00f3n.","value":{"error":{"code":"invalid_json","message":"JSON inv\u00e1lido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_json_2":{"summary":"invalid_json: Se requiere un objeto JSON.","description":"El cuerpo debe ser un objeto JSON con al menos una propiedad.","value":{"error":{"code":"invalid_json","message":"Se requiere un objeto JSON."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"forbidden_field":{"summary":"forbidden_field: La configuraci\u00f3n fiscal se administra en el portal.","description":"Omite ambiente, environment, secuencial, codigoNumerico y credenciales de firma; administra esa configuraci\u00f3n en el portal.","value":{"error":{"code":"forbidden_field","message":"La configuraci\u00f3n fiscal se administra en el portal."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_request":{"summary":"invalid_request: Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres.","description":"Usa un tipo documentado y una Idempotency-Key de 8 a 128 caracteres.","value":{"error":{"code":"invalid_request","message":"Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_emission_date":{"summary":"invalid_emission_date: La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente.","description":"Omite fechaEmision en la emisi\u00f3n nueva. Conserva el contenido original en reintentos, tambi\u00e9n despu\u00e9s de medianoche.","value":{"error":{"code":"invalid_emission_date","message":"La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_document":{"summary":"invalid_document: El servicio fiscal rechaz\u00f3 la estructura o los datos del documento.","description":"Revisa el esquema de entrada. El listado puede contener el comprobante en ERROR_VALIDACION y sin clave de acceso.","value":{"error":{"code":"invalid_document","message":"El servicio fiscal rechaz\u00f3 la estructura o los datos del documento."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"429":{"description":"C\u00f3digos y mensajes:\n\n- **rate_limited** \u2014 Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.\n\n- **sandbox_limit** \u2014 Se alcanz\u00f3 el l\u00edmite diario de pruebas.\n\n- **quota_exhausted** \u2014 El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi.\n\n- **quota_exhausted** \u2014 La cuota de documentos est\u00e1 consumida o reservada.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Retry-After":{"description":"Segundos reales de espera m\u00ednima para rate_limited. Puede faltar en l\u00edmites de cupo o pruebas; 60 segundos no garantiza que el cupo o el l\u00edmite diario se hayan renovado.","schema":{"type":"integer","minimum":1,"example":22}},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"rate_limited":{"summary":"rate_limited: Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.","description":"L\u00edmite por clave, cuenta o capacidad del servicio. Emisi\u00f3n, consulta y descarga tienen cupos independientes y el plan puede ampliar el de la cuenta. Espera el Retry-After real antes de reintentar.","value":{"error":{"code":"rate_limited","message":"Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"sandbox_limit":{"summary":"sandbox_limit: Se alcanz\u00f3 el l\u00edmite diario de pruebas.","description":"Espera la siguiente ventana diaria UTC. Retry-After: 60 no significa que el l\u00edmite diario se reinicie en un minuto.","value":{"error":{"code":"sandbox_limit","message":"Se alcanz\u00f3 el l\u00edmite diario de pruebas."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_exhausted":{"summary":"quota_exhausted: El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi.","description":"Solicita ampliaci\u00f3n o revisa las reservas del acceso demo.","value":{"error":{"code":"quota_exhausted","message":"El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_exhausted_2":{"summary":"quota_exhausted: La cuota de documentos est\u00e1 consumida o reservada.","description":"Revisa cupo, reservas y uso de saldo prepago. Esperar 60 segundos no garantiza capacidad disponible.","value":{"error":{"code":"quota_exhausted","message":"La cuota de documentos est\u00e1 consumida o reservada."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"503":{"description":"C\u00f3digos y mensajes:\n\n- **request_failed** \u2014 No se pudo completar la solicitud.\n\n- **service_unavailable** \u2014 No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.\n\n- **quota_unavailable** \u2014 No se pudo resolver el cupo mensual. Contacta a soporte.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed: No se pudo completar la solicitud.","description":"Consulta el comprobante antes de reintentar. Reutiliza Idempotency-Key y el cuerpo original; guarda requestId para soporte.","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"service_unavailable":{"summary":"service_unavailable: No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.","description":"La operaci\u00f3n puede haberse admitido. Consulta el comprobante antes de reintentar con la misma Idempotency-Key y contenido.","value":{"error":{"code":"service_unavailable","message":"No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_unavailable":{"summary":"quota_unavailable: No se pudo resolver el cupo mensual. Contacta a soporte.","description":"Contacta a soporte con requestId; conserva la identidad de la operaci\u00f3n.","value":{"error":{"code":"quota_unavailable","message":"No se pudo resolver el cupo mensual. Contacta a soporte."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"default":{"description":"request_failed: ruta desconocida (404), m\u00e9todo no permitido (405) o servicio no disponible (503). Guarda requestId para soporte.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}}},"tags":["Emisi\u00f3n"]}},"\/comprobantes\/liquidacion":{"post":{"operationId":"emitir_liquidacion","summary":"Emitir una liquidaci\u00f3n de compra 1.1.0","description":"Requiere documents:write. La emisi\u00f3n es as\u00edncrona: consulta el estado con el id recibido hasta obtener el resultado. En producci\u00f3n necesitas cupo de suscripci\u00f3n o saldo prepago autorizado. Solo los comprobantes AUTORIZADO consumen documentos; los reintentos con la misma Idempotency-Key no generan cargos adicionales.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128,"example":"pedido-1001-v1"},"description":"Identidad estable de la operaci\u00f3n, independiente de la clave API. Reutiliza exactamente el mismo contenido al reintentar.","example":"pedido-1001-v1"}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/CreateLiquidacionDto"},"examples":{"liquidacion":{"summary":"M\u00ednimo requerido","description":"Solo los campos obligatorios; Ruxi calcula fecha, secuenciales y totales cuando el tipo lo permite.","value":{"estab":"001","ptoEmi":"001","proveedor":{"tipoIdentificacion":"04","identificacion":"1790011674001","razonSocial":"Cliente de ejemplo S.A."},"infoLiquidacionCompra":{"totalSinImpuestos":100,"totalConImpuestos":{"totalImpuesto":[{"codigo":"2","codigoPorcentaje":"2","baseImponible":100,"valor":12}]},"importeTotal":112},"detalles":[{"descripcion":"Servicio de ejemplo","cantidad":1,"precioUnitario":100,"precioTotalSinImpuesto":100,"impuestos":[{"codigo":"2","codigoPorcentaje":"2","tarifa":12,"baseImponible":100,"valor":12}]}]}},"liquidacion-completo":{"summary":"Completo","description":"Incluye campos opcionales frecuentes. Los valores son ficticios y deben reemplazarse por los datos fiscales reales.","value":{"estab":"001","ptoEmi":"001","fechaEmision":"15\/09\/2026","infoAdicional":[{"nombre":"Referencia","valor":"EJEMPLO-001"}],"proveedor":{"tipoIdentificacion":"04","identificacion":"1790011674001","razonSocial":"Cliente de ejemplo S.A.","direccion":"Av. Ejemplo 123 y Calle Falsa","email":"compras@example.test"},"infoLiquidacionCompra":{"dirEstablecimiento":"Av. Ejemplo 123","totalSinImpuestos":100,"totalDescuento":0,"codDocReembolso":"01","totalComprobantesReembolso":1,"totalBaseImponibleReembolso":100,"totalImpuestoReembolso":12,"totalConImpuestos":{"totalImpuesto":[{"codigo":"2","codigoPorcentaje":"2","descuentoAdicional":0,"baseImponible":100,"tarifa":12,"valor":12}]},"importeTotal":112,"moneda":"DOLAR","pagos":[{"formaPago":"01","total":112,"plazo":30,"unidadTiempo":"dias"}]},"detalles":[{"codigoPrincipal":"SERV-001","codigoAuxiliar":"SERV-001-A","descripcion":"Servicio de ejemplo","cantidad":1,"precioUnitario":100,"precioSinSubsidio":100,"descuento":0,"precioTotalSinImpuesto":100,"unidadMedida":"Unidad","impuestos":[{"codigo":"2","codigoPorcentaje":"2","tarifa":12,"baseImponible":100,"valor":12}],"detallesAdicionales":[{"nombre":"Referencia","valor":"EJEMPLO-001"}]}],"reembolsos":[{"tipoIdentificacionProveedorReembolso":"04","identificacionProveedorReembolso":"1790011674001","codPaisPagoProveedorReembolso":"EJEMPLO codPaisPagoProveedorReembolso","tipoProveedorReembolso":"01","codDocReembolso":"01","estabDocReembolso":"001","ptoEmiDocReembolso":"001","secuencialDocReembolso":"000000001","fechaEmisionDocReembolso":"10\/09\/2026","numeroautorizacionDocReemb":"EJEMPLO numeroautorizacionDocReemb","detalleImpuestos":[{"codigo":"2","codigoPorcentaje":"2","tarifa":12,"baseImponibleReembolso":100,"impuestoReembolso":12}]}],"tipoNegociable":"NEGOCIABLE","maquinaFiscal":{"marca":"Marca de ejemplo","modelo":"Modelo 1","serie":"001"}}}}}}},"responses":{"202":{"description":"Solicitud admitida o repetida sin crear otro expediente.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiDocumentEnvelope"},"examples":{"pendiente":{"summary":"Comprobante pendiente","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"liquidacion","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"seguimiento":{"summary":"Servicio no disponible; cupo reservado","description":"Consulta por data.id. Reutiliza Idempotency-Key y el cuerpo original al reintentar.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"liquidacion","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":"fiscal_service_unavailable","createdAt":"2026-09-15T15:00:00.000000Z"}}},"pendienteEnvio":{"summary":"PENDIENTE_ENVIO","description":"Admisi\u00f3n sin clave de acceso todav\u00eda. Consulta por data.id.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"liquidacion","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"recepcionIncierta":{"summary":"RECEPCION_INCIERTA","description":"El env\u00edo al SRI qued\u00f3 incierto; conserva la reserva y consulta antes de repetir.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"liquidacion","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"RECEPCION_INCIERTA","cuota":"reserved","error":"fiscal_service_unavailable","createdAt":"2026-09-15T15:00:00.000000Z"}}},"enProcesamiento":{"summary":"EN_PROCESAMIENTO","description":"El SRI a\u00fan procesa el comprobante.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"liquidacion","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"EN_PROCESAMIENTO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"autorizado":{"summary":"AUTORIZADO","description":"Comprobante autorizado; ya puedes descargar XML y RIDE.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"liquidacion","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"AUTORIZADO","cuota":"consumed","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"devueltaCorregible":{"summary":"DEVUELTA_CORREGIBLE","description":"Rechazo corregible: la reserva se liber\u00f3 y puedes corregir el expediente.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"liquidacion","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"DEVUELTA_CORREGIBLE","cuota":"released","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"noAutorizado":{"summary":"NO_AUTORIZADO","description":"Rechazo definitivo; corrige o revisa los mensajes fiscales.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"liquidacion","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"NO_AUTORIZADO","cuota":"released","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}}}}}},"400":{"description":"C\u00f3digos y mensajes:\n\n- **https_required** \u2014 Se requiere HTTPS.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"https_required":{"summary":"https_required: Se requiere HTTPS.","description":"Usa la base HTTPS publicada.","value":{"error":{"code":"https_required","message":"Se requiere HTTPS."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"401":{"description":"C\u00f3digos y mensajes:\n\n- **unauthenticated** \u2014 Credencial inv\u00e1lida.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"unauthenticated":{"summary":"unauthenticated: Credencial inv\u00e1lida.","description":"Revisa Authorization: Bearer y que la clave, cuenta, empresa y ambiente est\u00e9n habilitados.","value":{"error":{"code":"unauthenticated","message":"Credencial inv\u00e1lida."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"402":{"description":"C\u00f3digos y mensajes:\n\n- **subscription_required** \u2014 Activa una suscripci\u00f3n o el uso de saldo prepago para emitir.\n\n- **insufficient_balance** \u2014 Recarga saldo para emitir otro documento.\n\n- **wallet_unavailable** \u2014 No se pudo reservar saldo. Revisa el monedero de tu cuenta.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"subscription_required":{"summary":"subscription_required: Activa una suscripci\u00f3n o el uso de saldo prepago para emitir.","description":"Revisa la suscripci\u00f3n o la habilitaci\u00f3n del saldo prepago en el portal.","value":{"error":{"code":"subscription_required","message":"Activa una suscripci\u00f3n o el uso de saldo prepago para emitir."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"insufficient_balance":{"summary":"insufficient_balance: Recarga saldo para emitir otro documento.","description":"Recarga el monedero antes de reintentar.","value":{"error":{"code":"insufficient_balance","message":"Recarga saldo para emitir otro documento."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"wallet_unavailable":{"summary":"wallet_unavailable: No se pudo reservar saldo. Revisa el monedero de tu cuenta.","description":"Comprueba el monedero y su habilitaci\u00f3n en el portal.","value":{"error":{"code":"wallet_unavailable","message":"No se pudo reservar saldo. Revisa el monedero de tu cuenta."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"403":{"description":"C\u00f3digos y mensajes:\n\n- **insufficient_scope** \u2014 La clave no tiene permiso para esta operaci\u00f3n.\n\n- **issuer_mismatch** \u2014 El RUC no pertenece a esta credencial.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"insufficient_scope":{"summary":"insufficient_scope: La clave no tiene permiso para esta operaci\u00f3n.","description":"Crea o utiliza una clave con el permiso indicado en esta operaci\u00f3n.","value":{"error":{"code":"insufficient_scope","message":"La clave no tiene permiso para esta operaci\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"issuer_mismatch":{"summary":"issuer_mismatch: El RUC no pertenece a esta credencial.","description":"Omite emisorRuc o utiliza el RUC vinculado a la clave.","value":{"error":{"code":"issuer_mismatch","message":"El RUC no pertenece a esta credencial."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"404":{"description":"C\u00f3digos y mensajes:\n\n- **not_found** \u2014 Recurso no encontrado.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"not_found":{"summary":"not_found: Recurso no encontrado.","description":"Comprueba el host, la ruta y que la API est\u00e9 habilitada.","value":{"error":{"code":"not_found","message":"Recurso no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"409":{"description":"C\u00f3digos y mensajes:\n\n- **company_limit** \u2014 La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso.\n\n- **idempotency_conflict** \u2014 La clave ya pertenece a otro contenido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"company_limit":{"summary":"company_limit: La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso.","description":"Revisa el n\u00famero de empresas activas en el portal.","value":{"error":{"code":"company_limit","message":"La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"idempotency_conflict":{"summary":"idempotency_conflict: La clave ya pertenece a otro contenido.","description":"Para reintentar env\u00eda el mismo tipo y contenido. Usa una clave nueva solo para una operaci\u00f3n nueva.","value":{"error":{"code":"idempotency_conflict","message":"La clave ya pertenece a otro contenido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"413":{"description":"C\u00f3digos y mensajes:\n\n- **body_too_large** \u2014 El contenido excede el l\u00edmite permitido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"body_too_large":{"summary":"body_too_large: El contenido excede el l\u00edmite permitido.","description":"Reduce el cuerpo. El l\u00edmite de aplicaci\u00f3n es 2 MiB (2097152 bytes).","value":{"error":{"code":"body_too_large","message":"El contenido excede el l\u00edmite permitido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"415":{"description":"C\u00f3digos y mensajes:\n\n- **json_required** \u2014 Env\u00eda contenido application\/json.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"json_required":{"summary":"json_required: Env\u00eda contenido application\/json.","description":"Env\u00eda Content-Type: application\/json.","value":{"error":{"code":"json_required","message":"Env\u00eda contenido application\/json."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"422":{"description":"C\u00f3digos y mensajes:\n\n- **invalid_json** \u2014 JSON inv\u00e1lido.\n\n- **invalid_json** \u2014 Se requiere un objeto JSON.\n\n- **forbidden_field** \u2014 La configuraci\u00f3n fiscal se administra en el portal.\n\n- **invalid_request** \u2014 Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres.\n\n- **invalid_emission_date** \u2014 La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente.\n\n- **invalid_document** \u2014 El servicio fiscal rechaz\u00f3 la estructura o los datos del documento.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"invalid_json":{"summary":"invalid_json: JSON inv\u00e1lido.","description":"Revisa la sintaxis JSON y el l\u00edmite de 64 niveles de anidaci\u00f3n.","value":{"error":{"code":"invalid_json","message":"JSON inv\u00e1lido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_json_2":{"summary":"invalid_json: Se requiere un objeto JSON.","description":"El cuerpo debe ser un objeto JSON con al menos una propiedad.","value":{"error":{"code":"invalid_json","message":"Se requiere un objeto JSON."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"forbidden_field":{"summary":"forbidden_field: La configuraci\u00f3n fiscal se administra en el portal.","description":"Omite ambiente, environment, secuencial, codigoNumerico y credenciales de firma; administra esa configuraci\u00f3n en el portal.","value":{"error":{"code":"forbidden_field","message":"La configuraci\u00f3n fiscal se administra en el portal."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_request":{"summary":"invalid_request: Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres.","description":"Usa un tipo documentado y una Idempotency-Key de 8 a 128 caracteres.","value":{"error":{"code":"invalid_request","message":"Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_emission_date":{"summary":"invalid_emission_date: La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente.","description":"Omite fechaEmision en la emisi\u00f3n nueva. Conserva el contenido original en reintentos, tambi\u00e9n despu\u00e9s de medianoche.","value":{"error":{"code":"invalid_emission_date","message":"La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_document":{"summary":"invalid_document: El servicio fiscal rechaz\u00f3 la estructura o los datos del documento.","description":"Revisa el esquema de entrada. El listado puede contener el comprobante en ERROR_VALIDACION y sin clave de acceso.","value":{"error":{"code":"invalid_document","message":"El servicio fiscal rechaz\u00f3 la estructura o los datos del documento."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"429":{"description":"C\u00f3digos y mensajes:\n\n- **rate_limited** \u2014 Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.\n\n- **sandbox_limit** \u2014 Se alcanz\u00f3 el l\u00edmite diario de pruebas.\n\n- **quota_exhausted** \u2014 El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi.\n\n- **quota_exhausted** \u2014 La cuota de documentos est\u00e1 consumida o reservada.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Retry-After":{"description":"Segundos reales de espera m\u00ednima para rate_limited. Puede faltar en l\u00edmites de cupo o pruebas; 60 segundos no garantiza que el cupo o el l\u00edmite diario se hayan renovado.","schema":{"type":"integer","minimum":1,"example":22}},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"rate_limited":{"summary":"rate_limited: Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.","description":"L\u00edmite por clave, cuenta o capacidad del servicio. Emisi\u00f3n, consulta y descarga tienen cupos independientes y el plan puede ampliar el de la cuenta. Espera el Retry-After real antes de reintentar.","value":{"error":{"code":"rate_limited","message":"Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"sandbox_limit":{"summary":"sandbox_limit: Se alcanz\u00f3 el l\u00edmite diario de pruebas.","description":"Espera la siguiente ventana diaria UTC. Retry-After: 60 no significa que el l\u00edmite diario se reinicie en un minuto.","value":{"error":{"code":"sandbox_limit","message":"Se alcanz\u00f3 el l\u00edmite diario de pruebas."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_exhausted":{"summary":"quota_exhausted: El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi.","description":"Solicita ampliaci\u00f3n o revisa las reservas del acceso demo.","value":{"error":{"code":"quota_exhausted","message":"El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_exhausted_2":{"summary":"quota_exhausted: La cuota de documentos est\u00e1 consumida o reservada.","description":"Revisa cupo, reservas y uso de saldo prepago. Esperar 60 segundos no garantiza capacidad disponible.","value":{"error":{"code":"quota_exhausted","message":"La cuota de documentos est\u00e1 consumida o reservada."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"503":{"description":"C\u00f3digos y mensajes:\n\n- **request_failed** \u2014 No se pudo completar la solicitud.\n\n- **service_unavailable** \u2014 No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.\n\n- **quota_unavailable** \u2014 No se pudo resolver el cupo mensual. Contacta a soporte.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed: No se pudo completar la solicitud.","description":"Consulta el comprobante antes de reintentar. Reutiliza Idempotency-Key y el cuerpo original; guarda requestId para soporte.","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"service_unavailable":{"summary":"service_unavailable: No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.","description":"La operaci\u00f3n puede haberse admitido. Consulta el comprobante antes de reintentar con la misma Idempotency-Key y contenido.","value":{"error":{"code":"service_unavailable","message":"No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_unavailable":{"summary":"quota_unavailable: No se pudo resolver el cupo mensual. Contacta a soporte.","description":"Contacta a soporte con requestId; conserva la identidad de la operaci\u00f3n.","value":{"error":{"code":"quota_unavailable","message":"No se pudo resolver el cupo mensual. Contacta a soporte."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"default":{"description":"request_failed: ruta desconocida (404), m\u00e9todo no permitido (405) o servicio no disponible (503). Guarda requestId para soporte.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}}},"tags":["Emisi\u00f3n"]}},"\/comprobantes\/nota-credito":{"post":{"operationId":"emitir_nota_credito","summary":"Emitir una nota de cr\u00e9dito 1.1.0","description":"Requiere documents:write. La emisi\u00f3n es as\u00edncrona: consulta el estado con el id recibido hasta obtener el resultado. En producci\u00f3n necesitas cupo de suscripci\u00f3n o saldo prepago autorizado. Solo los comprobantes AUTORIZADO consumen documentos; los reintentos con la misma Idempotency-Key no generan cargos adicionales. Requiere un original autorizado emitido en Ruxi para la misma empresa y ambiente (factura o liquidaci\u00f3n). Consulta ajusteRuxi para devoluciones expl\u00edcitas y descuentos.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128,"example":"pedido-1001-v1"},"description":"Identidad estable de la operaci\u00f3n, independiente de la clave API. Reutiliza exactamente el mismo contenido al reintentar.","example":"pedido-1001-v1"}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/CreateNotaCreditoDto"},"examples":{"nota-credito":{"summary":"M\u00ednimo requerido","description":"Solo los campos obligatorios; Ruxi calcula fecha, secuenciales y totales cuando el tipo lo permite.","value":{"estab":"001","ptoEmi":"001","comprador":{"tipoIdentificacion":"04","identificacion":"1790011674001","razonSocial":"Cliente de ejemplo S.A."},"infoNotaCredito":{"codDocModificado":"01","numDocModificado":"001-001-000000001","fechaEmisionDocSustento":"10\/09\/2026","totalSinImpuestos":100,"totalConImpuestos":{"totalImpuesto":[{"codigo":"2","codigoPorcentaje":"2","baseImponible":100,"valor":12}]},"valorModificacion":112,"motivo":"Devoluci\u00f3n de ejemplo"},"detalles":[{"descripcion":"Servicio de ejemplo","cantidad":1,"precioUnitario":100,"precioTotalSinImpuesto":100,"impuestos":[{"codigo":"2","codigoPorcentaje":"2","tarifa":12,"baseImponible":100,"valor":12}]}]}},"nota-credito-completo":{"summary":"Completo","description":"Incluye campos opcionales frecuentes. Los valores son ficticios y deben reemplazarse por los datos fiscales reales.","value":{"estab":"001","ptoEmi":"001","fechaEmision":"15\/09\/2026","infoAdicional":[{"nombre":"Referencia","valor":"EJEMPLO-001"}],"comprador":{"tipoIdentificacion":"04","identificacion":"1790011674001","razonSocial":"Cliente de ejemplo S.A.","direccion":"Av. Ejemplo 123 y Calle Falsa","email":"compras@example.test"},"infoNotaCredito":{"dirEstablecimiento":"Av. Ejemplo 123","codDocModificado":"01","numDocModificado":"001-001-000000001","fechaEmisionDocSustento":"10\/09\/2026","totalSinImpuestos":100,"compensaciones":[{"codigo":"2","tarifa":12,"valor":12}],"totalConImpuestos":{"totalImpuesto":[{"codigo":"2","codigoPorcentaje":"2","baseImponible":100,"valor":12,"valorDevolucionIva":0}]},"valorModificacion":112,"moneda":"DOLAR","motivo":"Devoluci\u00f3n de ejemplo"},"detalles":[{"codigoInterno":"SERV-001","codigoAdicional":"SERV-001-A","descripcion":"Servicio de ejemplo","cantidad":1,"precioUnitario":100,"descuento":0,"precioTotalSinImpuesto":100,"impuestos":[{"codigo":"2","codigoPorcentaje":"2","tarifa":12,"baseImponible":100,"valor":12}],"detallesAdicionales":[{"nombre":"Referencia","valor":"EJEMPLO-001"}]}],"maquinaFiscal":{"marca":"Marca de ejemplo","modelo":"Modelo 1","serie":"001"},"ajusteRuxi":{"mode":"partial","lines":[{"line_id":"line-1","mode":"return","quantity":1}]}}}}}}},"responses":{"202":{"description":"Solicitud admitida o repetida sin crear otro expediente.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiDocumentEnvelope"},"examples":{"pendiente":{"summary":"Comprobante pendiente","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"nota-credito","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"seguimiento":{"summary":"Servicio no disponible; cupo reservado","description":"Consulta por data.id. Reutiliza Idempotency-Key y el cuerpo original al reintentar.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"nota-credito","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":"fiscal_service_unavailable","createdAt":"2026-09-15T15:00:00.000000Z"}}},"pendienteEnvio":{"summary":"PENDIENTE_ENVIO","description":"Admisi\u00f3n sin clave de acceso todav\u00eda. Consulta por data.id.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"nota-credito","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"recepcionIncierta":{"summary":"RECEPCION_INCIERTA","description":"El env\u00edo al SRI qued\u00f3 incierto; conserva la reserva y consulta antes de repetir.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"nota-credito","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"RECEPCION_INCIERTA","cuota":"reserved","error":"fiscal_service_unavailable","createdAt":"2026-09-15T15:00:00.000000Z"}}},"enProcesamiento":{"summary":"EN_PROCESAMIENTO","description":"El SRI a\u00fan procesa el comprobante.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"nota-credito","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"EN_PROCESAMIENTO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"autorizado":{"summary":"AUTORIZADO","description":"Comprobante autorizado; ya puedes descargar XML y RIDE.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"nota-credito","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"AUTORIZADO","cuota":"consumed","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"devueltaCorregible":{"summary":"DEVUELTA_CORREGIBLE","description":"Rechazo corregible: la reserva se liber\u00f3 y puedes corregir el expediente.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"nota-credito","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"DEVUELTA_CORREGIBLE","cuota":"released","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"noAutorizado":{"summary":"NO_AUTORIZADO","description":"Rechazo definitivo; corrige o revisa los mensajes fiscales.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"nota-credito","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"NO_AUTORIZADO","cuota":"released","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}}}}}},"400":{"description":"C\u00f3digos y mensajes:\n\n- **https_required** \u2014 Se requiere HTTPS.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"https_required":{"summary":"https_required: Se requiere HTTPS.","description":"Usa la base HTTPS publicada.","value":{"error":{"code":"https_required","message":"Se requiere HTTPS."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"401":{"description":"C\u00f3digos y mensajes:\n\n- **unauthenticated** \u2014 Credencial inv\u00e1lida.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"unauthenticated":{"summary":"unauthenticated: Credencial inv\u00e1lida.","description":"Revisa Authorization: Bearer y que la clave, cuenta, empresa y ambiente est\u00e9n habilitados.","value":{"error":{"code":"unauthenticated","message":"Credencial inv\u00e1lida."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"402":{"description":"C\u00f3digos y mensajes:\n\n- **subscription_required** \u2014 Activa una suscripci\u00f3n o el uso de saldo prepago para emitir.\n\n- **insufficient_balance** \u2014 Recarga saldo para emitir otro documento.\n\n- **wallet_unavailable** \u2014 No se pudo reservar saldo. Revisa el monedero de tu cuenta.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"subscription_required":{"summary":"subscription_required: Activa una suscripci\u00f3n o el uso de saldo prepago para emitir.","description":"Revisa la suscripci\u00f3n o la habilitaci\u00f3n del saldo prepago en el portal.","value":{"error":{"code":"subscription_required","message":"Activa una suscripci\u00f3n o el uso de saldo prepago para emitir."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"insufficient_balance":{"summary":"insufficient_balance: Recarga saldo para emitir otro documento.","description":"Recarga el monedero antes de reintentar.","value":{"error":{"code":"insufficient_balance","message":"Recarga saldo para emitir otro documento."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"wallet_unavailable":{"summary":"wallet_unavailable: No se pudo reservar saldo. Revisa el monedero de tu cuenta.","description":"Comprueba el monedero y su habilitaci\u00f3n en el portal.","value":{"error":{"code":"wallet_unavailable","message":"No se pudo reservar saldo. Revisa el monedero de tu cuenta."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"403":{"description":"C\u00f3digos y mensajes:\n\n- **insufficient_scope** \u2014 La clave no tiene permiso para esta operaci\u00f3n.\n\n- **issuer_mismatch** \u2014 El RUC no pertenece a esta credencial.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"insufficient_scope":{"summary":"insufficient_scope: La clave no tiene permiso para esta operaci\u00f3n.","description":"Crea o utiliza una clave con el permiso indicado en esta operaci\u00f3n.","value":{"error":{"code":"insufficient_scope","message":"La clave no tiene permiso para esta operaci\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"issuer_mismatch":{"summary":"issuer_mismatch: El RUC no pertenece a esta credencial.","description":"Omite emisorRuc o utiliza el RUC vinculado a la clave.","value":{"error":{"code":"issuer_mismatch","message":"El RUC no pertenece a esta credencial."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"404":{"description":"C\u00f3digos y mensajes:\n\n- **not_found** \u2014 Recurso no encontrado.\n\n- **original_not_found** \u2014 El original no pertenece a esta empresa y ambiente.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"not_found":{"summary":"not_found: Recurso no encontrado.","description":"Comprueba el host, la ruta y que la API est\u00e9 habilitada.","value":{"error":{"code":"not_found","message":"Recurso no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"original_not_found":{"summary":"original_not_found: El original no pertenece a esta empresa y ambiente.","description":"Usa un original de la misma empresa y ambiente que la clave API.","value":{"error":{"code":"original_not_found","message":"El original no pertenece a esta empresa y ambiente."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"409":{"description":"C\u00f3digos y mensajes:\n\n- **company_limit** \u2014 La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso.\n\n- **idempotency_conflict** \u2014 La clave ya pertenece a otro contenido.\n\n- **original_requires_review** \u2014 No se puede ajustar autom\u00e1ticamente este original. Solicita revisi\u00f3n.\n\n- **original_annulment_declared** \u2014 El original tiene una anulaci\u00f3n declarada. Revisa el tr\u00e1mite antes de emitir una nota.\n\n- **credit_history_requires_review** \u2014 Hay una nota anterior sin una relaci\u00f3n fiable. Solicita revisi\u00f3n antes de otro ajuste.\n\n- **credit_balance_changed** \u2014 El ajuste supera el saldo o las cantidades disponibles. Vuelve a revisar la nota.\n\n- **credit_balance_exhausted** \u2014 El original no tiene saldo ajustable.\n\n- **adjustment_conflict** \u2014 La operaci\u00f3n ya tiene otro ajuste reservado.\n\n- **credit_review_required** \u2014 Revisa el ajuste: debe conservar el original y su saldo actual. Los descuentos necesitan intenci\u00f3n expl\u00edcita.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"company_limit":{"summary":"company_limit: La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso.","description":"Revisa el n\u00famero de empresas activas en el portal.","value":{"error":{"code":"company_limit","message":"La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"idempotency_conflict":{"summary":"idempotency_conflict: La clave ya pertenece a otro contenido.","description":"Para reintentar env\u00eda el mismo tipo y contenido. Usa una clave nueva solo para una operaci\u00f3n nueva.","value":{"error":{"code":"idempotency_conflict","message":"La clave ya pertenece a otro contenido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"original_requires_review":{"summary":"original_requires_review: No se puede ajustar autom\u00e1ticamente este original. Solicita revisi\u00f3n.","description":"Solicita revisi\u00f3n del original antes de emitir otra nota.","value":{"error":{"code":"original_requires_review","message":"No se puede ajustar autom\u00e1ticamente este original. Solicita revisi\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"original_annulment_declared":{"summary":"original_annulment_declared: El original tiene una anulaci\u00f3n declarada. Revisa el tr\u00e1mite antes de emitir una nota.","description":"Revisa el tr\u00e1mite de anulaci\u00f3n en el portal.","value":{"error":{"code":"original_annulment_declared","message":"El original tiene una anulaci\u00f3n declarada. Revisa el tr\u00e1mite antes de emitir una nota."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"credit_history_requires_review":{"summary":"credit_history_requires_review: Hay una nota anterior sin una relaci\u00f3n fiable. Solicita revisi\u00f3n antes de otro ajuste.","description":"Solicita revisi\u00f3n del historial de ajustes.","value":{"error":{"code":"credit_history_requires_review","message":"Hay una nota anterior sin una relaci\u00f3n fiable. Solicita revisi\u00f3n antes de otro ajuste."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"credit_balance_changed":{"summary":"credit_balance_changed: El ajuste supera el saldo o las cantidades disponibles. Vuelve a revisar la nota.","description":"Recalcula el ajuste con el saldo disponible, incluyendo reservas de notas pendientes.","value":{"error":{"code":"credit_balance_changed","message":"El ajuste supera el saldo o las cantidades disponibles. Vuelve a revisar la nota."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"credit_balance_exhausted":{"summary":"credit_balance_exhausted: El original no tiene saldo ajustable.","description":"No emitas otra nota sobre un saldo agotado.","value":{"error":{"code":"credit_balance_exhausted","message":"El original no tiene saldo ajustable."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"adjustment_conflict":{"summary":"adjustment_conflict: La operaci\u00f3n ya tiene otro ajuste reservado.","description":"Revisa el ajuste existente antes de cambiarlo.","value":{"error":{"code":"adjustment_conflict","message":"La operaci\u00f3n ya tiene otro ajuste reservado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"credit_review_required":{"summary":"credit_review_required: Revisa el ajuste: debe conservar el original y su saldo actual. Los descuentos necesitan intenci\u00f3n expl\u00edcita.","description":"Comprueba comprador, documento original, l\u00edneas, impuestos y totales. Los descuentos requieren ajusteRuxi.","value":{"error":{"code":"credit_review_required","message":"Revisa el ajuste: debe conservar el original y su saldo actual. Los descuentos necesitan intenci\u00f3n expl\u00edcita."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"413":{"description":"C\u00f3digos y mensajes:\n\n- **body_too_large** \u2014 El contenido excede el l\u00edmite permitido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"body_too_large":{"summary":"body_too_large: El contenido excede el l\u00edmite permitido.","description":"Reduce el cuerpo. El l\u00edmite de aplicaci\u00f3n es 2 MiB (2097152 bytes).","value":{"error":{"code":"body_too_large","message":"El contenido excede el l\u00edmite permitido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"415":{"description":"C\u00f3digos y mensajes:\n\n- **json_required** \u2014 Env\u00eda contenido application\/json.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"json_required":{"summary":"json_required: Env\u00eda contenido application\/json.","description":"Env\u00eda Content-Type: application\/json.","value":{"error":{"code":"json_required","message":"Env\u00eda contenido application\/json."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"422":{"description":"C\u00f3digos y mensajes:\n\n- **invalid_json** \u2014 JSON inv\u00e1lido.\n\n- **invalid_json** \u2014 Se requiere un objeto JSON.\n\n- **forbidden_field** \u2014 La configuraci\u00f3n fiscal se administra en el portal.\n\n- **invalid_request** \u2014 Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres.\n\n- **invalid_emission_date** \u2014 La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente.\n\n- **invalid_document** \u2014 El servicio fiscal rechaz\u00f3 la estructura o los datos del documento.\n\n- **original_not_found** \u2014 La nota debe referenciar un original autorizado emitido en Ruxi.\n\n- **original_not_found** \u2014 No se encontr\u00f3 un \u00fanico original autorizado en esta empresa y ambiente.\n\n- **original_not_eligible** \u2014 Selecciona un comprobante de venta autorizado de esta cuenta.\n\n- **invalid_credit_intent** \u2014 Completa el motivo y una intenci\u00f3n de ajuste v\u00e1lida para las l\u00edneas originales.\n\n- **original_line_not_found** \u2014 La l\u00ednea no pertenece al original.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"invalid_json":{"summary":"invalid_json: JSON inv\u00e1lido.","description":"Revisa la sintaxis JSON y el l\u00edmite de 64 niveles de anidaci\u00f3n.","value":{"error":{"code":"invalid_json","message":"JSON inv\u00e1lido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_json_2":{"summary":"invalid_json: Se requiere un objeto JSON.","description":"El cuerpo debe ser un objeto JSON con al menos una propiedad.","value":{"error":{"code":"invalid_json","message":"Se requiere un objeto JSON."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"forbidden_field":{"summary":"forbidden_field: La configuraci\u00f3n fiscal se administra en el portal.","description":"Omite ambiente, environment, secuencial, codigoNumerico y credenciales de firma; administra esa configuraci\u00f3n en el portal.","value":{"error":{"code":"forbidden_field","message":"La configuraci\u00f3n fiscal se administra en el portal."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_request":{"summary":"invalid_request: Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres.","description":"Usa un tipo documentado y una Idempotency-Key de 8 a 128 caracteres.","value":{"error":{"code":"invalid_request","message":"Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_emission_date":{"summary":"invalid_emission_date: La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente.","description":"Omite fechaEmision en la emisi\u00f3n nueva. Conserva el contenido original en reintentos, tambi\u00e9n despu\u00e9s de medianoche.","value":{"error":{"code":"invalid_emission_date","message":"La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_document":{"summary":"invalid_document: El servicio fiscal rechaz\u00f3 la estructura o los datos del documento.","description":"Revisa el esquema de entrada. El listado puede contener el comprobante en ERROR_VALIDACION y sin clave de acceso.","value":{"error":{"code":"invalid_document","message":"El servicio fiscal rechaz\u00f3 la estructura o los datos del documento."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"original_not_found":{"summary":"original_not_found: La nota debe referenciar un original autorizado emitido en Ruxi.","description":"Comprueba codDocModificado (01 o 03) y numDocModificado con formato 001-001-000000001.","value":{"error":{"code":"original_not_found","message":"La nota debe referenciar un original autorizado emitido en Ruxi."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"original_not_found_2":{"summary":"original_not_found: No se encontr\u00f3 un \u00fanico original autorizado en esta empresa y ambiente.","description":"Referencia una factura o liquidaci\u00f3n autorizada de la misma empresa y ambiente.","value":{"error":{"code":"original_not_found","message":"No se encontr\u00f3 un \u00fanico original autorizado en esta empresa y ambiente."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"original_not_eligible":{"summary":"original_not_eligible: Selecciona un comprobante de venta autorizado de esta cuenta.","description":"El original debe ser una factura o liquidaci\u00f3n autorizada con clave de acceso.","value":{"error":{"code":"original_not_eligible","message":"Selecciona un comprobante de venta autorizado de esta cuenta."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_credit_intent":{"summary":"invalid_credit_intent: Completa el motivo y una intenci\u00f3n de ajuste v\u00e1lida para las l\u00edneas originales.","description":"Revisa motivo y ajusteRuxi seg\u00fan su esquema.","value":{"error":{"code":"invalid_credit_intent","message":"Completa el motivo y una intenci\u00f3n de ajuste v\u00e1lida para las l\u00edneas originales."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"original_line_not_found":{"summary":"original_line_not_found: La l\u00ednea no pertenece al original.","description":"Usa el identificador de una l\u00ednea del documento original.","value":{"error":{"code":"original_line_not_found","message":"La l\u00ednea no pertenece al original."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"429":{"description":"C\u00f3digos y mensajes:\n\n- **rate_limited** \u2014 Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.\n\n- **sandbox_limit** \u2014 Se alcanz\u00f3 el l\u00edmite diario de pruebas.\n\n- **quota_exhausted** \u2014 El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi.\n\n- **quota_exhausted** \u2014 La cuota de documentos est\u00e1 consumida o reservada.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Retry-After":{"description":"Segundos reales de espera m\u00ednima para rate_limited. Puede faltar en l\u00edmites de cupo o pruebas; 60 segundos no garantiza que el cupo o el l\u00edmite diario se hayan renovado.","schema":{"type":"integer","minimum":1,"example":22}},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"rate_limited":{"summary":"rate_limited: Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.","description":"L\u00edmite por clave, cuenta o capacidad del servicio. Emisi\u00f3n, consulta y descarga tienen cupos independientes y el plan puede ampliar el de la cuenta. Espera el Retry-After real antes de reintentar.","value":{"error":{"code":"rate_limited","message":"Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"sandbox_limit":{"summary":"sandbox_limit: Se alcanz\u00f3 el l\u00edmite diario de pruebas.","description":"Espera la siguiente ventana diaria UTC. Retry-After: 60 no significa que el l\u00edmite diario se reinicie en un minuto.","value":{"error":{"code":"sandbox_limit","message":"Se alcanz\u00f3 el l\u00edmite diario de pruebas."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_exhausted":{"summary":"quota_exhausted: El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi.","description":"Solicita ampliaci\u00f3n o revisa las reservas del acceso demo.","value":{"error":{"code":"quota_exhausted","message":"El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_exhausted_2":{"summary":"quota_exhausted: La cuota de documentos est\u00e1 consumida o reservada.","description":"Revisa cupo, reservas y uso de saldo prepago. Esperar 60 segundos no garantiza capacidad disponible.","value":{"error":{"code":"quota_exhausted","message":"La cuota de documentos est\u00e1 consumida o reservada."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"503":{"description":"C\u00f3digos y mensajes:\n\n- **request_failed** \u2014 No se pudo completar la solicitud.\n\n- **service_unavailable** \u2014 No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.\n\n- **quota_unavailable** \u2014 No se pudo resolver el cupo mensual. Contacta a soporte.\n\n- **backend_upgrade_required** \u2014 El servicio fiscal necesita actualizaci\u00f3n para preparar este comprobante.\n\n- **backend_upgrade_required** \u2014 La preparaci\u00f3n no incluye un desglose fiable.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed: No se pudo completar la solicitud.","description":"Consulta el comprobante antes de reintentar. Reutiliza Idempotency-Key y el cuerpo original; guarda requestId para soporte.","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"service_unavailable":{"summary":"service_unavailable: No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.","description":"La operaci\u00f3n puede haberse admitido. Consulta el comprobante antes de reintentar con la misma Idempotency-Key y contenido.","value":{"error":{"code":"service_unavailable","message":"No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_unavailable":{"summary":"quota_unavailable: No se pudo resolver el cupo mensual. Contacta a soporte.","description":"Contacta a soporte con requestId; conserva la identidad de la operaci\u00f3n.","value":{"error":{"code":"quota_unavailable","message":"No se pudo resolver el cupo mensual. Contacta a soporte."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"backend_upgrade_required":{"summary":"backend_upgrade_required: El servicio fiscal necesita actualizaci\u00f3n para preparar este comprobante.","description":"Contacta a soporte antes de volver a preparar la nota.","value":{"error":{"code":"backend_upgrade_required","message":"El servicio fiscal necesita actualizaci\u00f3n para preparar este comprobante."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"backend_upgrade_required_2":{"summary":"backend_upgrade_required: La preparaci\u00f3n no incluye un desglose fiable.","description":"Contacta a soporte con requestId.","value":{"error":{"code":"backend_upgrade_required","message":"La preparaci\u00f3n no incluye un desglose fiable."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"default":{"description":"request_failed: ruta desconocida (404), m\u00e9todo no permitido (405) o servicio no disponible (503). Guarda requestId para soporte.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}}},"tags":["Emisi\u00f3n"]}},"\/comprobantes\/nota-debito":{"post":{"operationId":"emitir_nota_debito","summary":"Emitir una nota de d\u00e9bito 1.0.0","description":"Requiere documents:write. La emisi\u00f3n es as\u00edncrona: consulta el estado con el id recibido hasta obtener el resultado. En producci\u00f3n necesitas cupo de suscripci\u00f3n o saldo prepago autorizado. Solo los comprobantes AUTORIZADO consumen documentos; los reintentos con la misma Idempotency-Key no generan cargos adicionales.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128,"example":"pedido-1001-v1"},"description":"Identidad estable de la operaci\u00f3n, independiente de la clave API. Reutiliza exactamente el mismo contenido al reintentar.","example":"pedido-1001-v1"}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/CreateNotaDebitoDto"},"examples":{"nota-debito":{"summary":"M\u00ednimo requerido","description":"Solo los campos obligatorios; Ruxi calcula fecha, secuenciales y totales cuando el tipo lo permite.","value":{"estab":"001","ptoEmi":"001","comprador":{"tipoIdentificacion":"04","identificacion":"1790011674001","razonSocial":"Cliente de ejemplo S.A."},"infoNotaDebito":{"codDocModificado":"01","numDocModificado":"001-001-000000001","fechaEmisionDocSustento":"10\/09\/2026","totalSinImpuestos":100,"impuestos":[{"codigo":"2","codigoPorcentaje":"2","tarifa":12,"baseImponible":100,"valor":12}],"valorTotal":100,"pagos":[{"formaPago":"01","total":112}]},"motivos":[{"razon":"EJEMPLO razon","valor":12}]}},"nota-debito-completo":{"summary":"Completo","description":"Incluye campos opcionales frecuentes. Los valores son ficticios y deben reemplazarse por los datos fiscales reales.","value":{"estab":"001","ptoEmi":"001","fechaEmision":"15\/09\/2026","infoAdicional":[{"nombre":"Referencia","valor":"EJEMPLO-001"}],"comprador":{"tipoIdentificacion":"04","identificacion":"1790011674001","razonSocial":"Cliente de ejemplo S.A.","direccion":"Av. Ejemplo 123 y Calle Falsa","email":"compras@example.test"},"infoNotaDebito":{"dirEstablecimiento":"Av. Ejemplo 123","codDocModificado":"01","numDocModificado":"001-001-000000001","fechaEmisionDocSustento":"10\/09\/2026","totalSinImpuestos":100,"impuestos":[{"codigo":"2","codigoPorcentaje":"2","tarifa":12,"baseImponible":100,"valor":12,"valorDevolucionIva":0}],"compensaciones":[{"codigo":"2","tarifa":12,"valor":12}],"valorTotal":100,"pagos":[{"formaPago":"01","total":112,"plazo":30,"unidadTiempo":"dias"}]},"motivos":[{"razon":"EJEMPLO razon","valor":12}],"maquinaFiscal":{"marca":"Marca de ejemplo","modelo":"Modelo 1","serie":"001"}}}}}}},"responses":{"202":{"description":"Solicitud admitida o repetida sin crear otro expediente.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiDocumentEnvelope"},"examples":{"pendiente":{"summary":"Comprobante pendiente","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"nota-debito","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"seguimiento":{"summary":"Servicio no disponible; cupo reservado","description":"Consulta por data.id. Reutiliza Idempotency-Key y el cuerpo original al reintentar.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"nota-debito","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":"fiscal_service_unavailable","createdAt":"2026-09-15T15:00:00.000000Z"}}},"pendienteEnvio":{"summary":"PENDIENTE_ENVIO","description":"Admisi\u00f3n sin clave de acceso todav\u00eda. Consulta por data.id.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"nota-debito","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"recepcionIncierta":{"summary":"RECEPCION_INCIERTA","description":"El env\u00edo al SRI qued\u00f3 incierto; conserva la reserva y consulta antes de repetir.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"nota-debito","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"RECEPCION_INCIERTA","cuota":"reserved","error":"fiscal_service_unavailable","createdAt":"2026-09-15T15:00:00.000000Z"}}},"enProcesamiento":{"summary":"EN_PROCESAMIENTO","description":"El SRI a\u00fan procesa el comprobante.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"nota-debito","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"EN_PROCESAMIENTO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"autorizado":{"summary":"AUTORIZADO","description":"Comprobante autorizado; ya puedes descargar XML y RIDE.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"nota-debito","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"AUTORIZADO","cuota":"consumed","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"devueltaCorregible":{"summary":"DEVUELTA_CORREGIBLE","description":"Rechazo corregible: la reserva se liber\u00f3 y puedes corregir el expediente.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"nota-debito","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"DEVUELTA_CORREGIBLE","cuota":"released","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"noAutorizado":{"summary":"NO_AUTORIZADO","description":"Rechazo definitivo; corrige o revisa los mensajes fiscales.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"nota-debito","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"NO_AUTORIZADO","cuota":"released","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}}}}}},"400":{"description":"C\u00f3digos y mensajes:\n\n- **https_required** \u2014 Se requiere HTTPS.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"https_required":{"summary":"https_required: Se requiere HTTPS.","description":"Usa la base HTTPS publicada.","value":{"error":{"code":"https_required","message":"Se requiere HTTPS."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"401":{"description":"C\u00f3digos y mensajes:\n\n- **unauthenticated** \u2014 Credencial inv\u00e1lida.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"unauthenticated":{"summary":"unauthenticated: Credencial inv\u00e1lida.","description":"Revisa Authorization: Bearer y que la clave, cuenta, empresa y ambiente est\u00e9n habilitados.","value":{"error":{"code":"unauthenticated","message":"Credencial inv\u00e1lida."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"402":{"description":"C\u00f3digos y mensajes:\n\n- **subscription_required** \u2014 Activa una suscripci\u00f3n o el uso de saldo prepago para emitir.\n\n- **insufficient_balance** \u2014 Recarga saldo para emitir otro documento.\n\n- **wallet_unavailable** \u2014 No se pudo reservar saldo. Revisa el monedero de tu cuenta.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"subscription_required":{"summary":"subscription_required: Activa una suscripci\u00f3n o el uso de saldo prepago para emitir.","description":"Revisa la suscripci\u00f3n o la habilitaci\u00f3n del saldo prepago en el portal.","value":{"error":{"code":"subscription_required","message":"Activa una suscripci\u00f3n o el uso de saldo prepago para emitir."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"insufficient_balance":{"summary":"insufficient_balance: Recarga saldo para emitir otro documento.","description":"Recarga el monedero antes de reintentar.","value":{"error":{"code":"insufficient_balance","message":"Recarga saldo para emitir otro documento."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"wallet_unavailable":{"summary":"wallet_unavailable: No se pudo reservar saldo. Revisa el monedero de tu cuenta.","description":"Comprueba el monedero y su habilitaci\u00f3n en el portal.","value":{"error":{"code":"wallet_unavailable","message":"No se pudo reservar saldo. Revisa el monedero de tu cuenta."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"403":{"description":"C\u00f3digos y mensajes:\n\n- **insufficient_scope** \u2014 La clave no tiene permiso para esta operaci\u00f3n.\n\n- **issuer_mismatch** \u2014 El RUC no pertenece a esta credencial.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"insufficient_scope":{"summary":"insufficient_scope: La clave no tiene permiso para esta operaci\u00f3n.","description":"Crea o utiliza una clave con el permiso indicado en esta operaci\u00f3n.","value":{"error":{"code":"insufficient_scope","message":"La clave no tiene permiso para esta operaci\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"issuer_mismatch":{"summary":"issuer_mismatch: El RUC no pertenece a esta credencial.","description":"Omite emisorRuc o utiliza el RUC vinculado a la clave.","value":{"error":{"code":"issuer_mismatch","message":"El RUC no pertenece a esta credencial."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"404":{"description":"C\u00f3digos y mensajes:\n\n- **not_found** \u2014 Recurso no encontrado.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"not_found":{"summary":"not_found: Recurso no encontrado.","description":"Comprueba el host, la ruta y que la API est\u00e9 habilitada.","value":{"error":{"code":"not_found","message":"Recurso no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"409":{"description":"C\u00f3digos y mensajes:\n\n- **company_limit** \u2014 La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso.\n\n- **idempotency_conflict** \u2014 La clave ya pertenece a otro contenido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"company_limit":{"summary":"company_limit: La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso.","description":"Revisa el n\u00famero de empresas activas en el portal.","value":{"error":{"code":"company_limit","message":"La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"idempotency_conflict":{"summary":"idempotency_conflict: La clave ya pertenece a otro contenido.","description":"Para reintentar env\u00eda el mismo tipo y contenido. Usa una clave nueva solo para una operaci\u00f3n nueva.","value":{"error":{"code":"idempotency_conflict","message":"La clave ya pertenece a otro contenido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"413":{"description":"C\u00f3digos y mensajes:\n\n- **body_too_large** \u2014 El contenido excede el l\u00edmite permitido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"body_too_large":{"summary":"body_too_large: El contenido excede el l\u00edmite permitido.","description":"Reduce el cuerpo. El l\u00edmite de aplicaci\u00f3n es 2 MiB (2097152 bytes).","value":{"error":{"code":"body_too_large","message":"El contenido excede el l\u00edmite permitido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"415":{"description":"C\u00f3digos y mensajes:\n\n- **json_required** \u2014 Env\u00eda contenido application\/json.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"json_required":{"summary":"json_required: Env\u00eda contenido application\/json.","description":"Env\u00eda Content-Type: application\/json.","value":{"error":{"code":"json_required","message":"Env\u00eda contenido application\/json."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"422":{"description":"C\u00f3digos y mensajes:\n\n- **invalid_json** \u2014 JSON inv\u00e1lido.\n\n- **invalid_json** \u2014 Se requiere un objeto JSON.\n\n- **forbidden_field** \u2014 La configuraci\u00f3n fiscal se administra en el portal.\n\n- **invalid_request** \u2014 Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres.\n\n- **invalid_emission_date** \u2014 La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente.\n\n- **invalid_document** \u2014 El servicio fiscal rechaz\u00f3 la estructura o los datos del documento.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"invalid_json":{"summary":"invalid_json: JSON inv\u00e1lido.","description":"Revisa la sintaxis JSON y el l\u00edmite de 64 niveles de anidaci\u00f3n.","value":{"error":{"code":"invalid_json","message":"JSON inv\u00e1lido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_json_2":{"summary":"invalid_json: Se requiere un objeto JSON.","description":"El cuerpo debe ser un objeto JSON con al menos una propiedad.","value":{"error":{"code":"invalid_json","message":"Se requiere un objeto JSON."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"forbidden_field":{"summary":"forbidden_field: La configuraci\u00f3n fiscal se administra en el portal.","description":"Omite ambiente, environment, secuencial, codigoNumerico y credenciales de firma; administra esa configuraci\u00f3n en el portal.","value":{"error":{"code":"forbidden_field","message":"La configuraci\u00f3n fiscal se administra en el portal."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_request":{"summary":"invalid_request: Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres.","description":"Usa un tipo documentado y una Idempotency-Key de 8 a 128 caracteres.","value":{"error":{"code":"invalid_request","message":"Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_emission_date":{"summary":"invalid_emission_date: La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente.","description":"Omite fechaEmision en la emisi\u00f3n nueva. Conserva el contenido original en reintentos, tambi\u00e9n despu\u00e9s de medianoche.","value":{"error":{"code":"invalid_emission_date","message":"La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_document":{"summary":"invalid_document: El servicio fiscal rechaz\u00f3 la estructura o los datos del documento.","description":"Revisa el esquema de entrada. El listado puede contener el comprobante en ERROR_VALIDACION y sin clave de acceso.","value":{"error":{"code":"invalid_document","message":"El servicio fiscal rechaz\u00f3 la estructura o los datos del documento."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"429":{"description":"C\u00f3digos y mensajes:\n\n- **rate_limited** \u2014 Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.\n\n- **sandbox_limit** \u2014 Se alcanz\u00f3 el l\u00edmite diario de pruebas.\n\n- **quota_exhausted** \u2014 El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi.\n\n- **quota_exhausted** \u2014 La cuota de documentos est\u00e1 consumida o reservada.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Retry-After":{"description":"Segundos reales de espera m\u00ednima para rate_limited. Puede faltar en l\u00edmites de cupo o pruebas; 60 segundos no garantiza que el cupo o el l\u00edmite diario se hayan renovado.","schema":{"type":"integer","minimum":1,"example":22}},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"rate_limited":{"summary":"rate_limited: Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.","description":"L\u00edmite por clave, cuenta o capacidad del servicio. Emisi\u00f3n, consulta y descarga tienen cupos independientes y el plan puede ampliar el de la cuenta. Espera el Retry-After real antes de reintentar.","value":{"error":{"code":"rate_limited","message":"Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"sandbox_limit":{"summary":"sandbox_limit: Se alcanz\u00f3 el l\u00edmite diario de pruebas.","description":"Espera la siguiente ventana diaria UTC. Retry-After: 60 no significa que el l\u00edmite diario se reinicie en un minuto.","value":{"error":{"code":"sandbox_limit","message":"Se alcanz\u00f3 el l\u00edmite diario de pruebas."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_exhausted":{"summary":"quota_exhausted: El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi.","description":"Solicita ampliaci\u00f3n o revisa las reservas del acceso demo.","value":{"error":{"code":"quota_exhausted","message":"El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_exhausted_2":{"summary":"quota_exhausted: La cuota de documentos est\u00e1 consumida o reservada.","description":"Revisa cupo, reservas y uso de saldo prepago. Esperar 60 segundos no garantiza capacidad disponible.","value":{"error":{"code":"quota_exhausted","message":"La cuota de documentos est\u00e1 consumida o reservada."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"503":{"description":"C\u00f3digos y mensajes:\n\n- **request_failed** \u2014 No se pudo completar la solicitud.\n\n- **service_unavailable** \u2014 No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.\n\n- **quota_unavailable** \u2014 No se pudo resolver el cupo mensual. Contacta a soporte.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed: No se pudo completar la solicitud.","description":"Consulta el comprobante antes de reintentar. Reutiliza Idempotency-Key y el cuerpo original; guarda requestId para soporte.","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"service_unavailable":{"summary":"service_unavailable: No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.","description":"La operaci\u00f3n puede haberse admitido. Consulta el comprobante antes de reintentar con la misma Idempotency-Key y contenido.","value":{"error":{"code":"service_unavailable","message":"No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_unavailable":{"summary":"quota_unavailable: No se pudo resolver el cupo mensual. Contacta a soporte.","description":"Contacta a soporte con requestId; conserva la identidad de la operaci\u00f3n.","value":{"error":{"code":"quota_unavailable","message":"No se pudo resolver el cupo mensual. Contacta a soporte."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"default":{"description":"request_failed: ruta desconocida (404), m\u00e9todo no permitido (405) o servicio no disponible (503). Guarda requestId para soporte.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}}},"tags":["Emisi\u00f3n"]}},"\/comprobantes\/guia-remision":{"post":{"operationId":"emitir_guia_remision","summary":"Emitir una gu\u00eda de remisi\u00f3n 1.1.0","description":"Requiere documents:write. La emisi\u00f3n es as\u00edncrona: consulta el estado con el id recibido hasta obtener el resultado. En producci\u00f3n necesitas cupo de suscripci\u00f3n o saldo prepago autorizado. Solo los comprobantes AUTORIZADO consumen documentos; los reintentos con la misma Idempotency-Key no generan cargos adicionales.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128,"example":"pedido-1001-v1"},"description":"Identidad estable de la operaci\u00f3n, independiente de la clave API. Reutiliza exactamente el mismo contenido al reintentar.","example":"pedido-1001-v1"}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/CreateGuiaRemisionDto"},"examples":{"guia-remision":{"summary":"M\u00ednimo requerido","description":"Solo los campos obligatorios; Ruxi calcula fecha, secuenciales y totales cuando el tipo lo permite.","value":{"estab":"001","ptoEmi":"001","infoGuiaRemision":{"dirPartida":"Av. Origen 123","razonSocialTransportista":"Transportes de ejemplo S.A.","tipoIdentificacionTransportista":"04","rucTransportista":"1790011674001","fechaIniTransporte":"15\/09\/2026","fechaFinTransporte":"16\/09\/2026","placa":"ABC1234"},"destinatarios":[{"identificacionDestinatario":"EJEMPLO identificacionDestinatario","razonSocialDestinatario":"EJEMPLO razonSocialDestinatario","dirDestinatario":"Av. Destino 456","motivoTraslado":"01","detalles":[{"descripcion":"Servicio de ejemplo","cantidad":"EJEMPLO cantidad"}]}]}},"guia-remision-completo":{"summary":"Completo","description":"Incluye campos opcionales frecuentes. Los valores son ficticios y deben reemplazarse por los datos fiscales reales.","value":{"estab":"001","ptoEmi":"001","fechaEmision":"15\/09\/2026","infoAdicional":[{"nombre":"Referencia","valor":"EJEMPLO-001"}],"infoGuiaRemision":{"dirEstablecimiento":"Av. Ejemplo 123","dirPartida":"Av. Origen 123","razonSocialTransportista":"Transportes de ejemplo S.A.","tipoIdentificacionTransportista":"04","rucTransportista":"1790011674001","fechaIniTransporte":"15\/09\/2026","fechaFinTransporte":"16\/09\/2026","placa":"ABC1234"},"destinatarios":[{"identificacionDestinatario":"EJEMPLO identificacionDestinatario","razonSocialDestinatario":"EJEMPLO razonSocialDestinatario","dirDestinatario":"Av. Destino 456","motivoTraslado":"01","docAduaneroUnico":"EJEMPLO docAduaneroUnico","codEstabDestino":"001","ruta":"EJEMPLO ruta","codDocSustento":"01","numDocSustento":"001-001-000000001","numAutDocSustento":"EJEMPLO numAutDocSustento","fechaEmisionDocSustento":"10\/09\/2026","detalles":[{"codigoInterno":"SERV-001","descripcion":"Servicio de ejemplo","codigoAdicional":"SERV-001-A","cantidad":"EJEMPLO cantidad","detallesAdicionales":[{"nombre":"Referencia","valor":"EJEMPLO-001"}]}]}],"maquinaFiscal":{"marca":"Marca de ejemplo","modelo":"Modelo 1","serie":"001"}}}}}}},"responses":{"202":{"description":"Solicitud admitida o repetida sin crear otro expediente.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiDocumentEnvelope"},"examples":{"pendiente":{"summary":"Comprobante pendiente","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"guia-remision","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"seguimiento":{"summary":"Servicio no disponible; cupo reservado","description":"Consulta por data.id. Reutiliza Idempotency-Key y el cuerpo original al reintentar.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"guia-remision","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":"fiscal_service_unavailable","createdAt":"2026-09-15T15:00:00.000000Z"}}},"pendienteEnvio":{"summary":"PENDIENTE_ENVIO","description":"Admisi\u00f3n sin clave de acceso todav\u00eda. Consulta por data.id.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"guia-remision","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"recepcionIncierta":{"summary":"RECEPCION_INCIERTA","description":"El env\u00edo al SRI qued\u00f3 incierto; conserva la reserva y consulta antes de repetir.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"guia-remision","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"RECEPCION_INCIERTA","cuota":"reserved","error":"fiscal_service_unavailable","createdAt":"2026-09-15T15:00:00.000000Z"}}},"enProcesamiento":{"summary":"EN_PROCESAMIENTO","description":"El SRI a\u00fan procesa el comprobante.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"guia-remision","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"EN_PROCESAMIENTO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"autorizado":{"summary":"AUTORIZADO","description":"Comprobante autorizado; ya puedes descargar XML y RIDE.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"guia-remision","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"AUTORIZADO","cuota":"consumed","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"devueltaCorregible":{"summary":"DEVUELTA_CORREGIBLE","description":"Rechazo corregible: la reserva se liber\u00f3 y puedes corregir el expediente.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"guia-remision","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"DEVUELTA_CORREGIBLE","cuota":"released","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"noAutorizado":{"summary":"NO_AUTORIZADO","description":"Rechazo definitivo; corrige o revisa los mensajes fiscales.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"guia-remision","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"NO_AUTORIZADO","cuota":"released","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}}}}}},"400":{"description":"C\u00f3digos y mensajes:\n\n- **https_required** \u2014 Se requiere HTTPS.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"https_required":{"summary":"https_required: Se requiere HTTPS.","description":"Usa la base HTTPS publicada.","value":{"error":{"code":"https_required","message":"Se requiere HTTPS."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"401":{"description":"C\u00f3digos y mensajes:\n\n- **unauthenticated** \u2014 Credencial inv\u00e1lida.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"unauthenticated":{"summary":"unauthenticated: Credencial inv\u00e1lida.","description":"Revisa Authorization: Bearer y que la clave, cuenta, empresa y ambiente est\u00e9n habilitados.","value":{"error":{"code":"unauthenticated","message":"Credencial inv\u00e1lida."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"402":{"description":"C\u00f3digos y mensajes:\n\n- **subscription_required** \u2014 Activa una suscripci\u00f3n o el uso de saldo prepago para emitir.\n\n- **insufficient_balance** \u2014 Recarga saldo para emitir otro documento.\n\n- **wallet_unavailable** \u2014 No se pudo reservar saldo. Revisa el monedero de tu cuenta.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"subscription_required":{"summary":"subscription_required: Activa una suscripci\u00f3n o el uso de saldo prepago para emitir.","description":"Revisa la suscripci\u00f3n o la habilitaci\u00f3n del saldo prepago en el portal.","value":{"error":{"code":"subscription_required","message":"Activa una suscripci\u00f3n o el uso de saldo prepago para emitir."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"insufficient_balance":{"summary":"insufficient_balance: Recarga saldo para emitir otro documento.","description":"Recarga el monedero antes de reintentar.","value":{"error":{"code":"insufficient_balance","message":"Recarga saldo para emitir otro documento."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"wallet_unavailable":{"summary":"wallet_unavailable: No se pudo reservar saldo. Revisa el monedero de tu cuenta.","description":"Comprueba el monedero y su habilitaci\u00f3n en el portal.","value":{"error":{"code":"wallet_unavailable","message":"No se pudo reservar saldo. Revisa el monedero de tu cuenta."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"403":{"description":"C\u00f3digos y mensajes:\n\n- **insufficient_scope** \u2014 La clave no tiene permiso para esta operaci\u00f3n.\n\n- **issuer_mismatch** \u2014 El RUC no pertenece a esta credencial.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"insufficient_scope":{"summary":"insufficient_scope: La clave no tiene permiso para esta operaci\u00f3n.","description":"Crea o utiliza una clave con el permiso indicado en esta operaci\u00f3n.","value":{"error":{"code":"insufficient_scope","message":"La clave no tiene permiso para esta operaci\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"issuer_mismatch":{"summary":"issuer_mismatch: El RUC no pertenece a esta credencial.","description":"Omite emisorRuc o utiliza el RUC vinculado a la clave.","value":{"error":{"code":"issuer_mismatch","message":"El RUC no pertenece a esta credencial."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"404":{"description":"C\u00f3digos y mensajes:\n\n- **not_found** \u2014 Recurso no encontrado.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"not_found":{"summary":"not_found: Recurso no encontrado.","description":"Comprueba el host, la ruta y que la API est\u00e9 habilitada.","value":{"error":{"code":"not_found","message":"Recurso no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"409":{"description":"C\u00f3digos y mensajes:\n\n- **company_limit** \u2014 La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso.\n\n- **idempotency_conflict** \u2014 La clave ya pertenece a otro contenido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"company_limit":{"summary":"company_limit: La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso.","description":"Revisa el n\u00famero de empresas activas en el portal.","value":{"error":{"code":"company_limit","message":"La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"idempotency_conflict":{"summary":"idempotency_conflict: La clave ya pertenece a otro contenido.","description":"Para reintentar env\u00eda el mismo tipo y contenido. Usa una clave nueva solo para una operaci\u00f3n nueva.","value":{"error":{"code":"idempotency_conflict","message":"La clave ya pertenece a otro contenido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"413":{"description":"C\u00f3digos y mensajes:\n\n- **body_too_large** \u2014 El contenido excede el l\u00edmite permitido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"body_too_large":{"summary":"body_too_large: El contenido excede el l\u00edmite permitido.","description":"Reduce el cuerpo. El l\u00edmite de aplicaci\u00f3n es 2 MiB (2097152 bytes).","value":{"error":{"code":"body_too_large","message":"El contenido excede el l\u00edmite permitido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"415":{"description":"C\u00f3digos y mensajes:\n\n- **json_required** \u2014 Env\u00eda contenido application\/json.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"json_required":{"summary":"json_required: Env\u00eda contenido application\/json.","description":"Env\u00eda Content-Type: application\/json.","value":{"error":{"code":"json_required","message":"Env\u00eda contenido application\/json."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"422":{"description":"C\u00f3digos y mensajes:\n\n- **invalid_json** \u2014 JSON inv\u00e1lido.\n\n- **invalid_json** \u2014 Se requiere un objeto JSON.\n\n- **forbidden_field** \u2014 La configuraci\u00f3n fiscal se administra en el portal.\n\n- **invalid_request** \u2014 Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres.\n\n- **invalid_emission_date** \u2014 La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente.\n\n- **invalid_document** \u2014 El servicio fiscal rechaz\u00f3 la estructura o los datos del documento.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"invalid_json":{"summary":"invalid_json: JSON inv\u00e1lido.","description":"Revisa la sintaxis JSON y el l\u00edmite de 64 niveles de anidaci\u00f3n.","value":{"error":{"code":"invalid_json","message":"JSON inv\u00e1lido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_json_2":{"summary":"invalid_json: Se requiere un objeto JSON.","description":"El cuerpo debe ser un objeto JSON con al menos una propiedad.","value":{"error":{"code":"invalid_json","message":"Se requiere un objeto JSON."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"forbidden_field":{"summary":"forbidden_field: La configuraci\u00f3n fiscal se administra en el portal.","description":"Omite ambiente, environment, secuencial, codigoNumerico y credenciales de firma; administra esa configuraci\u00f3n en el portal.","value":{"error":{"code":"forbidden_field","message":"La configuraci\u00f3n fiscal se administra en el portal."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_request":{"summary":"invalid_request: Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres.","description":"Usa un tipo documentado y una Idempotency-Key de 8 a 128 caracteres.","value":{"error":{"code":"invalid_request","message":"Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_emission_date":{"summary":"invalid_emission_date: La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente.","description":"Omite fechaEmision en la emisi\u00f3n nueva. Conserva el contenido original en reintentos, tambi\u00e9n despu\u00e9s de medianoche.","value":{"error":{"code":"invalid_emission_date","message":"La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_document":{"summary":"invalid_document: El servicio fiscal rechaz\u00f3 la estructura o los datos del documento.","description":"Revisa el esquema de entrada. El listado puede contener el comprobante en ERROR_VALIDACION y sin clave de acceso.","value":{"error":{"code":"invalid_document","message":"El servicio fiscal rechaz\u00f3 la estructura o los datos del documento."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"429":{"description":"C\u00f3digos y mensajes:\n\n- **rate_limited** \u2014 Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.\n\n- **sandbox_limit** \u2014 Se alcanz\u00f3 el l\u00edmite diario de pruebas.\n\n- **quota_exhausted** \u2014 El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi.\n\n- **quota_exhausted** \u2014 La cuota de documentos est\u00e1 consumida o reservada.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Retry-After":{"description":"Segundos reales de espera m\u00ednima para rate_limited. Puede faltar en l\u00edmites de cupo o pruebas; 60 segundos no garantiza que el cupo o el l\u00edmite diario se hayan renovado.","schema":{"type":"integer","minimum":1,"example":22}},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"rate_limited":{"summary":"rate_limited: Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.","description":"L\u00edmite por clave, cuenta o capacidad del servicio. Emisi\u00f3n, consulta y descarga tienen cupos independientes y el plan puede ampliar el de la cuenta. Espera el Retry-After real antes de reintentar.","value":{"error":{"code":"rate_limited","message":"Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"sandbox_limit":{"summary":"sandbox_limit: Se alcanz\u00f3 el l\u00edmite diario de pruebas.","description":"Espera la siguiente ventana diaria UTC. Retry-After: 60 no significa que el l\u00edmite diario se reinicie en un minuto.","value":{"error":{"code":"sandbox_limit","message":"Se alcanz\u00f3 el l\u00edmite diario de pruebas."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_exhausted":{"summary":"quota_exhausted: El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi.","description":"Solicita ampliaci\u00f3n o revisa las reservas del acceso demo.","value":{"error":{"code":"quota_exhausted","message":"El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_exhausted_2":{"summary":"quota_exhausted: La cuota de documentos est\u00e1 consumida o reservada.","description":"Revisa cupo, reservas y uso de saldo prepago. Esperar 60 segundos no garantiza capacidad disponible.","value":{"error":{"code":"quota_exhausted","message":"La cuota de documentos est\u00e1 consumida o reservada."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"503":{"description":"C\u00f3digos y mensajes:\n\n- **request_failed** \u2014 No se pudo completar la solicitud.\n\n- **service_unavailable** \u2014 No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.\n\n- **quota_unavailable** \u2014 No se pudo resolver el cupo mensual. Contacta a soporte.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed: No se pudo completar la solicitud.","description":"Consulta el comprobante antes de reintentar. Reutiliza Idempotency-Key y el cuerpo original; guarda requestId para soporte.","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"service_unavailable":{"summary":"service_unavailable: No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.","description":"La operaci\u00f3n puede haberse admitido. Consulta el comprobante antes de reintentar con la misma Idempotency-Key y contenido.","value":{"error":{"code":"service_unavailable","message":"No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_unavailable":{"summary":"quota_unavailable: No se pudo resolver el cupo mensual. Contacta a soporte.","description":"Contacta a soporte con requestId; conserva la identidad de la operaci\u00f3n.","value":{"error":{"code":"quota_unavailable","message":"No se pudo resolver el cupo mensual. Contacta a soporte."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"default":{"description":"request_failed: ruta desconocida (404), m\u00e9todo no permitido (405) o servicio no disponible (503). Guarda requestId para soporte.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}}},"tags":["Emisi\u00f3n"]}},"\/comprobantes\/retencion":{"post":{"operationId":"emitir_retencion","summary":"Emitir una retenci\u00f3n ATS 2.0.0","description":"Requiere documents:write. La emisi\u00f3n es as\u00edncrona: consulta el estado con el id recibido hasta obtener el resultado. En producci\u00f3n necesitas cupo de suscripci\u00f3n o saldo prepago autorizado. Solo los comprobantes AUTORIZADO consumen documentos; los reintentos con la misma Idempotency-Key no generan cargos adicionales. Si referencia una liquidaci\u00f3n ya retenida, consulta o corrige la retenci\u00f3n existente.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128,"example":"pedido-1001-v1"},"description":"Identidad estable de la operaci\u00f3n, independiente de la clave API. Reutiliza exactamente el mismo contenido al reintentar.","example":"pedido-1001-v1"}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/CreateRetencionDto"},"examples":{"retencion":{"summary":"M\u00ednimo requerido","description":"Solo los campos obligatorios; Ruxi calcula fecha, secuenciales y totales cuando el tipo lo permite.","value":{"estab":"001","ptoEmi":"001","sujetoRetenido":{"tipoIdentificacion":"04","identificacion":"1790011674001","razonSocial":"Cliente de ejemplo S.A."},"infoCompRetencion":{"parteRel":"SI","periodoFiscal":"09\/2026"},"docsSustento":[{"codSustento":"01","codDocSustento":"01","numDocSustento":"001-001-000000001","fechaEmisionDocSustento":"10\/09\/2026","pagoLocExt":"01","totalSinImpuestos":100,"importeTotal":112,"impuestosDocSustento":[{"codImpuestoDocSustento":"2","codigoPorcentaje":"2","baseImponible":100,"tarifa":12,"valorImpuesto":12}],"retenciones":[{"codigo":"2","codigoRetencion":"1","baseImponible":100,"porcentajeRetener":1,"valorRetenido":1}],"pagos":[{"formaPago":"01","total":112}]}]}},"retencion-completo":{"summary":"Completo","description":"Incluye campos opcionales frecuentes. Los valores son ficticios y deben reemplazarse por los datos fiscales reales.","value":{"estab":"001","ptoEmi":"001","fechaEmision":"15\/09\/2026","infoAdicional":[{"nombre":"Referencia","valor":"EJEMPLO-001"}],"sujetoRetenido":{"tipoIdentificacion":"04","identificacion":"1790011674001","razonSocial":"Cliente de ejemplo S.A.","direccion":"Av. Ejemplo 123 y Calle Falsa","email":"compras@example.test"},"infoCompRetencion":{"dirEstablecimiento":"Av. Ejemplo 123","tipoSujetoRetenido":"01","parteRel":"SI","periodoFiscal":"09\/2026"},"docsSustento":[{"codSustento":"01","codDocSustento":"01","numDocSustento":"001-001-000000001","fechaEmisionDocSustento":"10\/09\/2026","fechaRegistroContable":"11\/09\/2026","numAutDocSustento":"EJEMPLO numAutDocSustento","pagoLocExt":"01","tipoRegi":"EJEMPLO tipoRegi","paisEfecPago":"EJEMPLO paisEfecPago","aplicConvDobTrib":"SI","pagExtSujRetNorLeg":"SI","pagoRegFis":"SI","totalComprobantesReembolso":1,"totalBaseImponibleReembolso":100,"totalImpuestoReembolso":12,"totalSinImpuestos":100,"importeTotal":112,"impuestosDocSustento":[{"codImpuestoDocSustento":"2","codigoPorcentaje":"2","baseImponible":100,"tarifa":12,"valorImpuesto":12}],"retenciones":[{"codigo":"2","codigoRetencion":"1","baseImponible":100,"porcentajeRetener":1,"valorRetenido":1,"dividendos":{"fechaPagoDiv":"EJEMPLO fechaPagoDiv","imRentaSoc":100,"ejerFisUtDiv":100},"compraCajBanano":{"numCajBan":100,"precCajBan":100}}],"reembolsos":[{"tipoIdentificacionProveedorReembolso":"04","identificacionProveedorReembolso":"1790011674001","codPaisPagoProveedorReembolso":"EJEMPLO codPaisPagoProveedorReembolso","tipoProveedorReembolso":"01","codDocReembolso":"01","estabDocReembolso":"001","ptoEmiDocReembolso":"001","secuencialDocReembolso":"000000001","fechaEmisionDocReembolso":"10\/09\/2026","numeroAutorizacionDocReemb":"1509202601179001167400110010010000000011234567811","detalleImpuestos":[{"codigo":"2","codigoPorcentaje":"2","tarifa":12,"baseImponibleReembolso":100,"impuestoReembolso":12}]}],"pagos":[{"formaPago":"01","total":112}]}],"maquinaFiscal":{"marca":"Marca de ejemplo","modelo":"Modelo 1","serie":"001"}}}}}}},"responses":{"202":{"description":"Solicitud admitida o repetida sin crear otro expediente.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiDocumentEnvelope"},"examples":{"pendiente":{"summary":"Comprobante pendiente","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"retencion","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"seguimiento":{"summary":"Servicio no disponible; cupo reservado","description":"Consulta por data.id. Reutiliza Idempotency-Key y el cuerpo original al reintentar.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"retencion","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":"fiscal_service_unavailable","createdAt":"2026-09-15T15:00:00.000000Z"}}},"pendienteEnvio":{"summary":"PENDIENTE_ENVIO","description":"Admisi\u00f3n sin clave de acceso todav\u00eda. Consulta por data.id.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"retencion","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"recepcionIncierta":{"summary":"RECEPCION_INCIERTA","description":"El env\u00edo al SRI qued\u00f3 incierto; conserva la reserva y consulta antes de repetir.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"retencion","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"RECEPCION_INCIERTA","cuota":"reserved","error":"fiscal_service_unavailable","createdAt":"2026-09-15T15:00:00.000000Z"}}},"enProcesamiento":{"summary":"EN_PROCESAMIENTO","description":"El SRI a\u00fan procesa el comprobante.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"retencion","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"EN_PROCESAMIENTO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"autorizado":{"summary":"AUTORIZADO","description":"Comprobante autorizado; ya puedes descargar XML y RIDE.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"retencion","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"AUTORIZADO","cuota":"consumed","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"devueltaCorregible":{"summary":"DEVUELTA_CORREGIBLE","description":"Rechazo corregible: la reserva se liber\u00f3 y puedes corregir el expediente.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"retencion","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"DEVUELTA_CORREGIBLE","cuota":"released","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"noAutorizado":{"summary":"NO_AUTORIZADO","description":"Rechazo definitivo; corrige o revisa los mensajes fiscales.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"retencion","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"NO_AUTORIZADO","cuota":"released","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}}}}}},"400":{"description":"C\u00f3digos y mensajes:\n\n- **https_required** \u2014 Se requiere HTTPS.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"https_required":{"summary":"https_required: Se requiere HTTPS.","description":"Usa la base HTTPS publicada.","value":{"error":{"code":"https_required","message":"Se requiere HTTPS."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"401":{"description":"C\u00f3digos y mensajes:\n\n- **unauthenticated** \u2014 Credencial inv\u00e1lida.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"unauthenticated":{"summary":"unauthenticated: Credencial inv\u00e1lida.","description":"Revisa Authorization: Bearer y que la clave, cuenta, empresa y ambiente est\u00e9n habilitados.","value":{"error":{"code":"unauthenticated","message":"Credencial inv\u00e1lida."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"402":{"description":"C\u00f3digos y mensajes:\n\n- **subscription_required** \u2014 Activa una suscripci\u00f3n o el uso de saldo prepago para emitir.\n\n- **insufficient_balance** \u2014 Recarga saldo para emitir otro documento.\n\n- **wallet_unavailable** \u2014 No se pudo reservar saldo. Revisa el monedero de tu cuenta.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"subscription_required":{"summary":"subscription_required: Activa una suscripci\u00f3n o el uso de saldo prepago para emitir.","description":"Revisa la suscripci\u00f3n o la habilitaci\u00f3n del saldo prepago en el portal.","value":{"error":{"code":"subscription_required","message":"Activa una suscripci\u00f3n o el uso de saldo prepago para emitir."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"insufficient_balance":{"summary":"insufficient_balance: Recarga saldo para emitir otro documento.","description":"Recarga el monedero antes de reintentar.","value":{"error":{"code":"insufficient_balance","message":"Recarga saldo para emitir otro documento."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"wallet_unavailable":{"summary":"wallet_unavailable: No se pudo reservar saldo. Revisa el monedero de tu cuenta.","description":"Comprueba el monedero y su habilitaci\u00f3n en el portal.","value":{"error":{"code":"wallet_unavailable","message":"No se pudo reservar saldo. Revisa el monedero de tu cuenta."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"403":{"description":"C\u00f3digos y mensajes:\n\n- **insufficient_scope** \u2014 La clave no tiene permiso para esta operaci\u00f3n.\n\n- **issuer_mismatch** \u2014 El RUC no pertenece a esta credencial.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"insufficient_scope":{"summary":"insufficient_scope: La clave no tiene permiso para esta operaci\u00f3n.","description":"Crea o utiliza una clave con el permiso indicado en esta operaci\u00f3n.","value":{"error":{"code":"insufficient_scope","message":"La clave no tiene permiso para esta operaci\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"issuer_mismatch":{"summary":"issuer_mismatch: El RUC no pertenece a esta credencial.","description":"Omite emisorRuc o utiliza el RUC vinculado a la clave.","value":{"error":{"code":"issuer_mismatch","message":"El RUC no pertenece a esta credencial."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"404":{"description":"C\u00f3digos y mensajes:\n\n- **not_found** \u2014 Recurso no encontrado.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"not_found":{"summary":"not_found: Recurso no encontrado.","description":"Comprueba el host, la ruta y que la API est\u00e9 habilitada.","value":{"error":{"code":"not_found","message":"Recurso no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"409":{"description":"C\u00f3digos y mensajes:\n\n- **company_limit** \u2014 La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso.\n\n- **idempotency_conflict** \u2014 La clave ya pertenece a otro contenido.\n\n- **retention_already_exists** \u2014 Ya existe una retenci\u00f3n para esta liquidaci\u00f3n. Revisa o corrige el comprobante existente.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"company_limit":{"summary":"company_limit: La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso.","description":"Revisa el n\u00famero de empresas activas en el portal.","value":{"error":{"code":"company_limit","message":"La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"idempotency_conflict":{"summary":"idempotency_conflict: La clave ya pertenece a otro contenido.","description":"Para reintentar env\u00eda el mismo tipo y contenido. Usa una clave nueva solo para una operaci\u00f3n nueva.","value":{"error":{"code":"idempotency_conflict","message":"La clave ya pertenece a otro contenido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"retention_already_exists":{"summary":"retention_already_exists: Ya existe una retenci\u00f3n para esta liquidaci\u00f3n. Revisa o corrige el comprobante existente.","description":"Consulta o corrige la retenci\u00f3n existente.","value":{"error":{"code":"retention_already_exists","message":"Ya existe una retenci\u00f3n para esta liquidaci\u00f3n. Revisa o corrige el comprobante existente."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"413":{"description":"C\u00f3digos y mensajes:\n\n- **body_too_large** \u2014 El contenido excede el l\u00edmite permitido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"body_too_large":{"summary":"body_too_large: El contenido excede el l\u00edmite permitido.","description":"Reduce el cuerpo. El l\u00edmite de aplicaci\u00f3n es 2 MiB (2097152 bytes).","value":{"error":{"code":"body_too_large","message":"El contenido excede el l\u00edmite permitido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"415":{"description":"C\u00f3digos y mensajes:\n\n- **json_required** \u2014 Env\u00eda contenido application\/json.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"json_required":{"summary":"json_required: Env\u00eda contenido application\/json.","description":"Env\u00eda Content-Type: application\/json.","value":{"error":{"code":"json_required","message":"Env\u00eda contenido application\/json."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"422":{"description":"C\u00f3digos y mensajes:\n\n- **invalid_json** \u2014 JSON inv\u00e1lido.\n\n- **invalid_json** \u2014 Se requiere un objeto JSON.\n\n- **forbidden_field** \u2014 La configuraci\u00f3n fiscal se administra en el portal.\n\n- **invalid_request** \u2014 Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres.\n\n- **invalid_emission_date** \u2014 La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente.\n\n- **invalid_document** \u2014 El servicio fiscal rechaz\u00f3 la estructura o los datos del documento.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"invalid_json":{"summary":"invalid_json: JSON inv\u00e1lido.","description":"Revisa la sintaxis JSON y el l\u00edmite de 64 niveles de anidaci\u00f3n.","value":{"error":{"code":"invalid_json","message":"JSON inv\u00e1lido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_json_2":{"summary":"invalid_json: Se requiere un objeto JSON.","description":"El cuerpo debe ser un objeto JSON con al menos una propiedad.","value":{"error":{"code":"invalid_json","message":"Se requiere un objeto JSON."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"forbidden_field":{"summary":"forbidden_field: La configuraci\u00f3n fiscal se administra en el portal.","description":"Omite ambiente, environment, secuencial, codigoNumerico y credenciales de firma; administra esa configuraci\u00f3n en el portal.","value":{"error":{"code":"forbidden_field","message":"La configuraci\u00f3n fiscal se administra en el portal."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_request":{"summary":"invalid_request: Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres.","description":"Usa un tipo documentado y una Idempotency-Key de 8 a 128 caracteres.","value":{"error":{"code":"invalid_request","message":"Tipo o Idempotency-Key inv\u00e1lidos. Usa entre 8 y 128 caracteres."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_emission_date":{"summary":"invalid_emission_date: La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente.","description":"Omite fechaEmision en la emisi\u00f3n nueva. Conserva el contenido original en reintentos, tambi\u00e9n despu\u00e9s de medianoche.","value":{"error":{"code":"invalid_emission_date","message":"La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_document":{"summary":"invalid_document: El servicio fiscal rechaz\u00f3 la estructura o los datos del documento.","description":"Revisa el esquema de entrada. El listado puede contener el comprobante en ERROR_VALIDACION y sin clave de acceso.","value":{"error":{"code":"invalid_document","message":"El servicio fiscal rechaz\u00f3 la estructura o los datos del documento."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"429":{"description":"C\u00f3digos y mensajes:\n\n- **rate_limited** \u2014 Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.\n\n- **sandbox_limit** \u2014 Se alcanz\u00f3 el l\u00edmite diario de pruebas.\n\n- **quota_exhausted** \u2014 El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi.\n\n- **quota_exhausted** \u2014 La cuota de documentos est\u00e1 consumida o reservada.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Retry-After":{"description":"Segundos reales de espera m\u00ednima para rate_limited. Puede faltar en l\u00edmites de cupo o pruebas; 60 segundos no garantiza que el cupo o el l\u00edmite diario se hayan renovado.","schema":{"type":"integer","minimum":1,"example":22}},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"rate_limited":{"summary":"rate_limited: Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.","description":"L\u00edmite por clave, cuenta o capacidad del servicio. Emisi\u00f3n, consulta y descarga tienen cupos independientes y el plan puede ampliar el de la cuenta. Espera el Retry-After real antes de reintentar.","value":{"error":{"code":"rate_limited","message":"Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"sandbox_limit":{"summary":"sandbox_limit: Se alcanz\u00f3 el l\u00edmite diario de pruebas.","description":"Espera la siguiente ventana diaria UTC. Retry-After: 60 no significa que el l\u00edmite diario se reinicie en un minuto.","value":{"error":{"code":"sandbox_limit","message":"Se alcanz\u00f3 el l\u00edmite diario de pruebas."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_exhausted":{"summary":"quota_exhausted: El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi.","description":"Solicita ampliaci\u00f3n o revisa las reservas del acceso demo.","value":{"error":{"code":"quota_exhausted","message":"El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_exhausted_2":{"summary":"quota_exhausted: La cuota de documentos est\u00e1 consumida o reservada.","description":"Revisa cupo, reservas y uso de saldo prepago. Esperar 60 segundos no garantiza capacidad disponible.","value":{"error":{"code":"quota_exhausted","message":"La cuota de documentos est\u00e1 consumida o reservada."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"503":{"description":"C\u00f3digos y mensajes:\n\n- **request_failed** \u2014 No se pudo completar la solicitud.\n\n- **service_unavailable** \u2014 No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.\n\n- **quota_unavailable** \u2014 No se pudo resolver el cupo mensual. Contacta a soporte.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed: No se pudo completar la solicitud.","description":"Consulta el comprobante antes de reintentar. Reutiliza Idempotency-Key y el cuerpo original; guarda requestId para soporte.","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"service_unavailable":{"summary":"service_unavailable: No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.","description":"La operaci\u00f3n puede haberse admitido. Consulta el comprobante antes de reintentar con la misma Idempotency-Key y contenido.","value":{"error":{"code":"service_unavailable","message":"No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_unavailable":{"summary":"quota_unavailable: No se pudo resolver el cupo mensual. Contacta a soporte.","description":"Contacta a soporte con requestId; conserva la identidad de la operaci\u00f3n.","value":{"error":{"code":"quota_unavailable","message":"No se pudo resolver el cupo mensual. Contacta a soporte."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"default":{"description":"request_failed: ruta desconocida (404), m\u00e9todo no permitido (405) o servicio no disponible (503). Guarda requestId para soporte.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}}},"tags":["Emisi\u00f3n"]}},"\/comprobantes":{"get":{"operationId":"listarComprobantes","summary":"Listar comprobantes","description":"Requiere documents:read. Devuelve los comprobantes de la empresa y el ambiente asociados a tu clave. Puedes consultarlos aunque tu suscripci\u00f3n haya vencido.","parameters":[{"name":"page","in":"query","schema":{"type":"integer","default":1,"minimum":1}},{"name":"perPage","in":"query","schema":{"type":"integer","default":25,"minimum":1,"maximum":100}},{"name":"estado","in":"query","schema":{"type":"string","maxLength":40},"description":"Coincidencia exacta. Un valor desconocido devuelve una lista vac\u00eda.","example":"AUTORIZADO"},{"name":"tipo","in":"query","schema":{"type":"string","maxLength":40},"description":"Coincidencia exacta. Un valor desconocido devuelve una lista vac\u00eda.","example":"factura\/simple"}],"responses":{"200":{"description":"P\u00e1gina ordenada por creaci\u00f3n descendente e identificador.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#\/components\/schemas\/RuxiDocument"}},"meta":{"$ref":"#\/components\/schemas\/RuxiPage"}},"required":["data","meta"]},"examples":{"pagina":{"summary":"P\u00e1gina con un comprobante","value":{"data":[{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura\/simple","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}],"meta":{"page":1,"perPage":25,"total":1,"lastPage":1}}},"vacia":{"summary":"Sin resultados","value":{"data":[],"meta":{"page":1,"perPage":25,"total":0,"lastPage":1}}}}}}},"400":{"description":"C\u00f3digos y mensajes:\n\n- **https_required** \u2014 Se requiere HTTPS.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"https_required":{"summary":"https_required: Se requiere HTTPS.","description":"Usa la base HTTPS publicada.","value":{"error":{"code":"https_required","message":"Se requiere HTTPS."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"401":{"description":"C\u00f3digos y mensajes:\n\n- **unauthenticated** \u2014 Credencial inv\u00e1lida.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"unauthenticated":{"summary":"unauthenticated: Credencial inv\u00e1lida.","description":"Revisa Authorization: Bearer y que la clave, cuenta, empresa y ambiente est\u00e9n habilitados.","value":{"error":{"code":"unauthenticated","message":"Credencial inv\u00e1lida."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"403":{"description":"C\u00f3digos y mensajes:\n\n- **insufficient_scope** \u2014 La clave no tiene permiso para esta operaci\u00f3n.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"insufficient_scope":{"summary":"insufficient_scope: La clave no tiene permiso para esta operaci\u00f3n.","description":"Crea o utiliza una clave con el permiso indicado en esta operaci\u00f3n.","value":{"error":{"code":"insufficient_scope","message":"La clave no tiene permiso para esta operaci\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"404":{"description":"C\u00f3digos y mensajes:\n\n- **not_found** \u2014 Recurso no encontrado.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"not_found":{"summary":"not_found: Recurso no encontrado.","description":"Comprueba el host, la ruta y que la API est\u00e9 habilitada.","value":{"error":{"code":"not_found","message":"Recurso no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"413":{"description":"C\u00f3digos y mensajes:\n\n- **body_too_large** \u2014 El contenido excede el l\u00edmite permitido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"body_too_large":{"summary":"body_too_large: El contenido excede el l\u00edmite permitido.","description":"Reduce el cuerpo. El l\u00edmite de aplicaci\u00f3n es 2 MiB (2097152 bytes).","value":{"error":{"code":"body_too_large","message":"El contenido excede el l\u00edmite permitido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"422":{"description":"C\u00f3digos y mensajes:\n\n- **invalid_pagination** \u2014 Paginaci\u00f3n inv\u00e1lida.\n\n- **invalid_filter** \u2014 Filtro inv\u00e1lido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"invalid_pagination":{"summary":"invalid_pagination: Paginaci\u00f3n inv\u00e1lida.","description":"Usa page entero >= 1 y perPage entero entre 1 y 100.","value":{"error":{"code":"invalid_pagination","message":"Paginaci\u00f3n inv\u00e1lida."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_filter":{"summary":"invalid_filter: Filtro inv\u00e1lido.","description":"estado y tipo deben ser cadenas de hasta 40 caracteres; no env\u00edes arrays.","value":{"error":{"code":"invalid_filter","message":"Filtro inv\u00e1lido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"429":{"description":"C\u00f3digos y mensajes:\n\n- **rate_limited** \u2014 Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Retry-After":{"description":"Segundos reales de espera m\u00ednima para rate_limited. Puede faltar en l\u00edmites de cupo o pruebas; 60 segundos no garantiza que el cupo o el l\u00edmite diario se hayan renovado.","schema":{"type":"integer","minimum":1,"example":22}},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"rate_limited":{"summary":"rate_limited: Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.","description":"L\u00edmite por clave, cuenta o capacidad del servicio. Emisi\u00f3n, consulta y descarga tienen cupos independientes y el plan puede ampliar el de la cuenta. Espera el Retry-After real antes de reintentar.","value":{"error":{"code":"rate_limited","message":"Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"503":{"description":"C\u00f3digos y mensajes:\n\n- **request_failed** \u2014 No se pudo completar la solicitud.\n\n- **service_unavailable** \u2014 No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed: No se pudo completar la solicitud.","description":"Consulta el comprobante antes de reintentar. Reutiliza Idempotency-Key y el cuerpo original; guarda requestId para soporte.","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"service_unavailable":{"summary":"service_unavailable: No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.","description":"La operaci\u00f3n puede haberse admitido. Consulta el comprobante antes de reintentar con la misma Idempotency-Key y contenido.","value":{"error":{"code":"service_unavailable","message":"No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"default":{"description":"request_failed: ruta desconocida (404), m\u00e9todo no permitido (405) o servicio no disponible (503). Guarda requestId para soporte.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}}},"tags":["Consulta"]}},"\/comprobantes\/{reference}":{"get":{"operationId":"consultarComprobante","summary":"Consultar un comprobante","description":"Requiere documents:read. Devuelve su estado y datos fiscales. Disponible aunque tu suscripci\u00f3n haya vencido.","parameters":[{"name":"reference","in":"path","required":true,"schema":{"type":"string"},"description":"UUID devuelto por Ruxi o clave de acceso de 49 d\u00edgitos de un documento propio.","example":"123e4567-e89b-42d3-a456-426614174001"}],"responses":{"200":{"description":"Estado y detalle del comprobante.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"$ref":"#\/components\/schemas\/RuxiDocument"},{"type":"object","properties":{"detalle":{"oneOf":[{"$ref":"#\/components\/schemas\/RuxiDetail"},{"type":"array","maxItems":0,"items":[],"description":"Sin clave de acceso todav\u00eda."}]}},"required":["detalle"]}]}},"required":["data"]},"examples":{"autorizado":{"summary":"Comprobante autorizado","description":"Datos de ejemplo, sin validez fiscal.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura\/simple","claveAcceso":"1509202601000000000000010010010000000011234567811","environment":"PRUEBAS","estado":"AUTORIZADO","cuota":"consumed","error":null,"createdAt":"2026-09-15T15:00:00.000000Z","detalle":{"tipo":"factura","codigoDocumento":"01","serie":"001-001","secuencial":"000000001","claveAcceso":"1509202601000000000000010010010000000011234567811","fechaEmision":"15\/09\/2026","environment":"PRUEBAS","estado":"AUTORIZADO","fechaAutorizacion":"2026-09-15T15:00:10Z","mensajes":[]}}}},"pendiente":{"summary":"Pendiente de asignar clave de acceso","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura\/simple","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z","detalle":[]}}},"enProcesamiento":{"summary":"En procesamiento","description":"Seguimiento mientras el SRI autoriza.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"EN_PROCESAMIENTO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z","detalle":{"tipo":"factura","codigoDocumento":"01","serie":"001-001","secuencial":"000000001","claveAcceso":"1509202601179001167400110010010000000011234567811","fechaEmision":"15\/09\/2026","environment":"PRUEBAS","estado":"EN_PROCESAMIENTO","fechaAutorizacion":null,"mensajes":[]}}}},"pendienteRecepcion":{"summary":"Pendiente de recepci\u00f3n","description":"El comprobante todav\u00eda no llega al SRI.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"PENDIENTE_RECEPCION","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z","detalle":{"tipo":"factura","codigoDocumento":"01","serie":"001-001","secuencial":"000000001","claveAcceso":"1509202601179001167400110010010000000011234567811","fechaEmision":"15\/09\/2026","environment":"PRUEBAS","estado":"PENDIENTE_RECEPCION","fechaAutorizacion":null,"mensajes":[]}}}},"rechazado":{"summary":"No autorizado","description":"Mensajes fiscales para decidir la correcci\u00f3n.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"NO_AUTORIZADO","cuota":"released","error":null,"createdAt":"2026-09-15T15:00:00.000000Z","detalle":{"tipo":"factura","codigoDocumento":"01","serie":"001-001","secuencial":"000000001","claveAcceso":"1509202601179001167400110010010000000011234567811","fechaEmision":"15\/09\/2026","environment":"PRUEBAS","estado":"NO_AUTORIZADO","fechaAutorizacion":null,"mensajes":[{"identificador":"70","tipo":"ERROR","mensaje":"El comprobante fue devuelto por el SRI. Revisa los datos y corrige."}]}}}},"devueltaCorregible":{"summary":"Devuelta corregible","description":"Puede corregirse con una nueva Idempotency-Key.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"DEVUELTA_CORREGIBLE","cuota":"released","error":null,"createdAt":"2026-09-15T15:00:00.000000Z","detalle":{"tipo":"factura","codigoDocumento":"01","serie":"001-001","secuencial":"000000001","claveAcceso":"1509202601179001167400110010010000000011234567811","fechaEmision":"15\/09\/2026","environment":"PRUEBAS","estado":"DEVUELTA_CORREGIBLE","fechaAutorizacion":null,"mensajes":[]}}}},"revisionManual":{"summary":"Revisi\u00f3n manual","description":"El expediente requiere revisi\u00f3n antes de continuar.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"REVISION_MANUAL","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z","detalle":{"tipo":"factura","codigoDocumento":"01","serie":"001-001","secuencial":"000000001","claveAcceso":"1509202601179001167400110010010000000011234567811","fechaEmision":"15\/09\/2026","environment":"PRUEBAS","estado":"REVISION_MANUAL","fechaAutorizacion":null,"mensajes":[]}}}},"errorValidacion":{"summary":"Error de validaci\u00f3n","description":"Rechazo previo a la clave de acceso; corrige el contenido.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":null,"environment":"PRUEBAS","estado":"ERROR_VALIDACION","cuota":"released","error":"invalid_document","createdAt":"2026-09-15T15:00:00.000000Z","detalle":{"tipo":"factura","codigoDocumento":"01","serie":"001-001","secuencial":"000000001","claveAcceso":null,"fechaEmision":"15\/09\/2026","environment":"PRUEBAS","estado":"ERROR_VALIDACION","fechaAutorizacion":null,"mensajes":[]}}}}}}}},"400":{"description":"C\u00f3digos y mensajes:\n\n- **https_required** \u2014 Se requiere HTTPS.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"https_required":{"summary":"https_required: Se requiere HTTPS.","description":"Usa la base HTTPS publicada.","value":{"error":{"code":"https_required","message":"Se requiere HTTPS."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"401":{"description":"C\u00f3digos y mensajes:\n\n- **unauthenticated** \u2014 Credencial inv\u00e1lida.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"unauthenticated":{"summary":"unauthenticated: Credencial inv\u00e1lida.","description":"Revisa Authorization: Bearer y que la clave, cuenta, empresa y ambiente est\u00e9n habilitados.","value":{"error":{"code":"unauthenticated","message":"Credencial inv\u00e1lida."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"403":{"description":"C\u00f3digos y mensajes:\n\n- **insufficient_scope** \u2014 La clave no tiene permiso para esta operaci\u00f3n.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"insufficient_scope":{"summary":"insufficient_scope: La clave no tiene permiso para esta operaci\u00f3n.","description":"Crea o utiliza una clave con el permiso indicado en esta operaci\u00f3n.","value":{"error":{"code":"insufficient_scope","message":"La clave no tiene permiso para esta operaci\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"404":{"description":"C\u00f3digos y mensajes:\n\n- **not_found** \u2014 Recurso no encontrado.\n\n- **not_found** \u2014 Comprobante no encontrado.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"not_found":{"summary":"not_found: Recurso no encontrado.","description":"Comprueba el host, la ruta y que la API est\u00e9 habilitada.","value":{"error":{"code":"not_found","message":"Recurso no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"not_found_2":{"summary":"not_found: Comprobante no encontrado.","description":"Usa el UUID o clave de acceso de un documento de la empresa, cuenta y ambiente de tu credencial. Los documentos ajenos tambi\u00e9n devuelven 404.","value":{"error":{"code":"not_found","message":"Comprobante no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"413":{"description":"C\u00f3digos y mensajes:\n\n- **body_too_large** \u2014 El contenido excede el l\u00edmite permitido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"body_too_large":{"summary":"body_too_large: El contenido excede el l\u00edmite permitido.","description":"Reduce el cuerpo. El l\u00edmite de aplicaci\u00f3n es 2 MiB (2097152 bytes).","value":{"error":{"code":"body_too_large","message":"El contenido excede el l\u00edmite permitido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"429":{"description":"C\u00f3digos y mensajes:\n\n- **rate_limited** \u2014 Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Retry-After":{"description":"Segundos reales de espera m\u00ednima para rate_limited. Puede faltar en l\u00edmites de cupo o pruebas; 60 segundos no garantiza que el cupo o el l\u00edmite diario se hayan renovado.","schema":{"type":"integer","minimum":1,"example":22}},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"rate_limited":{"summary":"rate_limited: Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.","description":"L\u00edmite por clave, cuenta o capacidad del servicio. Emisi\u00f3n, consulta y descarga tienen cupos independientes y el plan puede ampliar el de la cuenta. Espera el Retry-After real antes de reintentar.","value":{"error":{"code":"rate_limited","message":"Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"502":{"description":"C\u00f3digos y mensajes:\n\n- **invalid_upstream** \u2014 El servicio fiscal devolvi\u00f3 un comprobante incompatible.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"invalid_upstream":{"summary":"invalid_upstream: El servicio fiscal devolvi\u00f3 un comprobante incompatible.","description":"Vuelve a consultar el comprobante. Si el error persiste, env\u00eda su UUID y requestId a soporte.","value":{"error":{"code":"invalid_upstream","message":"El servicio fiscal devolvi\u00f3 un comprobante incompatible."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"503":{"description":"C\u00f3digos y mensajes:\n\n- **request_failed** \u2014 No se pudo completar la solicitud.\n\n- **service_unavailable** \u2014 No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed: No se pudo completar la solicitud.","description":"Consulta el comprobante antes de reintentar. Reutiliza Idempotency-Key y el cuerpo original; guarda requestId para soporte.","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"service_unavailable":{"summary":"service_unavailable: No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.","description":"La operaci\u00f3n puede haberse admitido. Consulta el comprobante antes de reintentar con la misma Idempotency-Key y contenido.","value":{"error":{"code":"service_unavailable","message":"No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"default":{"description":"request_failed: ruta desconocida (404), m\u00e9todo no permitido (405) o servicio no disponible (503). Guarda requestId para soporte.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}}},"tags":["Consulta"]}},"\/comprobantes\/{reference}\/corregir":{"put":{"operationId":"corregirComprobante","summary":"Corregir un comprobante rechazado","description":"Requiere documents:correct y cupo o saldo disponible. Env\u00eda los datos completos del tipo de comprobante original dentro de payload. Para una factura simple, usa el formato de factura completa. Usa una nueva Idempotency-Key por correcci\u00f3n y conserva esa misma clave al reintentar. No cambies el emisor, ambiente, fecha de emisi\u00f3n ni numeraci\u00f3n. Omite fechaEmision para conservar la original. La correcci\u00f3n utiliza cupo del per\u00edodo vigente o saldo al precio vigente; sus reintentos no generan cargos adicionales. Solo admite NO_AUTORIZADO o DEVUELTA_CORREGIBLE con cuota released. La ruta requiere una clave de acceso; no permite corregir ERROR_VALIDACION sin clave. Los errores de notas de cr\u00e9dito y retenciones solo aplican cuando el expediente es de esos tipos.","parameters":[{"name":"reference","in":"path","required":true,"schema":{"type":"string"},"description":"UUID devuelto por Ruxi o clave de acceso de 49 d\u00edgitos de un documento propio.","example":"123e4567-e89b-42d3-a456-426614174001"},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128,"example":"correccion-pedido-1001-v2"},"description":"Identidad estable de la operaci\u00f3n, independiente de la clave API. Reutiliza exactamente el mismo contenido al reintentar.","example":"correccion-pedido-1001-v2"}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["payload"],"properties":{"payload":{"anyOf":[{"$ref":"#\/components\/schemas\/CreateFacturaDto"},{"$ref":"#\/components\/schemas\/CreateLiquidacionDto"},{"$ref":"#\/components\/schemas\/CreateNotaCreditoDto"},{"$ref":"#\/components\/schemas\/CreateNotaDebitoDto"},{"$ref":"#\/components\/schemas\/CreateGuiaRemisionDto"},{"$ref":"#\/components\/schemas\/CreateRetencionDto"}]}}}}}},"responses":{"202":{"description":"Correcci\u00f3n admitida o repetida.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiDocumentEnvelope"},"examples":{"pendiente":{"summary":"Comprobante pendiente","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601000000000000010010010000000011234567811","environment":"PRUEBAS","estado":"PENDIENTE_CORRECCION","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"seguimiento":{"summary":"Servicio no disponible; cupo reservado","description":"Consulta por data.id. Reutiliza Idempotency-Key y el cuerpo original al reintentar.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601000000000000010010010000000011234567811","environment":"PRUEBAS","estado":"PENDIENTE_CORRECCION","cuota":"reserved","error":"fiscal_service_unavailable","createdAt":"2026-09-15T15:00:00.000000Z"}}},"pendienteCorreccion":{"summary":"PENDIENTE_CORRECCION","description":"La correcci\u00f3n se admiti\u00f3 y usa el mismo expediente fiscal.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"PENDIENTE_CORRECCION","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"autorizado":{"summary":"AUTORIZADO","description":"La correcci\u00f3n fue autorizada; consume una sola reserva.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"AUTORIZADO","cuota":"consumed","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"devueltaCorregible":{"summary":"DEVUELTA_CORREGIBLE","description":"La correcci\u00f3n fue rechazada y puede repetirse con otra identidad.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"DEVUELTA_CORREGIBLE","cuota":"released","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}}}}}},"400":{"description":"C\u00f3digos y mensajes:\n\n- **https_required** \u2014 Se requiere HTTPS.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"https_required":{"summary":"https_required: Se requiere HTTPS.","description":"Usa la base HTTPS publicada.","value":{"error":{"code":"https_required","message":"Se requiere HTTPS."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"401":{"description":"C\u00f3digos y mensajes:\n\n- **unauthenticated** \u2014 Credencial inv\u00e1lida.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"unauthenticated":{"summary":"unauthenticated: Credencial inv\u00e1lida.","description":"Revisa Authorization: Bearer y que la clave, cuenta, empresa y ambiente est\u00e9n habilitados.","value":{"error":{"code":"unauthenticated","message":"Credencial inv\u00e1lida."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"402":{"description":"C\u00f3digos y mensajes:\n\n- **subscription_required** \u2014 Activa una suscripci\u00f3n o el uso de saldo prepago para emitir.\n\n- **insufficient_balance** \u2014 Recarga saldo para emitir otro documento.\n\n- **wallet_unavailable** \u2014 No se pudo reservar saldo. Revisa el monedero de tu cuenta.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"subscription_required":{"summary":"subscription_required: Activa una suscripci\u00f3n o el uso de saldo prepago para emitir.","description":"Revisa la suscripci\u00f3n o la habilitaci\u00f3n del saldo prepago en el portal.","value":{"error":{"code":"subscription_required","message":"Activa una suscripci\u00f3n o el uso de saldo prepago para emitir."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"insufficient_balance":{"summary":"insufficient_balance: Recarga saldo para emitir otro documento.","description":"Recarga el monedero antes de reintentar.","value":{"error":{"code":"insufficient_balance","message":"Recarga saldo para emitir otro documento."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"wallet_unavailable":{"summary":"wallet_unavailable: No se pudo reservar saldo. Revisa el monedero de tu cuenta.","description":"Comprueba el monedero y su habilitaci\u00f3n en el portal.","value":{"error":{"code":"wallet_unavailable","message":"No se pudo reservar saldo. Revisa el monedero de tu cuenta."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"403":{"description":"C\u00f3digos y mensajes:\n\n- **insufficient_scope** \u2014 La clave no tiene permiso para esta operaci\u00f3n.\n\n- **issuer_mismatch** \u2014 El RUC no pertenece a esta credencial.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"insufficient_scope":{"summary":"insufficient_scope: La clave no tiene permiso para esta operaci\u00f3n.","description":"Crea o utiliza una clave con el permiso indicado en esta operaci\u00f3n.","value":{"error":{"code":"insufficient_scope","message":"La clave no tiene permiso para esta operaci\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"issuer_mismatch":{"summary":"issuer_mismatch: El RUC no pertenece a esta credencial.","description":"Omite emisorRuc o utiliza el RUC vinculado a la clave.","value":{"error":{"code":"issuer_mismatch","message":"El RUC no pertenece a esta credencial."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"404":{"description":"C\u00f3digos y mensajes:\n\n- **not_found** \u2014 Recurso no encontrado.\n\n- **not_found** \u2014 Comprobante no encontrado.\n\n- **original_not_found** \u2014 El original no pertenece a esta empresa y ambiente.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"not_found":{"summary":"not_found: Recurso no encontrado.","description":"Comprueba el host, la ruta y que la API est\u00e9 habilitada.","value":{"error":{"code":"not_found","message":"Recurso no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"not_found_2":{"summary":"not_found: Comprobante no encontrado.","description":"Usa el UUID o clave de acceso de un documento de la empresa, cuenta y ambiente de tu credencial. Los documentos ajenos tambi\u00e9n devuelven 404.","value":{"error":{"code":"not_found","message":"Comprobante no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"original_not_found":{"summary":"original_not_found: El original no pertenece a esta empresa y ambiente.","description":"Usa un original de la misma empresa y ambiente que la clave API.","value":{"error":{"code":"original_not_found","message":"El original no pertenece a esta empresa y ambiente."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"409":{"description":"C\u00f3digos y mensajes:\n\n- **company_limit** \u2014 La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso.\n\n- **idempotency_conflict** \u2014 La clave ya pertenece a otra correcci\u00f3n.\n\n- **processing** \u2014 El expediente se est\u00e1 actualizando. Reintenta con la misma Idempotency-Key.\n\n- **not_correctable** \u2014 El comprobante no admite una nueva correcci\u00f3n.\n\n- **retention_original_changed** \u2014 La correcci\u00f3n debe conservar las liquidaciones originales de la retenci\u00f3n.\n\n- **original_requires_review** \u2014 No se puede ajustar autom\u00e1ticamente este original. Solicita revisi\u00f3n.\n\n- **original_annulment_declared** \u2014 El original tiene una anulaci\u00f3n declarada. Revisa el tr\u00e1mite antes de emitir una nota.\n\n- **credit_history_requires_review** \u2014 Hay una nota anterior sin una relaci\u00f3n fiable. Solicita revisi\u00f3n antes de otro ajuste.\n\n- **credit_balance_changed** \u2014 El ajuste supera el saldo o las cantidades disponibles. Vuelve a revisar la nota.\n\n- **credit_balance_exhausted** \u2014 El original no tiene saldo ajustable.\n\n- **adjustment_conflict** \u2014 La operaci\u00f3n ya tiene otro ajuste reservado.\n\n- **credit_review_required** \u2014 Revisa el ajuste: debe conservar el original y su saldo actual. Los descuentos necesitan intenci\u00f3n expl\u00edcita.\n\n- **retention_already_exists** \u2014 Ya existe una retenci\u00f3n para esta liquidaci\u00f3n. Revisa o corrige el comprobante existente.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"company_limit":{"summary":"company_limit: La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso.","description":"Revisa el n\u00famero de empresas activas en el portal.","value":{"error":{"code":"company_limit","message":"La cuenta supera su capacidad vigente. Desactiva empresas o ampl\u00eda tu acceso."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"idempotency_conflict":{"summary":"idempotency_conflict: La clave ya pertenece a otra correcci\u00f3n.","description":"Repite exactamente el payload anterior o utiliza una clave nueva para una correcci\u00f3n nueva.","value":{"error":{"code":"idempotency_conflict","message":"La clave ya pertenece a otra correcci\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"processing":{"summary":"processing: El expediente se est\u00e1 actualizando. Reintenta con la misma Idempotency-Key.","description":"Espera y reintenta conservando clave y payload.","value":{"error":{"code":"processing","message":"El expediente se est\u00e1 actualizando. Reintenta con la misma Idempotency-Key."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"not_correctable":{"summary":"not_correctable: El comprobante no admite una nueva correcci\u00f3n.","description":"Requiere NO_AUTORIZADO o DEVUELTA_CORREGIBLE, reserva released y ausencia de otra actualizaci\u00f3n en curso.","value":{"error":{"code":"not_correctable","message":"El comprobante no admite una nueva correcci\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"retention_original_changed":{"summary":"retention_original_changed: La correcci\u00f3n debe conservar las liquidaciones originales de la retenci\u00f3n.","description":"Solo para retenciones: conserva las referencias originales.","value":{"error":{"code":"retention_original_changed","message":"La correcci\u00f3n debe conservar las liquidaciones originales de la retenci\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"original_requires_review":{"summary":"original_requires_review: No se puede ajustar autom\u00e1ticamente este original. Solicita revisi\u00f3n.","description":"Solicita revisi\u00f3n del original antes de emitir otra nota.","value":{"error":{"code":"original_requires_review","message":"No se puede ajustar autom\u00e1ticamente este original. Solicita revisi\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"original_annulment_declared":{"summary":"original_annulment_declared: El original tiene una anulaci\u00f3n declarada. Revisa el tr\u00e1mite antes de emitir una nota.","description":"Revisa el tr\u00e1mite de anulaci\u00f3n en el portal.","value":{"error":{"code":"original_annulment_declared","message":"El original tiene una anulaci\u00f3n declarada. Revisa el tr\u00e1mite antes de emitir una nota."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"credit_history_requires_review":{"summary":"credit_history_requires_review: Hay una nota anterior sin una relaci\u00f3n fiable. Solicita revisi\u00f3n antes de otro ajuste.","description":"Solicita revisi\u00f3n del historial de ajustes.","value":{"error":{"code":"credit_history_requires_review","message":"Hay una nota anterior sin una relaci\u00f3n fiable. Solicita revisi\u00f3n antes de otro ajuste."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"credit_balance_changed":{"summary":"credit_balance_changed: El ajuste supera el saldo o las cantidades disponibles. Vuelve a revisar la nota.","description":"Recalcula el ajuste con el saldo disponible, incluyendo reservas de notas pendientes.","value":{"error":{"code":"credit_balance_changed","message":"El ajuste supera el saldo o las cantidades disponibles. Vuelve a revisar la nota."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"credit_balance_exhausted":{"summary":"credit_balance_exhausted: El original no tiene saldo ajustable.","description":"No emitas otra nota sobre un saldo agotado.","value":{"error":{"code":"credit_balance_exhausted","message":"El original no tiene saldo ajustable."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"adjustment_conflict":{"summary":"adjustment_conflict: La operaci\u00f3n ya tiene otro ajuste reservado.","description":"Revisa el ajuste existente antes de cambiarlo.","value":{"error":{"code":"adjustment_conflict","message":"La operaci\u00f3n ya tiene otro ajuste reservado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"credit_review_required":{"summary":"credit_review_required: Revisa el ajuste: debe conservar el original y su saldo actual. Los descuentos necesitan intenci\u00f3n expl\u00edcita.","description":"Comprueba comprador, documento original, l\u00edneas, impuestos y totales. Los descuentos requieren ajusteRuxi.","value":{"error":{"code":"credit_review_required","message":"Revisa el ajuste: debe conservar el original y su saldo actual. Los descuentos necesitan intenci\u00f3n expl\u00edcita."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"retention_already_exists":{"summary":"retention_already_exists: Ya existe una retenci\u00f3n para esta liquidaci\u00f3n. Revisa o corrige el comprobante existente.","description":"Consulta o corrige la retenci\u00f3n existente.","value":{"error":{"code":"retention_already_exists","message":"Ya existe una retenci\u00f3n para esta liquidaci\u00f3n. Revisa o corrige el comprobante existente."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"413":{"description":"C\u00f3digos y mensajes:\n\n- **body_too_large** \u2014 El contenido excede el l\u00edmite permitido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"body_too_large":{"summary":"body_too_large: El contenido excede el l\u00edmite permitido.","description":"Reduce el cuerpo. El l\u00edmite de aplicaci\u00f3n es 2 MiB (2097152 bytes).","value":{"error":{"code":"body_too_large","message":"El contenido excede el l\u00edmite permitido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"415":{"description":"C\u00f3digos y mensajes:\n\n- **json_required** \u2014 Env\u00eda contenido application\/json.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"json_required":{"summary":"json_required: Env\u00eda contenido application\/json.","description":"Env\u00eda Content-Type: application\/json.","value":{"error":{"code":"json_required","message":"Env\u00eda contenido application\/json."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"422":{"description":"C\u00f3digos y mensajes:\n\n- **invalid_json** \u2014 JSON inv\u00e1lido.\n\n- **invalid_json** \u2014 Se requiere un objeto JSON.\n\n- **forbidden_field** \u2014 La configuraci\u00f3n fiscal se administra en el portal.\n\n- **invalid_request** \u2014 Idempotency-Key debe tener entre 8 y 128 caracteres.\n\n- **invalid_payload** \u2014 Env\u00eda el documento completo dentro de payload.\n\n- **invalid_correction** \u2014 El servicio fiscal rechaz\u00f3 los datos de la correcci\u00f3n.\n\n- **invalid_emission_date** \u2014 La fecha de emisi\u00f3n del comprobante original no se puede cambiar.\n\n- **invalid_emission_date** \u2014 La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente.\n\n- **original_not_found** \u2014 La nota debe referenciar un original autorizado emitido en Ruxi.\n\n- **original_not_found** \u2014 No se encontr\u00f3 un \u00fanico original autorizado en esta empresa y ambiente.\n\n- **original_not_eligible** \u2014 Selecciona un comprobante de venta autorizado de esta cuenta.\n\n- **invalid_credit_intent** \u2014 Completa el motivo y una intenci\u00f3n de ajuste v\u00e1lida para las l\u00edneas originales.\n\n- **original_line_not_found** \u2014 La l\u00ednea no pertenece al original.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"invalid_json":{"summary":"invalid_json: JSON inv\u00e1lido.","description":"Revisa la sintaxis JSON y el l\u00edmite de 64 niveles de anidaci\u00f3n.","value":{"error":{"code":"invalid_json","message":"JSON inv\u00e1lido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_json_2":{"summary":"invalid_json: Se requiere un objeto JSON.","description":"El cuerpo debe ser un objeto JSON con al menos una propiedad.","value":{"error":{"code":"invalid_json","message":"Se requiere un objeto JSON."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"forbidden_field":{"summary":"forbidden_field: La configuraci\u00f3n fiscal se administra en el portal.","description":"Omite ambiente, environment, secuencial, codigoNumerico y credenciales de firma; administra esa configuraci\u00f3n en el portal.","value":{"error":{"code":"forbidden_field","message":"La configuraci\u00f3n fiscal se administra en el portal."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_request":{"summary":"invalid_request: Idempotency-Key debe tener entre 8 y 128 caracteres.","description":"Env\u00eda Idempotency-Key con la longitud indicada; conserva el mismo valor al reintentar.","value":{"error":{"code":"invalid_request","message":"Idempotency-Key debe tener entre 8 y 128 caracteres."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_payload":{"summary":"invalid_payload: Env\u00eda el documento completo dentro de payload.","description":"Env\u00eda {\"payload\": {...}} con todos los campos requeridos del tipo original.","value":{"error":{"code":"invalid_payload","message":"Env\u00eda el documento completo dentro de payload."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_correction":{"summary":"invalid_correction: El servicio fiscal rechaz\u00f3 los datos de la correcci\u00f3n.","description":"Revisa los datos y consulta el expediente. Una correcci\u00f3n nueva usa otra Idempotency-Key; un reintento conserva la anterior.","value":{"error":{"code":"invalid_correction","message":"El servicio fiscal rechaz\u00f3 los datos de la correcci\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_emission_date":{"summary":"invalid_emission_date: La fecha de emisi\u00f3n del comprobante original no se puede cambiar.","description":"Omite fechaEmision para conservar la original.","value":{"error":{"code":"invalid_emission_date","message":"La fecha de emisi\u00f3n del comprobante original no se puede cambiar."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_emission_date_2":{"summary":"invalid_emission_date: La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente.","description":"Sin clave de acceso, fechaEmision se compara con el d\u00eda actual de Ecuador. La correcci\u00f3n exige adem\u00e1s un estado admitido.","value":{"error":{"code":"invalid_emission_date","message":"La fecha de emisi\u00f3n debe ser la fecha actual en Ecuador. Omite fechaEmision para asignarla autom\u00e1ticamente."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"original_not_found":{"summary":"original_not_found: La nota debe referenciar un original autorizado emitido en Ruxi.","description":"Comprueba codDocModificado (01 o 03) y numDocModificado con formato 001-001-000000001.","value":{"error":{"code":"original_not_found","message":"La nota debe referenciar un original autorizado emitido en Ruxi."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"original_not_found_2":{"summary":"original_not_found: No se encontr\u00f3 un \u00fanico original autorizado en esta empresa y ambiente.","description":"Referencia una factura o liquidaci\u00f3n autorizada de la misma empresa y ambiente.","value":{"error":{"code":"original_not_found","message":"No se encontr\u00f3 un \u00fanico original autorizado en esta empresa y ambiente."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"original_not_eligible":{"summary":"original_not_eligible: Selecciona un comprobante de venta autorizado de esta cuenta.","description":"El original debe ser una factura o liquidaci\u00f3n autorizada con clave de acceso.","value":{"error":{"code":"original_not_eligible","message":"Selecciona un comprobante de venta autorizado de esta cuenta."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"invalid_credit_intent":{"summary":"invalid_credit_intent: Completa el motivo y una intenci\u00f3n de ajuste v\u00e1lida para las l\u00edneas originales.","description":"Revisa motivo y ajusteRuxi seg\u00fan su esquema.","value":{"error":{"code":"invalid_credit_intent","message":"Completa el motivo y una intenci\u00f3n de ajuste v\u00e1lida para las l\u00edneas originales."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"original_line_not_found":{"summary":"original_line_not_found: La l\u00ednea no pertenece al original.","description":"Usa el identificador de una l\u00ednea del documento original.","value":{"error":{"code":"original_line_not_found","message":"La l\u00ednea no pertenece al original."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"429":{"description":"C\u00f3digos y mensajes:\n\n- **rate_limited** \u2014 Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.\n\n- **sandbox_limit** \u2014 Se alcanz\u00f3 el l\u00edmite diario de pruebas.\n\n- **quota_exhausted** \u2014 El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi.\n\n- **quota_exhausted** \u2014 La cuota de documentos est\u00e1 consumida o reservada.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Retry-After":{"description":"Segundos reales de espera m\u00ednima para rate_limited. Puede faltar en l\u00edmites de cupo o pruebas; 60 segundos no garantiza que el cupo o el l\u00edmite diario se hayan renovado.","schema":{"type":"integer","minimum":1,"example":22}},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"rate_limited":{"summary":"rate_limited: Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.","description":"L\u00edmite por clave, cuenta o capacidad del servicio. Emisi\u00f3n, consulta y descarga tienen cupos independientes y el plan puede ampliar el de la cuenta. Espera el Retry-After real antes de reintentar.","value":{"error":{"code":"rate_limited","message":"Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"sandbox_limit":{"summary":"sandbox_limit: Se alcanz\u00f3 el l\u00edmite diario de pruebas.","description":"Espera la siguiente ventana diaria UTC. Retry-After: 60 no significa que el l\u00edmite diario se reinicie en un minuto.","value":{"error":{"code":"sandbox_limit","message":"Se alcanz\u00f3 el l\u00edmite diario de pruebas."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_exhausted":{"summary":"quota_exhausted: El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi.","description":"Solicita ampliaci\u00f3n o revisa las reservas del acceso demo.","value":{"error":{"code":"quota_exhausted","message":"El cupo del acceso demo est\u00e1 consumido o reservado. Contacta a Ruxi."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_exhausted_2":{"summary":"quota_exhausted: La cuota de documentos est\u00e1 consumida o reservada.","description":"Revisa cupo, reservas y uso de saldo prepago. Esperar 60 segundos no garantiza capacidad disponible.","value":{"error":{"code":"quota_exhausted","message":"La cuota de documentos est\u00e1 consumida o reservada."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"502":{"description":"C\u00f3digos y mensajes:\n\n- **invalid_upstream** \u2014 El servicio fiscal devolvi\u00f3 un comprobante incompatible.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"invalid_upstream":{"summary":"invalid_upstream: El servicio fiscal devolvi\u00f3 un comprobante incompatible.","description":"Vuelve a consultar el comprobante. Si el error persiste, env\u00eda su UUID y requestId a soporte.","value":{"error":{"code":"invalid_upstream","message":"El servicio fiscal devolvi\u00f3 un comprobante incompatible."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"503":{"description":"C\u00f3digos y mensajes:\n\n- **request_failed** \u2014 No se pudo completar la solicitud.\n\n- **service_unavailable** \u2014 No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.\n\n- **quota_unavailable** \u2014 No se pudo resolver el cupo mensual. Contacta a soporte.\n\n- **backend_upgrade_required** \u2014 El servicio fiscal requiere actualizaci\u00f3n para admitir correcciones seguras.\n\n- **backend_upgrade_required** \u2014 El servicio fiscal necesita actualizaci\u00f3n para preparar este comprobante.\n\n- **backend_upgrade_required** \u2014 La preparaci\u00f3n no incluye un desglose fiable.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed: No se pudo completar la solicitud.","description":"Consulta el comprobante antes de reintentar. Reutiliza Idempotency-Key y el cuerpo original; guarda requestId para soporte.","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"service_unavailable":{"summary":"service_unavailable: No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.","description":"La operaci\u00f3n puede haberse admitido. Consulta el comprobante antes de reintentar con la misma Idempotency-Key y contenido.","value":{"error":{"code":"service_unavailable","message":"No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"quota_unavailable":{"summary":"quota_unavailable: No se pudo resolver el cupo mensual. Contacta a soporte.","description":"Contacta a soporte con requestId; conserva la identidad de la operaci\u00f3n.","value":{"error":{"code":"quota_unavailable","message":"No se pudo resolver el cupo mensual. Contacta a soporte."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"backend_upgrade_required":{"summary":"backend_upgrade_required: El servicio fiscal requiere actualizaci\u00f3n para admitir correcciones seguras.","description":"Contacta a soporte con requestId.","value":{"error":{"code":"backend_upgrade_required","message":"El servicio fiscal requiere actualizaci\u00f3n para admitir correcciones seguras."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"backend_upgrade_required_2":{"summary":"backend_upgrade_required: El servicio fiscal necesita actualizaci\u00f3n para preparar este comprobante.","description":"Contacta a soporte antes de volver a preparar la nota.","value":{"error":{"code":"backend_upgrade_required","message":"El servicio fiscal necesita actualizaci\u00f3n para preparar este comprobante."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"backend_upgrade_required_3":{"summary":"backend_upgrade_required: La preparaci\u00f3n no incluye un desglose fiable.","description":"Contacta a soporte con requestId.","value":{"error":{"code":"backend_upgrade_required","message":"La preparaci\u00f3n no incluye un desglose fiable."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"default":{"description":"request_failed: ruta desconocida (404), m\u00e9todo no permitido (405) o servicio no disponible (503). Guarda requestId para soporte.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}}},"tags":["Correcciones y reenv\u00edos"]}},"\/comprobantes\/{reference}\/reenviar":{"post":{"operationId":"reenviarComprobante","summary":"Reenviar un comprobante pendiente o en revisi\u00f3n","description":"Requiere documents:resend. Reenv\u00eda el mismo comprobante, sin cambiar su clave de acceso ni generar un consumo adicional. No necesita cuerpo. Requiere cuota reserved y estado PENDIENTE_RECEPCION, RECEPCION_INCIERTA, EN_PROCESAMIENTO o REVISION_MANUAL.","parameters":[{"name":"reference","in":"path","required":true,"schema":{"type":"string"},"description":"UUID devuelto por Ruxi o clave de acceso de 49 d\u00edgitos de un documento propio.","example":"123e4567-e89b-42d3-a456-426614174001"},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128,"example":"pedido-1001-v1"},"description":"Identidad estable de la operaci\u00f3n, independiente de la clave API. Reutiliza exactamente el mismo contenido al reintentar.","example":"pedido-1001-v1"}],"responses":{"202":{"description":"Reenv\u00edo aceptado.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiDocumentEnvelope"},"examples":{"pendiente":{"summary":"Comprobante pendiente","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601000000000000010010010000000011234567811","environment":"PRUEBAS","estado":"PENDIENTE_RECEPCION","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"seguimiento":{"summary":"Servicio no disponible; cupo reservado","description":"Consulta por data.id. Reutiliza Idempotency-Key y el cuerpo original al reintentar.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601000000000000010010010000000011234567811","environment":"PRUEBAS","estado":"PENDIENTE_RECEPCION","cuota":"reserved","error":"fiscal_service_unavailable","createdAt":"2026-09-15T15:00:00.000000Z"}}},"pendienteRecepcion":{"summary":"PENDIENTE_RECEPCION","description":"Se reactiv\u00f3 el mismo expediente sin reservar otro documento.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"PENDIENTE_RECEPCION","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"enProcesamiento":{"summary":"EN_PROCESAMIENTO","description":"Seguimiento tras el reenv\u00edo.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"EN_PROCESAMIENTO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}},"autorizado":{"summary":"AUTORIZADO","description":"El comprobante qued\u00f3 autorizado tras el reenv\u00edo.","value":{"data":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura","claveAcceso":"1509202601179001167400110010010000000011234567811","environment":"PRUEBAS","estado":"AUTORIZADO","cuota":"consumed","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}}}}}}},"400":{"description":"C\u00f3digos y mensajes:\n\n- **https_required** \u2014 Se requiere HTTPS.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"https_required":{"summary":"https_required: Se requiere HTTPS.","description":"Usa la base HTTPS publicada.","value":{"error":{"code":"https_required","message":"Se requiere HTTPS."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"401":{"description":"C\u00f3digos y mensajes:\n\n- **unauthenticated** \u2014 Credencial inv\u00e1lida.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"unauthenticated":{"summary":"unauthenticated: Credencial inv\u00e1lida.","description":"Revisa Authorization: Bearer y que la clave, cuenta, empresa y ambiente est\u00e9n habilitados.","value":{"error":{"code":"unauthenticated","message":"Credencial inv\u00e1lida."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"403":{"description":"C\u00f3digos y mensajes:\n\n- **insufficient_scope** \u2014 La clave no tiene permiso para esta operaci\u00f3n.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"insufficient_scope":{"summary":"insufficient_scope: La clave no tiene permiso para esta operaci\u00f3n.","description":"Crea o utiliza una clave con el permiso indicado en esta operaci\u00f3n.","value":{"error":{"code":"insufficient_scope","message":"La clave no tiene permiso para esta operaci\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"404":{"description":"C\u00f3digos y mensajes:\n\n- **not_found** \u2014 Recurso no encontrado.\n\n- **not_found** \u2014 Comprobante no encontrado.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"not_found":{"summary":"not_found: Recurso no encontrado.","description":"Comprueba el host, la ruta y que la API est\u00e9 habilitada.","value":{"error":{"code":"not_found","message":"Recurso no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"not_found_2":{"summary":"not_found: Comprobante no encontrado.","description":"Usa el UUID o clave de acceso de un documento de la empresa, cuenta y ambiente de tu credencial. Los documentos ajenos tambi\u00e9n devuelven 404.","value":{"error":{"code":"not_found","message":"Comprobante no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"409":{"description":"C\u00f3digos y mensajes:\n\n- **not_resendable** \u2014 El expediente no admite reenv\u00edo.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"not_resendable":{"summary":"not_resendable: El expediente no admite reenv\u00edo.","description":"Requiere PENDIENTE_RECEPCION, RECEPCION_INCIERTA, EN_PROCESAMIENTO o REVISION_MANUAL, con reserva reserved.","value":{"error":{"code":"not_resendable","message":"El expediente no admite reenv\u00edo."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"413":{"description":"C\u00f3digos y mensajes:\n\n- **body_too_large** \u2014 El contenido excede el l\u00edmite permitido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"body_too_large":{"summary":"body_too_large: El contenido excede el l\u00edmite permitido.","description":"Reduce el cuerpo. El l\u00edmite de aplicaci\u00f3n es 2 MiB (2097152 bytes).","value":{"error":{"code":"body_too_large","message":"El contenido excede el l\u00edmite permitido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"422":{"description":"C\u00f3digos y mensajes:\n\n- **invalid_request** \u2014 Idempotency-Key debe tener entre 8 y 128 caracteres.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"invalid_request":{"summary":"invalid_request: Idempotency-Key debe tener entre 8 y 128 caracteres.","description":"Env\u00eda Idempotency-Key con la longitud indicada; conserva el mismo valor al reintentar.","value":{"error":{"code":"invalid_request","message":"Idempotency-Key debe tener entre 8 y 128 caracteres."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"429":{"description":"C\u00f3digos y mensajes:\n\n- **rate_limited** \u2014 Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Retry-After":{"description":"Segundos reales de espera m\u00ednima para rate_limited. Puede faltar en l\u00edmites de cupo o pruebas; 60 segundos no garantiza que el cupo o el l\u00edmite diario se hayan renovado.","schema":{"type":"integer","minimum":1,"example":22}},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"rate_limited":{"summary":"rate_limited: Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.","description":"L\u00edmite por clave, cuenta o capacidad del servicio. Emisi\u00f3n, consulta y descarga tienen cupos independientes y el plan puede ampliar el de la cuenta. Espera el Retry-After real antes de reintentar.","value":{"error":{"code":"rate_limited","message":"Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"502":{"description":"C\u00f3digos y mensajes:\n\n- **invalid_upstream** \u2014 El servicio fiscal devolvi\u00f3 un comprobante incompatible.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"invalid_upstream":{"summary":"invalid_upstream: El servicio fiscal devolvi\u00f3 un comprobante incompatible.","description":"Vuelve a consultar el comprobante. Si el error persiste, env\u00eda su UUID y requestId a soporte.","value":{"error":{"code":"invalid_upstream","message":"El servicio fiscal devolvi\u00f3 un comprobante incompatible."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"503":{"description":"C\u00f3digos y mensajes:\n\n- **request_failed** \u2014 No se pudo completar la solicitud.\n\n- **service_unavailable** \u2014 No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed: No se pudo completar la solicitud.","description":"Consulta el comprobante antes de reintentar. Reutiliza Idempotency-Key y el cuerpo original; guarda requestId para soporte.","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"service_unavailable":{"summary":"service_unavailable: No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.","description":"La operaci\u00f3n puede haberse admitido. Consulta el comprobante antes de reintentar con la misma Idempotency-Key y contenido.","value":{"error":{"code":"service_unavailable","message":"No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"default":{"description":"request_failed: ruta desconocida (404), m\u00e9todo no permitido (405) o servicio no disponible (503). Guarda requestId para soporte.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}}},"tags":["Correcciones y reenv\u00edos"]}},"\/comprobantes\/{reference}\/xml":{"get":{"operationId":"descargar_xml","summary":"Descargar XML autorizado","description":"documents:read. Exclusivamente AUTORIZADO; disponible tras vencer la suscripci\u00f3n.","parameters":[{"name":"reference","in":"path","required":true,"schema":{"type":"string"},"description":"UUID devuelto por Ruxi o clave de acceso de 49 d\u00edgitos de un documento propio.","example":"123e4567-e89b-42d3-a456-426614174001"}],"responses":{"200":{"description":"Archivo fiscal autorizado.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}},"Content-Disposition":{"description":"`attachment; filename=\"<claveAcceso>.xml\"` o `attachment; filename=\"<claveAcceso>.pdf\"`.","schema":{"type":"string"}}},"content":{"application\/xml":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"C\u00f3digos y mensajes:\n\n- **https_required** \u2014 Se requiere HTTPS.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"https_required":{"summary":"https_required: Se requiere HTTPS.","description":"Usa la base HTTPS publicada.","value":{"error":{"code":"https_required","message":"Se requiere HTTPS."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"401":{"description":"C\u00f3digos y mensajes:\n\n- **unauthenticated** \u2014 Credencial inv\u00e1lida.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"unauthenticated":{"summary":"unauthenticated: Credencial inv\u00e1lida.","description":"Revisa Authorization: Bearer y que la clave, cuenta, empresa y ambiente est\u00e9n habilitados.","value":{"error":{"code":"unauthenticated","message":"Credencial inv\u00e1lida."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"403":{"description":"C\u00f3digos y mensajes:\n\n- **insufficient_scope** \u2014 La clave no tiene permiso para esta operaci\u00f3n.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"insufficient_scope":{"summary":"insufficient_scope: La clave no tiene permiso para esta operaci\u00f3n.","description":"Crea o utiliza una clave con el permiso indicado en esta operaci\u00f3n.","value":{"error":{"code":"insufficient_scope","message":"La clave no tiene permiso para esta operaci\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"404":{"description":"C\u00f3digos y mensajes:\n\n- **not_found** \u2014 Recurso no encontrado.\n\n- **not_found** \u2014 Comprobante no encontrado.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"not_found":{"summary":"not_found: Recurso no encontrado.","description":"Comprueba el host, la ruta y que la API est\u00e9 habilitada.","value":{"error":{"code":"not_found","message":"Recurso no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"not_found_2":{"summary":"not_found: Comprobante no encontrado.","description":"Usa el UUID o clave de acceso de un documento de la empresa, cuenta y ambiente de tu credencial. Los documentos ajenos tambi\u00e9n devuelven 404.","value":{"error":{"code":"not_found","message":"Comprobante no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"409":{"description":"C\u00f3digos y mensajes:\n\n- **not_authorized** \u2014 El documento a\u00fan no est\u00e1 autorizado.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"not_authorized":{"summary":"not_authorized: El documento a\u00fan no est\u00e1 autorizado.","description":"Consulta hasta obtener AUTORIZADO antes de descargar XML o RIDE.","value":{"error":{"code":"not_authorized","message":"El documento a\u00fan no est\u00e1 autorizado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"413":{"description":"C\u00f3digos y mensajes:\n\n- **body_too_large** \u2014 El contenido excede el l\u00edmite permitido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"body_too_large":{"summary":"body_too_large: El contenido excede el l\u00edmite permitido.","description":"Reduce el cuerpo. El l\u00edmite de aplicaci\u00f3n es 2 MiB (2097152 bytes).","value":{"error":{"code":"body_too_large","message":"El contenido excede el l\u00edmite permitido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"429":{"description":"C\u00f3digos y mensajes:\n\n- **rate_limited** \u2014 Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Retry-After":{"description":"Segundos reales de espera m\u00ednima para rate_limited. Puede faltar en l\u00edmites de cupo o pruebas; 60 segundos no garantiza que el cupo o el l\u00edmite diario se hayan renovado.","schema":{"type":"integer","minimum":1,"example":22}},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"rate_limited":{"summary":"rate_limited: Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.","description":"L\u00edmite por clave, cuenta o capacidad del servicio. Emisi\u00f3n, consulta y descarga tienen cupos independientes y el plan puede ampliar el de la cuenta. Espera el Retry-After real antes de reintentar.","value":{"error":{"code":"rate_limited","message":"Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"502":{"description":"C\u00f3digos y mensajes:\n\n- **invalid_upstream** \u2014 El servicio fiscal devolvi\u00f3 un comprobante incompatible.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"invalid_upstream":{"summary":"invalid_upstream: El servicio fiscal devolvi\u00f3 un comprobante incompatible.","description":"Vuelve a consultar el comprobante. Si el error persiste, env\u00eda su UUID y requestId a soporte.","value":{"error":{"code":"invalid_upstream","message":"El servicio fiscal devolvi\u00f3 un comprobante incompatible."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"503":{"description":"C\u00f3digos y mensajes:\n\n- **request_failed** \u2014 No se pudo completar la solicitud.\n\n- **service_unavailable** \u2014 No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed: No se pudo completar la solicitud.","description":"Consulta el comprobante antes de reintentar. Reutiliza Idempotency-Key y el cuerpo original; guarda requestId para soporte.","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"service_unavailable":{"summary":"service_unavailable: No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.","description":"La operaci\u00f3n puede haberse admitido. Consulta el comprobante antes de reintentar con la misma Idempotency-Key y contenido.","value":{"error":{"code":"service_unavailable","message":"No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"default":{"description":"request_failed: ruta desconocida (404), m\u00e9todo no permitido (405) o servicio no disponible (503). Guarda requestId para soporte.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}}},"tags":["Descargas"]}},"\/comprobantes\/{reference}\/ride":{"get":{"operationId":"descargar_ride","summary":"Descargar RIDE autorizado","description":"documents:read. Exclusivamente AUTORIZADO; disponible tras vencer la suscripci\u00f3n.","parameters":[{"name":"reference","in":"path","required":true,"schema":{"type":"string"},"description":"UUID devuelto por Ruxi o clave de acceso de 49 d\u00edgitos de un documento propio.","example":"123e4567-e89b-42d3-a456-426614174001"}],"responses":{"200":{"description":"Archivo fiscal autorizado.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}},"Content-Disposition":{"description":"`attachment; filename=\"<claveAcceso>.xml\"` o `attachment; filename=\"<claveAcceso>.pdf\"`.","schema":{"type":"string"}}},"content":{"application\/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"C\u00f3digos y mensajes:\n\n- **https_required** \u2014 Se requiere HTTPS.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"https_required":{"summary":"https_required: Se requiere HTTPS.","description":"Usa la base HTTPS publicada.","value":{"error":{"code":"https_required","message":"Se requiere HTTPS."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"401":{"description":"C\u00f3digos y mensajes:\n\n- **unauthenticated** \u2014 Credencial inv\u00e1lida.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"unauthenticated":{"summary":"unauthenticated: Credencial inv\u00e1lida.","description":"Revisa Authorization: Bearer y que la clave, cuenta, empresa y ambiente est\u00e9n habilitados.","value":{"error":{"code":"unauthenticated","message":"Credencial inv\u00e1lida."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"403":{"description":"C\u00f3digos y mensajes:\n\n- **insufficient_scope** \u2014 La clave no tiene permiso para esta operaci\u00f3n.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"insufficient_scope":{"summary":"insufficient_scope: La clave no tiene permiso para esta operaci\u00f3n.","description":"Crea o utiliza una clave con el permiso indicado en esta operaci\u00f3n.","value":{"error":{"code":"insufficient_scope","message":"La clave no tiene permiso para esta operaci\u00f3n."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"404":{"description":"C\u00f3digos y mensajes:\n\n- **not_found** \u2014 Recurso no encontrado.\n\n- **not_found** \u2014 Comprobante no encontrado.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"not_found":{"summary":"not_found: Recurso no encontrado.","description":"Comprueba el host, la ruta y que la API est\u00e9 habilitada.","value":{"error":{"code":"not_found","message":"Recurso no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"not_found_2":{"summary":"not_found: Comprobante no encontrado.","description":"Usa el UUID o clave de acceso de un documento de la empresa, cuenta y ambiente de tu credencial. Los documentos ajenos tambi\u00e9n devuelven 404.","value":{"error":{"code":"not_found","message":"Comprobante no encontrado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"409":{"description":"C\u00f3digos y mensajes:\n\n- **not_authorized** \u2014 El documento a\u00fan no est\u00e1 autorizado.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"not_authorized":{"summary":"not_authorized: El documento a\u00fan no est\u00e1 autorizado.","description":"Consulta hasta obtener AUTORIZADO antes de descargar XML o RIDE.","value":{"error":{"code":"not_authorized","message":"El documento a\u00fan no est\u00e1 autorizado."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"413":{"description":"C\u00f3digos y mensajes:\n\n- **body_too_large** \u2014 El contenido excede el l\u00edmite permitido.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"body_too_large":{"summary":"body_too_large: El contenido excede el l\u00edmite permitido.","description":"Reduce el cuerpo. El l\u00edmite de aplicaci\u00f3n es 2 MiB (2097152 bytes).","value":{"error":{"code":"body_too_large","message":"El contenido excede el l\u00edmite permitido."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"429":{"description":"C\u00f3digos y mensajes:\n\n- **rate_limited** \u2014 Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Retry-After":{"description":"Segundos reales de espera m\u00ednima para rate_limited. Puede faltar en l\u00edmites de cupo o pruebas; 60 segundos no garantiza que el cupo o el l\u00edmite diario se hayan renovado.","schema":{"type":"integer","minimum":1,"example":22}},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"rate_limited":{"summary":"rate_limited: Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde.","description":"L\u00edmite por clave, cuenta o capacidad del servicio. Emisi\u00f3n, consulta y descarga tienen cupos independientes y el plan puede ampliar el de la cuenta. Espera el Retry-After real antes de reintentar.","value":{"error":{"code":"rate_limited","message":"Demasiadas solicitudes. Intenta nuevamente m\u00e1s tarde."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"502":{"description":"C\u00f3digos y mensajes:\n\n- **invalid_upstream** \u2014 El servicio fiscal devolvi\u00f3 un comprobante incompatible.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"invalid_upstream":{"summary":"invalid_upstream: El servicio fiscal devolvi\u00f3 un comprobante incompatible.","description":"Vuelve a consultar el comprobante. Si el error persiste, env\u00eda su UUID y requestId a soporte.","value":{"error":{"code":"invalid_upstream","message":"El servicio fiscal devolvi\u00f3 un comprobante incompatible."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"503":{"description":"C\u00f3digos y mensajes:\n\n- **request_failed** \u2014 No se pudo completar la solicitud.\n\n- **service_unavailable** \u2014 No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.\n","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed: No se pudo completar la solicitud.","description":"Consulta el comprobante antes de reintentar. Reutiliza Idempotency-Key y el cuerpo original; guarda requestId para soporte.","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"service_unavailable":{"summary":"service_unavailable: No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud.","description":"La operaci\u00f3n puede haberse admitido. Consulta el comprobante antes de reintentar con la misma Idempotency-Key y contenido.","value":{"error":{"code":"service_unavailable","message":"No se pudo completar la operaci\u00f3n. Conserva el identificador de solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}},"default":{"description":"request_failed: ruta desconocida (404), m\u00e9todo no permitido (405) o servicio no disponible (503). Guarda requestId para soporte.","headers":{"X-Request-ID":{"schema":{"type":"string","format":"uuid"},"description":"Identificador de la solicitud. Incl\u00fayelo al contactar con soporte."},"X-RateLimit-Limit":{"schema":{"type":"integer","minimum":1},"description":"Tope de solicitudes por minuto de esta operaci\u00f3n: el m\u00e1s restrictivo entre la clave y la cuenta."},"X-RateLimit-Remaining":{"schema":{"type":"integer","minimum":0},"description":"Solicitudes restantes en la ventana actual para el l\u00edmite aplicable."},"X-RateLimit-Reset":{"schema":{"type":"integer","minimum":0},"description":"Segundos restantes hasta que la ventana del l\u00edmite aplicable se renueve."},"X-RateLimit-Scope":{"schema":{"type":"string","enum":["key","account"]},"description":"Cubo m\u00e1s restrictivo en esta respuesta: la clave o la cuenta."},"Cache-Control":{"description":"Respuesta privada que no debe almacenarse en cach\u00e9.","schema":{"type":"string","example":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RuxiError"},"examples":{"request_failed":{"summary":"request_failed","value":{"error":{"code":"request_failed","message":"No se pudo completar la solicitud."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}}}}}}},"tags":["Descargas"]}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Env\u00eda tu clave API en la cabecera Authorization: Bearer <clave>."}},"schemas":{"CreateFacturaDto":{"type":"object","properties":{"emisorRuc":{"type":"string","example":"1790012345001","description":"Opcional. Si se env\u00eda, debe coincidir con el RUC asociado a la clave API."},"estab":{"type":"string","example":"001"},"ptoEmi":{"type":"string","example":"001"},"fechaEmision":{"type":"string","description":"Omitir para asignar la fecha actual de Ecuador (America\/Guayaquil). Una emisi\u00f3n nueva rechaza cualquier fecha diferente con invalid_emission_date (422). Los reintentos y correcciones conservan la fecha original."},"infoAdicional":{"type":"array","items":{"$ref":"#\/components\/schemas\/CampoAdicionalDto"}},"comprador":{"$ref":"#\/components\/schemas\/ReceptorDto"},"infoFactura":{"$ref":"#\/components\/schemas\/FacturaInfoDto"},"detalles":{"type":"array","items":{"$ref":"#\/components\/schemas\/FacturaDetalleDto"}},"reembolsos":{"type":"array","items":{"$ref":"#\/components\/schemas\/FacturaReembolsoDetalleDto"}},"retenciones":{"type":"array","items":{"$ref":"#\/components\/schemas\/FacturaRetencionDto"}},"infoSustitutivaGuiaRemision":{"$ref":"#\/components\/schemas\/FacturaInfoSustitutivaGuiaDto"},"otrosRubrosTerceros":{"type":"array","items":{"$ref":"#\/components\/schemas\/FacturaRubroTerceroDto"}},"tipoNegociable":{"$ref":"#\/components\/schemas\/FacturaNegociableDto"},"maquinaFiscal":{"$ref":"#\/components\/schemas\/MaquinaFiscalDto"}},"required":["estab","ptoEmi","comprador","infoFactura","detalles"]},"CampoAdicionalDto":{"type":"object","properties":{"nombre":{"type":"string"},"valor":{"type":"string"}},"required":["nombre","valor"]},"ReceptorDto":{"type":"object","properties":{"tipoIdentificacion":{"type":"string","enum":["04","05","06","07","08"]},"identificacion":{"type":"string","example":"0912345678"},"razonSocial":{"type":"string","example":"Cliente Demo"},"direccion":{"type":"string"},"email":{"type":"string","example":"cliente@ejemplo.com","description":"Obligatorio salvo para consumidor final (tipoIdentificacion 07). Si se env\u00eda, debe ser un correo v\u00e1lido."}},"required":["tipoIdentificacion","identificacion","razonSocial"]},"FacturaInfoDto":{"type":"object","properties":{"dirEstablecimiento":{"type":"string"},"contribuyenteEspecial":{"type":"string"},"obligadoContabilidad":{"type":"string"},"comercioExterior":{"type":"string","example":"EXPORTADOR"},"incoTermFactura":{"type":"string"},"lugarIncoTerm":{"type":"string"},"paisOrigen":{"type":"string"},"puertoEmbarque":{"type":"string"},"puertoDestino":{"type":"string"},"paisDestino":{"type":"string"},"paisAdquisicion":{"type":"string"},"guiaRemision":{"type":"string","description":"Formato establecimiento-punto-secuencial gu\u00eda (ej. 001-001-000000001)."},"totalSinImpuestos":{"type":"number"},"totalSubsidio":{"type":"number"},"incoTermTotalSinImpuestos":{"type":"string"},"totalDescuento":{"type":"number","default":0},"codDocReembolso":{"type":"string"},"totalComprobantesReembolso":{"type":"number"},"totalBaseImponibleReembolso":{"type":"number"},"totalImpuestoReembolso":{"type":"number"},"totalConImpuestos":{"$ref":"#\/components\/schemas\/TotalConImpuestosFacturaDto"},"compensaciones":{"type":"array","items":{"$ref":"#\/components\/schemas\/CompensacionDto"}},"propina":{"type":"number","default":0},"fleteInternacional":{"type":"number"},"seguroInternacional":{"type":"number"},"gastosAduaneros":{"type":"number"},"gastosTransporteOtros":{"type":"number"},"importeTotal":{"type":"number"},"moneda":{"type":"string","default":"DOLAR"},"placa":{"type":"string","example":"ABC0123","description":"Identificador de placa en may\u00fasculas y sin espacios (m\u00e1ximo 20 caracteres). Para H492001 debe usar el formato ABC0123 cuando la obligaci\u00f3n est\u00e9 vigente."},"pagos":{"type":"array","items":{"$ref":"#\/components\/schemas\/PagoDto"}},"valorRetIva":{"type":"number"},"valorRetRenta":{"type":"number"}},"required":["totalSinImpuestos","totalConImpuestos","importeTotal","pagos"]},"TotalConImpuestosFacturaDto":{"type":"object","properties":{"totalImpuesto":{"type":"array","items":{"$ref":"#\/components\/schemas\/FacturaTotalImpuestoDto"}}},"required":["totalImpuesto"]},"FacturaTotalImpuestoDto":{"type":"object","properties":{"codigo":{"type":"string","example":"2"},"codigoPorcentaje":{"type":"string","example":"2"},"baseImponible":{"type":"number","example":100},"valor":{"type":"number","example":12},"descuentoAdicional":{"type":"number","description":"Opcional cuando corresponda (p. ej. c\u00f3digo impuesto 2)."},"tarifa":{"type":"number"},"valorDevolucionIva":{"type":"number","description":"Valor autorizado previamente por los servicios DIG."}},"required":["codigo","codigoPorcentaje","baseImponible","valor"]},"CompensacionDto":{"type":"object","properties":{"codigo":{"type":"string","example":"1"},"tarifa":{"type":"number"},"valor":{"type":"number"}},"required":["codigo","tarifa","valor"]},"PagoDto":{"type":"object","properties":{"formaPago":{"type":"string","example":"01"},"total":{"type":"number","example":112},"plazo":{"type":"number","example":30},"unidadTiempo":{"type":"string","example":"dias"}},"required":["formaPago","total"]},"FacturaDetalleDto":{"type":"object","properties":{"codigoPrincipal":{"type":"string","example":"SKU-001"},"codigoAuxiliar":{"type":"string"},"descripcion":{"type":"string"},"cantidad":{"type":"number"},"precioUnitario":{"type":"number"},"precioSinSubsidio":{"type":"number","description":"Precio sin subsidio, cuando corresponda."},"descuento":{"type":"number","default":0},"precioTotalSinImpuesto":{"type":"number"},"unidadMedida":{"type":"string"},"impuestos":{"type":"array","items":{"$ref":"#\/components\/schemas\/FacturaImpuestoDetalleDto"}},"detallesAdicionales":{"type":"array","items":{"$ref":"#\/components\/schemas\/DetalleAdicionalDto"}}},"required":["codigoPrincipal","descripcion","cantidad","precioUnitario","precioTotalSinImpuesto","impuestos"]},"FacturaImpuestoDetalleDto":{"type":"object","properties":{"codigo":{"type":"string","example":"2"},"codigoPorcentaje":{"type":"string","example":"2"},"tarifa":{"type":"number","example":12},"baseImponible":{"type":"number","example":100},"valor":{"type":"number","example":12}},"required":["codigo","codigoPorcentaje","tarifa","baseImponible","valor"]},"DetalleAdicionalDto":{"type":"object","properties":{"nombre":{"type":"string"},"valor":{"type":"string"}},"required":["nombre","valor"]},"FacturaReembolsoDetalleDto":{"type":"object","properties":{"tipoIdentificacionProveedorReembolso":{"type":"string"},"identificacionProveedorReembolso":{"type":"string"},"codPaisPagoProveedorReembolso":{"type":"string"},"tipoProveedorReembolso":{"type":"string"},"codDocReembolso":{"type":"string"},"estabDocReembolso":{"type":"string"},"ptoEmiDocReembolso":{"type":"string"},"secuencialDocReembolso":{"type":"string"},"fechaEmisionDocReembolso":{"type":"string"},"numeroautorizacionDocReemb":{"type":"string"},"detalleImpuestos":{"type":"array","items":{"$ref":"#\/components\/schemas\/FacturaDetalleImpuestoReembolsoDto"}},"compensacionesReembolso":{"type":"array","items":{"$ref":"#\/components\/schemas\/CompensacionDto"}}},"required":["tipoIdentificacionProveedorReembolso","identificacionProveedorReembolso","tipoProveedorReembolso","codDocReembolso","estabDocReembolso","ptoEmiDocReembolso","secuencialDocReembolso","fechaEmisionDocReembolso","numeroautorizacionDocReemb","detalleImpuestos"]},"FacturaDetalleImpuestoReembolsoDto":{"type":"object","properties":{"codigo":{"type":"string"},"codigoPorcentaje":{"type":"string"},"tarifa":{"type":"number"},"baseImponibleReembolso":{"type":"number"},"impuestoReembolso":{"type":"number"}},"required":["codigo","codigoPorcentaje","tarifa","baseImponibleReembolso","impuestoReembolso"]},"FacturaRetencionDto":{"type":"object","properties":{"codigo":{"type":"string","example":"4"},"codigoPorcentaje":{"type":"string"},"tarifa":{"type":"number"},"valor":{"type":"number"}},"required":["codigo","codigoPorcentaje","tarifa","valor"]},"FacturaInfoSustitutivaGuiaDto":{"type":"object","properties":{"dirPartida":{"type":"string"},"dirDestinatario":{"type":"string"},"fechaIniTransporte":{"type":"string"},"fechaFinTransporte":{"type":"string"},"razonSocialTransportista":{"type":"string"},"tipoIdentificacionTransportista":{"type":"string"},"rucTransportista":{"type":"string"},"placa":{"type":"string"},"destinos":{"type":"array","items":{"$ref":"#\/components\/schemas\/FacturaDestinoDto"}}},"required":["dirPartida","dirDestinatario","fechaIniTransporte","fechaFinTransporte","razonSocialTransportista","tipoIdentificacionTransportista","rucTransportista","placa","destinos"]},"FacturaDestinoDto":{"type":"object","properties":{"motivoTraslado":{"type":"string"},"docAduaneroUnico":{"type":"string"},"codEstabDestino":{"type":"string"},"ruta":{"type":"string"}},"required":["motivoTraslado"]},"FacturaRubroTerceroDto":{"type":"object","properties":{"concepto":{"type":"string"},"total":{"type":"number"}},"required":["concepto","total"]},"FacturaNegociableDto":{"type":"object","properties":{"correo":{"type":"string","example":"cliente@ejemplo.com"}},"required":["correo"]},"MaquinaFiscalDto":{"type":"object","properties":{"marca":{"type":"string"},"modelo":{"type":"string"},"serie":{"type":"string"}},"required":["marca","modelo","serie"]},"CreateFacturaSimpleDto":{"type":"object","properties":{"emisorRuc":{"type":"string","example":"1790012345001","description":"Opcional. Si se env\u00eda, debe coincidir con el RUC asociado a la clave API."},"estab":{"type":"string","example":"001"},"ptoEmi":{"type":"string","example":"001"},"fechaEmision":{"type":"string","description":"Omitir para asignar la fecha actual de Ecuador (America\/Guayaquil). Una emisi\u00f3n nueva rechaza cualquier fecha diferente con invalid_emission_date (422). Los reintentos y correcciones conservan la fecha original."},"infoAdicional":{"type":"array","items":{"$ref":"#\/components\/schemas\/CampoAdicionalDto"}},"comprador":{"$ref":"#\/components\/schemas\/ReceptorDto"},"detalles":{"type":"array","items":{"$ref":"#\/components\/schemas\/FacturaDetalleSimpleDto"}},"formaPago":{"type":"string","example":"01","description":"Forma de pago (un solo pago por el importe total)."},"moneda":{"type":"string","default":"DOLAR"},"placa":{"type":"string","example":"ABC0123","description":"Identificador de placa en may\u00fasculas y sin espacios (m\u00e1ximo 20 caracteres). Para H492001 debe usar el formato ABC0123 cuando la obligaci\u00f3n est\u00e9 vigente."},"dirEstablecimiento":{"type":"string"},"contribuyenteEspecial":{"type":"string"},"obligadoContabilidad":{"type":"string"},"guiaRemision":{"type":"string","description":"Formato establecimiento-punto-secuencial gu\u00eda (ej. 001-001-000000001)."},"propina":{"type":"number","default":0},"valorRetIva":{"type":"number"},"valorRetRenta":{"type":"number"},"tipoNegociable":{"type":"string"}},"required":["estab","ptoEmi","comprador","detalles"]},"FacturaDetalleSimpleDto":{"type":"object","properties":{"codigoPrincipal":{"type":"string","description":"Si se omite, se asigna 001, 002, \u2026 por orden de l\u00ednea.","maxLength":25},"codigoAuxiliar":{"type":"string"},"descripcion":{"type":"string"},"cantidad":{"type":"number"},"precioUnitario":{"type":"number","description":"Precio unitario sin IVA."},"descuento":{"type":"number","default":0},"unidadMedida":{"type":"string"},"detallesAdicionales":{"type":"array","items":{"$ref":"#\/components\/schemas\/DetalleAdicionalDto"}},"impuestoCodigo":{"type":"string","default":"2","description":"C\u00f3digo impuesto SRI (IVA = 2)."},"impuestoCodigoPorcentaje":{"type":"string","default":"4","description":"C\u00f3digo porcentaje IVA SRI (15% = 4)."},"impuestoTarifa":{"type":"number","default":15,"description":"Tarifa IVA (%)."}},"required":["descripcion","cantidad","precioUnitario"]},"CreateLiquidacionDto":{"type":"object","properties":{"emisorRuc":{"type":"string","example":"1790012345001","description":"Opcional. Si se env\u00eda, debe coincidir con el RUC asociado a la clave API."},"estab":{"type":"string","example":"001"},"ptoEmi":{"type":"string","example":"001"},"fechaEmision":{"type":"string","description":"Omitir para asignar la fecha actual de Ecuador (America\/Guayaquil). Una emisi\u00f3n nueva rechaza cualquier fecha diferente con invalid_emission_date (422). Los reintentos y correcciones conservan la fecha original."},"infoAdicional":{"type":"array","items":{"$ref":"#\/components\/schemas\/CampoAdicionalDto"}},"proveedor":{"$ref":"#\/components\/schemas\/ReceptorDto"},"infoLiquidacionCompra":{"$ref":"#\/components\/schemas\/LiquidacionInfoDto"},"detalles":{"type":"array","items":{"$ref":"#\/components\/schemas\/DetalleDto"}},"reembolsos":{"type":"array","items":{"$ref":"#\/components\/schemas\/LiquidacionReembolsoDetalleDto"}},"tipoNegociable":{"type":"string","example":"proveedor@ejemplo.com"},"maquinaFiscal":{"$ref":"#\/components\/schemas\/MaquinaFiscalDto"}},"required":["estab","ptoEmi","proveedor","infoLiquidacionCompra","detalles"]},"LiquidacionInfoDto":{"type":"object","properties":{"dirEstablecimiento":{"type":"string"},"totalSinImpuestos":{"type":"number"},"totalDescuento":{"type":"number","default":0},"codDocReembolso":{"type":"string"},"totalComprobantesReembolso":{"type":"number"},"totalBaseImponibleReembolso":{"type":"number"},"totalImpuestoReembolso":{"type":"number"},"totalConImpuestos":{"$ref":"#\/components\/schemas\/LiquidacionTotalConImpuestosDto"},"importeTotal":{"type":"number"},"moneda":{"type":"string","default":"DOLAR"},"pagos":{"type":"array","items":{"$ref":"#\/components\/schemas\/PagoDto"}}},"required":["totalSinImpuestos","totalConImpuestos","importeTotal"]},"LiquidacionTotalConImpuestosDto":{"type":"object","properties":{"totalImpuesto":{"type":"array","items":{"$ref":"#\/components\/schemas\/LiquidacionTotalImpuestoDto"}}},"required":["totalImpuesto"]},"LiquidacionTotalImpuestoDto":{"type":"object","properties":{"codigo":{"type":"string"},"codigoPorcentaje":{"type":"string"},"descuentoAdicional":{"type":"number"},"baseImponible":{"type":"number"},"tarifa":{"type":"number"},"valor":{"type":"number"}},"required":["codigo","codigoPorcentaje","baseImponible","valor"]},"DetalleDto":{"type":"object","properties":{"codigoPrincipal":{"type":"string"},"codigoAuxiliar":{"type":"string"},"descripcion":{"type":"string"},"cantidad":{"type":"number"},"precioUnitario":{"type":"number"},"precioSinSubsidio":{"type":"number","description":"Precio sin subsidio, cuando corresponda."},"descuento":{"type":"number","default":0},"precioTotalSinImpuesto":{"type":"number"},"unidadMedida":{"type":"string"},"impuestos":{"type":"array","items":{"$ref":"#\/components\/schemas\/ImpuestoDto"}},"detallesAdicionales":{"type":"array","items":{"$ref":"#\/components\/schemas\/DetalleAdicionalDto"}}},"required":["descripcion","cantidad","precioUnitario","precioTotalSinImpuesto","impuestos"]},"ImpuestoDto":{"type":"object","properties":{"codigo":{"type":"string","example":"2"},"codigoPorcentaje":{"type":"string","example":"2"},"tarifa":{"type":"number","example":12},"baseImponible":{"type":"number","example":100},"valor":{"type":"number","example":12}},"required":["codigo","codigoPorcentaje","tarifa","baseImponible","valor"]},"LiquidacionReembolsoDetalleDto":{"type":"object","properties":{"tipoIdentificacionProveedorReembolso":{"type":"string"},"identificacionProveedorReembolso":{"type":"string"},"codPaisPagoProveedorReembolso":{"type":"string"},"tipoProveedorReembolso":{"type":"string"},"codDocReembolso":{"type":"string"},"estabDocReembolso":{"type":"string"},"ptoEmiDocReembolso":{"type":"string"},"secuencialDocReembolso":{"type":"string"},"fechaEmisionDocReembolso":{"type":"string"},"numeroautorizacionDocReemb":{"type":"string"},"detalleImpuestos":{"type":"array","items":{"$ref":"#\/components\/schemas\/FacturaDetalleImpuestoReembolsoDto"}}},"required":["tipoIdentificacionProveedorReembolso","identificacionProveedorReembolso","tipoProveedorReembolso","codDocReembolso","estabDocReembolso","ptoEmiDocReembolso","secuencialDocReembolso","fechaEmisionDocReembolso","numeroautorizacionDocReemb","detalleImpuestos"]},"CreateNotaCreditoDto":{"type":"object","properties":{"emisorRuc":{"type":"string","example":"1790012345001","description":"Opcional. Si se env\u00eda, debe coincidir con el RUC asociado a la clave API."},"estab":{"type":"string","example":"001"},"ptoEmi":{"type":"string","example":"001"},"fechaEmision":{"type":"string","description":"Omitir para asignar la fecha actual de Ecuador (America\/Guayaquil). Una emisi\u00f3n nueva rechaza cualquier fecha diferente con invalid_emission_date (422). Los reintentos y correcciones conservan la fecha original."},"infoAdicional":{"type":"array","items":{"$ref":"#\/components\/schemas\/CampoAdicionalDto"}},"comprador":{"$ref":"#\/components\/schemas\/ReceptorDto"},"infoNotaCredito":{"$ref":"#\/components\/schemas\/NotaCreditoInfoDto"},"detalles":{"type":"array","items":{"$ref":"#\/components\/schemas\/NotaCreditoDetalleDto"}},"maquinaFiscal":{"$ref":"#\/components\/schemas\/MaquinaFiscalDto"},"ajusteRuxi":{"$ref":"#\/components\/schemas\/RuxiCreditAdjustment"}},"required":["estab","ptoEmi","comprador","infoNotaCredito","detalles"]},"NotaCreditoInfoDto":{"type":"object","properties":{"dirEstablecimiento":{"type":"string"},"codDocModificado":{"type":"string","example":"01"},"numDocModificado":{"type":"string","example":"001-001-000000123"},"fechaEmisionDocSustento":{"type":"string","example":"25\/03\/2026"},"totalSinImpuestos":{"type":"number"},"compensaciones":{"type":"array","items":{"$ref":"#\/components\/schemas\/CompensacionDto"}},"totalConImpuestos":{"$ref":"#\/components\/schemas\/NotaCreditoTotalConImpuestosDto"},"valorModificacion":{"type":"number"},"moneda":{"type":"string","default":"DOLAR"},"motivo":{"type":"string"}},"required":["codDocModificado","numDocModificado","fechaEmisionDocSustento","totalSinImpuestos","totalConImpuestos","valorModificacion","motivo"]},"NotaCreditoTotalConImpuestosDto":{"type":"object","properties":{"totalImpuesto":{"type":"array","items":{"$ref":"#\/components\/schemas\/NotaCreditoTotalImpuestoDto"}}},"required":["totalImpuesto"]},"NotaCreditoTotalImpuestoDto":{"type":"object","properties":{"codigo":{"type":"string","example":"2"},"codigoPorcentaje":{"type":"string","example":"2"},"baseImponible":{"type":"number","example":100},"valor":{"type":"number","example":12},"valorDevolucionIva":{"type":"number","description":"Aplica solo cuando corresponde devoluci\u00f3n autom\u00e1tica del IVA."}},"required":["codigo","codigoPorcentaje","baseImponible","valor"]},"NotaCreditoDetalleDto":{"type":"object","properties":{"codigoInterno":{"type":"string","example":"SKU-001"},"codigoAdicional":{"type":"string"},"descripcion":{"type":"string"},"cantidad":{"type":"number"},"precioUnitario":{"type":"number"},"descuento":{"type":"number","default":0},"precioTotalSinImpuesto":{"type":"number"},"impuestos":{"type":"array","items":{"$ref":"#\/components\/schemas\/NotaCreditoImpuestoDetalleDto"}},"detallesAdicionales":{"type":"array","items":{"$ref":"#\/components\/schemas\/DetalleAdicionalDto"}}},"required":["descripcion","cantidad","precioUnitario","precioTotalSinImpuesto","impuestos"]},"NotaCreditoImpuestoDetalleDto":{"type":"object","properties":{"codigo":{"type":"string","example":"2"},"codigoPorcentaje":{"type":"string","example":"2"},"tarifa":{"type":"number","example":12},"baseImponible":{"type":"number","example":100},"valor":{"type":"number","example":12}},"required":["codigo","codigoPorcentaje","tarifa","baseImponible","valor"]},"CreateNotaDebitoDto":{"type":"object","properties":{"emisorRuc":{"type":"string","example":"1790012345001","description":"Opcional. Si se env\u00eda, debe coincidir con el RUC asociado a la clave API."},"estab":{"type":"string","example":"001"},"ptoEmi":{"type":"string","example":"001"},"fechaEmision":{"type":"string","description":"Omitir para asignar la fecha actual de Ecuador (America\/Guayaquil). Una emisi\u00f3n nueva rechaza cualquier fecha diferente con invalid_emission_date (422). Los reintentos y correcciones conservan la fecha original."},"infoAdicional":{"type":"array","items":{"$ref":"#\/components\/schemas\/CampoAdicionalDto"}},"comprador":{"$ref":"#\/components\/schemas\/ReceptorDto"},"infoNotaDebito":{"$ref":"#\/components\/schemas\/NotaDebitoInfoDto"},"motivos":{"type":"array","items":{"$ref":"#\/components\/schemas\/MotivoNotaDebitoDto"}},"maquinaFiscal":{"$ref":"#\/components\/schemas\/MaquinaFiscalDto"}},"required":["estab","ptoEmi","comprador","infoNotaDebito","motivos"]},"NotaDebitoInfoDto":{"type":"object","properties":{"dirEstablecimiento":{"type":"string"},"codDocModificado":{"type":"string","example":"01"},"numDocModificado":{"type":"string","example":"001-001-000000123"},"fechaEmisionDocSustento":{"type":"string","example":"25\/03\/2026"},"totalSinImpuestos":{"type":"number"},"impuestos":{"type":"array","items":{"$ref":"#\/components\/schemas\/NotaDebitoImpuestoDto"}},"compensaciones":{"type":"array","items":{"$ref":"#\/components\/schemas\/CompensacionDto"}},"valorTotal":{"type":"number"},"pagos":{"type":"array","items":{"$ref":"#\/components\/schemas\/PagoDto"}}},"required":["codDocModificado","numDocModificado","fechaEmisionDocSustento","totalSinImpuestos","impuestos","valorTotal","pagos"]},"NotaDebitoImpuestoDto":{"type":"object","properties":{"codigo":{"type":"string","example":"2"},"codigoPorcentaje":{"type":"string","example":"2"},"tarifa":{"type":"number","example":12},"baseImponible":{"type":"number","example":100},"valor":{"type":"number","example":12},"valorDevolucionIva":{"type":"number","description":"Aplica solo cuando corresponde devoluci\u00f3n autom\u00e1tica del IVA."}},"required":["codigo","codigoPorcentaje","tarifa","baseImponible","valor"]},"MotivoNotaDebitoDto":{"type":"object","properties":{"razon":{"type":"string"},"valor":{"type":"number"}},"required":["razon","valor"]},"CreateGuiaRemisionDto":{"type":"object","properties":{"emisorRuc":{"type":"string","example":"1790012345001","description":"Opcional. Si se env\u00eda, debe coincidir con el RUC asociado a la clave API."},"estab":{"type":"string","example":"001"},"ptoEmi":{"type":"string","example":"001"},"fechaEmision":{"type":"string","description":"Omitir para asignar la fecha actual de Ecuador (America\/Guayaquil). Una emisi\u00f3n nueva rechaza cualquier fecha diferente con invalid_emission_date (422). Los reintentos y correcciones conservan la fecha original."},"infoAdicional":{"type":"array","items":{"$ref":"#\/components\/schemas\/CampoAdicionalDto"}},"infoGuiaRemision":{"$ref":"#\/components\/schemas\/GuiaRemisionInfoDto"},"destinatarios":{"type":"array","items":{"$ref":"#\/components\/schemas\/DestinatarioDto"}},"maquinaFiscal":{"$ref":"#\/components\/schemas\/MaquinaFiscalDto"}},"required":["estab","ptoEmi","infoGuiaRemision","destinatarios"]},"GuiaRemisionInfoDto":{"type":"object","properties":{"dirEstablecimiento":{"type":"string"},"dirPartida":{"type":"string"},"razonSocialTransportista":{"type":"string"},"tipoIdentificacionTransportista":{"type":"string"},"rucTransportista":{"type":"string"},"fechaIniTransporte":{"type":"string","example":"25\/03\/2026"},"fechaFinTransporte":{"type":"string","example":"26\/03\/2026"},"placa":{"type":"string"}},"required":["dirPartida","razonSocialTransportista","tipoIdentificacionTransportista","rucTransportista","fechaIniTransporte","fechaFinTransporte","placa"]},"DestinatarioDto":{"type":"object","properties":{"identificacionDestinatario":{"type":"string"},"razonSocialDestinatario":{"type":"string"},"dirDestinatario":{"type":"string"},"motivoTraslado":{"type":"string"},"docAduaneroUnico":{"type":"string"},"codEstabDestino":{"type":"string"},"ruta":{"type":"string"},"codDocSustento":{"type":"string","example":"01"},"numDocSustento":{"type":"string","example":"001-001-000000123"},"numAutDocSustento":{"type":"string","example":"1234567890"},"fechaEmisionDocSustento":{"type":"string","example":"25\/03\/2026"},"detalles":{"type":"array","items":{"$ref":"#\/components\/schemas\/DestinatarioDetalleDto"}}},"required":["identificacionDestinatario","razonSocialDestinatario","dirDestinatario","motivoTraslado","detalles"]},"DestinatarioDetalleDto":{"type":"object","properties":{"codigoInterno":{"type":"string"},"descripcion":{"type":"string"},"codigoAdicional":{"type":"string"},"cantidad":{"type":"string"},"detallesAdicionales":{"type":"array","items":{"$ref":"#\/components\/schemas\/DetalleAdicionalDto"}}},"required":["descripcion","cantidad"]},"CreateRetencionDto":{"type":"object","properties":{"emisorRuc":{"type":"string","example":"1790012345001","description":"Opcional. Si se env\u00eda, debe coincidir con el RUC asociado a la clave API."},"estab":{"type":"string","example":"001"},"ptoEmi":{"type":"string","example":"001"},"fechaEmision":{"type":"string","description":"Omitir para asignar la fecha actual de Ecuador (America\/Guayaquil). Una emisi\u00f3n nueva rechaza cualquier fecha diferente con invalid_emission_date (422). Los reintentos y correcciones conservan la fecha original."},"infoAdicional":{"type":"array","items":{"$ref":"#\/components\/schemas\/CampoAdicionalDto"}},"sujetoRetenido":{"$ref":"#\/components\/schemas\/ReceptorDto"},"infoCompRetencion":{"$ref":"#\/components\/schemas\/RetencionInfoDto"},"docsSustento":{"type":"array","items":{"$ref":"#\/components\/schemas\/RetencionDocSustentoDto"}},"maquinaFiscal":{"$ref":"#\/components\/schemas\/MaquinaFiscalDto"}},"required":["estab","ptoEmi","sujetoRetenido","infoCompRetencion","docsSustento"]},"RetencionInfoDto":{"type":"object","properties":{"dirEstablecimiento":{"type":"string"},"tipoSujetoRetenido":{"type":"string","example":"01"},"parteRel":{"type":"string","enum":["SI","NO"],"example":"NO"},"periodoFiscal":{"type":"string","example":"03\/2026"}},"required":["parteRel","periodoFiscal"]},"RetencionDocSustentoDto":{"type":"object","properties":{"codSustento":{"type":"string","example":"01"},"codDocSustento":{"type":"string","example":"01"},"numDocSustento":{"type":"string","example":"001001000000123"},"fechaEmisionDocSustento":{"type":"string","example":"25\/03\/2026"},"fechaRegistroContable":{"type":"string"},"numAutDocSustento":{"type":"string"},"pagoLocExt":{"type":"string","example":"01","description":"01: pago local; 02: pago al exterior."},"tipoRegi":{"type":"string"},"paisEfecPago":{"type":"string"},"aplicConvDobTrib":{"type":"string","enum":["SI","NO"]},"pagExtSujRetNorLeg":{"type":"string","enum":["SI","NO"]},"pagoRegFis":{"type":"string","enum":["SI","NO"]},"totalComprobantesReembolso":{"type":"number"},"totalBaseImponibleReembolso":{"type":"number"},"totalImpuestoReembolso":{"type":"number"},"totalSinImpuestos":{"type":"number","example":100},"importeTotal":{"type":"number","example":115},"impuestosDocSustento":{"type":"array","items":{"$ref":"#\/components\/schemas\/RetencionImpuestoDocSustentoDto"}},"retenciones":{"type":"array","items":{"$ref":"#\/components\/schemas\/RetencionDetalleDto"}},"reembolsos":{"type":"array","items":{"$ref":"#\/components\/schemas\/RetencionReembolsoDetalleDto"}},"pagos":{"type":"array","items":{"$ref":"#\/components\/schemas\/RetencionPagoDto"}}},"required":["codSustento","codDocSustento","numDocSustento","fechaEmisionDocSustento","pagoLocExt","totalSinImpuestos","importeTotal","impuestosDocSustento","retenciones","pagos"]},"RetencionImpuestoDocSustentoDto":{"type":"object","properties":{"codImpuestoDocSustento":{"type":"string","example":"2","description":"2: IVA, 3: ICE, 5: IRBPNR."},"codigoPorcentaje":{"type":"string","example":"4"},"baseImponible":{"type":"number","example":100},"tarifa":{"type":"number","example":15},"valorImpuesto":{"type":"number","example":15}},"required":["codImpuestoDocSustento","codigoPorcentaje","baseImponible","tarifa","valorImpuesto"]},"RetencionDetalleDto":{"type":"object","properties":{"codigo":{"type":"string","example":"1","description":"1: renta, 2: IVA, 6: ISD."},"codigoRetencion":{"type":"string","example":"303"},"baseImponible":{"type":"number","example":100},"porcentajeRetener":{"type":"number","example":10},"valorRetenido":{"type":"number","example":10},"dividendos":{"$ref":"#\/components\/schemas\/RetencionDividendosDto"},"compraCajBanano":{"$ref":"#\/components\/schemas\/RetencionCompraCajaBananoDto"}},"required":["codigo","codigoRetencion","baseImponible","porcentajeRetener","valorRetenido"]},"RetencionDividendosDto":{"type":"object","properties":{"fechaPagoDiv":{"type":"string"},"imRentaSoc":{"type":"number"},"ejerFisUtDiv":{"type":"number"}},"required":["fechaPagoDiv","imRentaSoc","ejerFisUtDiv"]},"RetencionCompraCajaBananoDto":{"type":"object","properties":{"numCajBan":{"type":"number"},"precCajBan":{"type":"number"}},"required":["numCajBan","precCajBan"]},"RetencionReembolsoDetalleDto":{"type":"object","properties":{"tipoIdentificacionProveedorReembolso":{"type":"string"},"identificacionProveedorReembolso":{"type":"string"},"codPaisPagoProveedorReembolso":{"type":"string"},"tipoProveedorReembolso":{"type":"string"},"codDocReembolso":{"type":"string"},"estabDocReembolso":{"type":"string"},"ptoEmiDocReembolso":{"type":"string"},"secuencialDocReembolso":{"type":"string"},"fechaEmisionDocReembolso":{"type":"string"},"numeroAutorizacionDocReemb":{"type":"string"},"detalleImpuestos":{"type":"array","items":{"$ref":"#\/components\/schemas\/RetencionDetalleImpuestoReembolsoDto"}}},"required":["tipoIdentificacionProveedorReembolso","identificacionProveedorReembolso","tipoProveedorReembolso","codDocReembolso","estabDocReembolso","ptoEmiDocReembolso","secuencialDocReembolso","fechaEmisionDocReembolso","numeroAutorizacionDocReemb","detalleImpuestos"]},"RetencionDetalleImpuestoReembolsoDto":{"type":"object","properties":{"codigo":{"type":"string"},"codigoPorcentaje":{"type":"string"},"tarifa":{"type":"number"},"baseImponibleReembolso":{"type":"number"},"impuestoReembolso":{"type":"number"}},"required":["codigo","codigoPorcentaje","tarifa","baseImponibleReembolso","impuestoReembolso"]},"RetencionPagoDto":{"type":"object","properties":{"formaPago":{"type":"string","example":"01"},"total":{"type":"number","example":115}},"required":["formaPago","total"]},"RuxiDocument":{"type":"object","required":["id","tipo","claveAcceso","environment","estado","cuota","error","createdAt"],"properties":{"id":{"type":"string","format":"uuid","description":"UUID estable del expediente. Gu\u00e1rdalo aunque claveAcceso sea null."},"tipo":{"type":"string","enum":["factura","factura\/simple","liquidacion","nota-credito","nota-debito","guia-remision","retencion"],"description":"Formato utilizado al crear el documento. factura\/simple corresponde al tipo fiscal factura."},"claveAcceso":{"type":"string","nullable":true,"pattern":"^\\d{49}$","description":"Clave fiscal de 49 d\u00edgitos; null hasta que se asigne."},"environment":{"type":"string","enum":["PRUEBAS","PRODUCCION"],"description":"Ambiente asociado a la credencial; no se elige en el cuerpo."},"estado":{"type":"string","enum":["PENDIENTE_ENVIO","PENDIENTE_CORRECCION","ERROR_VALIDACION","PENDIENTE_RECEPCION","RECEPCION_INCIERTA","EN_PROCESAMIENTO","AUTORIZADO","DEVUELTA_CORREGIBLE","NO_AUTORIZADO","REVISION_MANUAL"],"description":"Estado actual del expediente. PENDIENTE_ENVIO\/PENDIENTE_CORRECCION: operaci\u00f3n admitida; ERROR_VALIDACION: datos rechazados antes de obtener clave; PENDIENTE_RECEPCION\/RECEPCION_INCIERTA\/EN_PROCESAMIENTO: seguimiento pendiente; AUTORIZADO: permite descargas; DEVUELTA_CORREGIBLE\/NO_AUTORIZADO: revisar y corregir; REVISION_MANUAL: requiere revisi\u00f3n antes de continuar."},"cuota":{"type":"string","enum":["reserved","consumed","released"],"description":"reserved: capacidad retenida; consumed: documento autorizado; released: reserva liberada tras rechazo."},"error":{"type":"string","nullable":true,"description":"C\u00f3digo operativo o null: invalid_document, invalid_correction, fiscal_service_unavailable, environment_mismatch, invalid_upstream o lease_lost. Puede acompa\u00f1ar HTTP 200\/202; consulta estado y detalle.mensajes."},"createdAt":{"type":"string","format":"date-time","description":"Fecha de creaci\u00f3n del expediente en ISO 8601 (UTC), independiente de fechaEmision fiscal.","nullable":true}},"example":{"id":"123e4567-e89b-42d3-a456-426614174001","tipo":"factura\/simple","claveAcceso":null,"environment":"PRUEBAS","estado":"PENDIENTE_ENVIO","cuota":"reserved","error":null,"createdAt":"2026-09-15T15:00:00.000000Z"}},"RuxiDocumentEnvelope":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#\/components\/schemas\/RuxiDocument"}}},"RuxiError":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"C\u00f3digo para identificar el error. Los ejemplos de cada respuesta enumeran los casos posibles."},"message":{"type":"string","description":"Descripci\u00f3n del error. Un mismo c\u00f3digo puede tener varios mensajes."}}},"requestId":{"type":"string","format":"uuid","description":"UUID de la solicitud; coincide con X-Request-ID."}},"example":{"error":{"code":"unauthenticated","message":"Credencial inv\u00e1lida."},"requestId":"123e4567-e89b-42d3-a456-426614174000"}},"RuxiPage":{"type":"object","required":["page","perPage","total","lastPage"],"properties":{"page":{"type":"integer","minimum":1},"perPage":{"type":"integer","minimum":1},"total":{"type":"integer","minimum":0},"lastPage":{"type":"integer","minimum":1}},"description":"Metadatos de paginaci\u00f3n. lastPage es al menos 1 incluso si total es 0; una p\u00e1gina fuera de rango devuelve data vac\u00edo."},"RuxiDetail":{"type":"object","properties":{"tipo":{"type":"string","nullable":true},"codigoDocumento":{"type":"string","nullable":true},"serie":{"type":"string","nullable":true},"secuencial":{"type":"string","nullable":true},"claveAcceso":{"type":"string","nullable":true},"fechaEmision":{"type":"string","nullable":true},"environment":{"type":"string","nullable":true},"estado":{"type":"string","nullable":true},"fechaAutorizacion":{"type":"string","nullable":true},"emisor":{"oneOf":[{"type":"object","properties":{"ruc":{"type":"string","nullable":true},"razonSocial":{"type":"string","nullable":true},"nombreComercial":{"type":"string","nullable":true}}},{"type":"array","maxItems":0,"items":[],"description":"Sin datos disponibles."}]},"receptor":{"oneOf":[{"type":"object","properties":{"tipoIdentificacion":{"type":"string","nullable":true},"identificacion":{"type":"string","nullable":true},"razonSocial":{"type":"string","nullable":true},"email":{"type":"string","nullable":true}}},{"type":"array","maxItems":0,"items":[],"description":"Sin datos disponibles."}]},"establecimiento":{"oneOf":[{"type":"object","properties":{"codigo":{"type":"string","nullable":true},"puntoEmision":{"type":"string","nullable":true},"direccion":{"type":"string","nullable":true}}},{"type":"array","maxItems":0,"items":[],"description":"Sin datos disponibles."}]},"mensajes":{"type":"array","maxItems":50,"items":{"type":"object","properties":{"identificador":{"type":"string","maxLength":1000},"tipo":{"type":"string","maxLength":1000},"mensaje":{"type":"string","maxLength":1000},"informacionAdicional":{"type":"string","maxLength":1000}}},"description":"Mensajes fiscales disponibles, hasta 50 elementos y 1000 caracteres por campo. Algunos detalles t\u00e9cnicos se sustituyen por [Detalle t\u00e9cnico omitido]."}},"description":"Devuelve [] mientras no haya clave de acceso; despu\u00e9s devuelve un objeto con los datos fiscales disponibles."},"RuxiCreditAdjustment":{"type":"object","required":["mode"],"description":"Especifica qu\u00e9 devolver o descontar, adem\u00e1s de los datos fiscales de la nota. Si se omite, Ruxi identifica las l\u00edneas por c\u00f3digo y descripci\u00f3n \u00fanicos. Es obligatorio para descuentos o l\u00edneas ambiguas.","properties":{"mode":{"type":"string","enum":["total","partial"],"description":"total devuelve el saldo restante de todas las l\u00edneas; partial usa lines."},"lines":{"type":"array","minItems":1,"maxItems":200,"description":"Obligatorio con mode=partial; se ignora con total. No repitas line_id.","items":{"type":"object","additionalProperties":false,"required":["line_id","mode"],"properties":{"line_id":{"type":"string","maxLength":30,"example":"line-1","description":"ID de l\u00ednea original (line-1, line-2, \u2026), seg\u00fan su orden en el XML autorizado."},"mode":{"type":"string","enum":["return","discount"]},"quantity":{"type":"number","minimum":0,"description":"Cantidad a devolver con return; hasta 6 decimales, positiva para realizar una devoluci\u00f3n."},"amount":{"type":"number","minimum":0,"description":"Importe del descuento con discount; hasta 2 decimales. El ajuste debe respetar el saldo original."}}}}}},"RuxiWebhookDocumentData":{"type":"object","additionalProperties":false,"required":["id","companyId","tipo","estado","previousStatus","version"],"properties":{"id":{"type":"string","format":"uuid","description":"Identificador para consultar el comprobante con tu clave API."},"companyId":{"type":"string","format":"uuid"},"tipo":{"type":"string","enum":["factura","factura\/simple","liquidacion","nota-credito","nota-debito","guia-remision","retencion"],"description":"Formato utilizado al crear el documento. factura\/simple corresponde al tipo fiscal factura."},"estado":{"type":"string","enum":["PENDIENTE_ENVIO","PENDIENTE_CORRECCION","ERROR_VALIDACION","PENDIENTE_RECEPCION","RECEPCION_INCIERTA","EN_PROCESAMIENTO","AUTORIZADO","DEVUELTA_CORREGIBLE","NO_AUTORIZADO","REVISION_MANUAL"],"description":"Estado actual del expediente. PENDIENTE_ENVIO\/PENDIENTE_CORRECCION: operaci\u00f3n admitida; ERROR_VALIDACION: datos rechazados antes de obtener clave; PENDIENTE_RECEPCION\/RECEPCION_INCIERTA\/EN_PROCESAMIENTO: seguimiento pendiente; AUTORIZADO: permite descargas; DEVUELTA_CORREGIBLE\/NO_AUTORIZADO: revisar y corregir; REVISION_MANUAL: requiere revisi\u00f3n antes de continuar."},"previousStatus":{"type":"string","nullable":true},"version":{"type":"integer","minimum":1,"description":"Versi\u00f3n creciente por comprobante. Las entregas pueden llegar fuera de orden."}}},"RuxiWebhookEvent":{"type":"object","additionalProperties":false,"required":["id","type","createdAt","environment","data"],"properties":{"id":{"type":"string","format":"uuid","description":"ID estable del evento. Deduplica por este valor."},"type":{"type":"string","enum":["document.authorized","document.rejected","document.status_updated","webhook.test"]},"createdAt":{"type":"string","format":"date-time"},"environment":{"type":"string","enum":["PRUEBAS","PRODUCCION"]},"data":{"oneOf":[{"$ref":"#\/components\/schemas\/RuxiWebhookDocumentData"},{"type":"object","additionalProperties":false,"required":["message"],"properties":{"message":{"type":"string"}}}]}},"example":{"id":"123e4567-e89b-42d3-a456-426614174002","type":"document.authorized","createdAt":"2026-09-15T15:00:10Z","environment":"PRUEBAS","data":{"id":"123e4567-e89b-42d3-a456-426614174001","companyId":"123e4567-e89b-42d3-a456-426614174003","tipo":"factura","estado":"AUTORIZADO","previousStatus":"EN_PROCESAMIENTO","version":3}}}}},"tags":[{"name":"Emisi\u00f3n","description":"Seis tipos de comprobante y un formato simplificado de factura."},{"name":"Consulta","description":"Historial de la empresa y ambiente de la clave. No consume documentos."},{"name":"Correcciones y reenv\u00edos","description":"Corregir datos rechazados o reenviar un comprobante pendiente."},{"name":"Descargas","description":"XML y PDF hist\u00f3ricos de comprobantes autorizados."}]}