import { User } from '@axinom/mosaic-core'; import { ConfigStatusResponseCode, IdentityProvider, LogoutResponseCode, TokenResponseCode, } from './enums'; // Used by id-link to get new access token export interface TokenResponse { code: TokenResponseCode; message?: string; user?: User; } // Used by id-link to get logout status export interface LogoutResponse { code: LogoutResponseCode; message?: string; } interface IdpConfigBase { idProvider: IdentityProvider; idProviderId: string; enabled: boolean; customBrandingConfig: IdpCustomBrandingConfig; } export interface IdpCustomBrandingConfig { displayName: string | undefined; idpImageUrl: string | undefined; } export interface AxAuthIdpConfig extends IdpConfigBase { idProvider: IdentityProvider.AX_AUTH; clientId: string; } export interface GoogleIdpConfig extends IdpConfigBase { idProvider: IdentityProvider.GOOGLE; } export interface AzureIdpConfig extends IdpConfigBase { idProvider: IdentityProvider.AZURE_AD; } export interface AxinomIdpConfig extends IdpConfigBase { idProvider: IdentityProvider.AXINOM; } export interface CustomIdpConfig extends IdpConfigBase { idProvider: IdentityProvider.CUSTOM; } // Used by id-link to get tenant & environment status with idp configurations export interface ConfigStatusResponse { code: ConfigStatusResponseCode; tenantId: string; environmentId: string; enabledIdentityProviders: ( | AxAuthIdpConfig | GoogleIdpConfig | AzureIdpConfig | AxinomIdpConfig | CustomIdpConfig )[]; } // Used by Host Application to set id-service configuration export interface IdentityServiceConfig { idServiceAuthBaseUrl: string; tenantId: string; environmentId: string; } // Generic token result type used as return value services account tokens and user tokens export interface TokenResult { accessToken: string; expiresInSeconds: number; tokenType: string; } export const ManagedServiceId = { ID_SERVICE: 'ax-id-service', MICRO_FRONTEND_SERVICE: 'ax-micro-frontend-service', PORTAL_SERVICE: 'ax-portal-service', AXAUTH_SERVICE: 'ax-auth-service', IMAGE_SERVICE: 'ax-image-service', VIDEO_SERVICE: 'ax-video-service', USER_SERVICE: 'ax-user-service', PERSONALIZATION_SERVICE: 'ax-personalization-service', HOSTING_SERVICE: 'ax-hosting-service', LOCALIZATION_SERVICE: 'ax-localization-service', KEY_SERVICE: 'ax-key-service', ENTITLEMENT_SERVICE: 'ax-entitlement-service', DRM_SERVICE: 'ax-drm-service', } as const; export type ManagedServiceId = (typeof ManagedServiceId)[keyof typeof ManagedServiceId];