modules/Definitions/CrowdStrike.Entro.psm1

Set-StrictMode -Version Latest

function Register-CrowdStrikeEntroDefinitions {
    Import-Module (Join-Path (Split-Path $PSScriptRoot -Parent) 'IW.EntroCatalog.psm1') -Force -WarningAction SilentlyContinue

    Register-IntegrationWizardDefinition @{
        Id           = 'crowdstrike-entro'
        Platform     = 'CrowdStrike'
        Product      = 'Entro'
        CoreSwitch   = 'Entro'
        CliName      = 'falcon'
        Title        = 'Entro CrowdStrike integration'
        FolderName   = 'Entro CrowdStrike'
        AccessLevels = @()
        AdminRoles   = @('CrowdStrike Falcon Administrator (API Clients and Keys)')
        OutputsHelp  = 'Paste Environment nickname, Client ID, and Client Secret into the Entro admin console.'
        Inputs       = @(
            @{ Name = 'Environment'; Source = 'Supply'; Prompt = 'Environment nickname'; Purpose = 'Label in Entro'; Required = $true }
            @{ Name = 'ClientId'; Source = 'Supply'; Prompt = 'Falcon OAuth2 Client ID'; Purpose = 'Falcon API Client ID'; Required = $true }
            @{ Name = 'ClientSecret'; Source = 'Supply'; Prompt = 'Falcon OAuth2 Client Secret'; Purpose = 'Falcon API Client Secret'; Required = $false; Secret = $true }
            @{ Name = 'BaseUrl'; Source = 'Supply'; Prompt = 'Falcon Cloud API Base URL'; Purpose = 'Falcon Cloud region endpoint'; Required = $false; Default = 'https://api.crowdstrike.com' }
            @{ Name = 'OutputDirectory'; Source = 'Supply'; Prompt = 'Output directory'; Purpose = 'Wizard output directory'; Required = $false }
        )
        Steps        = {
            param($ctx)
            @(
                @{
                    Id    = 'entro-crowdstrike-client'
                    Title = 'Configure CrowdStrike Falcon API Client for Entro'
                    Kind  = 'Ensure'
                    Probe = {
                        param($c)
                        'Create'
                    }
                    Run   = {
                        param($c)
                        Write-Step 'Entro CrowdStrike Falcon Integration Setup'
                        Write-Info "In CrowdStrike Falcon Console -> Support and resources -> API clients and keys, create a client for Entro."
                        Write-Info "Base URL: $($c['BaseUrl'])"
                        Write-Info "Environment nickname: $($c['Environment'])"
                        Write-Info "Optional Capability: Deploy Entro Falcon RTR secrets scanner for endpoint non-human identity scanning."
                    }
                    BuildScript = {
                        param($c)
                        $baseUrl = if ($c['BaseUrl']) { $c['BaseUrl'] } else { 'https://api.crowdstrike.com' }
                        @"
# Entro CrowdStrike Falcon Integration Setup
Write-Host "Configuring Entro integration for CrowdStrike Falcon ($baseUrl)..." -ForegroundColor Cyan
Write-Host "Environment Nickname: $($c['Environment'])"
Write-Host "Client ID: $($c['ClientId'])"
Write-Host "Paste Client ID and Client Secret into Entro console -> Integrations -> CrowdStrike."
"@

                    }
                }
            )
        }
        OnRunComplete = {
            param($ctx)
            $baseUrl = if ($ctx['BaseUrl']) { $ctx['BaseUrl'] } else { 'https://api.crowdstrike.com' }
            Write-Host ''
            Write-Host 'Entro handoff' -ForegroundColor Cyan
            Write-Host " Environment: $($ctx['Environment'])"
            Write-Host " Base URL: $baseUrl"
            Write-Host " Client ID: $($ctx['ClientId'])"
            Write-Host ' Registration: paste API Client ID and Secret into Entro UI'
            Write-Host ' Optional: Deploy Entro Falcon RTR secrets scanner'
            Write-Host ''
        }
    }
}

Export-ModuleMember -Function Register-CrowdStrikeEntroDefinitions