| import { z } from "zod"; |
| |
| |
| |
| export const OAuthMetadataSchema = z |
| .object({ |
| issuer: z.string(), |
| authorization_endpoint: z.string(), |
| token_endpoint: z.string(), |
| registration_endpoint: z.string().optional(), |
| scopes_supported: z.array(z.string()).optional(), |
| response_types_supported: z.array(z.string()), |
| response_modes_supported: z.array(z.string()).optional(), |
| grant_types_supported: z.array(z.string()).optional(), |
| token_endpoint_auth_methods_supported: z.array(z.string()).optional(), |
| token_endpoint_auth_signing_alg_values_supported: z |
| .array(z.string()) |
| .optional(), |
| service_documentation: z.string().optional(), |
| revocation_endpoint: z.string().optional(), |
| revocation_endpoint_auth_methods_supported: z.array(z.string()).optional(), |
| revocation_endpoint_auth_signing_alg_values_supported: z |
| .array(z.string()) |
| .optional(), |
| introspection_endpoint: z.string().optional(), |
| introspection_endpoint_auth_methods_supported: z |
| .array(z.string()) |
| .optional(), |
| introspection_endpoint_auth_signing_alg_values_supported: z |
| .array(z.string()) |
| .optional(), |
| code_challenge_methods_supported: z.array(z.string()).optional(), |
| }) |
| .passthrough(); |
| |
| |
| |
| export const OAuthTokensSchema = z |
| .object({ |
| access_token: z.string(), |
| token_type: z.string(), |
| expires_in: z.number().optional(), |
| scope: z.string().optional(), |
| refresh_token: z.string().optional(), |
| }) |
| .strip(); |
| |
| |
| |
| export const OAuthErrorResponseSchema = z |
| .object({ |
| error: z.string(), |
| error_description: z.string().optional(), |
| error_uri: z.string().optional(), |
| }); |
| |
| |
| |
| export const OAuthClientMetadataSchema = z.object({ |
| redirect_uris: z.array(z.string()).refine((uris) => uris.every((uri) => URL.canParse(uri)), { message: "redirect_uris must contain valid URLs" }), |
| token_endpoint_auth_method: z.string().optional(), |
| grant_types: z.array(z.string()).optional(), |
| response_types: z.array(z.string()).optional(), |
| client_name: z.string().optional(), |
| client_uri: z.string().optional(), |
| logo_uri: z.string().optional(), |
| scope: z.string().optional(), |
| contacts: z.array(z.string()).optional(), |
| tos_uri: z.string().optional(), |
| policy_uri: z.string().optional(), |
| jwks_uri: z.string().optional(), |
| jwks: z.any().optional(), |
| software_id: z.string().optional(), |
| software_version: z.string().optional(), |
| }).strip(); |
| |
| |
| |
| export const OAuthClientInformationSchema = z.object({ |
| client_id: z.string(), |
| client_secret: z.string().optional(), |
| client_id_issued_at: z.number().optional(), |
| client_secret_expires_at: z.number().optional(), |
| }).strip(); |
| |
| |
| |
| export const OAuthClientInformationFullSchema = OAuthClientMetadataSchema.merge(OAuthClientInformationSchema); |
| |
| |
| |
| export const OAuthClientRegistrationErrorSchema = z.object({ |
| error: z.string(), |
| error_description: z.string().optional(), |
| }).strip(); |
| |
| |
| |
| export const OAuthTokenRevocationRequestSchema = z.object({ |
| token: z.string(), |
| token_type_hint: z.string().optional(), |
| }).strip(); |
| |