Azure DevOps Service Hooks (Webhooks)
Version 7.2
Azure DevOps Service Hooks deliver event notifications for work item changes, build completions, pull request events, code pushes, and release deployments. Service hooks are configured in Azure DevOps settings and delivered via HTTPS POST to registered consumer endpoints.
Channels
onWorkItemCreatedonWorkItemUpdatedonBuildCompleteonGitPushonPullRequestCreatedonPullRequestMergedonReleaseDeploymentCompletedMessages
Servers
https://your-consumer.example.com/hooks/azure-devops
AsyncAPI Specification
asyncapi: 2.6.0
info:
title: Azure DevOps Service Hooks (Webhooks)
description: >-
Azure DevOps Service Hooks deliver event notifications for work item changes,
build completions, pull request events, code pushes, and release deployments.
Service hooks are configured in Azure DevOps settings and delivered via HTTPS POST
to registered consumer endpoints.
version: "7.2"
contact:
name: Microsoft Azure DevOps
url: https://learn.microsoft.com/en-us/azure/devops/service-hooks/
servers:
consumer:
url: https://your-consumer.example.com/hooks/azure-devops
protocol: https
description: Your registered HTTPS consumer endpoint for Azure DevOps service hooks
channels:
workitem.created:
description: Published when a work item is created in Azure Boards.
subscribe:
operationId: onWorkItemCreated
summary: Work item created
description: Receive notifications when a new work item is created.
tags:
- name: WorkItems
message:
$ref: '#/components/messages/WorkItemCreatedEvent'
workitem.updated:
description: Published when a work item is updated in Azure Boards.
subscribe:
operationId: onWorkItemUpdated
summary: Work item updated
description: Receive notifications when a work item field is changed.
tags:
- name: WorkItems
message:
$ref: '#/components/messages/WorkItemUpdatedEvent'
build.complete:
description: Published when a build pipeline run completes.
subscribe:
operationId: onBuildComplete
summary: Build completed
description: Receive notifications when a CI/CD pipeline build finishes.
tags:
- name: Builds
message:
$ref: '#/components/messages/BuildCompleteEvent'
git.push:
description: Published when code is pushed to a repository.
subscribe:
operationId: onGitPush
summary: Code pushed to repository
description: Receive notifications when commits are pushed to an Azure Repos Git repository.
tags:
- name: Git
message:
$ref: '#/components/messages/GitPushEvent'
git.pullrequest.created:
description: Published when a pull request is created.
subscribe:
operationId: onPullRequestCreated
summary: Pull request created
description: Receive notifications when a new pull request is opened.
tags:
- name: PullRequests
message:
$ref: '#/components/messages/PullRequestEvent'
git.pullrequest.merged:
description: Published when a pull request is merged.
subscribe:
operationId: onPullRequestMerged
summary: Pull request merged
description: Receive notifications when a pull request is completed and merged.
tags:
- name: PullRequests
message:
$ref: '#/components/messages/PullRequestEvent'
release.deployment.completed:
description: Published when a release deployment completes.
subscribe:
operationId: onReleaseDeploymentCompleted
summary: Release deployment completed
description: Receive notifications when a release pipeline stage deployment finishes.
tags:
- name: Releases
message:
$ref: '#/components/messages/ReleaseDeploymentEvent'
components:
messages:
WorkItemCreatedEvent:
name: WorkItemCreatedEvent
title: Work Item Created
contentType: application/json
payload:
$ref: '#/components/schemas/WorkItemEventPayload'
WorkItemUpdatedEvent:
name: WorkItemUpdatedEvent
title: Work Item Updated
contentType: application/json
payload:
$ref: '#/components/schemas/WorkItemUpdatedPayload'
BuildCompleteEvent:
name: BuildCompleteEvent
title: Build Complete
contentType: application/json
payload:
$ref: '#/components/schemas/BuildEventPayload'
GitPushEvent:
name: GitPushEvent
title: Git Push
contentType: application/json
payload:
$ref: '#/components/schemas/GitPushPayload'
PullRequestEvent:
name: PullRequestEvent
title: Pull Request Event
contentType: application/json
payload:
$ref: '#/components/schemas/PullRequestPayload'
ReleaseDeploymentEvent:
name: ReleaseDeploymentEvent
title: Release Deployment Completed
contentType: application/json
payload:
$ref: '#/components/schemas/ReleaseDeploymentPayload'
schemas:
ServiceHookEnvelope:
type: object
required: [id, eventType, publisherId, resource]
properties:
id:
type: string
description: Service hook event ID (UUID)
eventType:
type: string
publisherId:
type: string
message:
type: object
properties:
text:
type: string
html:
type: string
resourceVersion:
type: string
resourceContainers:
type: object
properties:
collection:
type: object
properties:
id:
type: string
account:
type: object
properties:
id:
type: string
project:
type: object
properties:
id:
type: string
createdDate:
type: string
format: date-time
WorkItemEventPayload:
allOf:
- $ref: '#/components/schemas/ServiceHookEnvelope'
- type: object
properties:
eventType:
type: string
enum: ["workitem.created", "workitem.updated", "workitem.deleted"]
resource:
type: object
properties:
id:
type: integer
rev:
type: integer
fields:
type: object
additionalProperties: true
url:
type: string
WorkItemUpdatedPayload:
allOf:
- $ref: '#/components/schemas/ServiceHookEnvelope'
- type: object
properties:
resource:
type: object
properties:
id:
type: integer
workItemId:
type: integer
revisedBy:
type: object
properties:
name:
type: string
revisedDate:
type: string
format: date-time
fields:
type: object
description: Changed fields with old and new values
additionalProperties:
type: object
properties:
oldValue:
description: Previous value
newValue:
description: New value
BuildEventPayload:
allOf:
- $ref: '#/components/schemas/ServiceHookEnvelope'
- type: object
properties:
resource:
type: object
properties:
id:
type: integer
buildNumber:
type: string
status:
type: string
enum: [succeeded, failed, canceled, partiallySucceeded]
result:
type: string
startTime:
type: string
format: date-time
finishTime:
type: string
format: date-time
definition:
type: object
properties:
id:
type: integer
name:
type: string
GitPushPayload:
allOf:
- $ref: '#/components/schemas/ServiceHookEnvelope'
- type: object
properties:
resource:
type: object
properties:
pushId:
type: integer
date:
type: string
format: date-time
pushedBy:
type: object
properties:
displayName:
type: string
uniqueName:
type: string
commits:
type: array
items:
type: object
properties:
commitId:
type: string
comment:
type: string
author:
type: object
properties:
name:
type: string
email:
type: string
repository:
type: object
properties:
id:
type: string
name:
type: string
refUpdates:
type: array
items:
type: object
properties:
name:
type: string
oldObjectId:
type: string
newObjectId:
type: string
PullRequestPayload:
allOf:
- $ref: '#/components/schemas/ServiceHookEnvelope'
- type: object
properties:
resource:
type: object
properties:
pullRequestId:
type: integer
title:
type: string
status:
type: string
enum: [active, abandoned, completed]
createdBy:
type: object
properties:
displayName:
type: string
sourceRefName:
type: string
targetRefName:
type: string
mergeStatus:
type: string
repository:
type: object
properties:
id:
type: string
name:
type: string
ReleaseDeploymentPayload:
allOf:
- $ref: '#/components/schemas/ServiceHookEnvelope'
- type: object
properties:
resource:
type: object
properties:
release:
type: object
properties:
id:
type: integer
name:
type: string
environment:
type: object
properties:
id:
type: integer
name:
type: string
status:
type: string
enum: [succeeded, failed, canceled, partiallySucceeded]
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/asyncapis/azure-devops-hooks-asyncapi"
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.