Kritical.UTCM.psd1

@{
    RootModule        = 'Kritical.UTCM.psm1'
    ModuleVersion     = '0.1.0'
    GUID              = 'a8d3f2e1-7c5b-4d9a-8e6f-1b2c3d4e5f60'
    Author            = 'Joshua Finley'
    CompanyName       = 'Kritical Pty Ltd'
    Copyright         = '(c) 2026 Kritical Pty Ltd. All rights reserved.'
    Description       = 'Kritical Tenant Configuration Management (UTCM) toolkit for Microsoft Graph. Wraps the official Microsoft UTCM APIs (Defender / Entra / Exchange / Intune / Purview / Teams) introduced public-preview 2026-01-27 as the declarative-config successor to Microsoft365DSC. Provides: UTCM service-principal provisioning (AppId 03b07b79-c5bc-4b5e-9bfa-13acf4a99998 + companion M365 Admin Services 6b91db1b-f05b-405a-a0b2-e3f60b28d645), permission-grant orchestration, configuration snapshot + drift-monitor APIs, M365DSC-to-TCM migration helpers. NO hardcoded tenant / user / domain values — every input is parameterised with operator-overridable defaults. Sister of Krit.OpenApi (code-gen) + Kritical.PS.OmniFramework (foundation). Embedded by Kritical Lens via subcommand. Per-consumer publishables: Kritical.Chokidar.UTCM / Kritical.Customer.<X>.UTCM.'
    PowerShellVersion = '5.1'
    CompatiblePSEditions = @('Desktop','Core')

    FunctionsToExport = @(
        'Initialize-KriticalUtcmTenant'
        'Initialize-KriticalUtcmServicePrincipal'
        'Grant-KriticalUtcmGraphPermission'
        'Get-KriticalUtcmServicePrincipalState'
        'Connect-KriticalUtcm'
        'New-KriticalUtcmSnapshot'
        'Get-KriticalUtcmSnapshot'
        'Export-KriticalUtcmSnapshotToFile'
        'New-KriticalUtcmMonitor'
        'Get-KriticalUtcmMonitor'
        'Get-KriticalUtcmDriftReport'
        'Invoke-KriticalUtcmFromM365DscMigration'
        'Write-KriticalUtcmBanner'
        'Get-KriticalUtcmBanner'
    )
    CmdletsToExport   = @()
    VariablesToExport = @()
    AliasesToExport   = @()

    PrivateData = @{
        PSData = @{
            Tags         = @('Microsoft365','Graph','UTCM','TenantConfig','M365DSC','UTCM','PowerShell','Kritical','Chokidar','Compliance')
            LicenseUri   = 'https://kritical.net/legal/license'
            ProjectUri   = 'https://kritical.net'
            IconUri      = 'https://kritical.net/assets/horizontal_logo.png'
            ReleaseNotes = @'
0.1.0 — Initial scaffold (wave .1509 2026-07-01).
  * Module skeleton + standard Public/Private/Assets/docs/tests layout.
  * 14 Public functions covering: tenant SP provisioning, permission grants,
    Graph connect with UTCM-aware scope expansion, snapshot lifecycle, monitor
    lifecycle, drift reporting, M365DSC->UTCM migration helper, brand banner.
  * Idempotent SP provisioning via Get-MgServicePrincipal probe before create.
  * Sanitised defaults — TenantId resolves from Get-MgContext, never hardcoded.
  * Joshua Finley, Kritical Pty Ltd.
'@

            ExternalModuleDependencies = @(
                'Kritical.PS.OmniFramework'
                'Microsoft.Graph.Authentication'
                'Microsoft.Graph.Applications'
            )
        }
        Kritical = @{
            UtcmServicePrincipalAppId     = '03b07b79-c5bc-4b5e-9bfa-13acf4a99998'
            M365AdminServicesAppId        = '6b91db1b-f05b-405a-a0b2-e3f60b28d645'
            MsGraphAppId                  = '00000003-0000-0000-c000-000000000000'
            CanonicalBrandBannerPaths     = @(
                'C:\Users\joshl\OneDrive - Kritical Pty Ltd\Kritical-Branding\public\KriticalLogo.txt'
                'C:\Users\joshl\OneDrive - Kritical Pty Ltd\Github-SecretsOutsideOfGitRepos\KriticalLogo.txt'
            )
            BundledBrandBannerRelPath     = 'Assets/kritical-logo.txt'
            UtcmDocsOverview               = 'https://learn.microsoft.com/en-us/graph/unified-tenant-configuration-management-concept-overview'
            UtcmDocsAuthSetup              = 'https://learn.microsoft.com/en-us/graph/utcm-authentication-setup'
            UtcmDocsApiReference           = 'https://learn.microsoft.com/en-us/graph/api/resources/unified-tenant-configuration-management-api-overview'
            M365DscTransitionUrl          = 'https://microsoft365dsc.com/blog/2026/utcm-transition/utcm-transition/index.html'
            M365DscToUtcmConverter         = 'https://github.com/Microsoft/M365DSC-to-TCM/'
            CompanionLensBridgeRepo       = 'KRTPax8ToShopifyConnector'
            CompanionLensBridgePath       = 'scripts/tools/Lens-Tcm-Bridge-1509.mjs'
        }
    }
}