UNPKG

okta-mcp-server

Version:

Model Context Protocol (MCP) server for Okta API operations with support for bulk operations and caching

378 lines 11.3 kB
import { z } from 'zod'; // Common schemas for application operations export const AppSignOnModeSchema = z.enum([ 'AUTO_LOGIN', 'BASIC_AUTH', 'BOOKMARK', 'BROWSER_PLUGIN', 'OPENID_CONNECT', 'SAML_1_1', 'SAML_2_0', 'SECURE_PASSWORD_STORE', 'WS_FEDERATION', ]); export const AppStatusSchema = z.enum(['ACTIVE', 'INACTIVE']); // SAML Settings Schema export const SamlSettingsSchema = z.object({ signOn: z.object({ defaultRelayState: z.string().optional(), ssoAcsUrl: z.string().url(), idpIssuer: z.string().optional(), audience: z.string(), recipient: z.string().url(), destination: z.string().url(), subjectNameIdTemplate: z.string(), subjectNameIdFormat: z.string(), responseSigned: z.boolean().default(true), assertionSigned: z.boolean().default(true), signatureAlgorithm: z.enum(['RSA_SHA256', 'RSA_SHA1']).default('RSA_SHA256'), digestAlgorithm: z.enum(['SHA256', 'SHA1']).default('SHA256'), honorForceAuthn: z.boolean().optional(), authnContextClassRef: z.string().optional(), attributeStatements: z .array(z.object({ type: z.enum(['EXPRESSION', 'GROUP']), name: z.string(), namespace: z.string().optional(), values: z.array(z.string()), })) .optional(), }), }); // OIDC Settings Schema export const OidcSettingsSchema = z.object({ oauthClient: z.object({ client_uri: z.string().url().optional(), logo_uri: z.string().url().optional(), redirect_uris: z.array(z.string().url()), post_logout_redirect_uris: z.array(z.string().url()).optional(), response_types: z.array(z.enum(['code', 'token', 'id_token'])), grant_types: z.array(z.enum(['authorization_code', 'implicit', 'password', 'refresh_token', 'client_credentials'])), application_type: z.enum(['web', 'native', 'browser', 'service']), consent_method: z.enum(['REQUIRED', 'TRUSTED']).optional(), issuer_mode: z.enum(['CUSTOM_URL', 'ORG_URL', 'DYNAMIC']).optional(), initiate_login_uri: z.string().url().optional(), wildcard_redirect: z.enum(['DISABLED', 'SUBDOMAIN']).optional(), }), }); // Basic Auth Settings Schema export const BasicAuthSettingsSchema = z.object({ app: z.object({ url: z.string().url(), authURL: z.string().url().optional(), }), }); // Bookmark Settings Schema export const BookmarkSettingsSchema = z.object({ app: z.object({ requestIntegration: z.boolean().optional(), url: z.string().url(), }), }); // Credentials Schema export const AppCredentialsSchema = z.object({ scheme: z .enum([ 'SHARED_USERNAME_AND_PASSWORD', 'EXTERNAL_PASSWORD_SYNC', 'EDIT_USERNAME_AND_PASSWORD', 'EDIT_PASSWORD_ONLY', 'ADMIN_SETS_CREDENTIALS', ]) .optional(), userNameTemplate: z .object({ template: z.string(), type: z.enum(['NONE', 'CUSTOM', 'BUILT_IN']), }) .optional(), signing: z .object({ kid: z.string().optional(), }) .optional(), oauthClient: z .object({ autoKeyRotation: z.boolean().optional(), client_id: z.string().optional(), client_secret: z.string().optional(), token_endpoint_auth_method: z .enum([ 'client_secret_basic', 'client_secret_post', 'client_secret_jwt', 'private_key_jwt', 'none', ]) .optional(), }) .optional(), }); // App User Schema export const AppUserSchema = z.object({ id: z.string().optional(), externalId: z.string().optional(), created: z.string().optional(), lastUpdated: z.string().optional(), scope: z.enum(['USER', 'GROUP']).optional(), status: z.enum(['ACTIVE', 'INACTIVE', 'STAGED']).optional(), statusChanged: z.string().optional(), passwordChanged: z.string().optional(), syncState: z.enum(['DISABLED', 'OUT_OF_SYNC', 'SYNCING', 'SYNCHRONIZED', 'ERROR']).optional(), profile: z.record(z.unknown()).optional(), credentials: z .object({ userName: z.string().optional(), password: z .object({ value: z.string(), }) .optional(), }) .optional(), }); // List Apps Schema export const ListAppsSchema = z.object({ limit: z.number().min(1).max(200).default(20), after: z.string().optional(), filter: z.string().optional(), q: z.string().optional(), expand: z.string().optional(), }); // Get App Schema export const GetAppSchema = z.object({ appId: z.string(), expand: z.string().optional(), }); // Create App Schema export const CreateAppSchema = z.object({ name: z.string(), label: z.string(), signOnMode: AppSignOnModeSchema, status: AppStatusSchema.optional(), accessibility: z .object({ selfService: z.boolean().optional(), errorRedirectUrl: z.string().url().optional(), loginRedirectUrl: z.string().url().optional(), }) .optional(), visibility: z .object({ autoSubmitToolbar: z.boolean().optional(), hide: z .object({ iOS: z.boolean().optional(), web: z.boolean().optional(), }) .optional(), appLinks: z .object({ mainLink: z.string().optional(), }) .optional(), }) .optional(), features: z.array(z.string()).optional(), settings: z .union([ SamlSettingsSchema, OidcSettingsSchema, BasicAuthSettingsSchema, BookmarkSettingsSchema, z.object({}), // For apps without specific settings ]) .optional(), credentials: AppCredentialsSchema.optional(), licensing: z .object({ seatCount: z.number().optional(), }) .optional(), }); // Update App Schema export const UpdateAppSchema = z.object({ appId: z.string(), name: z.string().optional(), label: z.string().optional(), status: AppStatusSchema.optional(), accessibility: z .object({ selfService: z.boolean().optional(), errorRedirectUrl: z.string().url().optional(), loginRedirectUrl: z.string().url().optional(), }) .optional(), visibility: z .object({ autoSubmitToolbar: z.boolean().optional(), hide: z .object({ iOS: z.boolean().optional(), web: z.boolean().optional(), }) .optional(), appLinks: z .object({ mainLink: z.string().optional(), }) .optional(), }) .optional(), features: z.array(z.string()).optional(), settings: z .union([ SamlSettingsSchema.partial(), OidcSettingsSchema.partial(), BasicAuthSettingsSchema.partial(), BookmarkSettingsSchema.partial(), z.object({}), ]) .optional(), credentials: AppCredentialsSchema.optional(), licensing: z .object({ seatCount: z.number().optional(), }) .optional(), }); // Delete App Schema export const DeleteAppSchema = z.object({ appId: z.string(), }); // App Lifecycle Schema export const AppLifecycleSchema = z.object({ appId: z.string(), }); // Assign User to App Schema export const AssignUserToAppSchema = z.object({ appId: z.string(), userId: z.string(), profile: z.record(z.unknown()).optional(), credentials: z .object({ userName: z.string().optional(), password: z .object({ value: z.string(), }) .optional(), }) .optional(), }); // Assign Group to App Schema export const AssignGroupToAppSchema = z.object({ appId: z.string(), groupId: z.string(), priority: z.number().optional(), profile: z.record(z.unknown()).optional(), }); // Remove User from App Schema export const RemoveUserFromAppSchema = z.object({ appId: z.string(), userId: z.string(), sendEmail: z.boolean().default(false), }); // Remove Group from App Schema export const RemoveGroupFromAppSchema = z.object({ appId: z.string(), groupId: z.string(), }); // List App Users Schema export const ListAppUsersSchema = z.object({ appId: z.string(), limit: z.number().min(1).max(500).default(50), after: z.string().optional(), q: z.string().optional(), filter: z.string().optional(), expand: z.string().optional(), }); // List App Groups Schema export const ListAppGroupsSchema = z.object({ appId: z.string(), limit: z.number().min(1).max(200).default(20), after: z.string().optional(), q: z.string().optional(), expand: z.string().optional(), }); // Update App User Schema export const UpdateAppUserSchema = z.object({ appId: z.string(), userId: z.string(), profile: z.record(z.unknown()).optional(), credentials: z .object({ userName: z.string().optional(), password: z .object({ value: z.string(), }) .optional(), }) .optional(), }); // Response Schemas export const AppResponseSchema = z.object({ id: z.string(), name: z.string(), label: z.string(), status: AppStatusSchema, lastUpdated: z.string(), created: z.string(), accessibility: z .object({ selfService: z.boolean().optional(), errorRedirectUrl: z.string().nullable().optional(), loginRedirectUrl: z.string().nullable().optional(), }) .optional(), visibility: z .object({ autoSubmitToolbar: z.boolean().optional(), hide: z .object({ iOS: z.boolean().optional(), web: z.boolean().optional(), }) .optional(), appLinks: z .object({ mainLink: z.string().optional(), }) .optional(), }) .optional(), features: z.array(z.string()).optional(), signOnMode: AppSignOnModeSchema, credentials: AppCredentialsSchema.optional(), settings: z.record(z.unknown()).optional(), _links: z.record(z.unknown()).optional(), _embedded: z.record(z.unknown()).optional(), }); export const AppUserResponseSchema = z.object({ id: z.string(), externalId: z.string().optional(), created: z.string(), lastUpdated: z.string(), scope: z.string(), status: z.string(), statusChanged: z.string().optional(), passwordChanged: z.string().optional(), syncState: z.string().optional(), profile: z.record(z.unknown()).optional(), credentials: z .object({ userName: z.string().optional(), }) .optional(), _links: z.record(z.unknown()).optional(), }); export const AppGroupResponseSchema = z.object({ id: z.string(), lastUpdated: z.string(), priority: z.number().optional(), profile: z.record(z.unknown()).optional(), _links: z.record(z.unknown()).optional(), _embedded: z.record(z.unknown()).optional(), }); //# sourceMappingURL=schemas.js.map