// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.

/**
 * Auto-generated by 'os i18n extract' for locale 'es-ES'.
 * Edit translations in place; re-run extract (with --merge) to fill new gaps.
 * Do not hand-edit the structure — only the leaf string values.
 */

import type { TranslationData } from '@objectstack/spec/system';

export const esESObjects: NonNullable<TranslationData['objects']> = {
  sys_user: {
    label: "Usuario",
    pluralLabel: "Usuarios",
    description: "Cuentas de usuario para autenticación",
    fields: {
      name: {
        label: "Nombre"
      },
      email: {
        label: "Correo electrónico"
      },
      email_verified: {
        label: "Correo electrónico verificado"
      },
      two_factor_enabled: {
        label: "Doble factor habilitado",
        help: "Indica si la autenticación de doble factor está habilitada para este usuario. Lo mantiene el plugin `twoFactor` de better-auth."
      },
      role: {
        label: "Rol de plataforma",
        help: "Rol a nivel de plataforma (admin, user, …). Se establece mediante la acción Establecer rol de plataforma."
      },
      banned: {
        label: "Bloqueado",
        help: "Si es verdadero, el usuario no puede iniciar sesión. Se alterna mediante las acciones Bloquear usuario / Desbloquear usuario."
      },
      ban_reason: {
        label: "Motivo del bloqueo"
      },
      ban_expires: {
        label: "El bloqueo caduca el",
        help: "Si se establece, el bloqueo se elimina automáticamente en ese momento."
      },
      image: {
        label: "Imagen de perfil"
      },
      id: {
        label: "ID de usuario"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      }
    },
    _views: {
      me: {
        label: "My Profile"
      },
      all_users: {
        label: "Todos los usuarios"
      },
      unverified: {
        label: "No verificados"
      },
      two_factor: {
        label: "2FA habilitado"
      },
      banned: {
        label: "Bloqueado"
      }
    },
    _actions: {
      invite_user: {
        label: "Invitar usuario",
        successMessage: "Invitación enviada"
      },
      ban_user: {
        label: "Bloquear usuario",
        confirmText: "¿Bloquear a este usuario? Cerrará sesión y no podrá volver a iniciarla hasta que se desbloquee.",
        successMessage: "Usuario bloqueado"
      },
      unban_user: {
        label: "Desbloquear usuario",
        successMessage: "Usuario desbloqueado"
      },
      set_user_password: {
        label: "Establecer contraseña",
        successMessage: "Contraseña actualizada"
      },
      set_user_role: {
        label: "Establecer rol de plataforma",
        successMessage: "Rol actualizado"
      },
      impersonate_user: {
        label: "Suplantar usuario",
        confirmText: "¿Iniciar una sesión de suplantación para este usuario? Úsela solo para casos legítimos de soporte; las acciones se registrarán.",
        successMessage: "Ahora está suplantando al usuario"
      },
      update_my_profile: {
        label: "Actualizar perfil",
        successMessage: "Perfil actualizado"
      },
      change_my_password: {
        label: "Cambiar contraseña",
        successMessage: "Contraseña cambiada"
      },
      change_my_email: {
        label: "Cambiar correo",
        successMessage: "Correo de verificación enviado; revisa la nueva dirección para confirmar."
      },
      resend_verification_email: {
        label: "Resend Verification Email",
        successMessage: "Verification email sent — check your inbox."
      },
      delete_my_account: {
        label: "Eliminar mi cuenta",
        confirmText: "¿Eliminar tu cuenta de forma permanente? Esta acción no se puede deshacer: se cerrarán todas tus sesiones y se eliminarán todos los datos de tu propiedad según la política de retención configurada.",
        successMessage: "Cuenta eliminada"
      },
      enable_two_factor: {
        label: "Enable Two-Factor Auth",
        successMessage: "Two-factor authentication enabled. Scan the QR code or paste the otpauth URI into your authenticator app, then verify a code to complete setup."
      },
      disable_two_factor: {
        label: "Disable Two-Factor Auth",
        confirmText: "Turn off two-factor authentication? Your account will be less secure.",
        successMessage: "Two-factor authentication disabled."
      },
      generate_backup_codes: {
        label: "Regenerate Backup Codes",
        confirmText: "Generate a new set of backup codes? Any previously generated codes will stop working.",
        successMessage: "New backup codes generated — save them somewhere safe."
      }
    }
  },
  sys_session: {
    label: "Sesión",
    pluralLabel: "Sesiones",
    description: "Sesiones de usuario activas",
    fields: {
      user_id: {
        label: "Usuario"
      },
      expires_at: {
        label: "Caduca el"
      },
      active_organization_id: {
        label: "Organización activa"
      },
      active_team_id: {
        label: "Equipo activo"
      },
      ip_address: {
        label: "Dirección IP"
      },
      user_agent: {
        label: "Agente de usuario"
      },
      impersonated_by: {
        label: "Suplantado por",
        help: "ID del administrador que inició esta sesión de suplantación, si existe."
      },
      token: {
        label: "Token de sesión",
        help: "Token de sesión opaco; nunca se muestra en la UI."
      },
      id: {
        label: "ID de sesión"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      }
    },
    _views: {
      mine: {
        label: "Mis sesiones"
      },
      all_sessions: {
        label: "Todas"
      }
    },
    _actions: {
      revoke_my_other_sessions: {
        label: "Cerrar sesión en otros dispositivos",
        confirmText: "¿Cerrar sesión en todos los demás dispositivos en los que ha iniciado sesión? Su sesión actual seguirá activa.",
        successMessage: "Se han revocado todas las demás sesiones"
      },
      revoke_session: {
        label: "Revocar sesión",
        confirmText: "¿Revocar esta sesión? El usuario cerrará sesión en ese dispositivo.",
        successMessage: "Sesión revocada"
      }
    }
  },
  sys_account: {
    label: "Cuenta de autenticación",
    pluralLabel: "Cuentas de autenticación",
    description: "Cuentas de proveedores de OAuth y autenticación",
    fields: {
      id: {
        label: "ID de cuenta de autenticación"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      },
      provider_id: {
        label: "ID del proveedor",
        help: "Identificador del proveedor OAuth (google, github, etc.)."
      },
      account_id: {
        label: "ID de cuenta del proveedor",
        help: "ID del usuario en el sistema del proveedor."
      },
      user_id: {
        label: "Usuario",
        help: "Enlace a la tabla de usuarios."
      },
      access_token: {
        label: "Token de acceso"
      },
      refresh_token: {
        label: "Token de actualización"
      },
      id_token: {
        label: "Token de ID"
      },
      access_token_expires_at: {
        label: "El token de acceso caduca el"
      },
      refresh_token_expires_at: {
        label: "El token de actualización caduca el"
      },
      scope: {
        label: "Ámbito de OAuth"
      },
      password: {
        label: "Hash de la contraseña",
        help: "Hash de la contraseña para el proveedor de correo electrónico/contraseña."
      }
    },
    _views: {
      mine: {
        label: "Mis enlaces"
      },
      by_provider: {
        label: "Por proveedor"
      },
      all_links: {
        label: "Todos"
      }
    },
    _actions: {
      link_social: {
        label: "Vincular cuenta social"
      },
      unlink_account: {
        label: "Desvincular cuenta",
        confirmText: "¿Desvincular este vínculo de identidad? El usuario ya no podrá iniciar sesión con este proveedor hasta que lo vuelva a vincular desde la configuración de su cuenta.",
        successMessage: "Vínculo de identidad eliminado"
      }
    }
  },
  sys_verification: {
    label: "Verificación",
    pluralLabel: "Verificaciones",
    description: "Tokens de verificación de correo electrónico y teléfono",
    fields: {
      id: {
        label: "ID de verificación"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      },
      value: {
        label: "Token de verificación",
        help: "Token o código para la verificación."
      },
      expires_at: {
        label: "Caduca el"
      },
      identifier: {
        label: "Identificador",
        help: "Dirección de correo electrónico o número de teléfono."
      }
    }
  },
  sys_organization: {
    label: "Organización",
    pluralLabel: "Organizaciones",
    description: "Organizaciones para agrupación multi-tenant",
    fields: {
      name: {
        label: "Nombre"
      },
      slug: {
        label: "Slug",
        help: "Identificador compatible con URL."
      },
      logo: {
        label: "Logotipo"
      },
      metadata: {
        label: "Metadatos",
        help: "Metadatos de la organización serializados en JSON."
      },
      id: {
        label: "ID de organización"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      }
    },
    _views: {
      all_orgs: {
        label: "Todas"
      }
    },
    _actions: {
      create_organization: {
        label: "Crear organización",
        successMessage: "Organización creada"
      },
      update_organization: {
        label: "Editar organización",
        successMessage: "Organización actualizada"
      },
      delete_organization: {
        label: "Eliminar organización",
        confirmText: "¿Eliminar esta organización? Todos los miembros perderán el acceso inmediatamente. Esta acción no se puede deshacer.",
        successMessage: "Organización eliminada"
      },
      set_active_organization: {
        label: "Establecer como activa",
        successMessage: "Organización activa cambiada"
      },
      leave_organization: {
        label: "Abandonar organización",
        confirmText: "¿Abandonar esta organización? Perderá el acceso a todos sus recursos.",
        successMessage: "Ha abandonado la organización"
      },
      change_slug: {
        label: "Change Slug",
        confirmText: "Renaming the slug rewrites every platform subdomain for this org and parks the old slug for 90 days. Continue?",
        successMessage: "Organization slug changed"
      }
    }
  },
  sys_member: {
    label: "Miembro",
    pluralLabel: "Miembros",
    description: "Registros de membresía de la organización",
    fields: {
      id: {
        label: "ID de miembro"
      },
      created_at: {
        label: "Creado el"
      },
      organization_id: {
        label: "Organización"
      },
      user_id: {
        label: "Usuario"
      },
      role: {
        label: "Rol",
        help: "Rol del miembro dentro de la organización.",
        options: {
          owner: "Propietario",
          admin: "Administrador",
          member: "Miembro"
        }
      }
    },
    _views: {
      mine: {
        label: "My Memberships"
      }
    },
    _actions: {
      add_member: {
        label: "Añadir miembro",
        successMessage: "Miembro añadido"
      },
      update_member_role: {
        label: "Cambiar rol",
        successMessage: "Rol del miembro actualizado"
      },
      remove_member: {
        label: "Eliminar miembro",
        confirmText: "¿Eliminar a este miembro de la organización? Perderá el acceso a todos los recursos de la organización.",
        successMessage: "Miembro eliminado"
      },
      transfer_ownership: {
        label: "Transferir propiedad",
        confirmText: "¿Transferir la propiedad de esta organización al miembro seleccionado? Pasarás a ser administrador y perderás los privilegios exclusivos del propietario.",
        successMessage: "Propiedad transferida"
      }
    }
  },
  sys_invitation: {
    label: "Invitación",
    pluralLabel: "Invitaciones",
    description: "Invitaciones de organización para la incorporación de usuarios",
    fields: {
      id: {
        label: "ID de invitación"
      },
      created_at: {
        label: "Creado el"
      },
      organization_id: {
        label: "Organización"
      },
      email: {
        label: "Correo electrónico",
        help: "Dirección de correo electrónico del usuario invitado."
      },
      role: {
        label: "Rol",
        help: "Rol que se asignará al aceptar.",
        options: {
          owner: "Propietario",
          admin: "Administrador",
          member: "Miembro"
        }
      },
      status: {
        label: "Estado",
        options: {
          pending: "Pendiente",
          accepted: "Aceptada",
          rejected: "Rechazada",
          expired: "Caducada",
          canceled: "Cancelada"
        }
      },
      inviter_id: {
        label: "Invitador",
        help: "Usuario que envió la invitación."
      },
      expires_at: {
        label: "Caduca el"
      },
      team_id: {
        label: "Equipo",
        help: "Equipo opcional que se asignará al aceptar."
      }
    },
    _views: {
      pending: {
        label: "Pendientes"
      },
      accepted: {
        label: "Aceptadas"
      },
      expired: {
        label: "Caducadas / canceladas"
      },
      all_invitations: {
        label: "Todas"
      }
    },
    _actions: {
      invite_user: {
        label: "Invitar usuario",
        successMessage: "Invitación enviada"
      },
      cancel_invitation: {
        label: "Cancelar invitación",
        confirmText: "¿Cancelar esta invitación? El destinatario ya no podrá aceptarla.",
        successMessage: "Invitación cancelada"
      },
      resend_invitation: {
        label: "Reenviar invitación",
        successMessage: "Invitación reenviada"
      },
      accept_invitation: {
        label: "Aceptar invitación",
        successMessage: "Invitación aceptada"
      },
      reject_invitation: {
        label: "Rechazar invitación",
        confirmText: "¿Rechazar esta invitación? Se notificará a quien la envió y necesitarás una nueva invitación para unirte.",
        successMessage: "Invitación rechazada"
      }
    }
  },
  sys_team: {
    label: "Equipo",
    pluralLabel: "Equipos",
    description: "Equipos dentro de las organizaciones para una agrupación detallada",
    fields: {
      name: {
        label: "Nombre"
      },
      organization_id: {
        label: "Organización",
        help: "Organización principal de este equipo."
      },
      id: {
        label: "ID de equipo"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      }
    },
    _views: {
      by_org: {
        label: "Por organización"
      },
      all_teams: {
        label: "Todos"
      }
    },
    _actions: {
      create_team: {
        label: "Crear equipo",
        successMessage: "Equipo creado"
      },
      update_team: {
        label: "Editar equipo",
        successMessage: "Equipo actualizado"
      },
      remove_team: {
        label: "Eliminar equipo",
        confirmText: "¿Eliminar este equipo? Los miembros perderán cualquier acceso con ámbito de equipo. Esta acción no se puede deshacer.",
        successMessage: "Equipo eliminado"
      }
    }
  },
  sys_team_member: {
    label: "Miembro del equipo",
    pluralLabel: "Miembros del equipo",
    description: "Registros de membresía de equipo que vinculan usuarios con equipos",
    fields: {
      id: {
        label: "ID de miembro del equipo"
      },
      created_at: {
        label: "Creado el"
      },
      team_id: {
        label: "Equipo"
      },
      user_id: {
        label: "Usuario"
      }
    },
    _actions: {
      add_team_member: {
        label: "Añadir miembro",
        successMessage: "Miembro del equipo añadido"
      },
      remove_team_member: {
        label: "Eliminar del equipo",
        confirmText: "¿Eliminar a este usuario del equipo? Perderá cualquier acceso con ámbito de equipo.",
        successMessage: "Miembro del equipo eliminado"
      }
    }
  },
  sys_department: {
    label: "Departamento",
    pluralLabel: "Departamentos",
    description: "Nodo jerárquico de la estructura organizativa (departamento / división / unidad de negocio / oficina).",
    fields: {
      name: {
        label: "Nombre"
      },
      code: {
        label: "Código",
        help: "Código corto y estable (p. ej. EMEA-SALES). Único dentro del tenant."
      },
      kind: {
        label: "Tipo",
        help: "Pista de categorización; no cambia la semántica del grafo.",
        options: {
          company: "Empresa",
          division: "División",
          department: "Departamento",
          team: "Equipo",
          office: "Oficina",
          cost_center: "Centro de coste"
        }
      },
      parent_department_id: {
        label: "Departamento principal",
        help: "Autorreferencia para el árbol organizativo. Null = raíz del tenant."
      },
      organization_id: {
        label: "Organización",
        help: "Ámbito del tenant."
      },
      manager_user_id: {
        label: "Responsable del departamento",
        help: "Usuario responsable de esta unidad organizativa (responsable o jefe de departamento)."
      },
      active: {
        label: "Activo",
        help: "Si es falso, los miembros no se expanden en las consultas del grafo."
      },
      effective_from: {
        label: "Vigente desde",
        help: "Momento en que este departamento entró en funcionamiento (sincronización HRIS)."
      },
      effective_to: {
        label: "Vigente hasta",
        help: "Momento en que este departamento se retiró (sincronización HRIS)."
      },
      external_ref: {
        label: "Referencia externa",
        help: "ID en el HRIS ascendente (Workday / SAP HR / 北森)."
      },
      id: {
        label: "ID de departamento"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      }
    },
    _views: {
      active: {
        label: "Activo"
      },
      inactive: {
        label: "Inactivo"
      },
      by_kind: {
        label: "Por tipo"
      },
      all_departments: {
        label: "Todos"
      }
    }
  },
  sys_department_member: {
    label: "Miembro del departamento",
    pluralLabel: "Miembros del departamento",
    description: "Asignación de usuario a un departamento (compatible con organizaciones matriciales y con vigencia temporal).",
    fields: {
      id: {
        label: "ID de miembro"
      },
      department_id: {
        label: "Departamento"
      },
      user_id: {
        label: "Usuario"
      },
      role_in_department: {
        label: "Rol en el departamento",
        help: "`lead` es el responsable del día a día; `deputy` puede sustituir al responsable en el enrutamiento de aprobaciones.",
        options: {
          member: "Miembro",
          lead: "Responsable",
          deputy: "Sustituto"
        }
      },
      is_primary: {
        label: "Asignación principal",
        help: "Cuando el usuario pertenece a varios departamentos, este marca el canónico para los informes."
      },
      effective_from: {
        label: "Vigente desde"
      },
      effective_to: {
        label: "Vigente hasta"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      }
    }
  },
  sys_api_key: {
    label: "Clave de API",
    pluralLabel: "Claves de API",
    description: "Claves de API para acceso programático",
    fields: {
      name: {
        label: "Nombre",
        help: "Nombre visible para la clave de API."
      },
      prefix: {
        label: "Prefijo",
        help: "Prefijo visible para identificar la clave (p. ej., \"osk_\")."
      },
      user_id: {
        label: "Propietario",
        help: "Usuario que posee esta clave de API."
      },
      scopes: {
        label: "Ámbitos",
        help: "Matriz JSON de ámbitos de permisos."
      },
      expires_at: {
        label: "Caduca el"
      },
      last_used_at: {
        label: "Último uso el",
        help: "Se actualiza automáticamente en cada llamada a la API."
      },
      revoked: {
        label: "Revocado"
      },
      key: {
        label: "Clave con hash",
        help: "Valor de la clave de API con hash; nunca se expone a los clientes."
      },
      id: {
        label: "ID de clave de API"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      }
    },
    _views: {
      mine: {
        label: "Mis claves"
      },
      active: {
        label: "Activo"
      },
      revoked: {
        label: "Revocado"
      },
      all_keys: {
        label: "Todas"
      }
    },
    _actions: {
      revoke_api_key: {
        label: "Revocar clave de API",
        confirmText: "¿Revocar esta clave de API? Los clientes que la utilicen perderán el acceso inmediatamente.",
        successMessage: "Clave de API revocada"
      },
      restore_api_key: {
        label: "Restaurar clave de API",
        confirmText: "¿Restaurar esta clave de API revocada? Los clientes existentes que la conserven recuperarán el acceso.",
        successMessage: "Clave de API restaurada"
      }
    }
  },
  sys_two_factor: {
    label: "Doble factor",
    pluralLabel: "Credenciales de doble factor",
    description: "Credenciales de autenticación de doble factor",
    fields: {
      id: {
        label: "ID de doble factor"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      },
      user_id: {
        label: "Usuario"
      },
      secret: {
        label: "Secreto",
        help: "Clave secreta TOTP."
      },
      backup_codes: {
        label: "Códigos de respaldo",
        help: "Códigos de recuperación de respaldo serializados en JSON."
      },
      verified: {
        label: "Verified",
        help: "Whether the enrollment was confirmed with a valid TOTP code (managed by better-auth)"
      }
    },
    _views: {
      mine: {
        label: "Mi configuración"
      },
      all_enrollments: {
        label: "Todas"
      }
    },
    _actions: {
      enable_two_factor: {
        label: "Habilitar 2FA"
      },
      disable_two_factor: {
        label: "Deshabilitar 2FA",
        confirmText: "¿Deshabilitar la autenticación de doble factor en su cuenta?",
        successMessage: "2FA deshabilitado"
      },
      regenerate_backup_codes: {
        label: "Regenerar códigos de respaldo",
        confirmText: "¿Regenerar los códigos de respaldo? Todos los códigos de respaldo anteriores dejarán de funcionar de inmediato."
      }
    }
  },
  sys_device_code: {
    label: "Código de dispositivo",
    pluralLabel: "Códigos de dispositivo",
    description: "Solicitudes pendientes de la concesión de autorización de dispositivos OAuth 2.0 (RFC 8628)",
    fields: {
      id: {
        label: "ID de código de dispositivo"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      },
      device_code: {
        label: "Código de dispositivo",
        help: "Token de alta entropía devuelto al dispositivo que realiza el sondeo."
      },
      user_code: {
        label: "Código de usuario",
        help: "Código corto visible para el usuario (p. ej. ABCD-EFGH)."
      },
      user_id: {
        label: "Usuario",
        help: "Usuario que aprobó la autorización del dispositivo."
      },
      expires_at: {
        label: "Caduca el",
        help: "Momento en que los códigos de dispositivo y de usuario dejan de ser válidos."
      },
      status: {
        label: "Estado",
        help: "Estado actual: 'pending' | 'approved' | 'denied'."
      },
      last_polled_at: {
        label: "Último sondeo el",
        help: "Marca temporal del sondeo /device/token más reciente."
      },
      polling_interval: {
        label: "Intervalo de sondeo (ms)",
        help: "Intervalo mínimo de sondeo recomendado por el servidor, en ms."
      },
      client_id: {
        label: "ID de cliente",
        help: "Identificador de cliente OAuth del dispositivo solicitante."
      },
      scope: {
        label: "Ámbito",
        help: "Ámbitos OAuth solicitados por el dispositivo, separados por espacios."
      }
    }
  },
  sys_user_preference: {
    label: "Preferencia de usuario",
    pluralLabel: "Preferencias de usuario",
    description: "Preferencias clave-valor por usuario (tema, idioma, etc.)",
    fields: {
      id: {
        label: "ID de preferencia"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      },
      user_id: {
        label: "Usuario",
        help: "Usuario propietario de esta preferencia."
      },
      key: {
        label: "Clave",
        help: "Clave de preferencia (p. ej., theme, locale, plugin.ai.auto_save)."
      },
      value: {
        label: "Valor",
        help: "Valor de la preferencia (cualquier tipo serializable en JSON)."
      }
    },
    _views: {
      mine: {
        label: "Mis preferencias"
      },
      by_user: {
        label: "Por usuario"
      },
      all_preferences: {
        label: "Todas"
      }
    }
  },
  sys_oauth_application: {
    label: "Aplicación OAuth",
    pluralLabel: "Aplicaciones OAuth",
    description: "Aplicaciones cliente OAuth/OIDC registradas",
    fields: {
      id: {
        label: "ID"
      },
      name: {
        label: "Nombre"
      },
      icon: {
        label: "Icono",
        help: "URL del logotipo que se muestra en la pantalla de consentimiento."
      },
      uri: {
        label: "URI de inicio",
        help: "Página principal pública del cliente registrado."
      },
      contacts: {
        label: "Contactos",
        help: "Lista serializada en JSON de direcciones de correo electrónico de contacto."
      },
      tos: {
        label: "Términos del servicio"
      },
      policy: {
        label: "Política de privacidad"
      },
      metadata: {
        label: "Metadatos",
        help: "Metadatos de la aplicación serializados en JSON."
      },
      client_id: {
        label: "ID de cliente",
        help: "Identificador público del cliente OAuth."
      },
      client_secret: {
        label: "Secreto de cliente",
        help: "Secreto del cliente OAuth (con hash/cifrado en reposo)."
      },
      redirect_uris: {
        label: "URI de redirección",
        help: "Lista serializada en JSON de URI de redirección permitidas."
      },
      post_logout_redirect_uris: {
        label: "URI de redirección tras el cierre de sesión",
        help: "Lista serializada en JSON de URI de redirección permitidas tras el cierre de sesión."
      },
      type: {
        label: "Tipo de cliente",
        options: {
          web: "Web",
          native: "Nativa",
          useragentbased: "Basada en agente de usuario",
          public: "Público"
        }
      },
      public: {
        label: "Cliente público",
        help: "Marca al cliente como cliente OAuth público (no confidencial)."
      },
      require_pkce: {
        label: "Requerir PKCE"
      },
      token_endpoint_auth_method: {
        label: "Método de autenticación del endpoint de token",
        help: "p. ej. client_secret_basic, client_secret_post, none"
      },
      grant_types: {
        label: "Tipos de concesión",
        help: "Lista serializada en JSON de tipos de concesión permitidos."
      },
      response_types: {
        label: "Tipos de respuesta",
        help: "Lista serializada en JSON de tipos de respuesta permitidos."
      },
      scopes: {
        label: "Ámbitos permitidos",
        help: "Lista serializada en JSON de ámbitos que el cliente puede solicitar."
      },
      subject_type: {
        label: "Tipo de sujeto",
        help: "Tipo de sujeto OIDC (p. ej. public, pairwise)."
      },
      disabled: {
        label: "Deshabilitado"
      },
      skip_consent: {
        label: "Omitir consentimiento",
        help: "Tratar como cliente de confianza y omitir la pantalla de consentimiento."
      },
      enable_end_session: {
        label: "Habilitar finalización de sesión",
        help: "Permitir que el cliente llame al endpoint OIDC de finalización de sesión."
      },
      software_id: {
        label: "ID de software"
      },
      software_version: {
        label: "Versión del software"
      },
      software_statement: {
        label: "Declaración de software",
        help: "JWT firmado que declara los metadatos del cliente (RFC 7591 §2.3)."
      },
      user_id: {
        label: "Usuario propietario",
        help: "Usuario que registró esta aplicación."
      },
      reference_id: {
        label: "ID de referencia",
        help: "Identificador de correlación proporcionado por quien llama."
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      }
    },
    _views: {
      mine: {
        label: "My Applications"
      },
      active: {
        label: "Activo"
      },
      disabled_apps: {
        label: "Deshabilitado"
      },
      all_apps: {
        label: "Todas"
      }
    },
    _actions: {
      disable_oauth_application: {
        label: "Deshabilitar aplicación OAuth",
        confirmText: "¿Deshabilitar esta aplicación OAuth? Los tokens de acceso/actualización activos emitidos para ella seguirán siendo rechazados en los endpoints token, authorize e introspect. Las integraciones existentes dejarán de funcionar de inmediato.",
        successMessage: "Aplicación OAuth deshabilitada"
      },
      enable_oauth_application: {
        label: "Habilitar aplicación OAuth",
        confirmText: "¿Volver a habilitar esta aplicación OAuth? La emisión de tokens, la autorización y la introspección se reanudarán de inmediato.",
        successMessage: "Aplicación OAuth habilitada"
      },
      create_oauth_application: {
        label: "Registrar aplicación OAuth"
      },
      rotate_client_secret: {
        label: "Rotar Client Secret",
        confirmText: "¿Rotar el secreto de este cliente OAuth? El secreto anterior dejará de funcionar de inmediato y cualquier integración que lo utilice fallará hasta que se actualice con el nuevo secreto. El nuevo secreto se muestra una sola vez."
      },
      delete_oauth_application: {
        label: "Eliminar aplicación OAuth",
        confirmText: "¿Eliminar de forma permanente esta aplicación OAuth? Todos los tokens y consentimientos emitidos quedarán invalidados y las integraciones que usen este client_id dejarán de funcionar de inmediato. Esta acción no se puede deshacer.",
        successMessage: "Aplicación OAuth eliminada"
      }
    }
  },
  sys_oauth_access_token: {
    label: "Token de acceso OAuth",
    pluralLabel: "Tokens de acceso OAuth",
    description: "Tokens de acceso OAuth opacos emitidos a aplicaciones cliente.",
    fields: {
      id: {
        label: "ID"
      },
      token: {
        label: "Token",
        help: "Valor opaco del token de acceso."
      },
      client_id: {
        label: "ID de cliente",
        help: "Clave foránea a sys_oauth_application.client_id."
      },
      session_id: {
        label: "Sesión",
        help: "Clave foránea a sys_session.id."
      },
      user_id: {
        label: "Usuario",
        help: "Clave foránea a sys_user.id."
      },
      refresh_id: {
        label: "Token de actualización",
        help: "Clave foránea a sys_oauth_refresh_token.id."
      },
      reference_id: {
        label: "ID de referencia",
        help: "Identificador de correlación proporcionado por quien llama."
      },
      scopes: {
        label: "Ámbitos",
        help: "Lista serializada en JSON de ámbitos concedidos a este token."
      },
      expires_at: {
        label: "Caduca el"
      },
      created_at: {
        label: "Creado el"
      }
    }
  },
  sys_oauth_refresh_token: {
    label: "Token de actualización OAuth",
    pluralLabel: "Tokens de actualización OAuth",
    description: "Tokens de actualización OAuth opacos (vinculados a una sesión).",
    fields: {
      id: {
        label: "ID"
      },
      token: {
        label: "Token",
        help: "Valor opaco del token de actualización."
      },
      client_id: {
        label: "ID de cliente",
        help: "Clave foránea a sys_oauth_application.client_id."
      },
      session_id: {
        label: "Sesión",
        help: "Clave foránea a sys_session.id."
      },
      user_id: {
        label: "Usuario",
        help: "Clave foránea a sys_user.id."
      },
      reference_id: {
        label: "ID de referencia",
        help: "Identificador de correlación proporcionado por quien llama."
      },
      scopes: {
        label: "Ámbitos",
        help: "Lista serializada en JSON de ámbitos concedidos a este token."
      },
      expires_at: {
        label: "Caduca el"
      },
      created_at: {
        label: "Creado el"
      },
      revoked: {
        label: "Revocado el",
        help: "Marca temporal en la que se revocó este token de actualización."
      },
      auth_time: {
        label: "Hora de autenticación",
        help: "Momento en que el usuario se autenticó originalmente para esta cadena de tokens."
      }
    }
  },
  sys_oauth_consent: {
    label: "Consentimiento OAuth",
    pluralLabel: "Consentimientos OAuth",
    description: "Registros de consentimiento de usuario para aplicaciones cliente OAuth.",
    fields: {
      id: {
        label: "ID"
      },
      client_id: {
        label: "ID de cliente",
        help: "Clave foránea a sys_oauth_application.client_id."
      },
      user_id: {
        label: "Usuario",
        help: "Clave foránea a sys_user.id."
      },
      reference_id: {
        label: "ID de referencia",
        help: "Identificador de correlación proporcionado por quien llama."
      },
      scopes: {
        label: "Ámbitos",
        help: "Lista serializada en JSON de ámbitos a los que el usuario dio consentimiento."
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      }
    }
  },
  sys_jwks: {
    label: "Clave de firma (JWKS)",
    pluralLabel: "Claves de firma (JWKS)",
    description: "Pares de claves asimétricas utilizados para firmar y verificar los JWT emitidos.",
    fields: {
      id: {
        label: "ID de clave",
        help: "Valor `kid` de JWK."
      },
      public_key: {
        label: "Clave pública",
        help: "Clave pública JWK serializada en JSON."
      },
      private_key: {
        label: "Clave privada",
        help: "Clave privada JWK serializada en JSON (cifrada en reposo)."
      },
      created_at: {
        label: "Creado el"
      },
      expires_at: {
        label: "Caduca el",
        help: "Momento en que la clave ya no podrá utilizarse para verificar tokens."
      }
    }
  },
  sys_audit_log: {
    label: "Registro de auditoría",
    pluralLabel: "Registros de auditoría",
    description: "Registro de auditoría inmutable para eventos de la plataforma",
    fields: {
      created_at: {
        label: "Marca temporal"
      },
      action: {
        label: "Acción",
        help: "Tipo de acción (snake_case).",
        options: {
          create: "Crear",
          update: "Actualizar",
          delete: "Eliminar",
          restore: "Restaurar",
          login: "Inicio de sesión",
          logout: "Cierre de sesión",
          permission_change: "Cambio de permisos",
          config_change: "Cambio de configuración",
          export: "Exportar",
          import: "Importar"
        }
      },
      user_id: {
        label: "Actor",
        help: "Usuario que realizó la acción (null para acciones del sistema)."
      },
      object_name: {
        label: "Objeto",
        help: "Objeto de destino (p. ej. sys_user, project_task)."
      },
      record_id: {
        label: "ID de registro",
        help: "ID del registro afectado."
      },
      old_value: {
        label: "Valor anterior",
        help: "Estado anterior serializado en JSON."
      },
      new_value: {
        label: "Valor nuevo",
        help: "Estado nuevo serializado en JSON."
      },
      ip_address: {
        label: "Dirección IP"
      },
      user_agent: {
        label: "Agente de usuario"
      },
      tenant_id: {
        label: "Inquilino",
        help: "Contexto del tenant para el aislamiento multi-tenant."
      },
      metadata: {
        label: "Metadatos",
        help: "Contexto adicional serializado en JSON."
      },
      id: {
        label: "ID de registro de auditoría"
      }
    },
    _views: {
      recent: {
        label: "Recientes"
      },
      writes_only: {
        label: "Escrituras"
      },
      auth_events: {
        label: "Autenticación"
      },
      config_changes: {
        label: "Configuración"
      },
      all_events: {
        label: "Todos"
      }
    }
  },
  sys_presence: {
    label: "Presencia",
    pluralLabel: "Presencias",
    description: "Seguimiento en tiempo real de presencia y actividad de usuarios",
    fields: {
      id: {
        label: "ID de presencia"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      },
      user_id: {
        label: "Usuario"
      },
      session_id: {
        label: "Sesión"
      },
      status: {
        label: "Estado",
        options: {
          online: "En línea",
          away: "Ausente",
          busy: "Ocupado",
          offline: "Desconectado"
        }
      },
      last_seen: {
        label: "Visto por última vez"
      },
      current_location: {
        label: "Ubicación actual"
      },
      device: {
        label: "Dispositivo",
        options: {
          desktop: "Escritorio",
          mobile: "Móvil",
          tablet: "Tableta",
          other: "Otro"
        }
      },
      custom_status: {
        label: "Estado personalizado"
      },
      metadata: {
        label: "Metadatos",
        help: "Metadatos JSON arbitrarios asociados al estado de presencia (coincide con PresenceStateSchema.metadata)."
      }
    }
  },
  sys_activity: {
    label: "Actividad",
    pluralLabel: "Actividades",
    description: "Entradas recientes del flujo de actividad (ligeras y desnormalizadas).",
    fields: {
      id: {
        label: "ID de actividad"
      },
      timestamp: {
        label: "Marca temporal"
      },
      type: {
        label: "Tipo",
        options: {
          created: "Creado",
          updated: "Actualizado",
          deleted: "Eliminado",
          commented: "Comentado",
          mentioned: "Mencionado",
          shared: "Compartido",
          assigned: "Asignado",
          completed: "Completado",
          login: "Inicio de sesión",
          logout: "Cierre de sesión",
          system: "Sistema"
        }
      },
      summary: {
        label: "Resumen",
        help: "Resumen legible de una línea."
      },
      actor_id: {
        label: "Actor"
      },
      actor_name: {
        label: "Nombre del actor"
      },
      actor_avatar_url: {
        label: "Avatar del actor"
      },
      object_name: {
        label: "Objeto",
        help: "Nombre corto del objeto de destino (p. ej. account, sys_user)."
      },
      record_id: {
        label: "ID de registro"
      },
      record_label: {
        label: "Nombre visible del registro",
        help: "Nombre visible del registro de destino en el momento de escritura."
      },
      url: {
        label: "URL",
        help: "Enlace profundo opcional al destino de la actividad."
      },
      environment_id: {
        label: "Proyecto",
        help: "Contexto del proyecto (implementaciones multiproyecto)."
      },
      metadata: {
        label: "Metadatos",
        help: "Contexto adicional serializado en JSON."
      }
    }
  },
  sys_comment: {
    label: "Comentario",
    pluralLabel: "Comentarios",
    description: "Comentarios en hilo adjuntos a registros mediante thread_id.",
    fields: {
      id: {
        label: "ID de comentario"
      },
      thread_id: {
        label: "Hilo",
        help: "Identificador del hilo; por convención `{object}:{record_id}` (p. ej. `sys_user:abc123`)."
      },
      parent_id: {
        label: "Comentario principal",
        help: "Comentario principal opcional para respuestas anidadas."
      },
      reply_count: {
        label: "Número de respuestas"
      },
      author_id: {
        label: "Autor"
      },
      author_name: {
        label: "Nombre del autor"
      },
      author_avatar_url: {
        label: "Avatar del autor"
      },
      body: {
        label: "Contenido",
        help: "Texto del comentario (compatible con Markdown)."
      },
      mentions: {
        label: "Menciones",
        help: "Matriz JSON de objetos @mention."
      },
      reactions: {
        label: "Reacciones",
        help: "Matriz JSON de objetos de reacción emoji."
      },
      is_edited: {
        label: "Editado"
      },
      edited_at: {
        label: "Editado el"
      },
      visibility: {
        label: "Visibilidad",
        options: {
          public: "Público",
          internal: "Interno",
          private: "Privado"
        }
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      }
    }
  },
  sys_attachment: {
    label: "Adjunto",
    pluralLabel: "Adjuntos",
    description: "Vínculo polimórfico entre un sys_file y cualquier otro registro.",
    fields: {
      id: {
        label: "ID de adjunto"
      },
      parent_object: {
        label: "Objeto principal",
        help: "Nombre corto del objeto del registro adjunto (p. ej. account, lead)."
      },
      parent_id: {
        label: "Registro principal",
        help: "Clave primaria del registro al que se adjunta."
      },
      file_id: {
        label: "Archivo",
        help: "Entrada de almacenamiento sys_file que se está adjuntando."
      },
      file_name: {
        label: "Nombre del archivo",
        help: "Copia desnormalizada de sys_file.name para renderizado rápido de listas."
      },
      mime_type: {
        label: "Tipo MIME"
      },
      size: {
        label: "Tamaño (bytes)"
      },
      share_type: {
        label: "Tipo de compartición",
        help: "visualizador | colaborador | inferido (heredado del registro principal)",
        options: {
          viewer: "Visualizador",
          collaborator: "Colaborador",
          inferred: "Inferido"
        }
      },
      visibility: {
        label: "Visibilidad",
        options: {
          internal: "Interno",
          all_users: "Todos los usuarios",
          shared_users: "Usuarios compartidos"
        }
      },
      uploaded_by: {
        label: "Subido por"
      },
      description: {
        label: "Descripción"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      }
    }
  },
  sys_notification: {
    label: "Notificación",
    pluralLabel: "Notificaciones",
    description: "Entradas del buzón de notificaciones por usuario",
    fields: {
      id: {
        label: "ID de notificación"
      },
      topic: {
        label: "Topic",
        help: "Notification topic, e.g. task.assigned, collab.mention"
      },
      payload: {
        label: "Payload",
        help: "Template inputs carried to channels (title/body/url/actor/source/…)"
      },
      severity: {
        label: "Severity",
        help: "Severity hint for rendering / filtering",
        options: {
          info: "info",
          warning: "warning",
          critical: "critical"
        }
      },
      dedup_key: {
        label: "Dedup Key",
        help: "Idempotency key within a topic window; a repeat emit is a no-op"
      },
      source_object: {
        label: "Objeto de origen",
        help: "Nombre del objeto del registro relacionado (p. ej. lead, opportunity)."
      },
      source_id: {
        label: "Registro de origen",
        help: "ID del registro dentro de source_object."
      },
      actor_id: {
        label: "Actor",
        help: "Usuario que provocó la notificación (quien menciona, quien asigna)."
      },
      created_at: {
        label: "Creado el"
      }
    },
    _views: {
      recent: {
        label: "Recent"
      },
      by_topic: {
        label: "By Topic"
      }
    }
  },
  sys_email: {
    label: "Correo",
    pluralLabel: "Correos",
    description: "Registro de envíos de correo salientes",
    fields: {
      id: {
        label: "ID de correo"
      },
      message_id: {
        label: "Message-ID",
        help: "Message-ID RFC-5322 asignado por el transporte."
      },
      from_address: {
        label: "De"
      },
      to_addresses: {
        label: "Para",
        help: "Direcciones de destinatarios separadas por comas."
      },
      cc_addresses: {
        label: "Cc"
      },
      bcc_addresses: {
        label: "Cco"
      },
      reply_to: {
        label: "Responder a"
      },
      subject: {
        label: "Asunto"
      },
      body_text: {
        label: "Contenido (texto)"
      },
      body_html: {
        label: "Contenido (HTML)"
      },
      status: {
        label: "Estado",
        help: "Estado del ciclo de vida; se pone en cola mediante IEmailService.send antes de la llamada al transporte.",
        options: {
          queued: "En cola",
          sent: "Enviado",
          failed: "Fallido"
        }
      },
      error: {
        label: "Error",
        help: "Mensaje de error del transporte cuando status=failed."
      },
      attempt_count: {
        label: "Intentos",
        help: "Número de intentos de entrega realizados por el servicio."
      },
      sent_at: {
        label: "Enviado el",
        help: "Se establece cuando el estado pasa a \"sent\"."
      },
      related_object: {
        label: "Objeto relacionado",
        help: "Nombre del objeto del registro relacionado (p. ej. lead, opportunity)."
      },
      related_id: {
        label: "Registro relacionado",
        help: "ID del registro dentro de related_object."
      },
      sent_by: {
        label: "Enviado por"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      }
    }
  },
  sys_email_template: {
    label: "Plantilla de correo",
    pluralLabel: "Plantillas de correo",
    description: "Plantilla de correo saliente (asunto + contenido + variables) resuelta por nombre+idioma",
    fields: {
      id: {
        label: "ID"
      },
      name: {
        label: "Nombre",
        help: "Identificador snake_case con puntos (p. ej. auth.password_reset)."
      },
      label: {
        label: "Nombre visible",
        help: "Nombre legible que se muestra en Studio."
      },
      category: {
        label: "Categoría",
        options: {
          auth: "Autenticación",
          notification: "Notificación",
          workflow: "Flujo de trabajo",
          marketing: "Marketing",
          custom: "Personalizado"
        }
      },
      locale: {
        label: "Idioma",
        help: "Etiqueta de idioma BCP-47 (en-US, zh-CN, …)."
      },
      description: {
        label: "Descripción"
      },
      subject: {
        label: "Asunto",
        help: "Plantilla de asunto; admite marcadores {{var.path}}."
      },
      body_html: {
        label: "Contenido HTML",
        help: "Plantilla HTML del contenido; admite marcadores {{var.path}}."
      },
      body_text: {
        label: "Contenido de texto sin formato",
        help: "Alternativa opcional en texto sin formato (se deriva automáticamente del HTML cuando está vacía)."
      },
      from_name: {
        label: "Nombre del remitente"
      },
      from_address: {
        label: "Dirección del remitente"
      },
      reply_to: {
        label: "Responder a"
      },
      active: {
        label: "Activo"
      },
      is_system: {
        label: "Plantilla del sistema",
        help: "La proporciona un plugin o la plataforma; los tenants pueden editarla, pero no deberían eliminarla."
      },
      variables_json: {
        label: "Variables (JSON)",
        help: "Matriz JSON de {name,type,required,description}."
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      }
    }
  },
  sys_saved_report: {
    label: "Informe guardado",
    pluralLabel: "Informes guardados",
    description: "Definición de informe ObjectQL persistida; se puede volver a ejecutar y programar",
    fields: {
      id: {
        label: "ID de informe"
      },
      name: {
        label: "Nombre"
      },
      description: {
        label: "Descripción"
      },
      object_name: {
        label: "Objeto",
        help: "Nombre corto del objeto que consulta el informe."
      },
      query_json: {
        label: "Consulta",
        help: "Envoltorio de consulta ObjectQL: { filter, fields, orderBy, limit, groupBy }."
      },
      format: {
        label: "Formato",
        help: "Renderizado utilizado por IReportService.run() y los resúmenes por correo.",
        options: {
          csv: "CSV",
          json: "JSON",
          html_table: "Tabla HTML"
        }
      },
      owner_id: {
        label: "Propietario",
        help: "Usuario propietario de la definición del informe (controla la compartición)."
      },
      last_run_at: {
        label: "Última ejecución",
        help: "Marcado por IReportService.run() tras una ejecución correcta."
      },
      last_row_count: {
        label: "Último recuento de filas"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      }
    }
  },
  sys_report_schedule: {
    label: "Programación de informe",
    pluralLabel: "Programaciones de informes",
    description: "Entrega recurrente de un sys_saved_report por correo electrónico",
    fields: {
      id: {
        label: "ID de programación"
      },
      report_id: {
        label: "Informe"
      },
      name: {
        label: "Nombre",
        help: "Nombre visible opcional para el resumen; se usa en el asunto del correo."
      },
      interval_minutes: {
        label: "Intervalo (minutos)",
        help: "Frecuencia de envío (1440 = diario, 10080 = semanal)."
      },
      cron_expression: {
        label: "Expresión Cron",
        help: "Cron opcional de 5/6 campos; sustituye a interval_minutes cuando está presente."
      },
      timezone: {
        label: "Zona horaria"
      },
      active: {
        label: "Activo"
      },
      recipients: {
        label: "Destinatarios",
        help: "Direcciones de correo electrónico separadas por comas."
      },
      format: {
        label: "Formato",
        help: "Formato de renderizado; csv se adjunta y html_table se inserta en línea.",
        options: {
          csv: "CSV",
          html_table: "Tabla HTML"
        }
      },
      subject_template: {
        label: "Plantilla de asunto",
        help: "Asunto del correo; se sustituyen {{name}} / {{date}} / {{rows}}."
      },
      owner_id: {
        label: "Propietario"
      },
      next_run_at: {
        label: "Próxima ejecución",
        help: "El despachador carga las programaciones cuyo next_run_at <= now."
      },
      last_sent_at: {
        label: "Último envío"
      },
      last_status: {
        label: "Último estado",
        options: {
          ok: "Correcto",
          failed: "Fallido",
          skipped: "Omitido"
        }
      },
      last_error: {
        label: "Último error"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      }
    }
  },
  sys_job: {
    label: "Tarea en segundo plano",
    pluralLabel: "Tareas en segundo plano",
    description: "Catálogo de tareas en segundo plano registradas",
    fields: {
      id: {
        label: "ID de tarea"
      },
      name: {
        label: "Nombre de la tarea",
        help: "Identificador único de tarea (snake_case)."
      },
      schedule_type: {
        label: "Tipo de programación",
        options: {
          cron: "Cron",
          interval: "Intervalo",
          once: "Una vez"
        }
      },
      schedule_expression: {
        label: "Expresión",
        help: "Expresión Cron / intervalo en ms / fecha-hora ISO."
      },
      timezone: {
        label: "Zona horaria"
      },
      active: {
        label: "Activo",
        help: "Indica si el programador está ejecutando actualmente esta tarea."
      },
      last_run_at: {
        label: "Última ejecución el"
      },
      last_status: {
        label: "Último estado",
        options: {
          success: "Correcto",
          failed: "Fallido",
          timeout: "Tiempo de espera agotado",
          running: "En ejecución"
        }
      },
      last_error: {
        label: "Último error"
      },
      run_count: {
        label: "Número de ejecuciones"
      },
      failure_count: {
        label: "Número de fallos"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      }
    }
  },
  sys_job_run: {
    label: "Ejecución de tarea",
    pluralLabel: "Ejecuciones de tarea",
    description: "Registro de auditoría de ejecución de tareas en segundo plano",
    fields: {
      id: {
        label: "ID de ejecución"
      },
      job_name: {
        label: "Tarea"
      },
      status: {
        label: "Estado",
        options: {
          running: "En ejecución",
          success: "Correcto",
          failed: "Fallido",
          timeout: "Tiempo de espera agotado"
        }
      },
      started_at: {
        label: "Iniciada el"
      },
      completed_at: {
        label: "Completado el"
      },
      duration_ms: {
        label: "Duración (ms)"
      },
      attempt: {
        label: "Intento",
        help: "1 para la primera ejecución, >1 para reintentos/repeticiones."
      },
      trigger: {
        label: "Desencadenante",
        options: {
          schedule: "Programación",
          manual: "Manual",
          replay: "Repetición"
        }
      },
      error: {
        label: "Error"
      },
      created_at: {
        label: "Creado el"
      }
    }
  },
  sys_job_queue: {
    label: "Mensaje de la cola de tareas",
    pluralLabel: "Mensajes de la cola de tareas",
    description: "Cola duradera de tareas/mensajes, incluidos los mensajes fallidos (dead letters).",
    fields: {
      id: {
        label: "ID de mensaje"
      },
      queue: {
        label: "Cola",
        help: "Nombre lógico de la cola (snake_case)."
      },
      idempotency_key: {
        label: "Clave de idempotencia",
        help: "Clave de deduplicación dentro de (queue, window)."
      },
      payload_json: {
        label: "Carga útil (JSON)",
        help: "Cuerpo del mensaje serializado."
      },
      metadata_json: {
        label: "Metadatos (JSON)",
        help: "Bolsa de metadatos serializada (tenant_id, source_record, ...)."
      },
      status: {
        label: "Estado",
        help: "Estado del ciclo de vida.",
        options: {
          pending: "Pendiente",
          running: "En ejecución",
          completed: "Completado",
          failed: "Fallido",
          dlq: "DLQ"
        }
      },
      priority: {
        label: "Prioridad",
        help: "Menor = mayor prioridad."
      },
      attempts: {
        label: "Intentos"
      },
      max_attempts: {
        label: "Intentos máximos"
      },
      backoff_type: {
        label: "Retroceso",
        options: {
          fixed: "Fijo",
          exponential: "Exponencial"
        }
      },
      backoff_delay_ms: {
        label: "Base de backoff (ms)"
      },
      backoff_max_delay_ms: {
        label: "Límite de backoff (ms)"
      },
      scheduled_for: {
        label: "Programado para",
        help: "Momento más temprano en que un worker puede tomar este mensaje en arrendamiento."
      },
      locked_by: {
        label: "Bloqueado por",
        help: "ID del worker que mantiene el arrendamiento."
      },
      locked_until: {
        label: "Bloqueado hasta",
        help: "Caducidad del arrendamiento; si ha pasado, otro worker puede reclamarlo."
      },
      last_error: {
        label: "Último error"
      },
      completed_at: {
        label: "Completado el"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      }
    }
  },
  sys_metadata: {
    label: "Metadatos del sistema",
    pluralLabel: "Metadatos del sistema",
    description: "Almacena registros de metadatos de la plataforma y del ámbito de usuario (objetos, vistas, flujos, etc.)",
    fields: {
      id: {
        label: "ID"
      },
      name: {
        label: "Nombre"
      },
      type: {
        label: "Tipo de metadatos"
      },
      namespace: {
        label: "Espacio de nombres"
      },
      package_id: {
        label: "ID del paquete",
        help: "Cadena de ID heredada del manifiesto del paquete. Use package_version_id para los registros nuevos."
      },
      package_version_id: {
        label: "Versión del paquete",
        help: "Clave foránea a sys_package_version (UUID). Null = incorporado en la plataforma o sobrescritura a nivel de entorno."
      },
      managed_by: {
        label: "Gestionado por",
        options: {
          package: "Paquete",
          platform: "Plataforma",
          user: "Usuario"
        }
      },
      scope: {
        label: "Ámbito",
        options: {
          system: "Sistema",
          platform: "Plataforma",
          user: "Usuario"
        }
      },
      metadata: {
        label: "Metadatos",
        help: "Payload de metadatos serializado en JSON."
      },
      extends: {
        label: "Extiende"
      },
      strategy: {
        label: "Estrategia",
        options: {
          merge: "Fusionar",
          replace: "Reemplazar"
        }
      },
      owner: {
        label: "Propietario"
      },
      state: {
        label: "Estado",
        options: {
          draft: "Borrador",
          active: "Activo",
          archived: "Archivado",
          deprecated: "Obsoleto"
        }
      },
      organization_id: {
        label: "Organización",
        help: "Organización para el aislamiento multi-tenant."
      },
      environment_id: {
        label: "Proyecto (obsoleto)",
        help: "OBSOLETO. Use organization_id para el aislamiento del tenant."
      },
      version: {
        label: "Versión"
      },
      checksum: {
        label: "Checksum"
      },
      source: {
        label: "Origen",
        options: {
          filesystem: "Sistema de archivos",
          database: "Base de datos",
          api: "API",
          migration: "Migración"
        }
      },
      tags: {
        label: "Etiquetas",
        help: "Matriz serializada en JSON de etiquetas de clasificación."
      },
      created_by: {
        label: "Creado por"
      },
      created_at: {
        label: "Creado el"
      },
      updated_by: {
        label: "Actualizado por"
      },
      updated_at: {
        label: "Actualizado el"
      }
    },
    _views: {
      only_objects: {
        label: "Objetos"
      },
      only_fields: {
        label: "Campos"
      },
      all_metadata: {
        label: "Todos"
      }
    }
  },
  sys_metadata_history: {
    label: "Historial de metadatos",
    pluralLabel: "Historial de metadatos",
    description: "Historial de versiones y registro de auditoría de cambios de metadatos",
    fields: {
      id: {
        label: "ID"
      },
      event_seq: {
        label: "Secuencia de eventos",
        help: "Cursor monotónico del registro de eventos por organización."
      },
      name: {
        label: "Nombre"
      },
      type: {
        label: "Tipo de metadatos"
      },
      version: {
        label: "Versión"
      },
      operation_type: {
        label: "Tipo de operación",
        options: {
          create: "Crear",
          update: "Actualizar",
          publish: "Publicar",
          revert: "Revertir",
          delete: "Eliminar"
        }
      },
      metadata: {
        label: "Metadatos",
        help: "Instantánea de metadatos serializada en JSON para esta versión."
      },
      checksum: {
        label: "Checksum"
      },
      previous_checksum: {
        label: "Checksum anterior"
      },
      change_note: {
        label: "Nota de cambio",
        help: "Descripción de lo que cambió en esta versión."
      },
      source: {
        label: "Origen"
      },
      organization_id: {
        label: "Organización",
        help: "Organización para el aislamiento multi-tenant."
      },
      recorded_by: {
        label: "Registrado por"
      },
      recorded_at: {
        label: "Registrado el"
      }
    }
  },
  sys_view_definition: {
    label: "Definición de vista",
    pluralLabel: "Definiciones de vista",
    description: "Definiciones de vista creadas en tiempo de ejecución (capas compartida / personal). La capa de paquete se distribuye desde el código fuente.",
    fields: {
      id: {
        label: "ID"
      },
      name: {
        label: "Nombre"
      },
      object: {
        label: "Objeto"
      },
      view_kind: {
        label: "Tipo de vista",
        options: {
          list: "Lista",
          form: "Formulario"
        }
      },
      label: {
        label: "Etiqueta"
      },
      is_default: {
        label: "Es predeterminada"
      },
      view_order: {
        label: "Orden"
      },
      scope: {
        label: "Ámbito",
        options: {
          shared: "Compartida",
          personal: "Personal"
        }
      },
      owner: {
        label: "Propietario"
      },
      hidden: {
        label: "Oculta"
      },
      config: {
        label: "Configuración",
        help: "Configuración de ListView o FormView (coincide con ViewItem.config de la especificación)."
      },
      organization_id: {
        label: "Organización",
        help: "Organización para el aislamiento multiinquilino."
      },
      state: {
        label: "Estado",
        options: {
          draft: "Borrador",
          active: "Activa",
          archived: "Archivada"
        }
      },
      created_by: {
        label: "Creado por"
      },
      created_at: {
        label: "Creado el"
      },
      updated_by: {
        label: "Actualizado por"
      },
      updated_at: {
        label: "Actualizado el"
      }
    }
  },
  sys_metadata_audit: {
    label: "Auditoría de metadatos",
    pluralLabel: "Auditoría de metadatos",
    description: "Registro de auditoría de solo adición de las decisiones de escritura de metadatos (ADR-0010).",
    fields: {
      id: {
        label: "ID"
      },
      occurred_at: {
        label: "Ocurrido el"
      },
      actor: {
        label: "Actor",
        help: "Principal que actúa: ID de usuario, ID de sistema o \"system\"."
      },
      source: {
        label: "Origen"
      },
      type: {
        label: "Tipo de metadatos"
      },
      name: {
        label: "Nombre"
      },
      organization_id: {
        label: "Organización"
      },
      operation: {
        label: "Operación",
        options: {
          save: "Guardar",
          publish: "Publicar",
          rollback: "Revertir",
          delete: "Eliminar",
          reset: "Restablecer"
        }
      },
      outcome: {
        label: "Resultado",
        options: {
          allowed: "Permitido",
          denied: "Denegado",
          forced: "Forzado"
        }
      },
      code: {
        label: "Código"
      },
      lock_state: {
        label: "Estado de bloqueo",
        options: {
          none: "Ninguno",
          nooverlay: "no-overlay",
          nodelete: "no-delete",
          full: "Bloqueo total"
        }
      },
      lock_overridden: {
        label: "Bloqueo anulado"
      },
      request_id: {
        label: "ID de solicitud"
      },
      note: {
        label: "Nota"
      }
    }
  },
  sys_setting: {
    label: "Ajuste",
    pluralLabel: "Ajustes",
    description: "Almacén K/V genérico que respalda el contrato SettingsManifest.",
    fields: {
      id: {
        label: "ID de ajuste"
      },
      created_at: {
        label: "Creado el"
      },
      updated_at: {
        label: "Actualizado el"
      },
      namespace: {
        label: "Espacio de nombres",
        help: "Espacio de nombres del manifiesto (p. ej. mail, branding, feature_flags)."
      },
      key: {
        label: "Clave",
        help: "Clave del especificador dentro del espacio de nombres (snake_case)."
      },
      scope: {
        label: "Ámbito",
        help: "Capa de la jerarquía de resolución de configuración a la que pertenece esta fila.",
        options: {
          global: "Global",
          tenant: "Inquilino",
          user: "Usuario",
          runtime: "Tiempo de ejecución"
        }
      },
      user_id: {
        label: "Usuario",
        help: "Usuario propietario cuando scope=user; null en caso contrario."
      },
      value: {
        label: "Valor",
        help: "Valor codificado en JSON. Null cuando encrypted=true (véase value_enc)."
      },
      encrypted: {
        label: "Cifrado",
        help: "Si es verdadero, el valor se almacena cifrado en reposo en value_enc; la columna value es null."
      },
      locked: {
        label: "Bloqueado",
        help: "Si es verdadero, las filas de ámbitos inferiores no pueden sobrescribir este valor; las escrituras contra ámbitos inferiores devuelven 409. Lo utilizan los administradores de la plataforma para fijar un valor global para todos los tenants (cascada Fase 2)."
      },
      locked_reason: {
        label: "Motivo del bloqueo",
        help: "Explicación legible que se muestra en el tooltip de la UI cuando locked=true."
      },
      value_enc: {
        label: "Valor cifrado",
        help: "Payload de texto cifrado (envuelto con KMS). Se establece solo cuando encrypted=true."
      },
      updated_by: {
        label: "Actualizado por",
        help: "Último actor que escribió esta fila mediante SettingsService.set()."
      }
    },
    _views: {
      by_namespace: {
        label: "Por espacio de nombres"
      },
      tenant_only: {
        label: "Inquilino"
      },
      user_only: {
        label: "Usuario"
      },
      all_settings: {
        label: "Todos"
      }
    }
  },
  sys_secret: {
    label: "Secreto",
    pluralLabel: "Secretos",
    description: "Almacén cifrado al que hacen referencia los identificadores de sys_setting. Nunca contiene texto sin formato.",
    fields: {
      id: {
        label: "ID",
        help: "Identificador opaco al que hace referencia `sys_setting.value_enc`."
      },
      created_at: {
        label: "Creado el",
        help: "Momento en que se escribió por primera vez el cifrado."
      },
      rotated_at: {
        label: "Rotado el",
        help: "Momento en que el cifrado se volvió a envolver por última vez con una nueva clave KMS."
      },
      namespace: {
        label: "Espacio de nombres",
        help: "Espacio de nombres de ajustes al que pertenece este secreto."
      },
      key: {
        label: "Clave",
        help: "Clave del especificador dentro del espacio de nombres."
      },
      kms_key_id: {
        label: "ID de clave KMS",
        help: "Identificador externo de KMS (ARN, ID de recurso de GCP o `local`)."
      },
      alg: {
        label: "Algoritmo",
        help: "Etiqueta del algoritmo de cifrado/AEAD."
      },
      version: {
        label: "Versión",
        help: "Se incrementa cada vez que rotateKey() vuelve a envolver esta fila."
      },
      ciphertext: {
        label: "Texto cifrado",
        help: "Blob de texto cifrado codificado por el proveedor (base64 / JSON). La implementación lo define; solo el ICryptoProvider correspondiente puede leerlo."
      }
    }
  },
  sys_setting_audit: {
    label: "Registro de auditoría de ajustes",
    pluralLabel: "Auditoría de ajustes",
    description: "Registro de auditoría append-only para mutaciones de SettingsService.",
    fields: {
      id: {
        label: "ID"
      },
      created_at: {
        label: "Creado el",
        help: "Momento en que se registró la mutación."
      },
      namespace: {
        label: "Espacio de nombres"
      },
      key: {
        label: "Clave"
      },
      scope: {
        label: "Ámbito",
        help: "Capa de cascada en la que se escribió la fila.",
        options: {
          global: "Global",
          tenant: "Inquilino",
          user: "Usuario"
        }
      },
      action: {
        label: "Acción",
        help: "Tipo de mutación.",
        options: {
          set: "Establecer",
          reset: "Restablecer",
          lock: "Bloquear",
          unlock: "Desbloquear",
          rotate: "Rotar"
        }
      },
      actor_id: {
        label: "Actor",
        help: "Usuario que realizó la mutación; null para tareas del sistema."
      },
      source: {
        label: "Origen",
        help: "Punto de entrada de la mutación.",
        options: {
          ui: "UI",
          api: "API",
          migration: "Migración",
          import: "Importar",
          system: "Sistema"
        }
      },
      reason: {
        label: "Motivo",
        help: "Justificación en texto libre proporcionada por el actor (opcional)."
      },
      old_hash: {
        label: "Hash anterior",
        help: "SHA-256 del valor anterior (canonicalizado). Null cuando antes no estaba establecido."
      },
      new_hash: {
        label: "Hash nuevo",
        help: "SHA-256 del valor nuevo (canonicalizado). Null al restablecer."
      },
      encrypted: {
        label: "Cifrado",
        help: "Verdadero cuando el campo contiene material secreto (la rotación es relevante)."
      },
      request_id: {
        label: "ID de solicitud",
        help: "Se correlaciona con sys_audit_log / tracing."
      }
    }
  }
};
