import { Subscription, SubscriptionPolicies } from './subscriptions.js'; import type { CreatePolicyExemptionRequest, PolicyExemptionCommandSchemaVersion } from './regulatoryCompliance.js'; import type { AzureDelegatedAuthErrorCode, AzureDelegatedOAuthStatePhase, AzureDelegatedOnboardingStatus, AzureGuestAccessScanSchedulingMode, AzureGuestAccessStatus, AzureGuestAccessStatusReason, AzureCloudAccountAuthContext, CloudAccountAuthMode, CloudAccountTenantSyncSource, PublicCloudAccountDto, SubscriptionType } from '../accounts/accounts.js'; import type { CompanyLifecycle } from '../company/company.js'; export interface WorkflowTracingOptions { enabled: boolean; } export interface SubscriptionSyncRequest { tracing?: WorkflowTracingOptions; } export interface CloudAccountTenantSyncRequest { tracing?: WorkflowTracingOptions; } export interface ProcessPayload { subscriptionId?: string; tenantId?: string; authToken?: string; authClientId?: string; authClientSecret?: string; authTenantId?: string; companyId?: string; cloudAccountId?: string; clientId?: string; subscriptionType?: SubscriptionType; authMode?: CloudAccountAuthMode; customerTenantId?: string; authorityTenantId?: string; partnerTenantId?: string; principalClientId?: string; credentialReference?: string; authContext?: AzureCloudAccountAuthContext; tracing?: WorkflowTracingOptions; } export interface RequestMessage { entity: string; /** create, delete */ action: string; companyId: string; cloudAccountId: string; tenantId: string; clientId: string; authMode?: CloudAccountAuthMode; customerTenantId?: string; authorityTenantId?: string; partnerTenantId?: string; principalClientId?: string; credentialReference?: string; authContext?: AzureCloudAccountAuthContext; subscriptionId?: string; refreshComponents?: string[]; correlationId?: string; eventId?: string; tracing?: WorkflowTracingOptions; } type AzureSpSetupIdentifierOnlyRequestMessage = Pick; export interface AzureSpSetupExecutionRequestMessage extends AzureSpSetupIdentifierOnlyRequestMessage { schemaVersion: 1; entity: 'azure-sp-setup'; action: 'execute'; companyId: string; tenantId: string; cloudAccountId: string; clientId: string; setupId: string; executionId: string; dispatchSequence: number; correlationId: string; enqueuedAt: string; } export interface AzureSpSetupMaintenanceRequestMetadata { schemaVersion: 1; maintenanceKind: 'recover' | 'cleanup' | 'recover-and-cleanup'; cutoffUtc: string; maxItems: number; scheduledWindowUtc: string; batchNumber: number; maxBatches: number; } export interface AzureSpSetupMaintenanceRequestMessage extends AzureSpSetupIdentifierOnlyRequestMessage { entity: 'azure-sp-setup'; action: 'maintain'; companyId: '*'; cloudAccountId: '*'; tenantId: '*'; clientId: '*'; correlationId: string; metadata: AzureSpSetupMaintenanceRequestMetadata; } export interface CloudAccountsBillingReconciliationRequestMetadata { triggeredBy: 'billing-reconciliation-cron'; } export interface CloudAccountsBillingReconciliationRequestMessage extends RequestMessage { requestId: string; entity: 'cloudaccounts'; action: 'reconcile-billing'; companyId: '*'; cloudAccountId: '*'; tenantId: '*'; clientId: '*'; source: 'scheduled'; metadata: CloudAccountsBillingReconciliationRequestMetadata; } export type ActionExecutionSourceKind = 'manual' | 'schedule' | 'system'; export interface ActionExecutionSource { kind: ActionExecutionSourceKind; scheduleId?: string; scheduleRunId?: string; occurrenceId?: string; desiredOutcome?: string; } export interface ActionExecutionRequestMessage extends RequestMessage { entity: 'actions'; action: 'execute'; providerName?: 'azure'; providerScopeId?: string; actionDefinitionId: string; resourceIds: string[]; byUserId?: string; source?: ActionExecutionSource; } export interface CreatePolicyExemptionRequestMessage extends RequestMessage, CreatePolicyExemptionRequest { entity: 'governance'; action: 'create-policy-exemption'; schemaVersion: PolicyExemptionCommandSchemaVersion; providerName: 'azure'; subscriptionId: string; eventId: string; byUserId: string; } export interface CloudAccountTenantSyncRequestMessage extends RequestMessage { entity: 'cloudaccount' | 'cloudaccounts'; action: 'tenant-sync'; byUserId?: string; source: CloudAccountTenantSyncSource; correlationId?: string; runId?: string; } export interface SubscriptionMessage { authToken?: string; authClientId?: string; authClientSecret?: string; authTenantId?: string; subscription: Subscription; companyId: string; cloudAccountId?: string; tenantId?: string; clientId?: string; authMode?: CloudAccountAuthMode; customerTenantId?: string; authorityTenantId?: string; partnerTenantId?: string; principalClientId?: string; credentialReference?: string; authContext?: AzureCloudAccountAuthContext; /** Provide a list of components to refresh. Leave empty to refresh all components. */ refreshComponents?: string[]; sagaRunId?: string; eventId?: string; tracing?: WorkflowTracingOptions; metadata?: Record; } export interface BillingReconciliationWorkMetadata { schemaVersion: 1; trigger: 'scheduled'; policyVersion: string; /** Cloud-engine validates these values as unique eligible YYYY-MM months. */ requestedMonths: string[]; continuationCursor?: string | null; } export interface BillingReconciliationSubscriptionMessage extends SubscriptionMessage { requestId?: string; refreshComponents: ['billing']; metadata: Record & { billingReconciliation: BillingReconciliationWorkMetadata; }; } export interface AzureGdapQueueAuthContext extends Omit { authMode?: 'gdap'; cloudAccountId?: string; customerTenantId?: string; partnerTenantId?: string; principalClientId?: never; credentialReference?: never; } export interface AzureGdapSubscriptionMessage extends Omit { authMode: 'gdap'; cloudAccountId: string; tenantId: string; customerTenantId: string; partnerTenantId: string; authorityTenantId?: string; clientId?: never; principalClientId?: never; credentialReference?: never; authContext?: AzureGdapQueueAuthContext; } export type AzureGuestAccessAuthFlow = 'azurePowerShellDeviceCode'; export interface AzureGuestAccessDeviceCodeResponse { setupId: string; userCode: string; deviceCodeExpiresAt: string; verificationUri: string; verificationUriComplete?: string; message?: string; intervalSeconds?: number; status: AzureGuestAccessStatus; } export interface AzureGuestAccessStartRequest { displayName?: string; } export interface AzureGuestAccessTenantItem { tenantId: string; displayName?: string; domainName?: string; selected?: boolean; } export interface AzureGuestAccessSubscriptionItem { subscriptionId: string; displayName?: string; tenantId: string; state?: string; selectable: boolean; statusReason?: AzureGuestAccessStatusReason; } export interface AzureGuestAccessTenantSelectionRequest { tenantId: string; } export interface AzureGuestAccessConfirmSubscriptionsRequest { subscriptionIds: string[]; displayName?: string; } export interface AzureGuestAccessReviewChecklistWorkload { kind: 'reviewChecklist'; checklistId: string; subscriptionIds: string[]; } export type AzureGuestAccessManualScanWorkload = AzureGuestAccessReviewChecklistWorkload; export interface AzureGuestAccessManualScanRequest { refreshComponents?: string[]; workload?: AzureGuestAccessManualScanWorkload; } export interface AzureGuestAccessStatusResponse { setupId?: string; cloudAccountId?: string; tenantId?: string; status: AzureGuestAccessStatus; statusReason?: AzureGuestAccessStatusReason; authErrorCode?: AzureDelegatedAuthErrorCode; connectedUser?: AzureGuestAccessConnectedUser; cloudAccount?: PublicCloudAccountDto; tenants?: AzureGuestAccessTenantItem[]; subscriptions?: AzureGuestAccessSubscriptionItem[]; workload?: AzureGuestAccessManualScanWorkload; scanSchedulingMode: AzureGuestAccessScanSchedulingMode; guestAccessRunId?: string; guestAccessLastRunId?: string; guestAccessQueuedAt?: string; guestAccessScanStartedAt?: string; guestAccessScanCompletedAt?: string; guestAccessLastSuccessfulScanAt?: string; expiresAt?: string; reauthRequired?: boolean; } export interface AzureGuestAccessConnectedUser { homeAccountId?: string; username?: string; name?: string; objectId?: string; } export interface AzureGuestAccessTokenRelayPayload { authFlow: AzureGuestAccessAuthFlow; authorityHost: string; authorityTenantId: string; selectedTenantId?: string; clientId: string; scopes: string[]; tokenType: 'Bearer'; accessToken: string; accessTokenExpiresAt: string; refreshToken: string; connectedUser?: AzureGuestAccessConnectedUser; receivedAt: string; updatedAt: string; } export interface AzureGuestAccessSubscriptionMessageMetadata { guestAccessRun: true; scanSchedulingMode: AzureGuestAccessScanSchedulingMode; guestAccessSource: 'initial' | 'manual'; authFlow: AzureGuestAccessAuthFlow; } export interface AzureGuestAccessSubscriptionMessage extends Omit { authMode: 'delegatedUser'; cloudAccountId: string; tenantId: string; clientId: string; sagaRunId: string; metadata: AzureGuestAccessSubscriptionMessageMetadata; authToken?: never; authClientId?: never; authClientSecret?: never; authTenantId?: never; customerTenantId?: never; authorityTenantId?: never; partnerTenantId?: never; principalClientId?: never; credentialReference?: never; authContext?: never; } export interface SubscriptionResponse { displayName: string; id: string; state: string; subscriptionId: string; subscriptionPolicies: SubscriptionPolicies; tenantId: string; } export type AzureDelegatedCapabilityStatus = 'available' | 'missingPermission' | 'forbidden' | 'unknown'; export interface AzureDelegatedConnectionStartRequest { redirectAfter?: string; } export interface AzureDelegatedRedirectError { code: AzureDelegatedAuthErrorCode; message?: string; phase?: AzureDelegatedOAuthStatePhase; correlationId?: string; } export interface AzureDelegatedPortalRedirectStatus { phase: AzureDelegatedOAuthStatePhase; status: 'success' | 'error' | 'pending'; companyId?: string; cloudAccountId?: string; tenantId?: string; redirectAfter?: string; error?: AzureDelegatedRedirectError; } export interface AzureDelegatedTenantItem { tenantId: string; displayName?: string; label: string; isAlreadyConnected: boolean; connectedAuthMode?: CloudAccountAuthMode; } export interface AzureDelegatedTenantSelectionRequest { tenantId: string; redirectAfter?: string; } export interface AzureDelegatedCapabilityCheck { capability: string; isAvailable: boolean; status: AzureDelegatedCapabilityStatus; warningCode?: string; warningMessage?: string; } export interface AzureDelegatedSubscriptionItem { subscriptionId: string; displayName: string; tenantId: string; isVisible: boolean; isResourceReadable: boolean; isSelectable: boolean; warningCode?: string; warningMessage?: string; } export interface AzureDelegatedOnboardingResponse { status: AzureDelegatedOnboardingStatus; phase?: AzureDelegatedOAuthStatePhase; cloudAccount?: PublicCloudAccountDto; tenants?: AzureDelegatedTenantItem[]; selectedTenantId?: string; capabilities?: AzureDelegatedCapabilityCheck[]; subscriptions?: AzureDelegatedSubscriptionItem[]; setupExpiresAt?: Date | string; trialExpiresAt?: Date | string; reauthRequired?: boolean; lastAuthErrorCode?: AzureDelegatedAuthErrorCode; } export interface AzureDelegatedConfirmSubscriptionsRequest { subscriptionIds: string[]; redirectAfter?: string; } export interface AzureDelegatedConfirmSubscriptionsResponse { cloudAccount: PublicCloudAccountDto; subscriptions: AzureDelegatedSubscriptionItem[]; onboardingStatus: AzureDelegatedOnboardingStatus; } export interface AzureDelegatedReconnectRequest { redirectAfter?: string; } export interface AzureDelegatedReplaceWithServicePrincipalRequest { clientId: string; tenantId: string; secret: string; secretExpiresAt?: Date | string; writeClientId?: string; writeSecret?: string; writeSecretExpiresAt?: Date | string; } export interface AzureDelegatedReplaceWithServicePrincipalResponse { cloudAccount: PublicCloudAccountDto; } export interface AzureDelegatedTrialExtensionRequest { expiresAt: Date | string; reason?: string; } export interface AzureDelegatedTrialExtensionResponse { companyId: string; companyLifecycle?: CompanyLifecycle; azureDelegatedTrialExpiresAt: Date | string; } export {}; //# sourceMappingURL=payloads.d.ts.map