How to: Service Hooks Mapping on Azure DevOps

Vinicius Moura
2 min readOct 6, 2021

--

This script and report list all Service Hooks (in all Team Projects) within the Azure DevOps organization

An original script is available on my GitHub repository. See below this script:

Let’s go understand each command used.

  1. PowerShell script will receive the following parameters:
  • $PAT = Personal Access token to connect on Azure DevOps;
  • $Organization = Organization URL to list all Service Hooks within Azure DevOps organization;
  • $Connstr = connection string to Azure SQL Database that stores the report information. To create this report, it’s necessary to create previously a Azure SQL Server and Database and run a script below:

2. Subscription List = uses this REST API to list all Service Hooks (in all Team Projects) within the Azure DevOps organization.

$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($PAT)")) }$UriServiceHooks = "https://dev.azure.com/$($Organization)/_apis/hooks/subscriptions?api-version=6.1-preview.1"$ServiceHooksResult = Invoke-RestMethod -Uri $UriServiceHooks -Method get -Headers $AzureDevOpsAuthenicationHeader Foreach ($serviceHook in $ServiceHooksResult.value)
{
Write-Host $serviceHook.eventDescription
}

3. Projects Get = uses this REST API to get specific Team Project within the Azure DevOps organization.

$UriGetProject = "https://dev.azure.com/$($Organization)/_apis/projects/$($serviceHook.publisherInputs.projectId)?api-version=6.1-preview.4"   $GetProjectResult = Invoke-RestMethod -Uri $UriGetProject -Method get -Headers $AzureDevOpsAuthenicationHeaderWrite-Host $GetProjectResult.name

4. After extract all Service Hooks, this information is stored in a table in Azure SQL.

5. After insert information into a table, I connected this database on Power BI:

  • Project Name (1) = Filter report using Project Name field;
  • Consumer (2) = Filter report using Consumer field (Slack, Teams, WebHooks, etc.);
  • Service Hooks Informations (2) = List all information about Service Hooks (Project Name, Consumer, Event Action, and Owner).

--

--