The Develocity API allows programmatic interaction with various aspects of Develocity, from configuration to inspecting build data.

Fundamentals

The Develocity API is a REST-style API using JSON as the data format.

OpenAPI

The API is defined using the OpenAPI standard, which is a declarative specification that allows tools and libraries to generate client code. The specification can be found in the Reference section.

Versioning and compatibility

The API is generally backwards compatible.

New functionality (e.g. endpoints, response attributes) may be added in new major versions (i.e. 2022.1, 2022.2).

Breaking changes will occur infrequently if at all, and only after a reasonable deprecation period. Deprecations will be communicated by:

  • The release notes for the major Develocity version introducing the deprecation.

  • The deprecated annotation within the OpenAPI specification.

  • The Deprecated HTTP response header (indicating when the operation was deprecated).

  • The Sunset HTTP response header (indicating when the operation will be removed).

API documentation may be refined in patch releases, along with implementation defects that cause deviation from the specification.

Getting started

Access control

All requests must provide a Develocity access key as “bearer token”.

To create an access key:

  1. Sign in to Develocity.

  2. Access "My settings" from the user menu in the top right-hand corner of the page.

  3. Access "Access keys" from the left-hand menu.

  4. Click "Generate" on the right-hand side and copy the generated access key.

Different requests require different user permissions, as describe via the API specification.

To view the permissions assigned to you:

  1. Sign in to Develocity.

  2. Access "My settings" from the user menu in the top right-hand corner of the page.

  3. Access "Permissions" from the left-hand menu.

  4. Check if you have the required permissions.

If you do not have the required permission, contact your Develocity administrator.

Making a request

The following example demonstrates using cURL to make a request to the builds endpoint, which requires the “Access build data via the API” permission.

$ curl -H "Authorization: Bearer 7asejatf24zun43yshqufp7qi4ovcefxpykbwzqbzilcpwzb52ja" "https://ge.mycompany.com/api/builds?since=0&maxBuilds=3"
[
  {
    "id": "7asfp6iy3d5ey",
    "availableAt": 1645452789334,
    "buildToolType": "gradle",
    "buildToolVersion": "7.4",
    "buildAgentVersion": "3.8.1"
  },
  {
    "id": "1saxebtd5d4xs",
    "availableAt": 1645452795414,
    "buildToolType": "maven",
    "buildToolVersion": "3.8.4",
    "buildAgentVersion": "1.12.4"
  },
  {
    "id": "hx4k23knk64ri",
    "availableAt": 1645453205526,
    "buildToolType": "gradle",
    "buildToolVersion": "7.4",
    "buildAgentVersion": "3.8.1"
  }
]

The builds endpoint can be used to discover the builds observed by the system. This example fetches the 3 oldest builds due to the since=0&maxBuilds=3 parameters.

Next steps

Check out the sample project.

To learn more about the functionality provided by the API and what you can do with it, see Reference.

Reference

Appendix A: About the Export API

The Develocity API described in this document will eventually replace the Develocity Export API. At this time, the Develocity API does not allow consuming the raw events of a build as the Export API does.

If your existing usage of the Export API can be replaced with the easier-to-use Develocity API, please consider migrating. For assistance, please contact Develocity support.

Appendix B: Release history

2023.4

5th December 2023
  • Add new /api/builds/{id}/gradle-network-activity endpoint

  • Add new /api/builds/{id}/maven-dependency-resolution endpoint

  • Add new /api/tests/cases endpoint

  • Add new /api/tests/containers endpoint

  • Add develocitySettings attribute on the /api/builds/{id}/gradle-attributes and /api/builds/{id}/maven-attributes operation responses. This value is identical to gradleEnterpriseSettings and should be used instead

  • Add workUnitFingerprintingSummary and workUnitAvoidanceSavingsSummary to /api/builds/{id}/gradle-build-cache-performance operation response

  • Add cacheKey to /api/builds/{id}/gradle-build-cache-performance operation response

  • Add cacheKey to /api/builds/{id}/maven-build-cache-performance operation response

  • Make isDisabledDueToError nullable on /api/builds/{id}/gradle-build-cache-performance and /api/builds/{id}/maven-build-cache-performance responses

  • Deprecate rerunGoals in favor of rerunGoalsEnabled within the buildOptions property on the /api/builds/{id}/maven-attributes operation responses

  • Deprecate avoidanceSavingsSummary in favor of taskAvoidanceSavingsSummary from /api/builds/{id}/gradle-build-cache-performance operation response

2023.3

13th September 2023
  • Add hasVerificationFailure and hasNonVerificationFailure attributes on the /api/builds/{id}/gradle-attributes and /api/builds/{id}/maven-attributes operation response

  • Introduce optional query query parameter for the on the /api/builds endpoint, which can be used to filter the set of returned builds. This parameter’s value should be a URL encoded text query written in the advanced query language (the same advanced query language that is used in the scans list UI)

2023.2

18th July 2023
  • Add effectiveWorkUnitExecutionTime and serialWorkUnitExecutionTime on the /api/builds/{id}/gradle-build-cache-performance operation response

  • Exclude potential artifact transforms from effectiveTaskExecutionTime and serialTaskExecutionTime on the /api/builds/{id}/gradle-build-cache-performance operation response

  • Add cacheArtifactRejectedReason to /api/builds/{id}/gradle-build-cache-performance and /api/builds/{id}/maven-build-cache-performance operation response

2023.1

12th April 2023
  • Add cacheArtifactSize to /api/builds/{id}/gradle-build-cache-performance and /api/builds/{id}/maven-build-cache-performance operation response

  • Add excludedTasks to /api/builds/{id}/gradle-attributes operation response

2022.4

8th December 2022
  • Add new /api/test-distribution/* endpoints for managing API keys and agent pools

  • Add new /api/builds/{id}/gradle-projects endpoint

  • Add new /api/builds/{id}/maven-modules endpoint

  • Introduce fromInstant, fromBuild, reverse query parameters on the /api/builds operation query

  • Deprecate since and sinceBuild query parameters on the /api/builds operation query

2022.3

10th August 2022
  • Add taskExecution.nonCacheabilityCategory and taskExecution.nonCacheabilityReason to /api/builds/{id}/gradle-build-cache-performance operation response

  • Add goalExecution.nonCacheabilityCategory and goalExecution.nonCacheabilityReason to /api/builds/{id}/maven-build-cache-performance operation response

  • Add taskExecution.taskType to /api/builds/{id}/gradle-build-cache-performance operation response

  • Add goalExecution.mojoType to /api/builds/{id}/maven-build-cache-performance operation response

  • Add buildCaches.remote.type to /api/builds/{id}/gradle-build-cache-performance operation response

  • Add buildCaches.remote.className to /api/builds/{id}/gradle-build-cache-performance operation response

  • Add a title to /api/builds inlined query parameters schema

2022.2

19th April 2022
  • Improve OpenAPI specification examples

  • Add buildCaches.local.isPushEnabled to /api/builds/{id}/maven-build-cache-performance operation response

2022.1

17th March 2022
  • Initial release

Appendix C: Advanced search syntax

Develocity supports the use of advanced search for filtering Build Scan data in the dashboards from version 2022.4, and in the Enterprise API from version 2023.3.

Each query can be made from one or more terms separated by spaces. Each term is a field name and search pattern: fieldName:pattern. For example, project:my-project is equivalent to entering my-project in the Project field in the basic search.

Supported fields

Generic fields

These fields are applicable for builds from all supported build tools.

Name Description Data type Version availability Example

user

Username of the OS account that executed the build.

String

>=2022.4

user:dylan

hostname

Public hostname of the build machine.

String

>=2022.4

hostname:*.somedomain.com

project

Name of the Gradle root project, Maven top level module, Bazel workspace, or Sbt root project.

String

>=2023.3

project:my-project

rootProjectName

Name of the Gradle root project, Maven top level module, Bazel workspace, or Sbt root project.

String

2022.4 to 2023.2.3

rootProjectName:my-project

requested

Tasks, goals, or targets that were requested when the build was invoked.

String

>=2022.4

requested:":my-project:*"

buildTool

Must be one of gradle, maven, or bazel. In the Build Scan dashboards, but not in the Enterprise API, you can also use the value sbt.

String

>=2022.4

buildTool:gradle

buildToolVersion

Version of the build tool that executed the build.

String

>=2022.4

buildToolVersion:8.*

value

Custom values added to the Build Scan in the form name=value.

Key-value pair

>=2022.4

value:"Git branch=abc/my-feature"

tag

Tags added to the Build Scan.

String

>=2022.4

tag:CI

buildOutcome

succeeded or failed.

String

>=2022.4

buildOutcome:failed

buildDuration

Duration of the build.

Duration

>=2022.4

buildDuration>30m

buildStartTime

Start time of the build. This field should only be used when filtering Build Scan data from the Develocity API.

Timestamp

>=2022.4

  • buildStartTime:[2023-01-01 to 2023-02-01]

  • buildStartTime:[2023-09-01T13:00:00 to 2023-09-01T15:00:00]

  • buildStartTime>-5d

Gradle-specific fields

Fields whose name is prefixed with "gradle." are specific to Gradle and select only Gradle builds.

Name Description Data type Version availability

gradle.pluginVersion

The applied version of the Develocity Gradle plugin.

String

>=2023.3

gradle.requestedTasks

The resolved set of requested tasks for the Gradle build.

String

>=2023.3

gradle.rootProjectName

The root project name for the Gradle build.

String

>=2023.3

gradle.buildCache.hasError

Whether any build cache error or artifact rejections occurred during the build.

Boolean

>=2023.4

gradle.buildOptions.buildCacheEnabled

Whether the Gradle build cache was enabled.

Boolean

>=2023.4

gradle.buildOptions.configurationCacheEnabled

Whether the configuration cache was enabled.

Boolean

>=2023.4

gradle.buildOptions.configurationOnDemandEnabled

Whether configuration on demand was enabled.

Boolean

>=2023.4

gradle.buildOptions.continueOnFailureEnabled

Whether continue on failure was enabled.

Boolean

>=2023.4

gradle.buildOptions.continuousBuildEnabled

Whether continuous build execution was enabled.

Boolean

>=2023.4

gradle.buildOptions.daemonEnabled

Whether the Gradle daemon was enabled.

Boolean

>=2023.4

gradle.buildOptions.dryRunEnabled

Whether dry run mode was enabled.

Boolean

>=2023.4

gradle.buildOptions.fileSystemWatchingEnabled

Whether file system watching was enabled.

Boolean

>=2023.4

gradle.buildOptions.maxNumberOfGradleWorkers

Maximum number of build workers configured for the Gradle build.

Number

>=2023.4

gradle.buildOptions.offlineModeEnabled

Whether offline mode was enabled.

Boolean

>=2023.4

gradle.buildOptions.parallelProjectExecution

Whether parallel project execution was enabled.

Boolean

>=2023.4

gradle.buildOptions.refreshDependenciesEnabled

Whether the build was configured to refresh all dependencies.

Boolean

>=2023.4

gradle.buildOptions.rerunTasksEnabled

Whether rerun tasks was enabled.

Boolean

>=2023.4

gradle.develocitySettings.backgroundPublicationEnabled

Whether build scan data was published in the background.

Boolean

>=2023.4

gradle.develocitySettings.buildOutputCapturingEnabled

Whether the build was configured to capture logging output for the build.

Boolean

>=2023.4

gradle.develocitySettings.taskInputsFileCapturingEnabled

Whether the build was configured to capture task input files.

Boolean

>=2023.4

gradle.develocitySettings.testOutputCapturingEnabled

Whether the build was configured to capture test logging output for the build.

Boolean

>=2023.4

gradle.environment.jreVersion

Version of the Java runtime that executed the build.

String

>=2023.4

gradle.environment.jvmCharset

Default charset of the build JVM.

String

>=2023.4

gradle.environment.jvmLocale

Locale of the build JVM.

String

>=2023.4

gradle.environment.jvmMaxMemoryHeapSize

Maximum heap memory available to the build JVM.

StorageSize

>=2023.4

gradle.environment.jvmVersion

Version of the Java Virtual Machine that executed the build.

String

>=2023.4

gradle.environment.localIPAddress

Local IP addresses of the build machine.

String

>=2023.4

gradle.environment.localHostname

Hostname of the build machine, as specified by itself.

String

>=2023.4

gradle.environment.numberOfCpuCores

Number of cores available to the build JVM.

Number

>=2023.4

gradle.environment.operatingSystem

Operating system of the build machine.

String

>=2023.4

Maven-specific fields

Fields whose name is prefixed with "maven." are specific to Maven and select only Maven builds.

Name Description Data type Version availability

maven.extensionVersion

The applied version of the Develocity Maven extension.

String

>=2023.3

maven.requestedGoals

The resolved set of requested goals for the Maven build.

String

>=2023.3

maven.topLevelProjectName

The name of the top level Maven project.

String

>=2023.3

maven.buildCache.hasError

Whether any build cache error or artifact rejections occurred during the build.

Boolean

>=2023.4

maven.buildOptions.batchModeEnabled

Whether the build was configured to run in non-interactive (batch) mode.

Boolean

>=2023.4

maven.buildOptions.debugEnabled

Whether the build was configured to produce execution debug output.

Boolean

>=2023.4

maven.buildOptions.errorsEnabled

Whether the build was configured to produce execution error messages.

Boolean

>=2023.4

maven.buildOptions.failAtEndEnabled

Whether the build was configured to only fail at the end.

Boolean

>=2023.4

maven.buildOptions.failFastEnabled

Whether the build was configured to fail at the first error.

Boolean

>=2023.4

maven.buildOptions.failNeverEnabled

Whether the build was configured to never fail, regardless of errors produced.

Boolean

>=2023.4

maven.buildOptions.laxChecksumsEnabled

Whether the build was configured to only warn if checksums don’t match.

Boolean

>=2023.4

maven.buildOptions.maxNumberOfThreads

Maximum number of threads used when executing the build.

Number

>=2023.4

maven.buildOptions.nonRecursiveEnabled

Whether the build was configured to not recurse into subprojects.

Boolean

>=2023.4

maven.buildOptions.noSnapshotUpdatesEnabled

Whether the build was configured to suppress snapshot updates.

Boolean

>=2023.4

maven.buildOptions.offlineModeEnabled

Whether the build was configured to run offline.

Boolean

>=2023.4

maven.buildOptions.quietEnabled

Whether the build was configured to run in quiet mode.

Boolean

>=2023.4

maven.buildOptions.rerunGoalsEnabled

Whether the build was configured to rerun goals without checking the build cache.

Boolean

>=2023.4

maven.buildOptions.strictChecksumsEnabled

Whether the build was configured to fail if checksums don’t match.

Boolean

>=2023.4

maven.buildOptions.updateSnapshotsEnabled

Whether the build was configured to force a check for missing releases and updated snapshots on remote repositories.

Boolean

>=2023.4

maven.develocitySettings.backgroundPublicationEnabled

Whether build scan data was published in the background.

Boolean

>=2023.4

maven.develocitySettings.buildOutputCapturingEnabled

Whether the build was configured to capture logging output for the build.

Boolean

>=2023.4

maven.develocitySettings.goalInputsFileCapturingEnabled

Whether the build was configured to capture goal input files.

Boolean

>=2023.4

maven.develocitySettings.testOutputCapturingEnabled

Whether the build was configured to capture test logging output for the build.

Boolean

>=2023.4

maven.environment.jreVersion

Version of the Java runtime that executed the build.

String

>=2023.4

maven.environment.jvmCharset

Default charset of the build JVM.

String

>=2023.4

maven.environment.jvmLocale

Locale of the build JVM.

String

>=2023.4

maven.environment.jvmMaxMemoryHeapSize

Maximum heap memory available to the build JVM.

StorageSize

>=2023.4

maven.environment.jvmVersion

Version of the Java Virtual Machine that executed the build.

String

>=2023.4

maven.environment.localIPAddress

Local IP addresses of the build machine.

String

>=2023.4

maven.environment.localHostname

Hostname of the build machine, as specified by itself.

String

>=2023.4

maven.environment.numberOfCpuCores

Number of cores available to the build JVM.

Number

>=2023.4

maven.environment.operatingSystem

Operating system of the build machine.

String

>=2023.4

Bazel-specific fields

Fields whose name is prefixed with "bazel." are specific to Bazel and select only Bazel builds.

Name Description Data type Version availability

bazel.requestedTargets

The resolved set of requested targets for the Bazel build.

String

>=2023.3

sbt-specific fields

Fields whose name is prefixed with "sbt." are specific to sbt and select only sbt builds.

Name Description Data type Version availability

sbt.pluginVersion

The applied version of the Develocity sbt plugin.

String

>=2023.3

sbt.requestedTasks

The resolved set of requested tasks for the sbt build.

String

>=2023.3

sbt.rootProjectName

The name of the top level sbt project.

String

>=2023.3

sbt.buildOptions.interactiveModeEnabled

Whether the build was run from the sbt shell.

Boolean

>=2023.4

sbt.buildOptions.offlineModeEnabled

Whether the build was configured to run offline.

Boolean

>=2023.4

sbt.buildOptions.parallelExecutionEnabled

Whether the build was configured to use parallel tasks execution.

Boolean

>=2023.4

sbt.buildOptions.semanticDbScalacPluginEnabled

Whether the projects in the build were configured to use the SemanticDB Scalac plugin.

Boolean

>=2023.4

sbt.buildOptions.turboEnabled

Whether the build was configured to use turbo mode.

Boolean

>=2023.4

sbt.buildOptions.useCoursierEnabled

Whether Coursier was used for dependency resolution.

Boolean

>=2023.4

sbt.develocitySettings.backgroundPublicationEnabled

Whether build scan data was published in the background.

Boolean

>=2023.4

sbt.environment.jreVersion

Version of the Java runtime that executed the build.

String

>=2023.4

sbt.environment.jvmCharset

Default charset of the build JVM.

String

>=2023.4

sbt.environment.jvmLocale

Locale of the build JVM.

String

>=2023.4

sbt.environment.jvmMaxMemoryHeapSize

Maximum heap memory available to the build JVM.

StorageSize

>=2023.4

sbt.environment.jvmVersion

Version of the Java Virtual Machine that executed the build.

String

>=2023.4

sbt.environment.localIPAddress

Local IP addresses of the build machine.

String

>=2023.4

sbt.environment.localHostname

Hostname of the build machine, as specified by itself.

String

>=2023.4

sbt.environment.numberOfCpuCores

Number of cores available to the build JVM.

Number

>=2023.4

sbt.environment.operatingSystem

Operating system of the build machine.

String

>=2023.4

Field data types

Every supported field in the advanced search query language is associated with one data type. A field’s data type indicates what values it accepts, and each has its own syntax. The data types are all described below.

Data type Description

String

Strings can be exact matches or use the * wildcard. Whitespace and special characters need to be double-quoted. Searches are case-insensitive.

  • project:my-project

  • tag:"Tag with spaces"

  • hostname:*.somedomain.com

Key-value pair

These take the form fieldName:key=value, with wildcards allowed and double-quoting required for whitespace and special characters.

  • value:"Git branch=abc/my-feature"

  • value:ci-agent=*.subdomain.com

Duration

Durations can be specified using ISO 8601 duration syntax or a simple syntax like 5m or 24h.

  • buildDuration>30m

  • buildDuration<=PT2H5.123S

The units supported for simple duration syntax are 'd' for days, 'h' for hours, 'm' for minutes, 's' for seconds, and 'ms' for milliseconds.

Timestamp

Timestamps can be specified in a few different ways.

  • YYYY-MM-DD - timestamp is at midnight on that day.

  • YYYY-MM-DDTHH:MM - seconds and milliseconds optional.

  • YYYY-MM-DDTHH:MM:SS.SSS

All timestamps can have an optional timezone offset appended in the form Z or +HH:SS to be specific about which timezone the timestamp is being specified in. Default is timezone of the current web browser when using advanced search in Build Scan dashboards. Default is always UTC when using the Enterprise API.

Timestamps in the form of a date can be queried using equality.

  • buildStartTime:2023-09-01 - builds that ran on this day, UTC.

  • buildStartTime:2023-09-01+01:00 - builds that ran on this day, BST (i.e. UTC+1).

Timestamps can be queried using ranges in the form [start to finish].

  • buildStartTime:[2023-01-01 to 2023-02-01] - builds that ran from the Jan 1st - Feb 1st, inclusive.

  • buildStartTime:[2023-09-01T13:00:00 to 2023-09-01T15:00:00] - builds that ran on Sep 1st from 1pm to 3pm.

A timestamp can also be specified relative to the current time using duration syntax.

  • buildStartTime>-5d - builds in the last 5 days.

  • buildStartTime:[2023-01-01T05:23:30Z to -12h] - builds that ran from the start timestamp, until 12 hours ago.

Boolean

Boolean fields can be included as terms themselves, or they can have a value specified. If the term is used by itself, it is treated as if the value is "true", as is conventional.

  • gradle.buildOptions.buildCacheEnabled

  • gradle.buildOptions.buildCacheEnabled:true

  • gradle.buildOptions.buildCacheEnabled:false

Some boolean fields distinguish between a false value, and an unknown value. You can use a wildcard to acknowledge the account for unknown booleans in your queries. The first query below will match all builds for which the build cache was known to be either enabled or disabled. The second will match all builds for which it is unknown whether the build cache was enabled or disabled.

  • gradle.buildOptions.buildCacheEnabled:*

  • !gradle.buildOptions.buildCacheEnabled:*

The following term will match builds where the build cache was not known to be enabled, rather than builds where the build cache was known to be disabled.

  • !gradle.buildOptions.buildCacheEnabled

Number

Numbers can be exact matches or use a range. They can be integers or decimals, although for some fields only integers really make sense, for example the max number of workers in a Gradle build is always an integer.

  • gradle.buildOptions.maxNumberOfGradleWorkers:4

  • gradle.buildOptions.maxNumberOfGradleWorkers>=8

  • gradle.buildOptions.maxNumberOfGradleWorkers:[3 to 6]

  • gradle.buildOptions.maxNumberOfGradleWorkers<13.5

Storage size

Storage sizes represent a number of bytes. They are ultimately numbers, but they can have units, for convenience. As with numbers, they can be exact matches or use a range. If no unit is appended, the number value is interpreted as a number of bytes.

  • gradle.environment.jvmMaxMemoryHeapSize:3000000

  • gradle.environment.jvmMaxMemoryHeapSize>=5.3gi

  • gradle.environment.jvmMaxMemoryHeapSize:[8g to 12g]

The units supported are:

  • 'k' for 'kilobyte' representing 1000 bytes

  • 'ki' for 'kibibyte' representing 1024 bytes

  • 'm' for 'megabyte' representing 10002 bytes

  • 'mi' for 'mebibyte' representing 10242 bytes

  • 'g' for 'gigabyte' representing 10003 bytes

  • 'gi' for 'gibibyte' representing 10243 bytes

  • 't' for 'terabyte' representing 10004 bytes

  • 'ti' for 'tebibyte' representing 10244 bytes

Optionally, a 'b' may be appended to the end of these units. Thus, 500mb is the same as 500m, and 500mib is the same as 500mi. Units are also case-insensitive, so 500MiB is the same as 500mib.

Combining terms

By default, all terms must match.

Terms can be combined using boolean and and or operators, and grouped using parentheses.

  • user:dylan or (tag:CI and value:branch=dylan/*)

Terms can also be negated using - or not.

  • project:my-project -tag:local

  • user:dylan or not (tag:CI and value:branch=dylan/*)