UNPKG

okta-mcp-server

Version:

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

187 lines 6.1 kB
import { z } from 'zod'; // Bulk Create Users Schemas export const BulkCreateUsersSchema = z.object({ format: z.enum(['json', 'csv']), data: z.string(), options: z .object({ batchSize: z.number().min(1).max(50).default(10).optional(), activate: z.boolean().default(true).optional(), dryRun: z.boolean().default(false).optional(), continueOnError: z.boolean().default(true).optional(), csvMapping: z .object({ email: z.string().optional(), firstName: z.string().optional(), lastName: z.string().optional(), login: z.string().optional(), mobilePhone: z.string().optional(), department: z.string().optional(), title: z.string().optional(), manager: z.string().optional(), customAttributes: z.record(z.string()).optional(), }) .optional(), }) .optional(), }); // Bulk Update Users Schemas export const BulkUpdateUsersSchema = z.object({ updateMode: z.enum(['filter', 'list', 'csv']), filter: z.string().optional(), userIds: z.array(z.string()).optional(), csvData: z.string().optional(), updates: z .object({ profile: z.record(z.unknown()).optional(), credentials: z.record(z.unknown()).optional(), }) .optional(), options: z .object({ batchSize: z.number().min(1).max(50).default(10).optional(), dryRun: z.boolean().default(false).optional(), continueOnError: z.boolean().default(true).optional(), csvMapping: z .object({ identifier: z.string().optional(), identifierType: z.enum(['email', 'id', 'login']).optional(), fields: z.record(z.string()).optional(), }) .optional(), }) .optional(), }); // Bulk Delete Users Schemas export const BulkDeleteUsersSchema = z.object({ selectionMode: z.enum(['filter', 'list', 'csv']), filter: z.string().optional(), userIds: z.array(z.string()).optional(), csvData: z.string().optional(), action: z.enum(['deactivate', 'delete']).default('deactivate'), options: z .object({ batchSize: z.number().min(1).max(50).default(10).optional(), dryRun: z.boolean().default(true).optional(), requireConfirmation: z.boolean().default(true).optional(), sendEmail: z.boolean().default(false).optional(), csvMapping: z .object({ identifier: z.string().optional(), identifierType: z.enum(['email', 'id', 'login']).optional(), }) .optional(), }) .optional(), }); // Export Users Schema export const ExportUsersSchema = z.object({ format: z.enum(['csv', 'json']), filter: z.string().optional(), search: z.string().optional(), fields: z .array(z.string()) .default([ 'id', 'status', 'created', 'activated', 'lastLogin', 'profile.email', 'profile.login', 'profile.firstName', 'profile.lastName', 'profile.mobilePhone', 'profile.department', 'profile.title', 'profile.manager', ]) .optional(), options: z .object({ includeGroups: z.boolean().default(false).optional(), includeApps: z.boolean().default(false).optional(), limit: z.number().min(0).default(0).optional(), filename: z.string().optional(), }) .optional(), }); // Generate Import Template Schema export const GenerateImportTemplateSchema = z.object({ format: z.enum(['csv', 'json']), includeOptionalFields: z.boolean().default(false).optional(), includeCustomAttributes: z.array(z.string()).optional(), sampleRows: z.number().min(0).max(10).default(3).optional(), }); // Get Bulk Operation Status Schema export const GetBulkOperationStatusSchema = z.object({ operationId: z.string(), }); // Bulk Operation Progress Schema export const BulkOperationProgressSchema = z.object({ operationId: z.string(), type: z.enum(['create', 'update', 'delete', 'export']), status: z.enum(['pending', 'running', 'completed', 'failed', 'cancelled']), total: z.number(), processed: z.number(), succeeded: z.number(), failed: z.number(), startTime: z.string(), endTime: z.string().optional(), errors: z .array(z.object({ index: z.number(), identifier: z.string().optional(), error: z.string(), details: z.unknown().optional(), })) .optional(), results: z.array(z.unknown()).optional(), }); // CSV User Input Schema export const CSVUserInputSchema = z .object({ email: z.string().email(), firstName: z.string().optional(), lastName: z.string().optional(), login: z.string().optional(), mobilePhone: z.string().optional(), department: z.string().optional(), title: z.string().optional(), manager: z.string().optional(), // Allow additional properties for custom attributes }) .passthrough(); // JSON User Input Schema export const JSONUserInputSchema = z.object({ profile: z .object({ email: z.string().email(), login: z.string().optional(), firstName: z.string().optional(), lastName: z.string().optional(), mobilePhone: z.string().optional(), secondEmail: z.string().email().optional(), department: z.string().optional(), title: z.string().optional(), manager: z.string().optional(), }) .passthrough(), credentials: z .object({ password: z .object({ value: z.string().min(8).optional(), }) .optional(), recovery_question: z .object({ question: z.string().optional(), answer: z.string().optional(), }) .optional(), }) .optional(), groupIds: z.array(z.string()).optional(), }); //# sourceMappingURL=schemas.js.map