Referencia de @styx/domain generada de su TSDoc.
packages/domain/package.jsonPágina generada desde
el TSDoc de @styx/domain. No se edita a mano:bun run docs:genla regenera ybun run docs:checkfalla si difiere.
constIDENTITY_ERROR_METADATA:object
Tabla estática: metadata por código (mensaje base, retryable, status HTTP, categoría).
readonlyIDENTITY_ACCOUNT_EXISTS:object
readonlycategory:"permanent"='permanent'
readonlycode:"IDENTITY_ACCOUNT_EXISTS"='IDENTITY_ACCOUNT_EXISTS'
readonlyhttpStatus:409=409
readonlymessage:"Esa identidad ya tiene cuenta; una invitación no cambia una cuenta existente"='Esa identidad ya tiene cuenta; una invitación no cambia una cuenta existente'
readonlyretryable:false=false
readonlysuggestedAction:"Entrar con la cuenta existente desde /auth/oidc/start"='Entrar con la cuenta existente desde /auth/oidc/start'
readonlyIDENTITY_CLIENT_ADDRESS_UNKNOWN:object
readonlycategory:"transient"='transient'
readonlycode:"IDENTITY_CLIENT_ADDRESS_UNKNOWN"='IDENTITY_CLIENT_ADDRESS_UNKNOWN'
readonlyhttpStatus:503=503
readonlymessage:"No se pudo determinar la dirección del cliente"='No se pudo determinar la dirección del cliente'
readonlyretryable:true=true
readonlysuggestedAction:"Revisar la cadena de proxies de confianza (IDENTITY_TRUSTED_PROXIES)"='Revisar la cadena de proxies de confianza (IDENTITY_TRUSTED_PROXIES)'
readonlyIDENTITY_CSRF_REJECTED:object
readonlycategory:"permanent"='permanent'
readonlycode:"IDENTITY_CSRF_REJECTED"='IDENTITY_CSRF_REJECTED'
readonlyhttpStatus:403=403
readonlymessage:"Petición rechazada por la protección CSRF"='Petición rechazada por la protección CSRF'
readonlyretryable:false=false
readonlysuggestedAction:"Repetir la operación desde la propia web"='Repetir la operación desde la propia web'
readonlyIDENTITY_DB_READ_FAILED:object
readonlycategory:"transient"='transient'
readonlycode:"IDENTITY_DB_READ_FAILED"='IDENTITY_DB_READ_FAILED'
readonlyhttpStatus:503=503
readonlymessage:"Falló la lectura de Postgres (identity)"='Falló la lectura de Postgres (identity)'
readonlyretryable:true=true
readonlysuggestedAction:"Revisar la conexión con Postgres y reintentar"='Revisar la conexión con Postgres y reintentar'
readonlyIDENTITY_DB_WRITE_FAILED:object
readonlycategory:"transient"='transient'
readonlycode:"IDENTITY_DB_WRITE_FAILED"='IDENTITY_DB_WRITE_FAILED'
readonlyhttpStatus:503=503
readonlymessage:"Falló la escritura a Postgres (identity)"='Falló la escritura a Postgres (identity)'
readonlyretryable:true=true
readonlysuggestedAction:"Revisar la conexión con Postgres y reintentar"='Revisar la conexión con Postgres y reintentar'
readonlyIDENTITY_DEVICE_ACCESS_DENIED:IIdentityErrorRow<"IDENTITY_DEVICE_ACCESS_DENIED",400>
Device grant: el usuario rechazó el dispositivo (access_denied).
readonlyIDENTITY_DEVICE_AUTHORIZATION_PENDING:IIdentityErrorRow<"IDENTITY_DEVICE_AUTHORIZATION_PENDING",400>
Device grant: el usuario aún no ha aprobado el dispositivo (authorization_pending, RFC 8628 §3.5).
readonlyIDENTITY_DEVICE_CAPACITY:IIdentityErrorRow<"IDENTITY_DEVICE_CAPACITY",503>
Device grant: tope global de autorizaciones pendientes alcanzado (503 con Retry-After).
readonlyIDENTITY_DEVICE_CLIENT_UNKNOWN:IIdentityErrorRow<"IDENTITY_DEVICE_CLIENT_UNKNOWN",400>
Device grant: client_id no registrado (invalid_client).
readonlyIDENTITY_DEVICE_CODE_EXPIRED:IIdentityErrorRow<"IDENTITY_DEVICE_CODE_EXPIRED",400>
Device grant: device_code caducado, ya canjeado o inexistente (expired_token; no distingue los casos).
readonlyIDENTITY_DEVICE_CODE_UNKNOWN:IIdentityErrorRow<"IDENTITY_DEVICE_CODE_UNKNOWN",404>
Device grant: user_code desconocido o caducado en la pantalla de aprobación (404 sin oráculo).
readonlyIDENTITY_DEVICE_SLOW_DOWN:IIdentityErrorRow<"IDENTITY_DEVICE_SLOW_DOWN",400>
Device grant: el dispositivo sondea más rápido que el interval (slow_down; el intervalo sube 5 s).
readonlyIDENTITY_FORBIDDEN:object
readonlycategory:"permanent"='permanent'
readonlycode:"IDENTITY_FORBIDDEN"='IDENTITY_FORBIDDEN'
readonlyhttpStatus:403=403
readonlymessage:"El actor no tiene permiso para esta operación"='El actor no tiene permiso para esta operación'
readonlyretryable:false=false
readonlysuggestedAction:"Pedir a un admin que haga la operación"='Pedir a un admin que haga la operación'
readonlyIDENTITY_INTERNAL:object
readonlycategory:"permanent"='permanent'
readonlycode:"IDENTITY_INTERNAL"='IDENTITY_INTERNAL'
readonlyhttpStatus:500=500
readonlymessage:"Error interno de identity"='Error interno de identity'
readonlyretryable:false=false
readonlysuggestedAction:"Revisar logs de identity-svc"='Revisar logs de identity-svc'
readonlyIDENTITY_INVALID_INPUT:object
readonlycategory:"permanent"='permanent'
readonlycode:"IDENTITY_INVALID_INPUT"='IDENTITY_INVALID_INPUT'
readonlyhttpStatus:400=400
readonlymessage:"Input inválido para la operación de identity"='Input inválido para la operación de identity'
readonlyretryable:false=false
readonlysuggestedAction:"Revisar los parámetros de entrada"='Revisar los parámetros de entrada'
readonlyIDENTITY_INVITE_EXHAUSTED:object
readonlycategory:"permanent"='permanent'
readonlycode:"IDENTITY_INVITE_EXHAUSTED"='IDENTITY_INVITE_EXHAUSTED'
readonlyhttpStatus:409=409
readonlymessage:"La invitación ya se ha usado"='La invitación ya se ha usado'
readonlyretryable:false=false
readonlysuggestedAction:"Pedir una invitación nueva a un admin"='Pedir una invitación nueva a un admin'
readonlyIDENTITY_INVITE_EXPIRED:object
readonlycategory:"permanent"='permanent'
readonlycode:"IDENTITY_INVITE_EXPIRED"='IDENTITY_INVITE_EXPIRED'
readonlyhttpStatus:410=410
readonlymessage:"La invitación ha caducado"='La invitación ha caducado'
readonlyretryable:false=false
readonlysuggestedAction:"Pedir una invitación nueva a un admin"='Pedir una invitación nueva a un admin'
readonlyIDENTITY_INVITE_INVALID:object
readonlycategory:"permanent"='permanent'
readonlycode:"IDENTITY_INVITE_INVALID"='IDENTITY_INVITE_INVALID'
readonlyhttpStatus:400=400
readonlymessage:"Invitación inválida"='Invitación inválida'
readonlyretryable:false=false
readonlysuggestedAction:"Pedir una invitación nueva a un admin"='Pedir una invitación nueva a un admin'
readonlyIDENTITY_INVITE_NOT_FOUND:object
readonlycategory:"permanent"='permanent'
readonlycode:"IDENTITY_INVITE_NOT_FOUND"='IDENTITY_INVITE_NOT_FOUND'
readonlyhttpStatus:404=404
readonlymessage:"No existe esa invitación"='No existe esa invitación'
readonlyretryable:false=false
readonlysuggestedAction:"Comprobar el id de la invitación"='Comprobar el id de la invitación'
readonlyIDENTITY_KEY_IN_BROWSER_CONTEXT:IIdentityErrorRow<"IDENTITY_KEY_IN_BROWSER_CONTEXT",403>
El canje de una API key llegó con Cookie, Origin o Sec-Fetch-*: una key no se usa desde un navegador.
readonlyIDENTITY_KEY_INVALID:IIdentityErrorRow<"IDENTITY_KEY_INVALID",401>
API key mal formada, desconocida, caducada o revocada (un único 401: no es oráculo de keys).
readonlyIDENTITY_KEY_LIMIT:IIdentityErrorRow<"IDENTITY_KEY_LIMIT",409>
Tope de API keys vivas por cuenta alcanzado.
readonlyIDENTITY_KEY_NOT_FOUND:IIdentityErrorRow<"IDENTITY_KEY_NOT_FOUND",404>
API key inexistente o ajena (404 sin oráculo).
readonlyIDENTITY_OIDC_CALLBACK_REJECTED:object
readonlycategory:"permanent"='permanent'
readonlycode:"IDENTITY_OIDC_CALLBACK_REJECTED"='IDENTITY_OIDC_CALLBACK_REJECTED'
readonlyhttpStatus:401=401
readonlymessage:"El OP rechazó la autorización o su respuesta no superó la validación"='El OP rechazó la autorización o su respuesta no superó la validación'
readonlyretryable:false=false
readonlysuggestedAction:"Reiniciar el login; si persiste, revisar la config del cliente en el OP"='Reiniciar el login; si persiste, revisar la config del cliente en el OP'
readonlyIDENTITY_OIDC_PROVIDER_UNAVAILABLE:object
readonlycategory:"transient"='transient'
readonlycode:"IDENTITY_OIDC_PROVIDER_UNAVAILABLE"='IDENTITY_OIDC_PROVIDER_UNAVAILABLE'
readonlyhttpStatus:503=503
readonlymessage:"El OP no responde (discovery, token endpoint o JWKS)"='El OP no responde (discovery, token endpoint o JWKS)'
readonlyretryable:true=true
readonlysuggestedAction:"Verificar la disponibilidad del OP y reintentar"='Verificar la disponibilidad del OP y reintentar'
readonlyIDENTITY_OIDC_STATE_MISMATCH:object
readonlycategory:"permanent"='permanent'
readonlycode:"IDENTITY_OIDC_STATE_MISMATCH"='IDENTITY_OIDC_STATE_MISMATCH'
readonlyhttpStatus:400=400
readonlymessage:"state OIDC desconocido, caducado, ya consumido o no ligado a este navegador"='state OIDC desconocido, caducado, ya consumido o no ligado a este navegador'
readonlyretryable:false=false
readonlysuggestedAction:"Reiniciar el login desde /auth/oidc/start"='Reiniciar el login desde /auth/oidc/start'
readonlyIDENTITY_RATE_LIMITED:object
readonlycategory:"transient"='transient'
readonlycode:"IDENTITY_RATE_LIMITED"='IDENTITY_RATE_LIMITED'
readonlyhttpStatus:429=429
readonlymessage:"Demasiadas peticiones"='Demasiadas peticiones'
readonlyretryable:true=true
readonlysuggestedAction:"Reintentar tras Retry-After"='Reintentar tras Retry-After'
readonlyIDENTITY_REFRESH_TOKEN_REUSED:object
readonlycategory:"permanent"='permanent'
readonlycode:"IDENTITY_REFRESH_TOKEN_REUSED"='IDENTITY_REFRESH_TOKEN_REUSED'
readonlyhttpStatus:401=401
readonlymessage:"Refresh token ya rotado presentado de nuevo; la sesión se ha revocado"='Refresh token ya rotado presentado de nuevo; la sesión se ha revocado'
readonlyretryable:false=false
readonlysuggestedAction:"Re-autenticar; tratar el refresh token anterior como comprometido"='Re-autenticar; tratar el refresh token anterior como comprometido'
readonlyIDENTITY_RETURN_TO_NOT_ALLOWED:object
readonlycategory:"permanent"='permanent'
readonlycode:"IDENTITY_RETURN_TO_NOT_ALLOWED"='IDENTITY_RETURN_TO_NOT_ALLOWED'
readonlyhttpStatus:400=400
readonlymessage:"returnTo fuera de los orígenes permitidos"='returnTo fuera de los orígenes permitidos'
readonlyretryable:false=false
readonlysuggestedAction:"Usar un returnTo cuyo origen esté en IDENTITY_ALLOWED_RETURN_ORIGINS"='Usar un returnTo cuyo origen esté en IDENTITY_ALLOWED_RETURN_ORIGINS'
readonlyIDENTITY_SCOPE_EXCEEDS_GRANTS:IIdentityErrorRow<"IDENTITY_SCOPE_EXCEEDS_GRANTS",403>
Los scopes pedidos exceden los permisos del actor o de quien aprueba (dec-0125 §5.1).
readonlyIDENTITY_SCOPE_INVALID:IIdentityErrorRow<"IDENTITY_SCOPE_INVALID",400>
Scope fuera del vocabulario de permisos de @styx/authz (invalid_scope).
readonlyIDENTITY_SESSION_NOT_FOUND:object
readonlycategory:"permanent"='permanent'
readonlycode:"IDENTITY_SESSION_NOT_FOUND"='IDENTITY_SESSION_NOT_FOUND'
readonlyhttpStatus:404=404
readonlymessage:"No existe esa sesión"='No existe esa sesión'
readonlyretryable:false=false
readonlysuggestedAction:"Comprobar el id de la sesión"='Comprobar el id de la sesión'
readonlyIDENTITY_SESSION_REVOKED:object
readonlycategory:"permanent"='permanent'
readonlycode:"IDENTITY_SESSION_REVOKED"='IDENTITY_SESSION_REVOKED'
readonlyhttpStatus:401=401
readonlymessage:"La sesión no existe, caducó o fue revocada"='La sesión no existe, caducó o fue revocada'
readonlyretryable:false=false
readonlysuggestedAction:"Re-autenticar desde /auth/oidc/start"='Re-autenticar desde /auth/oidc/start'
readonlyIDENTITY_STORE_UNAVAILABLE:object
readonlycategory:"transient"='transient'
readonlycode:"IDENTITY_STORE_UNAVAILABLE"='IDENTITY_STORE_UNAVAILABLE'
readonlyhttpStatus:503=503
readonlymessage:"El store de sesiones (Valkey) no responde"='El store de sesiones (Valkey) no responde'
readonlyretryable:true=true
readonlysuggestedAction:"Revisar la conexión con Valkey y reintentar"='Revisar la conexión con Valkey y reintentar'
readonlyIDENTITY_TOKEN_EXPIRED:object
readonlycategory:"recoverable"='recoverable'
readonlycode:"IDENTITY_TOKEN_EXPIRED"='IDENTITY_TOKEN_EXPIRED'
readonlyhttpStatus:401=401
readonlymessage:"Access token caducado"='Access token caducado'
readonlyretryable:false=false
readonlysuggestedAction:"Obtener un access token nuevo con POST /auth/refresh"='Obtener un access token nuevo con POST /auth/refresh'
readonlyIDENTITY_TOKEN_INVALID:object
readonlycategory:"permanent"='permanent'
readonlycode:"IDENTITY_TOKEN_INVALID"='IDENTITY_TOKEN_INVALID'
readonlyhttpStatus:401=401
readonlymessage:"Token con firma, emisor, audiencia o formato inválidos"='Token con firma, emisor, audiencia o formato inválidos'
readonlyretryable:false=false
readonlysuggestedAction:"Descartar el token y re-autenticar"='Descartar el token y re-autenticar'