openapi: 3.0.3
info:
title: Develocity Auth Failures API
description: 'The Develocity API allows programmatic interaction with various aspects of Develocity, from configuration to inspecting build data.
'
version: 2026.2.0
license:
name: Develocity License
url: https://gradle.com/help/legal-gradle-software-license-agreement
termsOfService: https://gradle.com/help/legal-terms-of-use
contact:
name: Gradle
url: https://gradle.com
x-logo:
url: https://assets.gradle.com/logo/develocity-logo.svg
altText: Develocity
servers:
- url: https://develocity.example.com
description: Your Develocity instance.
security:
- DevelocityAccessKeyOrToken: []
tags:
- name: Failures
x-displayName: 'Failures (Beta)
'
description: "Endpoints related to retrieving details about failures of builds from the Develocity instance. \nTo access these endpoints the user requires the `Access build data via the API` permission.\n\n**Beta: _The Failures API is unstable and is likely to change in future._**\n"
paths:
/api/failures/builds/{id}:
parameters:
- in: path
name: id
schema:
type: string
required: true
description: The Build Scan ID.
- in: query
name: BuildFailuresQuery
explode: true
description: The query parameters used to retrieve the failures of a build.
schema:
$ref: '#/components/schemas/BuildFailuresQuery'
get:
operationId: GetBuildFailures
summary: Get the failures of a build.
description: '**Beta:** Returns the failures of a build, organized by build tool (Gradle, Maven, npm).
The response structure includes nested objects for each build tool containing their respective failures.
'
tags:
- Failures
responses:
'200':
description: The failures of a build.
content:
application/json:
schema:
$ref: '#/components/schemas/BuildFailures'
example:
buildToolType: gradle
gradle:
buildFailures:
- header: Task :codeNarcMain failed
message: 'A failure occurred while executing org.gradle.api.plugins.quality.internal.CodeNarcAction
> CodeNarc rule violations were found. See the report at: file:///Users/user/project/build/reports/codenarc/main.html
'
taskPath: :codeNarcMain
location: Build file 'build.gradle' line 3
stacktrace: " at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:130)\nCaused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing org.gradle.api.plugins.quality.internal.CodeNarcAction\n at org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:287)\n"
testFailures:
- id:
workUnitName: :test
suiteName: example.ExampleTest
testName: failingTest
message: 'org.junit.ComparisonFailure: expected:<[1]> but was:<[2]>
'
stacktrace: " at example.ExampleTest.failingTest(ExampleTest.java:10)\nCaused by: org.junit.ComparisonFailure: expected:<[1]> but was:<[2]>\n at org.junit.ComparisonFailure.create(ComparisonFailure.java:41)\n"
maven: null
npm: null
'400':
$ref: '#/components/responses/BadRequestError'
'404':
$ref: '#/components/responses/NotFoundError'
'500':
$ref: '#/components/responses/UnexpectedError'
'503':
$ref: '#/components/responses/NotReadyError'
/api/failures/groups:
description: 'The failure groups for the given query
'
get:
operationId: GetFailureGroups
summary: Get a list of failure groups.
description: '**Beta:** Returns the list of failure groups.
'
tags:
- Failures
parameters:
- in: query
name: query
explode: true
required: true
description: The query parameters used to retrieve the list of failure groups.
schema:
$ref: '#/components/schemas/FailureGroupsQuery'
responses:
'200':
description: A list of failure groups.
content:
application/json:
schema:
$ref: '#/components/schemas/FailureGroupsResponse'
example:
content:
- type: build
failureCount: 10
firstOccurrence: '2025-01-15T10:00:00Z'
lastOccurrence: '2025-06-10T15:30:00Z'
exampleFailure:
message: 'A failure occurred while executing org.gradle.api.plugins.quality.internal.CodeNarcAction
> CodeNarc rule violations were found. See the report at: file:///Users/user/project/build/reports/codenarc/main.html
'
relevantLog: 'Violation: Rule=VariableName P=2 Line=304 Msg=[Variable named isAtLeastGradle9_2 in class com.gradle.scan.server.test.vmcv.scan.tests.suitedetailsview.IntermediaryNodeFailureCrossVersionTest$IntermediaryNodeFailureCrossVersionTest_JUnit4 does not match the pattern [a-z][a-zA-Z0-9]*] Src=[def isAtLeastGradle9_2 = gradleVersion.isAtLeast(GradleVersions.V9_2_0)]
'
buildIds:
- bsfohatb6uw2u
- begl4bohhoy2i
- beo6lnhluzkbbg
- type: test
failureCount: 25
firstOccurrence: '2025-05-15T10:00:00Z'
lastOccurrence: '2025-07-11T15:30:00Z'
exampleFailure:
message: 'org.junit.ComparisonFailure: expected:<[1]> but was:<[2]>
'
buildIds:
- tsfohatb6uw2u
- teg4bohhoy2i
- teo6lnhluzkbbg
'400':
$ref: '#/components/responses/BadRequestError'
'500':
$ref: '#/components/responses/UnexpectedError'
components:
responses:
UnexpectedError:
description: The server encountered an unexpected error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ApiProblem'
examples:
UnexpectedErrorResponse:
$ref: '#/components/examples/UnexpectedErrorApiProblemExample'
NotFoundError:
description: The referenced resource either does not exist or the permissions to know about it are missing.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ApiProblem'
examples:
NotFoundResponse:
$ref: '#/components/examples/NotFoundApiProblemExample'
NotReadyError:
description: The server is not ready to handle the request.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ApiProblem'
examples:
IngestionNotCompletedResponse:
$ref: '#/components/examples/IngestionNotCompletedApiProblemExample'
BadRequestError:
description: The request cannot be fulfilled due to a problem.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ApiProblem'
examples:
RequestValidationApiProblemResponse:
$ref: '#/components/examples/RequestValidationApiProblemExample'
schemas:
MavenFailures:
type: object
description: The build and test failures of a Maven build. `null` if the build is not a Maven build.
nullable: true
properties:
buildFailures:
description: A list of build failures.
items:
$ref: '#/components/schemas/MavenBuildFailure'
type: array
testFailures:
description: A list of test failures. `null` if tests are not captured.
items:
$ref: '#/components/schemas/TestFailure'
type: array
nullable: true
BuildFailuresQuery:
allOf:
- $ref: '#/components/schemas/BuildModelQuery'
- type: object
properties:
maxFailures:
type: integer
format: int32
minimum: 1
maximum: 1000
default: 100
description: The maximum number of failures to return for each failure list independently. This limit applies separately to the buildFailures and testFailures lists.
TestId:
type: object
description: Information required to uniquely identify a test.
required:
- workUnitName
- suiteName
properties:
workUnitName:
type: string
description: Work unit name that executed the test.
suiteName:
type: string
description: Suite name of the test, in most cases the class name.
testName:
type: string
description: Name of the test. `null` when the test is a suite.
nullable: true
NpmFailures:
type: object
description: The build and test failures of an npm build. `null` if the build is not an npm build.
nullable: true
properties:
buildFailures:
description: A list of build failures.
items:
$ref: '#/components/schemas/NpmBuildFailure'
type: array
testFailures:
description: A list of test failures. `null` if tests are not captured.
items:
$ref: '#/components/schemas/TestFailure'
type: array
nullable: true
TestFailure:
type: object
required:
- id
- message
properties:
id:
$ref: '#/components/schemas/TestId'
message:
type: string
description: Failure message.
stacktrace:
type: string
description: The failure stacktrace. `null` if there is no stacktrace available.
nullable: true
GradleBuildFailure:
type: object
required:
- header
- message
properties:
header:
type: string
description: Failure header.
message:
type: string
description: Failure message.
relevantLog:
type: string
description: Relevant console log. `null` if no relevant console log has been found.
nullable: true
location:
type: string
description: Failure location, which can be a build script or source file. `null` when the failure is not location aware.
nullable: true
taskPath:
type: string
description: The task path associated with this failure. `null` if no task is associated with the failure.
nullable: true
stacktrace:
type: string
description: The stacktrace of this failure. `null` if there is no stacktrace available.
nullable: true
MavenBuildFailure:
type: object
required:
- header
- message
properties:
header:
type: string
description: Failure header.
message:
type: string
description: Failure message.
relevantLog:
type: string
description: Relevant console log. `null` if no relevant console log has been found.
nullable: true
goalExecutionId:
type: string
description: The goal execution id associated with this failure. `null` if no goal execution is associated with the failure.
nullable: true
stacktrace:
type: string
description: The stacktrace of this failure. `null` if there is no stacktrace available.
nullable: true
FailureGroup:
type: object
description: 'A failure group.
'
required:
- type
- failureCount
- firstOccurrence
- lastOccurrence
- exampleFailure
- buildIds
properties:
type:
$ref: '#/components/schemas/FailureType'
failureCount:
type: integer
format: int64
description: The number of failures in this group.
firstOccurrence:
type: string
format: date-time
description: 'The timestamp of the first occurrence of this failure group.
This is the timestamp of the earliest failure that belongs to this group and therefore may be outside the time range of the query.
'
lastOccurrence:
type: string
format: date-time
description: 'The timestamp of the last occurrence of this failure group.
This is the timestamp of the latest failure that belongs to this group and therefore may be outside the time range of the query.
'
exampleFailure:
$ref: '#/components/schemas/Failure'
buildIds:
type: array
description: Build Scan IDs for builds that contain failures that belong to this failure group.
items:
type: string
BuildFailures:
type: object
description: 'The unified failures response for a build, containing build tool-specific failure information.
Each build tool (gradle, maven, npm) has its own nested object with failures if applicable for that build.
'
required:
- buildToolType
properties:
buildToolType:
type: string
description: The build tool type of the build.
gradle:
$ref: '#/components/schemas/GradleFailures'
maven:
$ref: '#/components/schemas/MavenFailures'
npm:
$ref: '#/components/schemas/NpmFailures'
Failure:
type: object
description: 'An individual failure instance.
'
required:
- message
properties:
message:
type: string
description: The failure message.
relevantLog:
type: string
description: Relevant console log. `null` if no relevant console log has been found.
nullable: true
FailureGroupsQuery:
type: object
required:
- query
properties:
failureTypes:
type: array
description: Allows restricting the search to failure types. By default all failure types are considered.
default:
- build
- test
items:
$ref: '#/components/schemas/FailureType'
query:
type: string
description: 'A query for filtering the builds considered for failure groups, written in the Develocity advanced search query language.
The query must contain a restriction on `buildStartTime` to ensure the search is bounded in time.
See: https://gradle.com/help/advanced-search
'
maxFailureGroups:
description: The maximum number of failure groups to return.
type: integer
format: int32
default: 100
minimum: 1
maximum: 1000
maxBuildIdsPerGroup:
description: The maximum number of buildIds to return in a given FailureGroup.
type: integer
format: int32
default: 20
minimum: 1
maximum: 1000
ApiProblem:
type: object
description: 'Response detailing why a request was rejected.
Adheres to the [RFC-7807](https://datatracker.ietf.org/doc/html/rfc7807) standard (colloquially known as "Problem JSON") for the response format.
'
required:
- type
- title
- status
properties:
status:
type: integer
description: HTTP status code of the problem response.
type:
type: string
description: A URN (Uniform Resource Name) identifying the type of the problem.
title:
type: string
description: The underlying reason for the problem.
detail:
type: string
description: A longer and comprehensive description of the problem. May be `null` if not available.
nullable: true
FailureGroupsResponse:
type: object
description: A list of failure groups.
required:
- content
properties:
content:
type: array
description: A list of failure groups.
items:
$ref: '#/components/schemas/FailureGroup'
GradleFailures:
type: object
description: The build and test failures of a Gradle build. `null` if the build is not a Gradle build.
nullable: true
properties:
buildFailures:
description: A list of build failures.
items:
$ref: '#/components/schemas/GradleBuildFailure'
type: array
testFailures:
description: A list of test failures. `null` if tests are not captured.
items:
$ref: '#/components/schemas/TestFailure'
type: array
nullable: true
AvailabilityWaitTimeoutSecs:
type: integer
minimum: 0
description: The time in seconds the server should wait for ingestion before returning a wait timeout response.
BuildModelQuery:
type: object
properties:
availabilityWaitTimeoutSecs:
$ref: '#/components/schemas/AvailabilityWaitTimeoutSecs'
FailureType:
type: string
enum:
- build
- test
NpmBuildFailure:
type: object
required:
- header
- message
properties:
header:
type: string
description: Failure header.
message:
type: string
description: Failure message.
relevantLog:
type: string
description: Relevant console log. `null` if no relevant console log has been found.
nullable: true
processName:
type: string
description: The full process name (executable name and parameters) for which this failure was detected.
nullable: false
stacktrace:
type: string
description: The stacktrace of this failure. `null` if there is no stacktrace available.
nullable: true
examples:
RequestValidationApiProblemExample:
value:
type: urn:gradle:enterprise:api:problems:validation
title: Request validation failed.
detail: 'Numeric instance is lower than the required minimum (minimum: 1, found: 0) (Additional info: Query parameter: maxWaitSecs).
'
status: 400
IngestionNotCompletedApiProblemExample:
value:
type: urn:gradle:enterprise:api:problems:build-processing-incomplete
title: Build processing is incomplete.
detail: 'The data of build 9r4d13f0r3v3r is not yet available for viewing. Please try again later.
'
status: 503
UnexpectedErrorApiProblemExample:
value:
type: urn:gradle:enterprise:api:problems:unexpected-error
title: Encountered an internal server error.
detail: 'The ingestion of build 9r4d13f0r3v3r failed.
'
status: 500
NotFoundApiProblemExample:
value:
type: urn:gradle:enterprise:api:problems:not-found
title: The requested resource is not found or the permissions to know about it are missing.
status: 404
securitySchemes:
DevelocityAccessKeyOrToken:
type: http
scheme: bearer
bearerFormat: Bearer <>
description: "All requests require a Develocity access key or token as a bearer token. \nGiven an access key of `l3an7wk3j4ze5v4mi7rvgjf2p7g44nvlswg4cpvdonjs7rzd4kmq`, the required header is `Authorization: Bearer l3an7wk3j4ze5v4mi7rvgjf2p7g44nvlswg4cpvdonjs7rzd4kmq`.\n\nPlease consult the [Develocity API User Manual](https://gradle.com/help/api-access-control) for guidance on how to provision access keys or tokens and check user permissions.\n"