okta-mcp-server
Version:
Model Context Protocol (MCP) server for Okta API operations with support for bulk operations and caching
86 lines • 5.23 kB
TypeScript
/**
* Cached wrapper for OktaClient to improve performance
*/
import { OktaClient } from './okta-client.js';
import { IOktaClient, ApiResponse } from './okta-client-interface.js';
import { ICache } from '../infrastructure/cache/interface.js';
import type { OktaUser, OktaGroup, OktaApplication, OktaPolicy, OktaPolicyRule } from './types.js';
export interface CachedOktaClientOptions {
client: OktaClient;
cache: ICache;
defaultTtl?: number;
cacheKeyPrefix?: string;
}
export declare class CachedOktaClient implements IOktaClient {
private client;
private cache;
private defaultTtl;
private keyPrefix;
constructor(options: CachedOktaClientOptions);
/**
* Generate a cache key from method name and parameters
*/
private generateCacheKey;
/**
* Get tags for cache invalidation based on resource type
*/
private getTags;
/**
* Wrap a method with caching
*/
private withCache;
listUsers(params?: Parameters<IOktaClient['listUsers']>[0]): Promise<ApiResponse<OktaUser[]>>;
getUser(userIdOrLogin: string): Promise<OktaUser>;
createUser(userData: Parameters<OktaClient['createUser']>[0], queryParams?: Parameters<OktaClient['createUser']>[1]): Promise<OktaUser>;
updateUser(userId: string, userData: Parameters<OktaClient['updateUser']>[1]): Promise<OktaUser>;
deleteUser(userId: string): Promise<void>;
deactivateUser(userId: string, sendEmail?: boolean): Promise<void>;
getUserGroups(userId: string, params?: Parameters<IOktaClient['getUserGroups']>[1]): Promise<ApiResponse<OktaGroup[]>>;
listGroups(params?: Parameters<IOktaClient['listGroups']>[0]): Promise<ApiResponse<OktaGroup[]>>;
getGroup(groupId: string): Promise<OktaGroup>;
createGroup(groupData: Parameters<IOktaClient['createGroup']>[0]): Promise<OktaGroup>;
updateGroup(groupId: string, groupData: Parameters<IOktaClient['updateGroup']>[1]): Promise<OktaGroup>;
deleteGroup(groupId: string): Promise<void>;
listGroupMembers(groupId: string, params?: Parameters<IOktaClient['listGroupMembers']>[1]): Promise<ApiResponse<OktaUser[]>>;
addGroupMember(groupId: string, userId: string): Promise<void>;
removeGroupMember(groupId: string, userId: string): Promise<void>;
getLogs(params?: Parameters<IOktaClient['getLogs']>[0]): Promise<ApiResponse<unknown[]>>;
listApps(params?: Parameters<IOktaClient['listApps']>[0]): Promise<ApiResponse<OktaApplication[]>>;
getApp(appId: string, expand?: string): Promise<OktaApplication>;
createApp(appData: Parameters<IOktaClient['createApp']>[0]): Promise<OktaApplication>;
updateApp(appId: string, appData: Parameters<IOktaClient['updateApp']>[1]): Promise<OktaApplication>;
deleteApp(appId: string): Promise<void>;
activateApp(appId: string): Promise<void>;
deactivateApp(appId: string): Promise<void>;
assignUserToApp(appId: string, userId: string, assignmentData?: Parameters<IOktaClient['assignUserToApp']>[2]): Promise<unknown>;
assignGroupToApp(appId: string, groupId: string, assignmentData?: Parameters<IOktaClient['assignGroupToApp']>[2]): Promise<unknown>;
removeUserFromApp(appId: string, userId: string, sendEmail?: boolean): Promise<void>;
removeGroupFromApp(appId: string, groupId: string): Promise<void>;
listAppUsers(appId: string, params?: Parameters<IOktaClient['listAppUsers']>[1]): Promise<ApiResponse<unknown[]>>;
listAppGroups(appId: string, params?: Parameters<IOktaClient['listAppGroups']>[1]): Promise<ApiResponse<unknown[]>>;
updateAppUser(appId: string, userId: string, updateData: Parameters<IOktaClient['updateAppUser']>[2]): Promise<unknown>;
listPolicies(params?: Parameters<IOktaClient['listPolicies']>[0]): Promise<ApiResponse<OktaPolicy[]>>;
getPolicy(policyId: string, expand?: string): Promise<OktaPolicy>;
createPolicy(policyData: Parameters<IOktaClient['createPolicy']>[0]): Promise<OktaPolicy>;
updatePolicy(policyId: string, policyData: Parameters<IOktaClient['updatePolicy']>[1]): Promise<OktaPolicy>;
deletePolicy(policyId: string): Promise<void>;
activatePolicy(policyId: string): Promise<void>;
deactivatePolicy(policyId: string): Promise<void>;
listPolicyRules(policyId: string, params?: Parameters<IOktaClient['listPolicyRules']>[1]): Promise<ApiResponse<OktaPolicyRule[]>>;
getPolicyRule(policyId: string, ruleId: string): Promise<OktaPolicyRule>;
createPolicyRule(policyId: string, ruleData: Parameters<IOktaClient['createPolicyRule']>[1]): Promise<OktaPolicyRule>;
updatePolicyRule(policyId: string, ruleId: string, ruleData: Parameters<IOktaClient['updatePolicyRule']>[2]): Promise<OktaPolicyRule>;
deletePolicyRule(policyId: string, ruleId: string): Promise<void>;
activatePolicyRule(policyId: string, ruleId: string): Promise<void>;
deactivatePolicyRule(policyId: string, ruleId: string): Promise<void>;
close(): Promise<void>;
/**
* Clear all cached data
*/
clearCache(): Promise<void>;
/**
* Clear cache for a specific resource type
*/
clearCacheByType(resourceType: 'users' | 'groups' | 'apps' | 'policies'): Promise<void>;
}
//# sourceMappingURL=cached-okta-client.d.ts.map