Azure DevOps Build API
API for managing build definitions, queuing builds, and accessing build results and logs. Supports the full lifecycle of continuous integration builds in Azure DevOps.
API for managing build definitions, queuing builds, and accessing build results and logs. Supports the full lifecycle of continuous integration builds in Azure DevOps.
openapi: 3.1.0
info:
title: Azure DevOps Builds API
description: >
REST API for managing build definitions (pipelines), queuing builds, monitoring
build status, accessing build logs, timelines, and artifacts. Supports the full
lifecycle of continuous integration builds in Azure DevOps.
version: '7.1'
contact:
name: Microsoft Azure DevOps
url: https://learn.microsoft.com/en-us/rest/api/azure/devops/build/
license:
name: MIT
url: https://opensource.org/licenses/MIT
servers:
- url: https://dev.azure.com/{organization}/{project}/_apis
description: Azure DevOps Build API
variables:
organization:
description: Azure DevOps organization name or ID
default: myorganization
project:
description: Azure DevOps project name or ID
default: myproject
security:
- bearerAuth: []
- basicAuth: []
tags:
- name: Build Artifacts
description: Operations for accessing build artifacts
- name: Build Definitions
description: Operations for managing build pipeline definitions
- name: Build Logs
description: Operations for accessing build logs and timelines
- name: Builds
description: Operations for managing and queuing builds
paths:
/build/builds:
get:
operationId: builds_list
summary: Azure DevOps List builds
description: >
Returns a list of builds for the project. Supports filtering by definition,
build number, status, result, and branch. Results can be paginated using
continuationToken.
tags:
- Builds
parameters:
- $ref: '#/components/parameters/ApiVersion'
- name: definitions
in: query
required: false
description: Comma-separated list of definition IDs to filter builds
schema:
type: string
- name: buildNumber
in: query
required: false
description: Filter builds by build number
schema:
type: string
- name: statusFilter
in: query
required: false
description: Filter builds by status
schema:
type: string
enum: [none, inProgress, completed, cancelling, postponed, notStarted, all]
- name: resultFilter
in: query
required: false
description: Filter builds by result
schema:
type: string
enum: [none, succeeded, partiallySucceeded, failed, canceled]
- name: $top
in: query
required: false
description: Maximum number of builds to return
schema:
type: integer
maximum: 5000
- name: continuationToken
in: query
required: false
description: Continuation token for paginated results
schema:
type: string
- name: branchName
in: query
required: false
description: Filter builds by branch name
schema:
type: string
- name: reasonFilter
in: query
required: false
description: Filter builds by trigger reason
schema:
type: string
enum: [none, manual, individualCI, batchedCI, schedule, userCreated, validateShelveset, checkInShelveset, pullRequest, buildCompletion, resourceTrigger, triggered, all]
- name: requestedFor
in: query
required: false
description: Filter builds requested by a specific user (email or descriptor)
schema:
type: string
responses:
'200':
description: List of builds returned successfully
headers:
x-ms-continuationtoken:
description: Continuation token for paging through results
schema:
type: string
content:
application/json:
schema:
type: object
properties:
count:
type: integer
description: Number of builds in this response
value:
type: array
items:
$ref: '#/components/schemas/Build'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
post:
operationId: builds_queue
summary: Azure DevOps Queue a new build
description: >
Queues a new build by specifying the build definition and optional parameters
such as source branch, build parameters, and demands. The build will be
scheduled and executed based on agent availability.
tags:
- Builds
parameters:
- $ref: '#/components/parameters/ApiVersion'
- name: ignoreWarnings
in: query
required: false
description: Ignore warnings when queuing the build
schema:
type: boolean
- name: checkInTicket
in: query
required: false
description: Check-in ticket for gated check-in builds
schema:
type: string
requestBody:
required: true
description: Build queue request with definition and optional overrides
content:
application/json:
schema:
$ref: '#/components/schemas/BuildQueueRequest'
example:
definition:
id: 5
sourceBranch: 'refs/heads/main'
parameters: '{"system.debug":"false"}'
responses:
'200':
description: Build queued successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Build'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/build/builds/{buildId}:
get:
operationId: builds_get
summary: Azure DevOps Get a build
description: >
Returns detailed information about a specific build, including its status,
result, timing, source information, and links to logs and artifacts.
tags:
- Builds
parameters:
- $ref: '#/components/parameters/ApiVersion'
- name: buildId
in: path
required: true
description: Numeric ID of the build
schema:
type: integer
responses:
'200':
description: Build returned successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Build'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: builds_delete
summary: Azure DevOps Delete a build
description: >
Deletes a build record and its associated data, including logs and artifacts.
This operation cannot be undone. The build must not be in progress to be deleted.
tags:
- Builds
parameters:
- $ref: '#/components/parameters/ApiVersion'
- name: buildId
in: path
required: true
description: Numeric ID of the build to delete
schema:
type: integer
responses:
'204':
description: Build deleted successfully
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
/build/builds/{buildId}/logs:
get:
operationId: builds_getLogs
summary: Azure DevOps Get build logs
description: >
Returns the list of log entries for a build. Each log entry corresponds to
a step or phase in the build pipeline. Use the log ID to retrieve the
content of a specific log.
tags:
- Build Logs
parameters:
- $ref: '#/components/parameters/ApiVersion'
- name: buildId
in: path
required: true
description: Numeric ID of the build
schema:
type: integer
responses:
'200':
description: Build logs returned successfully
content:
application/json:
schema:
type: object
properties:
count:
type: integer
value:
type: array
items:
$ref: '#/components/schemas/BuildLog'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
/build/builds/{buildId}/timeline:
get:
operationId: builds_getTimeline
summary: Azure DevOps Get build timeline
description: >
Returns the detailed timeline for a build, showing all phases, jobs, tasks,
and their individual statuses, start times, and durations. Useful for
understanding which steps in the pipeline passed or failed.
tags:
- Build Logs
parameters:
- $ref: '#/components/parameters/ApiVersion'
- name: buildId
in: path
required: true
description: Numeric ID of the build
schema:
type: integer
responses:
'200':
description: Build timeline returned successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Timeline'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
/build/builds/{buildId}/artifacts:
get:
operationId: builds_listArtifacts
summary: Azure DevOps List build artifacts
description: >
Returns a list of artifacts published by a specific build. Artifacts can
be downloaded individually and include their name, type, and download URL.
tags:
- Build Artifacts
parameters:
- $ref: '#/components/parameters/ApiVersion'
- name: buildId
in: path
required: true
description: Numeric ID of the build
schema:
type: integer
- name: artifactName
in: query
required: false
description: Filter by a specific artifact name
schema:
type: string
responses:
'200':
description: Build artifacts returned successfully
content:
application/json:
schema:
type: object
properties:
count:
type: integer
value:
type: array
items:
$ref: '#/components/schemas/BuildArtifact'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
/build/definitions:
get:
operationId: definitions_list
summary: Azure DevOps List build definitions
description: >
Returns a list of build definitions (pipelines) in the project. Supports
filtering by name and path, and returns summary information for each definition.
tags:
- Build Definitions
parameters:
- $ref: '#/components/parameters/ApiVersion'
- name: name
in: query
required: false
description: Filter definitions by name (supports wildcards with *)
schema:
type: string
- name: path
in: query
required: false
description: Filter definitions by folder path
schema:
type: string
- name: builtAfter
in: query
required: false
description: Return definitions that were built after this date
schema:
type: string
format: date-time
- name: $top
in: query
required: false
description: Maximum number of definitions to return
schema:
type: integer
- name: continuationToken
in: query
required: false
description: Continuation token for paginated results
schema:
type: string
responses:
'200':
description: List of build definitions returned successfully
content:
application/json:
schema:
type: object
properties:
count:
type: integer
value:
type: array
items:
$ref: '#/components/schemas/BuildDefinition'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
post:
operationId: definitions_create
summary: Azure DevOps Create a build definition
description: >
Creates a new build definition (pipeline) in the project. The definition
specifies the build steps, triggers, variables, and agent requirements.
tags:
- Build Definitions
parameters:
- $ref: '#/components/parameters/ApiVersion'
- name: definitionToCloneId
in: query
required: false
description: ID of an existing definition to clone
schema:
type: integer
- name: definitionToCloneRevision
in: query
required: false
description: Revision number of the definition to clone
schema:
type: integer
requestBody:
required: true
description: Build definition to create
content:
application/json:
schema:
$ref: '#/components/schemas/BuildDefinitionCreateRequest'
responses:
'200':
description: Build definition created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/BuildDefinition'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/build/definitions/{definitionId}:
get:
operationId: definitions_get
summary: Azure DevOps Get a build definition
description: >
Returns detailed information about a specific build definition, including
all steps, triggers, variables, and configuration. You can also request
a specific revision of the definition.
tags:
- Build Definitions
parameters:
- $ref: '#/components/parameters/ApiVersion'
- name: definitionId
in: path
required: true
description: Numeric ID of the build definition
schema:
type: integer
- name: revision
in: query
required: false
description: Specific revision number to retrieve
schema:
type: integer
- name: minMetricsTime
in: query
required: false
description: Minimum date for including build metrics
schema:
type: string
format: date-time
responses:
'200':
description: Build definition returned successfully
content:
application/json:
schema:
$ref: '#/components/schemas/BuildDefinition'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: definitions_update
summary: Azure DevOps Update a build definition
description: >
Replaces an existing build definition with the provided definition. The
revision number in the body must match the current revision to prevent
concurrent modification conflicts.
tags:
- Build Definitions
parameters:
- $ref: '#/components/parameters/ApiVersion'
- name: definitionId
in: path
required: true
description: Numeric ID of the build definition to update
schema:
type: integer
- name: secretsSourceDefinitionId
in: query
required: false
description: ID of the definition to clone secrets from
schema:
type: integer
- name: secretsSourceDefinitionRevision
in: query
required: false
description: Revision number to clone secrets from
schema:
type: integer
requestBody:
required: true
description: Updated build definition
content:
application/json:
schema:
$ref: '#/components/schemas/BuildDefinition'
responses:
'200':
description: Build definition updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/BuildDefinition'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: definitions_delete
summary: Azure DevOps Delete a build definition
description: >
Deletes a build definition. All associated builds must be deleted first,
or you must specify deleteBuilds=true to cascade delete all associated builds.
tags:
- Build Definitions
parameters:
- $ref: '#/components/parameters/ApiVersion'
- name: definitionId
in: path
required: true
description: Numeric ID of the build definition to delete
schema:
type: integer
responses:
'204':
description: Build definition deleted successfully
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: Azure AD OAuth 2.0 bearer token
basicAuth:
type: http
scheme: basic
description: Basic authentication using a Personal Access Token (PAT). Use any string as the username and the PAT as the password, then base64-encode the result.
parameters:
ApiVersion:
name: api-version
in: query
required: true
description: Azure DevOps REST API version. Use 7.1 for the latest stable version.
schema:
type: string
default: '7.1'
enum: ['7.1', '7.0', '6.0']
responses:
BadRequest:
description: Bad request - invalid parameters or request body
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
Unauthorized:
description: Unauthorized - missing or invalid authentication credentials
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
Forbidden:
description: Forbidden - insufficient permissions to perform this operation
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
NotFound:
description: Not found - the requested resource does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
schemas:
Build:
type: object
description: An Azure DevOps build instance
properties:
id:
type: integer
description: Unique numeric identifier of the build
example: 1234
buildNumber:
type: string
description: The build number assigned at queue time
example: '20240315.1'
buildNumberRevision:
type: integer
description: Revision of the build number if duplicates exist
status:
type: string
description: Current status of the build
enum: [none, inProgress, completed, cancelling, postponed, notStarted, all]
example: 'completed'
result:
type: string
description: Final result of a completed build
enum: [none, succeeded, partiallySucceeded, failed, canceled]
example: 'succeeded'
queueTime:
type: string
format: date-time
description: Date and time the build was queued
startTime:
type: string
format: date-time
description: Date and time the build started executing
finishTime:
type: string
format: date-time
description: Date and time the build finished
url:
type: string
format: uri
description: URL to access this build via the REST API
definition:
$ref: '#/components/schemas/BuildDefinitionReference'
buildNumberRevisions:
type: integer
project:
$ref: '#/components/schemas/TeamProjectReference'
sourceBranch:
type: string
description: Branch that triggered the build (e.g., refs/heads/main)
example: 'refs/heads/main'
sourceVersion:
type: string
description: Commit ID or changeset number used for the build
example: 'a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2'
requestedBy:
$ref: '#/components/schemas/IdentityRef'
requestedFor:
$ref: '#/components/schemas/IdentityRef'
reason:
type: string
description: Reason the build was triggered
enum: [none, manual, individualCI, batchedCI, schedule, userCreated, validateShelveset, checkInShelveset, pullRequest, buildCompletion, resourceTrigger, triggered, all]
priority:
type: string
description: Build queue priority
enum: [low, belowNormal, normal, aboveNormal, high]
repository:
$ref: '#/components/schemas/BuildRepository'
logs:
type: object
description: Reference to the build logs container
properties:
id:
type: integer
type:
type: string
url:
type: string
format: uri
retainedByRelease:
type: boolean
description: Whether this build is retained by a release
triggeredByBuild:
type: object
nullable: true
description: The build that triggered this build (for completion triggers)
properties:
id:
type: integer
buildNumber:
type: string
url:
type: string
format: uri
definition:
$ref: '#/components/schemas/BuildDefinitionReference'
project:
$ref: '#/components/schemas/TeamProjectReference'
BuildQueueRequest:
type: object
description: Request to queue a new build
required:
- definition
properties:
definition:
type: object
required:
- id
properties:
id:
type: integer
description: ID of the build definition to queue
sourceBranch:
type: string
description: Override the source branch for this build
example: 'refs/heads/feature/my-feature'
sourceVersion:
type: string
description: Override the source version (commit ID) for this build
parameters:
type: string
description: JSON-serialized key-value pairs of build parameters to override
example: '{"system.debug":"false","BuildConfiguration":"Release"}'
demands:
type: array
description: Agent demands for this build
items:
type: string
priority:
type: string
description: Queue priority for this build
enum: [low, belowNormal, normal, aboveNormal, high]
queue:
type: object
description: Agent queue override
properties:
id:
type: integer
BuildDefinition:
type: object
description: A build pipeline definition in Azure DevOps
properties:
id:
type: integer
description: Unique numeric identifier of the definition
example: 5
name:
type: string
description: Display name of the build definition
example: 'CI-Pipeline'
path:
type: string
description: Folder path for organizing definitions
example: '\MyFolder'
type:
type: string
description: Type of build definition
enum: [xaml, build]
revision:
type: integer
description: Current revision number of the definition
quality:
type: string
description: Quality of the definition
enum: [definition, draft]
authoredBy:
$ref: '#/components/schemas/IdentityRef'
queue:
type: object
description: Default agent queue for this definition
properties:
id:
type: integer
name:
type: string
pool:
type: object
properties:
id:
type: integer
name:
type: string
isHosted:
type: boolean
project:
$ref: '#/components/schemas/TeamProjectReference'
url:
type: string
format: uri
uri:
type: string
createdDate:
type: string
format: date-time
queueStatus:
type: string
description: Whether new builds can be queued against this definition
enum: [enabled, paused, disabled]
variables:
type: object
description: Map of variable names to variable definitions
additionalProperties:
type: object
properties:
value:
type: string
allowOverride:
type: boolean
isSecret:
type: boolean
triggers:
type: array
description: Triggers that automatically start this build
items:
type: object
properties:
triggerType:
type: string
enum: [none, continuousIntegration, batchedContinuousIntegration, schedule, gatedCheckIn, buildCompletion, pullRequest]
repository:
$ref: '#/components/schemas/BuildRepository'
process:
type: object
description: Build process definition (YAML or designer)
properties:
yamlFilename:
type: string
description: Path to the YAML pipeline file
type:
type: integer
description: '1 = designer, 2 = YAML'
BuildDefinitionCreateRequest:
type: object
description: Request to create a new build definition
required:
- name
- repository
- process
- queue
properties:
name:
type: string
description: Display name of the build definition
path:
type: string
description: Folder path for the definition
default: '\'
type:
type: string
enum: [xaml, build]
default: 'build'
repository:
$ref: '#/components/schemas/BuildRepository'
process:
type: object
description: Build process configuration
properties:
yamlFilename:
type: string
type:
type: integer
queue:
type: object
properties:
id:
type: integer
variables:
type: object
additionalProperties:
type: object
properties:
value:
type: string
isSecret:
type: boolean
triggers:
type: array
items:
type: object
BuildDefinitionReference:
type: object
description: Reference to a build definition (minimal representation)
properties:
id:
type: integer
description: Definition ID
name:
type: string
description: Definition name
path:
type: string
description: Folder path of the definition
url:
type: string
format: uri
project:
$ref: '#/components/schemas/TeamProjectReference'
BuildLog:
type: object
description: Metadata about a single build log
properties:
id:
type: integer
description: Log entry ID
type:
type: string
description: Storage type of the log
url:
type: string
format: uri
description: URL to retrieve the log content
createdOn:
type: string
format: date-time
lastChangedOn:
type: string
format: date-time
lineCount:
type: integer
description: Number of log lines
BuildArtifact:
type: object
description: An artifact published by a build
properties:
id:
type: integer
description: Artifact ID
name:
type: string
description: Name of the artifact (e.g., 'drop', 'packages')
example: 'drop'
resource:
type: object
description: Resource details for downloading the artifact
properties:
type:
type: string
description: Type of artifact storage (e.g., Container, FilePath, VersionControl)
url:
type: string
format: uri
description: URL to download the artifact
downloadUrl:
type: string
format: uri
description: Direct download URL
properties:
type: object
additionalProperties: true
source:
type: string
description: Source of the artifact
BuildRepository:
type: object
description: Repository configuration for a build
properties:
id:
type: string
description: Repository ID (GUID for Git, name for TFVC)
name:
type: string
description: Repository name
type:
type: string
description: Repository type
enum: [TfsGit, TfsVersionControl, GitHub, Bitbucket, GitHubEnterprise]
url:
type: string
format: uri
description: URL of the repository
defaultBranch:
type: string
description: Default branch for this repository
example: 'refs/heads/main'
checkoutSubmodules:
type: boolean
description: Whether to checkout Git submodules
clean:
type: string
description: Whether to clean the working directory before each build
enum: ['true', 'false', null]
properties:
type: object
additionalProperties: true
Timeline:
type: object
description: Build timeline showing all records (phases, jobs, tasks)
properties:
id:
type: string
format: uuid
descrip
# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/microsoft-azure-devops/refs/heads/main/openapi/azure-devops-builds-api-openapi.yml