server/http/openapi/management-routes/users-security.ts
Rama main · réplica de lectura del repositorio original.
import {
jsonBody,
listManagementUserLinkedAccountsResponseSchema,
listManagementUserPasskeysResponseSchema,
listManagementUserSessionsResponseSchema,
listManagementUsersResponseSchema,
type ManagementRouteConfig,
managementBanUserRequestSchema,
managementCreateUserRequestSchema,
managementUpdateUserRequestSchema,
managementUserDetailResponseSchema,
managementUserListQuerySchema,
paginationQuerySchema,
passwordResetRequestResponseSchema,
securityPolicyResponseSchema,
updateSecurityPolicySchema,
userIdParam,
userPasskeyParam,
userSessionParam,
z,
} from './helpers'
export const userSecurityRoutes: ManagementRouteConfig[] = [
{
method: 'get',
path: '/users',
operationId: 'listUsers',
summary: 'List users',
request: { query: managementUserListQuerySchema },
response: listManagementUsersResponseSchema,
paginated: true,
},
{
method: 'post',
path: '/users',
operationId: 'createUser',
summary: 'Create user',
request: { body: jsonBody(managementCreateUserRequestSchema) },
response: managementUserDetailResponseSchema,
status: 201,
},
{
method: 'get',
path: '/users/{userId}',
operationId: 'getUser',
summary: 'Get user',
request: { params: userIdParam },
response: managementUserDetailResponseSchema,
},
{
method: 'patch',
path: '/users/{userId}',
operationId: 'updateUser',
summary: 'Update user',
request: { params: userIdParam, body: jsonBody(managementUpdateUserRequestSchema) },
response: managementUserDetailResponseSchema,
},
{
method: 'delete',
path: '/users/{userId}',
operationId: 'deleteUser',
summary: 'Delete user',
request: { params: userIdParam },
noBody: true,
},
{
method: 'get',
path: '/users/{userId}/suspension',
operationId: 'getUserSuspension',
summary: 'Get a User suspension',
request: { params: userIdParam },
response: z.object({
userId: z.string(),
suspended: z.boolean(),
reason: z.string().nullable(),
expiresAt: z.string().nullable(),
}),
},
{
method: 'put',
path: '/users/{userId}/suspension',
operationId: 'replaceUserSuspension',
summary: 'Create or replace a User suspension',
request: { params: userIdParam, body: jsonBody(managementBanUserRequestSchema) },
response: managementUserDetailResponseSchema,
},
{
method: 'delete',
path: '/users/{userId}/suspension',
operationId: 'deleteUserSuspension',
summary: 'Delete a User suspension',
request: { params: userIdParam },
response: managementUserDetailResponseSchema,
},
{
method: 'post',
path: '/users/{userId}/password-reset-requests',
operationId: 'createUserPasswordResetRequest',
summary: 'Create user password reset request',
request: { params: userIdParam },
response: passwordResetRequestResponseSchema,
status: 201,
},
{
method: 'get',
path: '/users/{userId}/password-reset-requests/{requestId}',
operationId: 'getUserPasswordResetRequest',
summary: 'Get user password reset request',
request: { params: z.object({ userId: z.string(), requestId: z.string() }) },
response: passwordResetRequestResponseSchema,
},
{
method: 'get',
path: '/users/{userId}/sessions',
operationId: 'listUserSessions',
summary: 'List user sessions',
request: { params: userIdParam, query: paginationQuerySchema },
response: listManagementUserSessionsResponseSchema,
paginated: true,
},
{
method: 'delete',
path: '/users/{userId}/sessions',
operationId: 'deleteUserSessions',
summary: 'Delete user sessions',
request: { params: userIdParam },
noBody: true,
},
{
method: 'get',
path: '/users/{userId}/sessions/{sessionId}',
operationId: 'getUserSession',
summary: 'Get user session',
request: { params: userSessionParam },
response: z.unknown(),
},
{
method: 'delete',
path: '/users/{userId}/sessions/{sessionId}',
operationId: 'deleteUserSession',
summary: 'Delete user session',
request: { params: userSessionParam },
noBody: true,
},
{
method: 'get',
path: '/users/{userId}/linked-accounts',
operationId: 'listUserLinkedAccounts',
summary: 'List user linked accounts',
request: { params: userIdParam, query: paginationQuerySchema },
response: listManagementUserLinkedAccountsResponseSchema,
paginated: true,
},
{
method: 'get',
path: '/users/{userId}/passkeys',
operationId: 'listUserPasskeys',
summary: 'List user passkeys',
request: { params: userIdParam, query: paginationQuerySchema },
response: listManagementUserPasskeysResponseSchema,
paginated: true,
},
{
method: 'delete',
path: '/users/{userId}/passkeys/{passkeyId}',
operationId: 'deleteUserPasskey',
summary: 'Delete user passkey',
request: { params: userPasskeyParam },
noBody: true,
},
{
method: 'get',
path: '/realm/security-policy',
operationId: 'getSecurityPolicy',
summary: 'Get security policy',
response: z.object({ policy: securityPolicyResponseSchema }),
},
{
method: 'patch',
path: '/realm/security-policy',
operationId: 'updateSecurityPolicy',
summary: 'Update security policy',
request: { body: jsonBody(updateSecurityPolicySchema) },
response: z.object({ policy: securityPolicyResponseSchema }),
},
]