// types/graph/ServicePrincipal.ts /** Represents a service principal resource from Microsoft Graph */ export interface ServicePrincipal { "@odata.context"?: string; id: string; deletedDateTime: string | null; accountEnabled: boolean; alternativeNames: string[]; appDisplayName: string; appDescription: string | null; appId: string; applicationTemplateId: string | null; appOwnerOrganizationId: string; appRoleAssignmentRequired: boolean; createdDateTime: string; description: string | null; disabledByMicrosoftStatus: string | null; displayName: string; homepage: string | null; loginUrl: string | null; logoutUrl: string | null; notes?: string; notificationEmailAddresses: string[]; preferredSingleSignOnMode: string | null; preferredTokenSigningKeyThumbprint: string | null; replyUrls: string[]; servicePrincipalNames: string[]; servicePrincipalType: string; signInAudience: string; tags: string[]; tokenEncryptionKeyId: string | null; samlSingleSignOnSettings: unknown | null; addIns: Array<{ id: string; type: string; properties: Record[]; }>[]; appRoleIds: string[]; info: { logoUrl: string | null; marketingUrl: string | null; privacyStatementUrl: string | null; supportUrl: string | null; termsOfServiceUrl: string | null; }; keyCredentials: Array<{ customKeyIdentifier?: string; displayName?: string; endDateTime?: string; keyId: string; keyType: string; keyUsage: string; startDateTime?: string; value?: string; }>[]; oauth2PermissionScopeIds: string[]; passwordCredentials: Array<{ customKeyIdentifier?: string; displayName?: string; endDateTime?: string; keyId: string; secretText?: string; startDateTime?: string; type: string; }>[]; resourceSpecificApplicationPermissions: Array<{ adminConsentDescription: string; adminConsentDisplayName: string; id: string; isEnabled: boolean; type: string; userConsentDescription: string; userConsentDisplayName: string; value: string; }>[]; verifiedPublisher: { displayName: string | null; verifiedPublisherId: string | null; addedDateTime: string | null; }; } /** Defines role metadata under the appRoles array */ export interface AppRole { allowedMemberTypes: string[]; // e.g., ["User"] description: string; displayName: string; id: string; isEnabled: boolean; origin: string; value: string; } /** Describes a defined OAuth2 permission scope */ export interface OAuth2PermissionScope { adminConsentDescription: string; adminConsentDisplayName: string; id: string; isEnabled: boolean; type: string; userConsentDescription: string; userConsentDisplayName: string; value: string; }