import { ResourceProfileResponse, ResourceProfile } from './Resource'; import * as A from './Analytics'; export type DomainRole = 'superadmin' | 'admin' | 'standard' | 'restricted'; export type DomainResponse = { id: string; name: string; description: string; mfa_required: boolean; admin_profile_id: string; created_at: string; r: { admin_profile: ResourceProfileResponse; profiles: ResourceProfileResponse[]; }; is_multitimezone_enabled: boolean; is_sso_enabled: boolean; default_presentation_duration: number | null; }; export type Domain = { id: string; name: string; description: string; mfaRequired: boolean; adminProfileId: string; createdAt: string; r: { adminProfile: ResourceProfile; profiles: ResourceProfile[]; }; isMultiTimezoneEnabled: boolean; isSsoEnabled: boolean; defaultPresentationDuration: number | null; }; export type GetDomainRequest = undefined; export type GetDomainResponse = DomainResponse; export type UpdateDomainRequest = { name?: string; description?: string; mfa_required?: boolean; default_presentation_duration?: number | null; }; export type UpdateDomainResponse = DomainResponse; export type InviteDomainRequest = { email: string }; export type InviteDomainResponse = void; export type SetProfileDomainRoleRequest = { domain_role: DomainRole }; export type SetProfileDomainRoleResponse = ResourceProfileResponse; export interface EnterpriseUserResponse { id: string; email: string; name: string; domain_role: DomainRole; locations: A.AnalyticsLocation[]; } export interface EnterpriseUser { id?: string; email: string; name: string; domainRole: DomainRole; locations: A.AnalyticsLocation[]; } export interface EnterpriseLocation { id: string; name: string; } export type EnterpriseLocationResponse = EnterpriseLocation; export interface DomainUserResponse { id: string; email: string; name: string; domain_role: DomainRole; created_at: string; locations: EnterpriseLocationResponse[]; } export interface DomainUser { id: string; email: string; name: string; domainRole: DomainRole; createdAt: string; locations: EnterpriseLocation[]; } export type GetDomainUsersRequest = undefined; export type GetDomainUsersResponse = DomainUserResponse[]; export interface PendingDomainUserResponse { id: string; email: string; name: string; domain_role: DomainRole; last_send_at: string; locations: EnterpriseLocationResponse[]; } export interface PendingDomainUser { id: string; email: string; name: string; domainRole: DomainRole; lastSentAt: string; locations: EnterpriseLocation[]; } export type GetPendingDomainUsersRequest = undefined; export type GetPendingDomainUsersResponse = PendingDomainUserResponse[]; export type ValidateEmailRequest = InviteDomainRequest; export type ValidateEmailResponse = { email: string; name: string; error: string | null; }; export type InviteDomainUser = { email: string; name: string; domainRole: DomainRole; locationIds: string[]; }; export type InviteDomainUserRequest = { email: string; name: string; domain_role: DomainRole; location_ids: string[]; }; export type InviteDomainUserResponse = EnterpriseUserResponse; export type UpdateDomainInvite = { domainRole: DomainRole; locationIds: string[]; }; export type UpdateDomainInviteRequest = { domain_role: DomainRole; location_ids: string[]; }; export type UpdateDomainInviteResponse = PendingDomainUserResponse; export type ResendDomainInviteRequest = { invite_id: string }; export interface ResendDomainInviteResponse extends PendingDomainUserResponse { error: string | null; } export type CancelDomainInviteRequest = { invite_id: string }; export type CancelDomainInviteResponse = undefined; export type AcceptDomainInviteRequest = undefined; export type AcceptDomainInviteResponse = undefined; export type UpdateDomainUser = { name: string; domainRole: DomainRole; locationIds: string[]; }; export type UpdateDomainUserRequest = { name: string; domain_role: DomainRole; location_ids: string[]; }; export type UpdateDomainUserResponse = EnterpriseUserResponse;