{"openapi":"3.0.0","paths":{"/auth/opciones":{"get":{"operationId":"AuthController_opciones","parameters":[{"name":"ambito","required":true,"in":"query","schema":{"enum":["app","admin"],"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Autenticación"]}},"/auth/login":{"post":{"operationId":"AuthController_login","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginDto"}}}},"responses":{"200":{"description":""}},"tags":["Autenticación"]}},"/auth/google":{"post":{"operationId":"AuthController_google","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleDto"}}}},"responses":{"200":{"description":""}},"tags":["Autenticación"]}},"/auth/registro":{"post":{"operationId":"AuthController_registro","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistroDto"}}}},"responses":{"200":{"description":""}},"tags":["Autenticación"]}},"/auth/verificacion/confirmar":{"post":{"operationId":"AuthController_confirmar","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmarDto"}}}},"responses":{"200":{"description":""}},"tags":["Autenticación"]}},"/auth/verificacion/canal":{"post":{"operationId":"AuthController_canal","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CanalDto"}}}},"responses":{"200":{"description":""}},"tags":["Autenticación"]}},"/auth/verificacion/reenviar":{"post":{"operationId":"AuthController_reenviar","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CanalDto"}}}},"responses":{"200":{"description":""}},"tags":["Autenticación"]}},"/auth/refresh":{"post":{"operationId":"AuthController_refresh","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AmbitoDto"}}}},"responses":{"200":{"description":""}},"tags":["Autenticación"]}},"/auth/logout":{"post":{"operationId":"AuthController_logout","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AmbitoDto"}}}},"responses":{"200":{"description":""}},"tags":["Autenticación"]}},"/auth/olvide":{"post":{"operationId":"AuthController_olvide","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OlvideDto"}}}},"responses":{"200":{"description":""}},"tags":["Autenticación"]}},"/auth/restablecer":{"post":{"operationId":"AuthController_restablecer","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestablecerDto"}}}},"responses":{"200":{"description":""}},"tags":["Autenticación"]}},"/auth/yo":{"get":{"operationId":"AuthController_yo","parameters":[],"responses":{"200":{"description":""}},"tags":["Autenticación"]}},"/publico/whatsapp":{"get":{"operationId":"PublicoController_whatsapp","parameters":[{"name":"donde","required":true,"in":"query","schema":{"enum":["web","app"],"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Público"]}},"/v1/dni/buscar-por-nombre":{"post":{"description":"Devuelve las personas que coinciden; las coincidencias exactas (sin tildes) van primero.","operationId":"DniController_buscarPorNombre","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuscarPorNombreDto"}}}},"responses":{"200":{"description":"{ success, message, result: { total, resultados[], fuente } }"}},"security":[{"bearer":[]}],"summary":"Buscar DNI por nombres y apellidos","tags":["DNI"]}},"/v1/dni/{numero}":{"get":{"operationId":"DniController_basico","parameters":[{"name":"numero","required":true,"in":"path","description":"DNI de 8 dígitos","schema":{"example":"45988786","type":"string"}}],"responses":{"200":{"description":"{ success, message, result: { numero, nombres, apellido_paterno, apellido_materno, nombre_completo, codigo_verificacion, fuente, desde_cache, actualizado_at } }"}},"security":[{"bearer":[]}],"summary":"Nombres y apellidos de un DNI","tags":["DNI"]}},"/v1/dni/{numero}/fecha-nacimiento":{"get":{"operationId":"DniController_fechaNacimiento","parameters":[{"name":"numero","required":true,"in":"path","description":"DNI de 8 dígitos","schema":{"example":"45988786","type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Fecha de nacimiento y edad de un DNI","tags":["DNI"]}},"/v1/dni/{numero}/ruc":{"get":{"description":"Devuelve el RUC 10 asociado al DNI, si existe.","operationId":"DniController_ruc","parameters":[{"name":"numero","required":true,"in":"path","description":"DNI de 8 dígitos","schema":{"example":"45988786","type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"RUC de persona natural asociado a un DNI","tags":["DNI"]}},"/v1/ruc/{numero}":{"get":{"description":"Razón social, estado, condición, dirección y ubigeo desde el padrón reducido de SUNAT. Para RUC 10/15/17 la dirección se obtiene del domicilio fiscal (Clave SOL de la plataforma).","operationId":"RucController_basico","parameters":[{"name":"numero","required":true,"in":"path","description":"RUC de 11 dígitos","schema":{"example":"20100047218","type":"string"}}],"responses":{"200":{"description":"{ success, message, result: { ruc, razon_social, estado, condicion, direccion, ... } }"}},"security":[{"bearer":[]}],"summary":"Consulta RUC básica (padrón SUNAT)","tags":["RUC"]}},"/v1/ruc/{numero}/completo":{"get":{"description":"Ficha de e-consultaruc: actividades económicas, comprobantes, emisión electrónica, padrones. Con establecimientos=1 y/o representantes=1 agrega esas listas sin consumo adicional.","operationId":"RucController_completo","parameters":[{"name":"numero","required":true,"in":"path","description":"RUC de 11 dígitos","schema":{"example":"20100047218","type":"string"}},{"name":"establecimientos","required":false,"in":"query","schema":{"enum":["0","1"],"type":"string"}},{"name":"representantes","required":false,"in":"query","schema":{"enum":["0","1"],"type":"string"}}],"responses":{"200":{"description":"{ success, message, result: { ruc, razon_social, actividades_economicas, ... } }"}},"security":[{"bearer":[]}],"summary":"Ficha RUC completa (SUNAT)","tags":["RUC"]}},"/v1/ruc/{numero}/establecimientos":{"get":{"operationId":"RucController_establecimientos","parameters":[{"name":"numero","required":true,"in":"path","description":"RUC de 11 dígitos","schema":{"example":"20100047218","type":"string"}}],"responses":{"200":{"description":"{ success, message, result: { ruc, cantidad, establecimientos: [...] } }"}},"security":[{"bearer":[]}],"summary":"Establecimientos anexos registrados en SUNAT","tags":["RUC"]}},"/v1/ruc/{numero}/representantes":{"get":{"operationId":"RucController_representantes","parameters":[{"name":"numero","required":true,"in":"path","description":"RUC de 11 dígitos","schema":{"example":"20100047218","type":"string"}}],"responses":{"200":{"description":"{ success, message, result: { ruc, cantidad, representantes_legales: [...] } }"}},"security":[{"bearer":[]}],"summary":"Representantes legales registrados en SUNAT","tags":["RUC"]}},"/admin/padron":{"get":{"operationId":"PadronController_estado","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Estado del padrón: total de registros, última importación exitosa e importación en curso","tags":["Admin · Padrón RUC"]}},"/admin/padron/importar":{"post":{"operationId":"PadronController_importar","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Encola la descarga y carga del padrón reducido de SUNAT","tags":["Admin · Padrón RUC"]}},"/admin/padron/importaciones":{"get":{"operationId":"PadronController_importaciones","parameters":[{"name":"pagina","required":false,"in":"query","schema":{"type":"string"}},{"name":"por_pagina","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Historial de importaciones (paginado)","tags":["Admin · Padrón RUC"]}},"/v1/tipo-cambio":{"get":{"operationId":"TipoCambioController_rango","parameters":[{"name":"fuente","required":false,"in":"query","schema":{"enum":["sunat","sbs"],"type":"string"}},{"name":"hasta","required":true,"in":"query","schema":{"example":"2026-09-30"}},{"name":"desde","required":true,"in":"query","schema":{"example":"2026-09-01"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Tipo de cambio USD por rango de fechas (SUNAT o SBS)","tags":["Tipo de cambio"]}},"/v1/tipo-cambio/hoy":{"get":{"operationId":"TipoCambioController_hoy","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Tipo de cambio aplicable hoy (SUNAT y SBS)","tags":["Tipo de cambio"]}},"/v1/tipo-cambio/sunat/{anio}/{mes}":{"get":{"operationId":"TipoCambioController_mes","parameters":[{"name":"anio","required":true,"in":"path","schema":{"example":2026,"type":"string"}},{"name":"mes","required":true,"in":"path","schema":{"example":9,"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Tipo de cambio SUNAT de un mes","tags":["Tipo de cambio"]}},"/v1/cpe/validez":{"post":{"operationId":"CpeController_validar","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidezDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Validez de un comprobante en SUNAT","tags":["Comprobantes electrónicos"]}},"/v1/cpe/validez-masiva":{"post":{"operationId":"CpeController_subirLote","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/SubirLoteDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Sube un Excel/TXT y valida sus comprobantes en segundo plano","tags":["Comprobantes electrónicos"]},"get":{"operationId":"CpeController_lotes","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Mis lotes de validez masiva","tags":["Comprobantes electrónicos"]}},"/v1/cpe/validez-masiva/plantilla":{"get":{"operationId":"CpeController_plantilla","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Plantilla Excel para validez masiva","tags":["Comprobantes electrónicos"]}},"/v1/cpe/validez-masiva/{id}":{"get":{"operationId":"CpeController_lote","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Progreso y resultados de un lote","tags":["Comprobantes electrónicos"]}},"/v1/cpe/validez-masiva/{id}/excel":{"get":{"operationId":"CpeController_excel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Descarga los resultados de un lote en Excel","tags":["Comprobantes electrónicos"]}},"/v1/cpe/cdr":{"post":{"operationId":"CpeController_cdr","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CdrDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"CDR (constancia de recepción) de un comprobante emitido","tags":["Comprobantes electrónicos"]}},"/v1/cpe/xml":{"post":{"operationId":"CpeController_xml","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentoDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"XML de un comprobante (venta o compra) desde SOL","tags":["Comprobantes electrónicos"]}},"/v1/cpe/pdf":{"post":{"operationId":"CpeController_pdf","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentoDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"PDF (representación impresa) de un comprobante desde SOL","tags":["Comprobantes electrónicos"]}},"/v1/cpe/pdf-desde-xml":{"post":{"operationId":"CpeController_pdfDesdeXml","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/SubirXmlDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Genera el PDF de un comprobante a partir de su XML UBL","tags":["Comprobantes electrónicos"]}},"/v1/archivos/{id}":{"get":{"operationId":"ArchivosController_descargar","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Descarga un archivo generado (XML, CDR, PDF, Excel). Solo el dueño; vence a las 72 h.","tags":["Archivos"]}},"/v1/ruc/ficha":{"post":{"description":"Genera el reporte electrónico de la ficha RUC en SUNAT Operaciones en Línea con la Clave SOL del contribuyente y devuelve el PDF como archivo descargable. SUNAT permite generar solo tres fichas por día por RUC.","operationId":"FichaRucController_ficha","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FichaRucDto"}}}},"responses":{"200":{"description":"{ success, message, result: { ruc, generada_at, archivo: { id, nombre, url } } }"}},"security":[{"bearer":[]}],"summary":"Ficha RUC en PDF desde SUNAT (Clave SOL)","tags":["RUC"]}},"/app/resumen":{"get":{"operationId":"CuentaController_resumen","parameters":[{"name":"periodo","required":false,"in":"query","schema":{"example":"2026-10","type":"string"}},{"name":"rango","required":false,"in":"query","schema":{"default":7,"type":"number","enum":[7,12,24]}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Dashboard de consumo del usuario","tags":["Web de clientes"]}},"/app/historial":{"get":{"operationId":"CuentaController_historial","parameters":[{"name":"pagina","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"number"}},{"name":"por_pagina","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"number"}},{"name":"desde","required":false,"in":"query","schema":{"example":"2026-10-01","type":"string"}},{"name":"hasta","required":false,"in":"query","schema":{"example":"2026-10-31","type":"string"}},{"name":"modulo","required":false,"in":"query","schema":{"example":"dni","type":"string"}},{"name":"exito","required":false,"in":"query","schema":{"type":"string","enum":["1","0","true","false"]}},{"name":"canal","required":false,"in":"query","schema":{"type":"string","enum":["web","api"]}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Mis consultas (paginado)","tags":["Web de clientes"]}},"/app/perfil":{"get":{"operationId":"CuentaController_perfil","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Web de clientes"]},"patch":{"operationId":"CuentaController_actualizarPerfil","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActualizarPerfilDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Web de clientes"]}},"/app/perfil/password":{"post":{"operationId":"CuentaController_cambiarPassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CambiarPasswordDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Web de clientes"]}},"/app/tokens":{"get":{"operationId":"CuentaController_tokensListar","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Web de clientes"]},"post":{"operationId":"CuentaController_tokensCrear","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrearTokenDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Web de clientes"]}},"/app/tokens/{id}":{"patch":{"operationId":"CuentaController_tokensActualizar","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActualizarTokenDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Editar nombre, vencimiento o IPs permitidas de un token (no cambia el token)","tags":["Web de clientes"]},"delete":{"operationId":"CuentaController_tokensRevocar","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Web de clientes"]}},"/app/credenciales":{"get":{"operationId":"CuentaController_credenciales","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Web de clientes"]},"post":{"operationId":"CuentaController_crearCredencial","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrearCredencialDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Web de clientes"]}},"/app/credenciales/{id}":{"patch":{"operationId":"CuentaController_actualizarCredencial","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActualizarCredencialDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Web de clientes"]},"delete":{"operationId":"CuentaController_eliminarCredencial","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Web de clientes"]}},"/app/actividad":{"get":{"operationId":"CuentaController_actividad","parameters":[{"name":"pagina","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"number"}},{"name":"por_pagina","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"number"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"IPs desde las que se usó la cuenta","tags":["Web de clientes"]}},"/app/actividad/bloquear":{"post":{"operationId":"CuentaController_bloquear","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IpDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Web de clientes"]}},"/app/actividad/desbloquear":{"post":{"operationId":"CuentaController_desbloquear","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IpDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Web de clientes"]}},"/app/modulos":{"get":{"operationId":"CuentaController_modulos","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Catálogo de módulos con `habilitado` según el plan (para el menú)","tags":["Web de clientes"]}},"/admin/usuarios":{"get":{"operationId":"UsuariosAdminController_listar","parameters":[{"name":"pagina","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"number"}},{"name":"por_pagina","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"number"}},{"name":"buscar","required":false,"in":"query","schema":{"type":"string"}},{"name":"estado","required":false,"in":"query","schema":{"type":"string","enum":["activo","suspendido"]}},{"name":"rol","required":false,"in":"query","description":"Código o UUID del rol","schema":{"type":"string"}},{"name":"plan","required":false,"in":"query","description":"Código o UUID del plan, o `sin_plan`","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Usuarios"]},"post":{"operationId":"UsuariosAdminController_crear","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrearUsuarioDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Usuarios"]}},"/admin/usuarios/{id}":{"get":{"operationId":"UsuariosAdminController_detalle","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Usuarios"]},"patch":{"operationId":"UsuariosAdminController_actualizar","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActualizarUsuarioDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Usuarios"]},"delete":{"operationId":"UsuariosAdminController_eliminar","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Usuarios"]}},"/admin/usuarios/{id}/suspender":{"post":{"operationId":"UsuariosAdminController_suspender","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MotivoDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Usuarios"]}},"/admin/usuarios/{id}/activar":{"post":{"operationId":"UsuariosAdminController_activar","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Usuarios"]}},"/admin/usuarios/{id}/restablecer-password":{"post":{"operationId":"UsuariosAdminController_restablecer","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestablecerPasswordDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Envía un enlace para restablecer la contraseña","tags":["Admin — Usuarios"]}},"/admin/usuarios/{id}/reiniciar-consumo":{"post":{"operationId":"UsuariosAdminController_reiniciarConsumo","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Las consultas del mes hechas hasta ahora dejan de contar para la cuota","tags":["Admin — Usuarios"]}},"/admin/usuarios/{id}/consumo":{"get":{"operationId":"UsuariosAdminController_consumo","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"periodo","required":false,"in":"query","schema":{"example":"2026-10","type":"string"}},{"name":"rango","required":false,"in":"query","schema":{"default":7,"type":"number","enum":[7,12,24]}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Usuarios"]}},"/admin/usuarios/{id}/tokens":{"get":{"operationId":"UsuariosAdminController_tokensListar","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Usuarios"]}},"/admin/usuarios/{id}/tokens/{tokenId}":{"delete":{"operationId":"UsuariosAdminController_tokensRevocar","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"tokenId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Usuarios"]}},"/admin/roles":{"get":{"operationId":"RolesAdminController_roles","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Roles y permisos"]},"post":{"operationId":"RolesAdminController_crearRol","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrearRolDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Roles y permisos"]}},"/admin/roles/{id}":{"patch":{"operationId":"RolesAdminController_actualizarRol","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActualizarRolDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Roles y permisos"]},"delete":{"operationId":"RolesAdminController_eliminarRol","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Roles y permisos"]}},"/admin/permisos":{"get":{"operationId":"RolesAdminController_permisos","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Roles y permisos"]}},"/admin/modulos":{"get":{"operationId":"PlanesAdminController_modulos","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Módulos y planes"]}},"/admin/modulos/{id}":{"patch":{"operationId":"PlanesAdminController_actualizarModulo","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActualizarModuloDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Módulos y planes"]}},"/admin/planes":{"get":{"operationId":"PlanesAdminController_planes","parameters":[{"name":"buscar","required":false,"in":"query","schema":{"type":"string"}},{"name":"activo","required":false,"in":"query","schema":{"type":"string","enum":["1","0","true","false"]}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Módulos y planes"]},"post":{"operationId":"PlanesAdminController_crearPlan","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrearPlanDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Módulos y planes"]}},"/admin/planes/{id}":{"get":{"operationId":"PlanesAdminController_plan","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Módulos y planes"]},"patch":{"operationId":"PlanesAdminController_actualizarPlan","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActualizarPlanDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Módulos y planes"]},"delete":{"operationId":"PlanesAdminController_eliminarPlan","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Módulos y planes"]}},"/admin/planes/reordenar":{"post":{"operationId":"PlanesAdminController_reordenarPlanes","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReordenarPlanesDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Módulos y planes"]}},"/admin/suscripciones":{"get":{"operationId":"SuscripcionesAdminController_listar","parameters":[{"name":"pagina","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"number"}},{"name":"por_pagina","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"number"}},{"name":"usuario","required":false,"in":"query","schema":{"type":"string"}},{"name":"plan","required":false,"in":"query","schema":{"type":"string"}},{"name":"estado","required":false,"in":"query","schema":{"type":"string","enum":["activa","suspendida","cancelada"]}},{"name":"vigente","required":false,"in":"query","schema":{"type":"string","enum":["1","0","true","false"]}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Suscripciones"]},"post":{"operationId":"SuscripcionesAdminController_crear","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrearSuscripcionDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Asigna un plan (cancela la suscripción activa anterior)","tags":["Admin — Suscripciones"]}},"/admin/suscripciones/{id}":{"patch":{"operationId":"SuscripcionesAdminController_actualizar","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActualizarSuscripcionDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Suscripciones"]}},"/admin/suscripciones/{id}/cancelar":{"post":{"operationId":"SuscripcionesAdminController_cancelar","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Suscripciones"]}},"/admin/resumen":{"get":{"operationId":"OperacionAdminController_resumen","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"KPIs del panel","tags":["Admin — Consumo, seguridad y panel"]}},"/admin/consumo/resumen":{"get":{"operationId":"OperacionAdminController_consumoResumen","parameters":[{"name":"desde","required":false,"in":"query","schema":{"type":"string"}},{"name":"hasta","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Consumo, seguridad y panel"]}},"/admin/consumo/consultas":{"get":{"operationId":"OperacionAdminController_consultas","parameters":[{"name":"pagina","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"number"}},{"name":"por_pagina","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"number"}},{"name":"desde","required":false,"in":"query","schema":{"example":"2026-10-01","type":"string"}},{"name":"hasta","required":false,"in":"query","schema":{"example":"2026-10-31","type":"string"}},{"name":"usuario","required":false,"in":"query","schema":{"type":"string"}},{"name":"modulo","required":false,"in":"query","schema":{"type":"string"}},{"name":"canal","required":false,"in":"query","schema":{"type":"string","enum":["web","api"]}},{"name":"exito","required":false,"in":"query","schema":{"type":"string","enum":["1","0","true","false"]}},{"name":"buscar","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Consumo, seguridad y panel"]}},"/admin/bloqueos":{"get":{"operationId":"OperacionAdminController_bloqueosListar","parameters":[{"name":"pagina","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"number"}},{"name":"por_pagina","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"number"}},{"name":"tipo","required":false,"in":"query","schema":{"type":"string","enum":["ip","usuario"]}},{"name":"buscar","required":false,"in":"query","schema":{"type":"string"}},{"name":"vigentes","required":false,"in":"query","schema":{"type":"string","enum":["1","0","true","false"]}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Consumo, seguridad y panel"]},"post":{"operationId":"OperacionAdminController_bloqueosCrear","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrearBloqueoDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Consumo, seguridad y panel"]}},"/admin/bloqueos/{id}":{"delete":{"operationId":"OperacionAdminController_bloqueosEliminar","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Consumo, seguridad y panel"]}},"/admin/auditoria":{"get":{"operationId":"OperacionAdminController_auditoriaListar","parameters":[{"name":"pagina","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"number"}},{"name":"por_pagina","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"number"}},{"name":"desde","required":false,"in":"query","schema":{"example":"2026-10-01","type":"string"}},{"name":"hasta","required":false,"in":"query","schema":{"example":"2026-10-31","type":"string"}},{"name":"usuario","required":false,"in":"query","schema":{"type":"string"}},{"name":"accion","required":false,"in":"query","schema":{"type":"string"}},{"name":"entidad","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Consumo, seguridad y panel"]}},"/admin/configuracion":{"get":{"operationId":"OperacionAdminController_configuracionListar","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Consumo, seguridad y panel"]}},"/admin/configuracion/agentes":{"put":{"operationId":"OperacionAdminController_configuracionAgentes","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuardarAgentesDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Consumo, seguridad y panel"]}},"/admin/configuracion/probar/{canal}":{"post":{"operationId":"OperacionAdminController_configuracionProbar","parameters":[{"name":"canal","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProbarEnvioDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Consumo, seguridad y panel"]}},"/admin/configuracion/{clave}":{"patch":{"operationId":"OperacionAdminController_configuracionGuardar","parameters":[{"name":"clave","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Campos a cambiar (merge parcial)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Consumo, seguridad y panel"]}},"/admin/configuracion/{clave}/secretos/{campo}":{"delete":{"operationId":"OperacionAdminController_configuracionQuitarSecreto","parameters":[{"name":"clave","required":true,"in":"path","schema":{"type":"string"}},{"name":"campo","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Consumo, seguridad y panel"]}},"/admin/tareas":{"get":{"operationId":"TareasAdminController_listar","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Tareas programadas"]},"post":{"operationId":"TareasAdminController_crear","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrearTareaDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Tareas programadas"]}},"/admin/tareas/disponibles":{"get":{"operationId":"TareasAdminController_disponibles","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Tareas programadas"]}},"/admin/tareas/{id}":{"patch":{"operationId":"TareasAdminController_actualizar","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActualizarTareaDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Tareas programadas"]},"delete":{"operationId":"TareasAdminController_eliminar","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Tareas programadas"]}},"/admin/tareas/{id}/ejecutar":{"post":{"operationId":"TareasAdminController_ejecutar","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Admin — Tareas programadas"]}}},"info":{"title":"ConsultaPe API","description":"DNI, RUC, tipo de cambio y comprobantes electrónicos. Autentica con `Authorization: Bearer cp_...` (token de API).","version":"1.0","contact":{}},"tags":[],"servers":[{"url":"https://api.consultape.pro"}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http","description":"Token de API (cp_...)"}},"schemas":{"LoginDto":{"type":"object","properties":{"email":{"type":"string","example":"usuario@empresa.pe"},"password":{"type":"string"},"ambito":{"type":"string","enum":["app","admin"]},"captcha":{"type":"string","description":"Token de Cloudflare Turnstile (si el captcha está activo)"}},"required":["email","password","ambito"]},"GoogleDto":{"type":"object","properties":{"credencial":{"type":"string","description":"ID token que entrega Google Identity Services"},"ambito":{"type":"string","enum":["app","admin"]}},"required":["credencial","ambito"]},"RegistroDto":{"type":"object","properties":{"nombre":{"type":"string","example":"Juan Pérez"},"email":{"type":"string","example":"usuario@empresa.pe"},"password":{"type":"string"},"empresa":{"type":"string"},"telefono":{"type":"string","description":"Celular de WhatsApp (si la verificación lo pide)"},"captcha":{"type":"string"}},"required":["nombre","email","password"]},"CodigosDto":{"type":"object","properties":{}},"ConfirmarDto":{"type":"object","properties":{"id":{"type":"string"},"codigos":{"example":{"correo":"123456","whatsapp":"654321"},"allOf":[{"$ref":"#/components/schemas/CodigosDto"}]}},"required":["id","codigos"]},"CanalDto":{"type":"object","properties":{"id":{"type":"string"},"canal":{"type":"string","enum":["correo","whatsapp"]}},"required":["id","canal"]},"AmbitoDto":{"type":"object","properties":{"ambito":{"type":"string","enum":["app","admin"]}},"required":["ambito"]},"OlvideDto":{"type":"object","properties":{"email":{"type":"string"},"ambito":{"type":"string","enum":["app","admin"]},"captcha":{"type":"string"}},"required":["email","ambito"]},"RestablecerDto":{"type":"object","properties":{"token":{"type":"string"},"password":{"type":"string"}},"required":["token","password"]},"BuscarPorNombreDto":{"type":"object","properties":{"nombres":{"type":"string","example":"Juan Carlos"},"apellido_paterno":{"type":"string","example":"Pérez"},"apellido_materno":{"type":"string","example":"Gómez"}},"required":["nombres","apellido_paterno","apellido_materno"]},"ValidezDto":{"type":"object","properties":{"ruc_emisor":{"type":"string","example":"20100070970"},"tipo":{"type":"string","example":"01","enum":["01","03","04","07","08","R1","R7"]},"serie":{"type":"string","example":"F001"},"numero":{"type":"string","example":"123"},"fecha_emision":{"type":"string","example":"2024-01-15"},"monto":{"type":"number","example":118},"credencial_id":{"type":"string","description":"Credencial guardada con client_id/client_secret propios"}},"required":["ruc_emisor","tipo","serie","numero","fecha_emision"]},"SubirLoteDto":{"type":"object","properties":{"archivo":{"type":"string","format":"binary","description":".xlsx, .xls o .txt (formato SUNAT)"},"credencial_id":{"type":"string"}},"required":["archivo"]},"CdrDto":{"type":"object","properties":{"ruc":{"type":"string","example":"20100070970","description":"RUC de la clave SOL (opcional con credencial_id)"},"usuario_sol":{"type":"string","example":"MODDATOS"},"clave_sol":{"type":"string","example":"********"},"credencial_id":{"type":"string","description":"Credencial SOL guardada (en vez de usuario/clave)"},"tipo":{"type":"string","example":"01","enum":["01","03","07","08"]},"serie":{"type":"string","example":"F001"},"numero":{"type":"string","example":"123"}},"required":["tipo","serie","numero"]},"DocumentoDto":{"type":"object","properties":{"ruc":{"type":"string","example":"20100070970","description":"RUC de la clave SOL (opcional con credencial_id)"},"usuario_sol":{"type":"string","example":"MODDATOS"},"clave_sol":{"type":"string","example":"********"},"credencial_id":{"type":"string","description":"Credencial SOL guardada (en vez de usuario/clave)"},"proceso":{"type":"string","example":"venta","enum":["venta","compra"],"description":"También acepta ventas|compras|10|11"},"ruc_emisor":{"type":"string","example":"20600000001","description":"Obligatorio en compras"},"tipo":{"type":"string","example":"01","enum":["01","03","07","08","09","31"]},"serie":{"type":"string","example":"F001"},"numero":{"type":"string","example":"123"}},"required":["proceso","serie","numero"]},"SubirXmlDto":{"type":"object","properties":{"archivo":{"type":"string","format":"binary","description":"XML UBL 2.1 o ZIP de SUNAT"}},"required":["archivo"]},"FichaRucDto":{"type":"object","properties":{"ruc":{"type":"string","example":"20100070970","description":"RUC de la clave SOL (opcional con credencial_id)"},"usuario_sol":{"type":"string","example":"MODDATOS"},"clave_sol":{"type":"string","example":"********"},"credencial_id":{"type":"string","description":"Credencial SOL guardada (en vez de usuario/clave)"}}},"ActualizarPerfilDto":{"type":"object","properties":{"nombre":{"type":"string"},"telefono":{"type":"object","nullable":true,"example":"51987654321","description":"Celular de WhatsApp: 51 + 9 dígitos"},"empresa":{"type":"object","nullable":true},"ruc":{"type":"object","nullable":true,"example":"20123456789"},"preferencias":{"type":"object","example":{"tema":"oscuro"}}}},"CambiarPasswordDto":{"type":"object","properties":{"actual":{"type":"string"},"nueva":{"type":"string"}},"required":["actual","nueva"]},"CrearTokenDto":{"type":"object","properties":{"nombre":{"type":"string","example":"ERP producción"},"expira_at":{"type":"string","example":"2027-12-31T23:59:59.000Z"},"ips_permitidas":{"example":["190.12.34.56"],"type":"array","items":{"type":"string"}}},"required":["nombre"]},"ActualizarTokenDto":{"type":"object","properties":{"nombre":{"type":"string","example":"ERP producción"},"expira_at":{"type":"object","example":"2027-12-31T23:59:59.000Z","nullable":true},"ips_permitidas":{"example":["190.12.34.56"],"type":"array","items":{"type":"string"}}}},"CrearCredencialDto":{"type":"object","properties":{"alias":{"type":"string","example":"Mi empresa"},"ruc":{"type":"string","example":"20123456789"},"usuario_sol":{"type":"object","nullable":true,"example":"MODDATOS"},"clave_sol":{"type":"string"},"client_id":{"type":"object","nullable":true},"client_secret":{"type":"string"},"predeterminada":{"type":"boolean"}},"required":["alias","ruc"]},"ActualizarCredencialDto":{"type":"object","properties":{"alias":{"type":"string"},"ruc":{"type":"string"},"usuario_sol":{"type":"object","nullable":true},"clave_sol":{"type":"string"},"client_id":{"type":"object","nullable":true},"client_secret":{"type":"string"},"predeterminada":{"type":"boolean"}}},"IpDto":{"type":"object","properties":{"ip":{"type":"string","example":"190.12.34.56"}},"required":["ip"]},"CrearUsuarioDto":{"type":"object","properties":{"telefono":{"type":"object","nullable":true,"example":"51987654321","description":"Celular de WhatsApp: 51 + 9 dígitos"},"empresa":{"type":"object","nullable":true},"ruc":{"type":"object","nullable":true},"rol_ids":{"type":"array","items":{"type":"string"}},"password":{"type":"string"},"nombre":{"type":"string"},"email":{"type":"string"},"plan_id":{"type":"string"},"plan_inicio":{"type":"string","example":"2026-10-04"},"plan_fin":{"type":"object","nullable":true,"example":null},"enviar_enlace":{"type":"boolean"}},"required":["nombre","email"]},"ActualizarUsuarioDto":{"type":"object","properties":{"telefono":{"type":"object","nullable":true,"example":"51987654321","description":"Celular de WhatsApp: 51 + 9 dígitos"},"empresa":{"type":"object","nullable":true},"ruc":{"type":"object","nullable":true},"rol_ids":{"type":"array","items":{"type":"string"}},"password":{"type":"string"},"nombre":{"type":"string"},"email":{"type":"string"},"password_actual":{"type":"string"}}},"MotivoDto":{"type":"object","properties":{"motivo":{"type":"string"}}},"RestablecerPasswordDto":{"type":"object","properties":{"ambito":{"type":"string","enum":["app","admin"]}}},"CrearRolDto":{"type":"object","properties":{"codigo":{"type":"string","example":"ventas"},"nombre":{"type":"string"},"descripcion":{"type":"object","nullable":true},"ambito":{"type":"string","enum":["admin","cliente"]},"permisos":{"type":"array","items":{"type":"string"}}},"required":["codigo","nombre","ambito"]},"ActualizarRolDto":{"type":"object","properties":{"codigo":{"type":"string"},"nombre":{"type":"string"},"descripcion":{"type":"object","nullable":true},"ambito":{"type":"string","enum":["admin","cliente"]},"permisos":{"type":"array","items":{"type":"string"}}}},"ActualizarModuloDto":{"type":"object","properties":{"nombre":{"type":"string"},"descripcion":{"type":"object","nullable":true},"activo":{"type":"boolean"},"orden":{"type":"number"}}},"ModuloPlanDto":{"type":"object","properties":{"modulo_id":{"type":"string"},"limite_mes":{"type":"object","nullable":true}},"required":["modulo_id"]},"CrearPlanDto":{"type":"object","properties":{"descripcion":{"type":"object","nullable":true},"precio":{"type":"number"},"moneda":{"type":"string","example":"PEN"},"periodo":{"type":"string","enum":["mensual","anual","unico"]},"limite_consultas_mes":{"type":"object","nullable":true,"description":"null = ilimitado"},"limite_por_minuto":{"type":"number"},"activo":{"type":"boolean"},"publico":{"type":"boolean"},"orden":{"type":"number"},"modulos":{"type":"array","items":{"$ref":"#/components/schemas/ModuloPlanDto"}},"codigo":{"type":"string","example":"pyme"},"nombre":{"type":"string"}},"required":["codigo","nombre"]},"ReordenarPlanesDto":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"}}},"required":["ids"]},"ActualizarPlanDto":{"type":"object","properties":{"descripcion":{"type":"object","nullable":true},"precio":{"type":"number"},"moneda":{"type":"string","example":"PEN"},"periodo":{"type":"string","enum":["mensual","anual","unico"]},"limite_consultas_mes":{"type":"object","nullable":true,"description":"null = ilimitado"},"limite_por_minuto":{"type":"number"},"activo":{"type":"boolean"},"publico":{"type":"boolean"},"orden":{"type":"number"},"modulos":{"type":"array","items":{"$ref":"#/components/schemas/ModuloPlanDto"}},"codigo":{"type":"string"},"nombre":{"type":"string"}}},"CrearSuscripcionDto":{"type":"object","properties":{"usuario_id":{"type":"string"},"plan_id":{"type":"string"},"inicio":{"type":"string","example":"2026-10-04"},"fin":{"type":"object","nullable":true},"notas":{"type":"object","nullable":true}},"required":["usuario_id","plan_id","inicio"]},"ActualizarSuscripcionDto":{"type":"object","properties":{"plan_id":{"type":"string"},"inicio":{"type":"string"},"fin":{"type":"object","nullable":true},"estado":{"type":"string","enum":["activa","suspendida"]},"notas":{"type":"object","nullable":true}}},"CrearBloqueoDto":{"type":"object","properties":{"tipo":{"type":"string","enum":["ip","usuario"]},"valor":{"type":"string","description":"IP o UUID del usuario"},"motivo":{"type":"object","nullable":true},"hasta":{"type":"object","nullable":true}},"required":["tipo","valor"]},"AgenteDto":{"type":"object","properties":{"id":{"type":"string"},"nombre":{"type":"string"},"rol":{"type":"string"},"celular":{"type":"string","example":"51987654321"},"mensaje":{"type":"string"},"en_linea":{"type":"boolean"},"avatar":{"type":"object","nullable":true}},"required":["nombre","celular","en_linea"]},"GuardarAgentesDto":{"type":"object","properties":{"en_web":{"type":"boolean"},"en_app":{"type":"boolean"},"titulo":{"type":"string"},"mensaje":{"type":"string"},"agentes":{"type":"array","items":{"$ref":"#/components/schemas/AgenteDto"}}},"required":["en_web","en_app","titulo","agentes"]},"ProbarEnvioDto":{"type":"object","properties":{"destino":{"type":"string","example":"tu@correo.com","description":"Correo o celular de destino"}},"required":["destino"]},"CrearTareaDto":{"type":"object","properties":{"codigo":{"type":"string","example":"archivos.limpiar"},"nombre":{"type":"string"},"cron":{"type":"string","example":"0 3 * * *"},"parametros":{"type":"object","nullable":true},"activa":{"type":"boolean"}},"required":["codigo"]},"ActualizarTareaDto":{"type":"object","properties":{"nombre":{"type":"string"},"cron":{"type":"string"},"parametros":{"type":"object","nullable":true},"activa":{"type":"boolean"}}}}}}