openapi: 3.0.3
info:
  title: Gradle Enterprise API
  description: >
    The Gradle Enterprise API allows programmatic interaction with various
    aspects of Gradle Enterprise, from configuration to inspecting build data.
  version: "2022.3"
  license:
    name: Gradle Enterprise License
    url: https://gradle.com/legal/gradle-enterprise-software-agreement
  termsOfService: https://gradle.com/legal/terms-of-service
  contact:
    name: Gradle
    url: https://gradle.com
  x-logo:
    url: https://assets.gradle.com/logo/gradle-enterprise-dark-green-primary.svg
    altText: Gradle Enterprise
servers:
  - url: https://ge.mycompany.com
    description: Your Gradle Enterprise instance.
security:
  - GradleEnterpriseAccessKey: []
paths:
  /api/builds:
    description: >
      Returns a list of builds with basic attributes of a Build Scan. The
      returned list is capped by the `maxBuilds` and `maxWaitSecs` query
      parameters. This

      endpoint supports pagination by using the `sinceBuild` query parameter,
      and the last returned build from a previous call to this endpoint, one can
      get

      the next batch of builds.
    parameters:
      - in: query
        name: BuildsQuery
        explode: true
        description: The query parameters used to retrieve the list of builds.
        schema:
          title: BuildsQuery
          type: object
          properties:
            since:
              type: integer
              format: int64
              minimum: 0
              x-nullable: true
              description: >
                The time in milliseconds from the Epoch as of when the Build
                Scan has been received. A value of `0` will process all builds.
                If not provided, the time

                in milliseconds when the request is received by the Gradle
                Enterprise instance will be used. This parameter has no effect
                if `sinceBuild` is used.
            sinceBuild:
              type: string
              x-nullable: true
              description: >
                A Build Scan ID allowing to retrieve builds for which Gradle
                Enterprise completed receiving and processing after the given
                Build Scan ID (excluding it).

                This parameter has precedence over any value set for the `since`
                parameter. A valid Build Scan ID must be provided, that is, a
                Build Scan ID that exists

                in the Gradle Enterprise instance. A Build Scan ID for a deleted
                build is valid.
            maxBuilds:
              type: integer
              minimum: 0
              maximum: 1000
              x-nullable: true
              description: >
                The maximum number of builds returned by the query. The query
                returns when that number is reached or when `maxWaitSecs` is
                reached.

                If not provided, the default value is `100`.
            maxWaitSecs:
              type: integer
              minimum: 1
              maximum: 20
              x-nullable: true
              description: >
                The maximum number of seconds to wait for builds before
                returning. If this time is reached before `maxBuilds` is
                reached, the query returns with the

                already processed builds. Note that this time is respected with
                best effort. A query will return soon after this time has passed
                but there is no 

                guarantee that it exactly returns before this time has passed.
                If not provided, the default value is `3`.
    get:
      operationId: GetBuilds
      summary: Get a list of builds with basic attributes of a Build Scan.
      description: The contained attributes are build tool agnostic.
      tags:
        - Builds
        - GradleEnterprise
      responses:
        '200':
          description: A list of builds with basic attributes of a Build Scan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Builds'
              example:
                - id: 9r4d13f0r3v3r
                  availableAt: 1635400481000
                  buildToolType: gradle
                  buildToolVersion: '7.2'
                  buildAgentVersion: 3.7.1
                - id: ji7vz3ey5qdvk
                  availableAt: 1635400482000
                  buildToolType: maven
                  buildToolVersion: 3.8.4
                  buildAgentVersion: '1.13'
                - id: cvpd4j7ug7j4q
                  availableAt: 1635400483000
                  buildToolType: bazel
                  buildToolVersion: 6.0.0
                  buildAgentVersion: '1.0'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
        '503':
          $ref: '#/components/responses/NotReadyError'
  /api/builds/{id}:
    parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        description: The Build Scan ID.
      - in: query
        name: BuildQuery
        explode: true
        description: >-
          The query parameters used to retrieve the common attributes of a Build
          Scan.
        schema:
          $ref: '#/components/schemas/BuildQuery'
    get:
      operationId: GetBuild
      summary: Get the common attributes of a Build Scan.
      description: The contained attributes are build tool agnostic.
      tags:
        - Builds
        - GradleEnterprise
      responses:
        '200':
          description: The common attributes of a Build Scan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Build'
              example:
                id: 9r4d13f0r3v3r
                availableAt: 1635400481000
                buildToolType: gradle
                buildToolVersion: '7.2'
                buildAgentVersion: 3.7.1
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
        '503':
          $ref: '#/components/responses/NotReadyError'
  /api/builds/{id}/gradle-attributes:
    parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        description: The Build Scan ID.
      - in: query
        name: BuildQuery
        explode: true
        description: >-
          The query parameters used to retrieve the attributes of a Gradle Build
          Scan.
        schema:
          $ref: '#/components/schemas/BuildQuery'
    get:
      operationId: GetGradleAttributes
      summary: Get the attributes of a Gradle Build Scan.
      description: >-
        This model is Gradle specific and cannot be requested for another build
        tool.
      tags:
        - Builds
        - GradleEnterprise
      responses:
        '200':
          description: The attributes of a Gradle Build Scan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GradleAttributes'
              example:
                id: 9r4d13f0r3v3r
                buildStartTime: 1637316480
                buildDuration: 5000
                gradleVersion: '7.3'
                pluginVersion: 3.7.2
                rootProjectName: example-project
                requestedTasks:
                  - clean
                  - build
                hasFailed: false
                tags:
                  - CI
                  - feature-branch
                values:
                  - name: branch
                    value: feature/one
                  - name: commitId
                    value: c874006021712affa4e7bd82d2ec4cd06beaa4f5
                links:
                  - label: CI job
                    url: https://ci.com/job1
                  - label: GIT commit
                    url: https://git.com/c874006021712affa4e7bd82d2ec4cd06beaa4f5
                gradleEnterpriseSettings:
                  backgroundPublicationEnabled: true
                  buildOutputCapturingEnabled: true
                  taskInputsFileCapturingEnabled: true
                  testOutputCapturingEnabled: true
                buildOptions:
                  buildCacheEnabled: true
                  configurationCacheEnabled: true
                  configurationOnDemandEnabled: true
                  continuousBuildEnabled: true
                  continueOnFailureEnabled: true
                  daemonEnabled: true
                  dryRunEnabled: true
                  fileSystemWatchingEnabled: true
                  maxNumberOfGradleWorkers: 4
                  offlineModeEnabled: true
                  parallelProjectExecutionEnabled: true
                  refreshDependenciesEnabled: true
                  rerunTasksEnabled: true
                environment:
                  username: gradle
                  operatingSystem: macOS 12.2.1 (x86_64)
                  numberOfCpuCores: 16
                  jreVersion: AdoptOpenJDK OpenJDK Runtime Environment 11.0.11+9
                  jvmVersion: AdoptOpenJDK OpenJDK 64-Bit Server VM 11.0.11+9 (mixed mode)
                  jvmMaxMemoryHeapSize: 16777216
                  jvmCharset: UTF-8
                  jvmLocale: English (United States)
                  publicHostname: agent.gradle.com
                  localHostname: gradle
                  localIpAddresses:
                    - 192.168.1.126
                    - 192.168.1.128
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
        '503':
          $ref: '#/components/responses/NotReadyError'
  /api/builds/{id}/maven-attributes:
    parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        description: The Build Scan ID.
      - in: query
        name: BuildQuery
        explode: true
        description: >-
          The query parameters used to retrieve the attributes of a Maven Build
          Scan.
        schema:
          $ref: '#/components/schemas/BuildQuery'
    get:
      operationId: GetMavenAttributes
      summary: Get the attributes of a Maven Build Scan.
      description: >-
        This model is Maven specific and cannot be requested for another build
        tool.
      tags:
        - Builds
        - GradleEnterprise
      responses:
        '200':
          description: The attributes of a Maven Build Scan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MavenAttributes'
              example:
                id: 9r4d13f0r3v3r
                buildStartTime: 1637316480
                buildDuration: 11000
                mavenVersion: 3.8.4
                extensionVersion: 1.11.1
                topLevelProjectName: example-project
                requestedGoals:
                  - clean
                  - verify
                hasFailed: false
                tags:
                  - CI
                  - feature-branch
                values:
                  - name: branch
                    value: feature/one
                  - name: commitId
                    value: c874006021712affa4e7bd82d2ec4cd06beaa4f5
                links:
                  - label: CI job
                    url: https://ci.com/job1
                  - label: GIT commit
                    url: https://git.com/c874006021712affa4e7bd82d2ec4cd06beaa4f5
                gradleEnterpriseSettings:
                  backgroundPublicationEnabled: true
                  buildOutputCapturingEnabled: true
                  goalInputsFileCapturingEnabled: true
                  testOutputCapturingEnabled: true
                buildOptions:
                  batchModeEnabled: true
                  debugEnabled: true
                  errorsEnabled: true
                  failAtEndEnabled: true
                  failFastEnabled: true
                  failNeverEnabled: true
                  laxChecksumsEnabled: true
                  maxNumberOfThreads: 4
                  nonRecursiveEnabled: true
                  noSnapshotsUpdatesEnabled: true
                  offlineModeEnabled: true
                  quietEnabled: true
                  rerunGoals: false
                  strictChecksumsEnabled: true
                  updateSnapshotsEnabled: true
                environment:
                  username: maven
                  operatingSystem: macOS 12.2.1 (x86_64)
                  numberOfCpuCores: 16
                  jreVersion: AdoptOpenJDK OpenJDK Runtime Environment 11.0.11+9
                  jvmVersion: AdoptOpenJDK OpenJDK 64-Bit Server VM 11.0.11+9 (mixed mode)
                  jvmMaxMemoryHeapSize: 16777216
                  jvmCharset: UTF-8
                  jvmLocale: English (United States)
                  publicHostname: agent.gradle.com
                  localHostname: maven
                  localIpAddresses:
                    - 192.168.1.126
                    - 192.168.1.128
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
        '503':
          $ref: '#/components/responses/NotReadyError'
  /api/builds/{id}/gradle-build-cache-performance:
    parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        description: The Build Scan ID.
      - in: query
        name: BuildQuery
        explode: true
        description: >-
          The query parameters used to retrieve the build cache performance of a
          Gradle Build Scan.
        schema:
          $ref: '#/components/schemas/BuildQuery'
    get:
      operationId: GetGradleBuildCachePerformance
      summary: Get the build cache performance of a Gradle Build Scan.
      description: >-
        This model is Gradle specific and cannot be requested for another build
        tool.
      tags:
        - Builds
        - GradleEnterprise
      responses:
        '200':
          description: The build cache performance of a Gradle Build Scan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GradleBuildCachePerformance'
              example:
                id: 9r4d13f0r3v3r
                buildTime: 5000
                effectiveTaskExecutionTime: 5000
                serialTaskExecutionTime: 10000
                serializationFactor: 2
                taskExecution:
                  - taskPath: ':task'
                    taskType: org.gradle.api.tasks.Task
                    avoidanceOutcome: avoided_from_local_cache
                    duration: 5000
                    fingerprintingDuration: 5
                    avoidanceSavings: 6000
                  - taskPath: ':task2'
                    taskType: org.gradle.api.tasks.Task
                    avoidanceOutcome: avoided_from_remote_cache
                    duration: 3000
                    fingerprintingDuration: 3
                    avoidanceSavings: 4000
                  - taskPath: ':task3'
                    taskType: org.gradle.api.tasks.Task
                    avoidanceOutcome: executed_not_cacheable
                    duration: 2000
                    fingerprintingDuration: 6
                    nonCacheabilityCategory: cache-if_condition_not_matched
                    nonCacheabilityReason: '''Task outputs cacheable'' not satisfied'
                taskFingerprintingSummary:
                  count: 1
                  serialDuration: 8
                avoidanceSavingsSummary:
                  total: 10000
                  ratio: 0.55556
                  upToDate: 0
                  localBuildCache: 6000
                  remoteBuildCache: 4000
                buildCaches:
                  local:
                    isEnabled: true
                    isPushEnabled: true
                    isDisabledDueToError: false
                  remote:
                    type: HTTP
                    className: org.example.MyBuildCache
                    isEnabled: true
                    isPushEnabled: true
                    isDisabledDueToError: false
                  overhead:
                    uploading: 100
                    downloading: 200
                    packing: 50
                    unpacking: 25
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
        '503':
          $ref: '#/components/responses/NotReadyError'
  /api/builds/{id}/maven-build-cache-performance:
    parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        description: The Build Scan ID.
      - in: query
        name: BuildQuery
        explode: true
        description: >-
          The query parameters used to retrieve the build cache performance of a
          Maven Build Scan.
        schema:
          $ref: '#/components/schemas/BuildQuery'
    get:
      operationId: GetMavenBuildCachePerformance
      summary: Get the build cache performance of a Maven Build Scan.
      description: >-
        This model is Maven specific and cannot be requested for another build
        tool.
      tags:
        - Builds
        - GradleEnterprise
      responses:
        '200':
          description: The build cache performance of a Maven Build Scan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MavenBuildCachePerformance'
              example:
                id: 9r4d13f0r3v3r
                buildTime: 5000
                effectiveProjectExecutionTime: 5000
                serialProjectExecutionTime: 10000
                serializationFactor: 2
                goalExecution:
                  - goalName: clean:clean
                    mojoType: org.apache.maven.plugin.jar.JarMojo
                    goalExecutionId: default-clean
                    goalProjectName: myproject
                    avoidanceOutcome: executed_not_cacheable
                    duration: 2000
                    nonCacheabilityCategory: build_cache_disabled_by_user
                    nonCacheabilityReason: >-
                      Neither the local or remote build cache were enabled in
                      the configuration of the build.
                  - goalName: compiler:compile
                    mojoType: org.apache.maven.plugin.jar.JarMojo
                    goalExecutionId: default-compile
                    goalProjectName: myproject
                    avoidanceOutcome: avoided_from_local_cache
                    duration: 5000
                    fingerprintingDuration: 5
                    avoidanceSavings: 6000
                  - goalName: compiler:compile
                    mojoType: org.apache.maven.plugin.jar.JarMojo
                    goalExecutionId: default-compile
                    goalProjectName: myproject2
                    avoidanceOutcome: avoided_from_remote_cache
                    duration: 3000
                    fingerprintingDuration: 3
                    avoidanceSavings: 4000
                goalFingerprintingSummary:
                  count: 1
                  serialDuration: 8
                avoidanceSavingsSummary:
                  total: 10000
                  ratio: 0.55556
                  localBuildCache: 6000
                  remoteBuildCache: 4000
                buildCaches:
                  local:
                    isEnabled: true
                    isDisabledDueToError: false
                  remote:
                    isEnabled: true
                    isPushEnabled: true
                    isDisabledDueToError: false
                  overhead:
                    uploading: 100
                    downloading: 200
                    packing: 50
                    unpacking: 25
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
        '503':
          $ref: '#/components/responses/NotReadyError'
  /api/build-cache/nodes/{name}:
    parameters:
      - in: path
        name: name
        schema:
          type: string
        required: true
        description: >-
          The name of the Build Cache Node. To select the Built-in Build Cache
          Node, use `Built-in` as name.
    get:
      operationId: GetBuildCacheNode
      summary: View the configuration of a Build Cache Node.
      description: >-
        View the enablement status and replication configuration of a Build
        Cache Node.
      tags:
        - BuildCache
        - GradleEnterprise
      responses:
        '200':
          description: The configuration of a Build Cache Node.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodeConfiguration'
              example:
                enabled: false
                replication:
                  source: parent-node-1
                  preemptive: true
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
    put:
      operationId: CreateOrUpdateBuildCacheNode
      summary: Create or update a Build Cache Node.
      description: >
        Create a new Build Cache Node in Gradle Enterprise or update the
        configuration of an existing one.

        The Built-in Build Cache Node cannot be named as the target of this
        operation.
      tags:
        - BuildCache
        - GradleEnterprise
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NodeConfiguration'
            example:
              enabled: false
              replication:
                source: parent-node-1
                preemptive: true
      responses:
        '200':
          description: >-
            The name referenced an existing Build Cache Node and that Build
            Cache Node’s configuration was updated successfully.
        '201':
          description: >-
            A new Build Cache Node was created with the configuration specified
            in the request.
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/NotFoundError'
  /api/build-cache/nodes/{name}/secret:
    parameters:
      - in: path
        name: name
        schema:
          type: string
        required: true
        description: The name of the Build Cache Node.
    post:
      operationId: RegenerateSecretOfBuildCacheNode
      summary: Regenerate the secret of a Build Cache Node.
      description: >
        Regenerates the secret associated with the named Build Cache Node. The
        old secret expires immediately, causing the Build Cache Node to

        disconnect from Gradle Enterprise. The Built-in Build Cache Node cannot
        be named as the target of this operation.
      tags:
        - BuildCache
        - GradleEnterprise
      responses:
        '200':
          description: >-
            The name referenced an existing Build Cache Node and that Build
            Cache Node's secret was regenerated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KeySecretPair'
              example:
                key: cvzxztkqkqxzc3vcruabpcr264
                secret: e5ag76yp6abcc5jbxusboca313
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
  /api/build-cache/nodes/{name}/purge:
    parameters:
      - in: path
        name: name
        schema:
          type: string
        required: true
        description: >-
          The name of the Build Cache Node. To select the Built-in Build Cache
          Node, use `Built-in` as name.
    post:
      operationId: InitiatePurgeOfBuildCacheNode
      summary: Deletes all entries from a Build Cache Node.
      description: >
        Triggers the deletion of all entries stored at the named Build Cache
        Node.
      tags:
        - BuildCache
        - GradleEnterprise
      responses:
        '202':
          description: Purging the Build Cache Node was successfully initiated.
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
        '503':
          $ref: '#/components/responses/NodeNotSignedInError'
components:
  securitySchemes:
    GradleEnterpriseAccessKey:
      type: http
      scheme: bearer
      bearerFormat: Bearer <<Gradle Enterprise Access Key>>
      description: >
        All requests require a Gradle Enterprise access key as a bearer token. 

        Given an access key of
        `l3an7wk3j4ze5v4mi7rvgjf2p7g44nvlswg4cpvdonjs7rzd4kmq`, the required
        header is `Authorization: Bearer
        l3an7wk3j4ze5v4mi7rvgjf2p7g44nvlswg4cpvdonjs7rzd4kmq`.


        Please consult the [Gradle Enterprise API User
        Manual](https://docs.gradle.com/api-manual#access_control) for guidance
        on how to provision access keys and check user permissions.
  responses:
    BadRequestError:
      description: The request cannot be fulfilled due to a problem.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ApiProblem'
          examples:
            BuildDeletedProblemResponse:
              $ref: '#/components/examples/BuildDeletedApiProblemExample'
            NonApplicableModelProblemResponse:
              $ref: '#/components/examples/NonApplicableModelApiProblemExample'
            RequestValidationApiProblemResponse:
              $ref: '#/components/examples/RequestValidationApiProblemExample'
    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'
    UnexpectedError:
      description: The server encountered an unexpected error.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ApiProblem'
          examples:
            UnexpectedErrorResponse:
              $ref: '#/components/examples/UnexpectedErrorApiProblemExample'
    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'
    NodeNotSignedInError:
      description: The node was not signed in with Gradle Enterprise.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ApiProblem'
          examples:
            NodeNotSignedInResponse:
              $ref: '#/components/examples/NodeNotSignedInProblemExample'
  schemas:
    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.
          x-nullable: true
    Build:
      type: object
      description: A build with basic attributes of a Build Scan.
      required:
        - id
        - availableAt
        - buildToolType
        - buildToolVersion
        - buildAgentVersion
      properties:
        id:
          type: string
          description: The Build Scan ID.
        availableAt:
          type: integer
          format: int64
          description: >-
            The time in milliseconds from the Epoch as of when the Build Scan
            has been received.
        buildToolType:
          type: string
          description: The build tool type used to capture the Build Scan.
        buildToolVersion:
          type: string
          description: The build tool version used.
        buildAgentVersion:
          type: string
          description: The build agent version used.
    Builds:
      type: array
      items:
        $ref: '#/components/schemas/Build'
      description: List of builds with basic attributes of a Build Scan.
    BuildQuery:
      type: object
      properties:
        availabilityWaitTimeoutSecs:
          type: integer
          minimum: 0
          description: >-
            The time in seconds the server should wait for ingestion before
            returning a wait timeout response.
    BuildAttributesValue:
      type: object
      description: A Build Scan value.
      required:
        - name
      properties:
        name:
          type: string
          description: The name of the Build Scan value.
        value:
          type: string
          description: >-
            The value of the Build Scan value. May be `null` if the Build Scan
            value is not set.
    BuildAttributesLink:
      type: object
      description: A Build Scan link.
      required:
        - label
        - url
      properties:
        label:
          type: string
          description: The label of the Build Scan link.
        url:
          type: string
          description: The url  of the Build Scan link.
    GradleGradleEnterpriseSettings:
      type: object
      description: Settings for Gradle Enterprise.
      properties:
        backgroundPublicationEnabled:
          type: boolean
          description: >-
            Whether background Build Scan publication was enabled for the build.
            May be `null` if Gradle version is < `5.0` or Gradle Enterprise
            Gradle plugin version is < `3.4`. See
            https://docs.gradle.com/enterprise/gradle-plugin/#configuring_background_uploading.
          x-nullable: true
        buildOutputCapturingEnabled:
          type: boolean
          description: >-
            Whether build logging output capturing was enabled for the build.
            May be `null` if Gradle version is < `5.0` or Gradle Enterprise
            Gradle plugin version is < `3.7`. See
            https://docs.gradle.com/enterprise/gradle-plugin/#capturing_build_and_test_outputs.
          x-nullable: true
        taskInputsFileCapturingEnabled:
          type: boolean
          description: >-
            Whether task input file snapshots capturing was enabled for the
            build. May be `null` if Gradle version is < `5.0` or Gradle
            Enterprise Gradle plugin version is < `2.1`. See
            https://docs.gradle.com/enterprise/gradle-plugin/#capturing_task_input_files.
          x-nullable: true
        testOutputCapturingEnabled:
          type: boolean
          description: >-
            Whether test logging output capturing was enabled for the build. May
            be `null` if Gradle version is < `5.0` or Gradle Enterprise Gradle
            plugin version is < `3.7`. See
            https://docs.gradle.com/enterprise/gradle-plugin/#capturing_build_and_test_outputs.
          x-nullable: true
    GradleBuildOptions:
      type: object
      description: Gradle build options for this build.
      required:
        - configurationOnDemandEnabled
        - continuousBuildEnabled
        - continueOnFailureEnabled
        - daemonEnabled
        - dryRunEnabled
        - maxNumberOfGradleWorkers
        - offlineModeEnabled
        - parallelProjectExecutionEnabled
        - refreshDependenciesEnabled
        - rerunTasksEnabled
      properties:
        buildCacheEnabled:
          type: boolean
          description: >-
            Whether the build cache was enabled for the build. May be `null` if
            Gradle version is < `3.1` or Gradle Enterprise Gradle plugin version
            is < `1.3`. See
            https://docs.gradle.org/current/javadoc/org/gradle/StartParameter.html#isBuildCacheEnabled--.
          x-nullable: true
        configurationCacheEnabled:
          type: boolean
          description: >-
            Whether the configuration cache was enabled for the build. May be
            `null` if Gradle version is < `6.6` or Gradle Enterprise Gradle
            plugin version is < `3.4`. See
            https://docs.gradle.org/current/userguide/configuration_cache.html.
          x-nullable: true
        configurationOnDemandEnabled:
          type: boolean
          description: >-
            Whether configuration on demand mode was enabled for the build. See
            https://docs.gradle.org/current/userguide/multi_project_configuration_and_execution.html#sec:configuration_on_demand.
        continuousBuildEnabled:
          type: boolean
          description: >-
            Whether continuous build mode was running for the build. See
            https://docs.gradle.org/current/userguide/command_line_interface.html#sec:continuous_build.
        continueOnFailureEnabled:
          type: boolean
          description: >-
            Whether continue on failure mode was set for the build. See
            https://docs.gradle.org/current/userguide/command_line_interface.html#sec:continue_build_on_failure.
        daemonEnabled:
          type: boolean
          description: >-
            Whether the build was run with the Gradle Daemon. See
            https://docs.gradle.org/current/userguide/gradle_daemon.html.
        dryRunEnabled:
          type: boolean
          description: >-
            Whether the dry run flag was set for the build. See
            https://docs.gradle.org/current/userguide/command_line_interface.html#sec:command_line_execution_options.
        fileSystemWatchingEnabled:
          type: boolean
          description: >-
            Whether file system watching was enabled for the build. May be
            `null` if Gradle version is < `6.6` or Gradle Enterprise Gradle
            plugin version is < `3.4`. See
            https://docs.gradle.org/current/userguide/gradle_daemon.html#sec:daemon_watch_fs.
          x-nullable: true
        maxNumberOfGradleWorkers:
          type: integer
          description: >-
            The maximum number of build workers used to run the build. See
            https://docs.gradle.org/current/userguide/command_line_interface.html#sec:command_line_performance.
        offlineModeEnabled:
          type: boolean
          description: >-
            Whether the offline mode was set for the build. See
            https://docs.gradle.org/current/userguide/dynamic_versions.html#sec:offline-mode.
        parallelProjectExecutionEnabled:
          type: boolean
          description: >-
            Whether parallel project execution was enabled for the build. See
            https://docs.gradle.org/current/userguide/multi_project_configuration_and_execution.html#sec:parallel_execution.
        refreshDependenciesEnabled:
          type: boolean
          description: >-
            Whether the build was set to refresh all dependencies in the
            dependency cache. See
            https://docs.gradle.org/current/userguide/dynamic_versions.html#sec:refreshing-dependencies.
        rerunTasksEnabled:
          type: boolean
          description: >-
            Whether the build was forced to run all the tasks, ignoring any
            up-to-date checks.
            https://docs.gradle.org/current/userguide/command_line_interface.html#sec:rerun_tasks.
    BuildAttributesEnvironment:
      type: object
      description: The environment where the build has been executed.
      required:
        - operatingSystem
        - numberOfCpuCores
        - jreVersion
        - jvmVersion
        - jvmMaxMemoryHeapSize
        - jvmLocale
      properties:
        username:
          type: string
          description: >-
            Operating system username of the build user. May be `null` if no
            username was captured.
          x-nullable: true
        operatingSystem:
          type: string
          description: Operating system of the build machine.
        numberOfCpuCores:
          type: integer
          description: Number of cores available to the build JVM.
        jreVersion:
          type: string
          description: Version of the Java runtime that executed the build.
        jvmVersion:
          type: string
          description: Version of the Java Virtual Machine that executed the build.
        jvmMaxMemoryHeapSize:
          type: integer
          format: int64
          description: Maximum heap memory available to the build JVM in bytes.
        jvmCharset:
          type: string
          description: >-
            The default charset of the JVM that executed the build. May be
            `null` if capturing was not possible.
          x-nullable: true
        jvmLocale:
          type: string
          description: The locale of the JVM that executed the build.
        publicHostname:
          type: string
          description: >-
            The hostname of the build machine, as seen on the network. May be
            `null` if capturing was not possible.
          x-nullable: true
        localHostname:
          type: string
          description: >-
            The hostname of the build machine, as specified by itself. May be
            `null` if capturing was not possible.
          x-nullable: true
        localIpAddresses:
          type: array
          items:
            type: string
          description: >-
            The local IP addresses of the build machine. May be `null` if
            capturing was not possible.
          x-nullable: true
    GradleAttributes:
      type: object
      description: The attributes of a Gradle Build Scan.
      required:
        - id
        - buildStartTime
        - buildDuration
        - gradleVersion
        - pluginVersion
        - requestedTasks
        - hasFailed
        - tags
        - values
        - links
        - gradleEnterpriseSettings
        - buildOptions
        - environment
      properties:
        id:
          type: string
          description: The Build Scan ID.
        buildStartTime:
          type: integer
          format: int64
          description: The time when the build started, as milliseconds since Epoch.
        buildDuration:
          type: integer
          format: int64
          description: The duration of the build, as milliseconds since Epoch.
        gradleVersion:
          type: string
          description: The Gradle version used.
        pluginVersion:
          type: string
          description: The Gradle Enterprise Gradle plugin version used.
        rootProjectName:
          type: string
          description: >-
            The root project name. May be `null` in case of very early build
            failure.
          x-nullable: true
        requestedTasks:
          type: array
          items:
            type: string
          description: The list of requested tasks.
        hasFailed:
          type: boolean
          description: True when the build failed, false otherwise.
        tags:
          type: array
          items:
            type: string
          description: The list of Build Scan tags.
        values:
          type: array
          items:
            $ref: '#/components/schemas/BuildAttributesValue'
          description: The list of Build Scan values.
        links:
          type: array
          items:
            $ref: '#/components/schemas/BuildAttributesLink'
          description: The list of Build Scan links.
        gradleEnterpriseSettings:
          $ref: '#/components/schemas/GradleGradleEnterpriseSettings'
        buildOptions:
          $ref: '#/components/schemas/GradleBuildOptions'
        environment:
          $ref: '#/components/schemas/BuildAttributesEnvironment'
    MavenGradleEnterpriseSettings:
      type: object
      description: Settings for Gradle Enterprise.
      properties:
        backgroundPublicationEnabled:
          type: boolean
          description: >-
            Whether background Build Scan publication was enabled for the build.
            May be `null` if Gradle Enterprise Maven extension version is <
            `1.6`. See
            https://docs.gradle.com/enterprise/maven-extension/#configuring_background_uploading.
          x-nullable: true
        buildOutputCapturingEnabled:
          type: boolean
          description: >-
            Whether to capture build logging output for the build. May be `null`
            if Gradle Enterprise Maven extension version is < `1.11`. See
            https://docs.gradle.com/enterprise/maven-extension/#capturing_build_and_test_outputs.
          x-nullable: true
        goalInputsFileCapturingEnabled:
          type: boolean
          description: >-
            Whether to capture goal input file snapshots for the build. May be
            `null` if Gradle Enterprise Maven extension version is < `1.1`. See
            https://docs.gradle.com/enterprise/maven-extension/#capturing_goal_input_files.
          x-nullable: true
        testOutputCapturingEnabled:
          type: boolean
          description: >-
            Whether to capture test logging output for the build. May be `null`
            if Gradle Enterprise Maven extension version is < `1.11`. See
            https://docs.gradle.com/enterprise/maven-extension/#capturing_build_and_test_outputs.
          x-nullable: true
    MavenBuildOptions:
      type: object
      description: Maven build options for this build.
      required:
        - errorsEnabled
        - maxNumberOfThreads
        - nonRecursiveEnabled
        - noSnapshotsUpdatesEnabled
        - offlineModeEnabled
        - updateSnapshotsEnabled
      properties:
        batchModeEnabled:
          type: boolean
          description: >-
            Whether the build was configured to run in non-interactive (batch)
            mode. May be `null` if capturing was not possible. See
            https://maven.apache.org/ref/current/maven-embedder/cli.html#batch-mode.
          x-nullable: true
        debugEnabled:
          type: boolean
          description: >-
            Whether the build was configured to produce execution debug output.
            May be `null` if capturing was not possible. See
            https://maven.apache.org/ref/current/maven-embedder/cli.html#debug.
          x-nullable: true
        errorsEnabled:
          type: boolean
          description: >-
            Whether the build was configured to produce execution error
            messages. See
            https://maven.apache.org/ref/current/maven-embedder/cli.html#errors.
        failAtEndEnabled:
          type: boolean
          description: >-
            Whether the build was configured to only fail at the end. May be
            `null` if capturing was not possible. See
            https://maven.apache.org/ref/current/maven-embedder/cli.html#fail-at-end.
          x-nullable: true
        failFastEnabled:
          type: boolean
          description: >-
            Whether the build was configured to fail at the first error. May be
            `null` if capturing was not possible. See
            https://maven.apache.org/ref/current/maven-embedder/cli.html#fail-fast.
          x-nullable: true
        failNeverEnabled:
          type: boolean
          description: >-
            Whether the build was configured to never fail, regardless of errors
            produced. May be `null` if capturing was not possible. See
            https://maven.apache.org/ref/current/maven-embedder/cli.html#fail-never.
          x-nullable: true
        laxChecksumsEnabled:
          type: boolean
          description: >-
            Whether the build was configured to only warn if checksums don't
            match. May be `null` if capturing was not possible. See
            https://maven.apache.org/ref/current/maven-embedder/cli.html#lax-checksums.
          x-nullable: true
        maxNumberOfThreads:
          type: integer
          description: >-
            Maximum number of threads used when executing the build. See
            https://cwiki.apache.org/confluence/display/MAVEN/Parallel+builds+in+Maven+3.
        nonRecursiveEnabled:
          type: boolean
          description: >-
            Whether the build was configured to not recurse into sub-projects.
            See
            https://maven.apache.org/ref/current/maven-embedder/cli.html#non-recursive.
        rerunGoals:
          type: boolean
          description: >-
            Whether the build was configured to rerun goals without checking the
            build cache. May be `null` if Gradle Enterprise Maven extension
            version is < `1.13`. See
            https://docs.gradle.com/enterprise/maven-extension/#rerunning_goals.
          x-nullable: true
        noSnapshotsUpdatesEnabled:
          type: boolean
          description: >-
            Whether the build was configured to suppress snapshot updates. See
            https://maven.apache.org/ref/current/maven-embedder/cli.html#no-snapshot-updates.
        offlineModeEnabled:
          type: boolean
          description: >-
            Whether the build was configured to run offline. See
            https://maven.apache.org/ref/current/maven-embedder/cli.html#offline.
        quietEnabled:
          type: boolean
          description: >-
            Whether the build was configured to run in quiet mode. May be `null`
            if capturing was not possible. See
            https://maven.apache.org/ref/current/maven-embedder/cli.html#quiet.
          x-nullable: true
        strictChecksumsEnabled:
          type: boolean
          description: >-
            Whether the build was configured to fail if checksums don't match.
            May be `null` if capturing was not possible. See
            https://maven.apache.org/ref/current/maven-embedder/cli.html#strict-checksums.
          x-nullable: true
        updateSnapshotsEnabled:
          type: boolean
          description: >-
            Whether the build was configured to force a check for missing
            releases and updated snapshots on remote repositories. See
            https://maven.apache.org/ref/current/maven-embedder/cli.html#update-snapshots.
    MavenAttributes:
      type: object
      description: The attributes of a Maven Build Scan.
      required:
        - id
        - buildStartTime
        - buildDuration
        - mavenVersion
        - extensionVersion
        - requestedGoals
        - hasFailed
        - tags
        - values
        - links
        - gradleEnterpriseSettings
        - buildOptions
        - environment
      properties:
        id:
          type: string
          description: The Build Scan ID.
        buildStartTime:
          type: integer
          format: int64
          description: The time when the build started, as milliseconds since Epoch.
        buildDuration:
          type: integer
          format: int64
          description: The duration of the build, as milliseconds since Epoch.
        mavenVersion:
          type: string
          description: The Maven version used.
        extensionVersion:
          type: string
          description: The Gradle Enterprise Maven extension version used.
        topLevelProjectName:
          type: string
          description: >-
            The top level project name. May be `null` in case of very early
            build failure.
          x-nullable: true
        requestedGoals:
          type: array
          items:
            type: string
          description: The list of requested goals.
        hasFailed:
          type: boolean
          description: True when the build failed, false otherwise.
        tags:
          type: array
          items:
            type: string
          description: The list of Build Scan tags.
        values:
          type: array
          items:
            $ref: '#/components/schemas/BuildAttributesValue'
          description: The list of Build Scan values.
        links:
          type: array
          items:
            $ref: '#/components/schemas/BuildAttributesLink'
          description: The list of Build Scan links.
        gradleEnterpriseSettings:
          $ref: '#/components/schemas/MavenGradleEnterpriseSettings'
        buildOptions:
          $ref: '#/components/schemas/MavenBuildOptions'
        environment:
          $ref: '#/components/schemas/BuildAttributesEnvironment'
    GradleBuildCachePerformanceTaskExecutionEntry:
      type: object
      required:
        - taskPath
        - taskType
        - avoidanceOutcome
        - duration
      properties:
        taskPath:
          type: string
          description: The full task path.
        taskType:
          type: string
          description: The fully qualified class name of the task.
        avoidanceOutcome:
          type: string
          enum:
            - avoided_up_to_date
            - avoided_from_local_cache
            - avoided_from_remote_cache
            - executed_cacheable
            - executed_not_cacheable
            - executed_unknown_cacheability
            - lifecycle
            - no-source
            - skipped
          description: |
            The avoidance outcome of this task with respect to performance:
              * `avoided_up_to_date` - Task whose execution was avoided due to build incrementalism
              * `avoided_from_local_cache` - Task whose execution was avoided due to reusing a local build cache entry
              * `avoided_from_remote_cache` - Task whose execution was avoided due to reusing a remote build cache entry
              * `executed_cacheable` - Task which was executed but was cacheable
              * `executed_not_cacheable` - Task which was executed but was not cacheable
              * `executed_unknown_cacheability` - Task which was executed and whose cacheability could not be determined
              * `lifecycle` - Lifecycle task
              * `no-source` - No-source task
              * `skipped` - Skipped task
        duration:
          type: integer
          format: int64
          description: The task duration in milliseconds.
        fingerprintingDuration:
          type: integer
          format: int64
          description: >-
            The task fingerprinting duration in milliseconds. This duration is
            part of the complete task execution duration. May be `null` if the
            task was not fingerprinted, or the information was not available.
          x-nullable: true
        avoidanceSavings:
          type: integer
          format: int64
          description: >-
            The task avoidance savings in milliseconds, which can be negative.
            Negative values indicate that it took more time to reuse outputs
            than it did to create them originally. May be `null` if the
            information was not available.
          x-nullable: true
        nonCacheabilityCategory:
          type: string
          enum:
            - build_cache_not_enabled
            - cache-if_condition_not_matched
            - disabled_to_ensure_correctness
            - do-not-cache-if_condition_matched
            - multiple_outputs_declared
            - no_outputs_declared
            - non_cacheable_inputs
            - non_cacheable_task_action
            - non_cacheable_task_implementation
            - non_cacheable_tree_output
            - overlapping_outputs
            - task_has_no_actions
            - task_output_caching_not_enabled
            - unknown
          description: >
            The category of the non-cacheability reason:
              * `build_cache_not_enabled` - Caching has not been enabled for the build
              * `cache-if_condition_not_matched` - Caching was disabled for the task via `org.gradle.api.tasks.TaskOutputs#cacheIf`
              * `disabled_to_ensure_correctness` - The task failed validation. Available since Gradle 7.0
              * `do-not-cache-if_condition_matched` - Caching was disabled for the task via `org.gradle.api.tasks.TaskOutputs#doNotCacheIf`
              * `multiple_outputs_declared` - The task declared multiple outputs
              * `no_outputs_declared` - The task had no outputs declared
              * `non_cacheable_inputs` - One of the task inputs was not cacheable, either because some type used as an input to the task was loaded via a custom classloader, or a Java lambda was used as an input. Available since Gradle 5.0 and before Gradle 7.5
              * `non_cacheable_task_action` - One of the task actions was not cacheable, either because it was loaded via a custom classloader, or a Java lambda was used to implement it. Available since Gradle 5.0 and before Gradle 7.5
              * `non_cacheable_task_implementation` - The task implementation was not cacheable, either because it was loaded via a custom classloader, or a Java lambda was used to implement it. Available since Gradle 5.0 and before Gradle 7.5
              * `non_cacheable_tree_output` - The task had a `org.gradle.api.file.FileTree` or a `org.gradle.api.internal.file.collections.DirectoryFileTree` as an output. Available since Gradle 5.0
              * `overlapping_outputs` - The tasks outputs overlapped with another task. As Gradle cannot safely determine which task each output file belongs to, it disabled caching            
              * `task_has_no_actions` - The task did not declare any actions
              * `task_output_caching_not_enabled` - Caching has not been enabled for the task
              * `unknown` - Reason for disabled caching was not known

            May be `null` when the task was cacheable or if the information was
            not available.
          x-nullable: true
        nonCacheabilityReason:
          type: string
          description: >-
            The human-readable reason for a non-cacheable task. May be `null`
            when the task was cacheable or if the information was not available.
          x-nullable: true
    GradleBuildCachePerformanceTaskExecution:
      type: array
      description: A list of executed tasks with performance related information.
      items:
        $ref: '#/components/schemas/GradleBuildCachePerformanceTaskExecutionEntry'
    GradleBuildCachePerformanceTaskFingerprintingSummary:
      type: object
      description: >-
        A summary of task fingerprinting. Fingerprinted tasks are part of the
        `taskExecution.avoidedTasks` or `taskExecution.executedTasks`, or
        `taskExecution.noSourceTasks` buckets. May be `null` if Gradle version
        is < `5.0` or Gradle Enterprise Gradle plugin version is < `2.1`.
      x-nullable: true
      required:
        - count
        - serialDuration
      properties:
        count:
          type: integer
          description: Count of fingerprinted tasks.
        serialDuration:
          type: integer
          format: int64
          description: >-
            Sum of all fingerprinting times of fingerprinted tasks in
            milliseconds.
    GradleBuildCachePerformanceAvoidanceSavingsSummary:
      type: object
      description: A breakdown of avoidance savings.
      required:
        - total
        - ratio
        - upToDate
        - localBuildCache
        - remoteBuildCache
      properties:
        total:
          type: integer
          format: int64
          description: >-
            The estimated reduction in serial execution time of the tasks due to
            their outputs being reused in milliseconds.
        ratio:
          type: number
          format: double
          description: >-
            The ratio of the total avoidance savings against the potential
            serial execution time (which is the actual serial execution time
            plus the total avoidance savings). Quantifies the effect of
            avoidance savings in this build. The bigger the ratio is, the more
            time was saved when running the build.
        upToDate:
          type: integer
          format: int64
          description: >-
            The estimated reduction in serial execution time of the tasks due to
            build incrementalism in milliseconds.
        localBuildCache:
          type: integer
          format: int64
          description: >-
            The estimated reduction in serial execution time of the tasks due to
            their outputs being reused from the local build cache in
            milliseconds.
        remoteBuildCache:
          type: integer
          format: int64
          description: >-
            The estimated reduction in serial execution time of the tasks due to
            their outputs being reused from the remote build cache in
            milliseconds.
    GradleBuildCachePerformanceBuildCacheLocalInfo:
      type: object
      description: Information about the local build cache used in the build.
      required:
        - isEnabled
        - isDisabledDueToError
      properties:
        isEnabled:
          type: boolean
          description: Whether the local build cache was enabled.
        isPushEnabled:
          type: boolean
          description: >-
            Whether pushing to the local build cache was enabled.  May be `null`
            if the local build cache is disabled.
          x-nullable: true
        isDisabledDueToError:
          type: boolean
          description: >-
            Whether the local cache was disabled due to an error occuring in
            loading or storing local build cache entries.
        directory:
          type: string
          description: >-
            Location of the local build cache. Can be relative or absolute
            depending on its value. May be `null` if the local build cache is
            disabled.
          x-nullable: true
    GradleBuildCachePerformanceBuildCacheRemoteInfo:
      type: object
      description: Information about the remote build cache used in the build.
      required:
        - isEnabled
        - isDisabledDueToError
      properties:
        type:
          type: string
          description: >-
            The type of the connector used to communicate with the remote build
            cache. May be `null` if the remote build cache is disabled.
          x-nullable: true
        className:
          type: string
          description: >-
            The class name of the connector. May be `null` if the remote build
            cache is disabled.
          x-nullable: true
        isEnabled:
          type: boolean
          description: Whether the remote build cache was enabled.
        isPushEnabled:
          type: boolean
          description: >-
            Whether pushing to the remote build cache was enabled. May be `null`
            if the remote build cache is disabled.
          x-nullable: true
        isDisabledDueToError:
          type: boolean
          description: >-
            Whether the remote build cache was disabled during the build due to
            an error occurring in loading or storing remote build cache entries.
        url:
          type: string
          description: >-
            URL of the remote build cache. May be `null` if the remote build
            cache is disabled.
          x-nullable: true
    GradleBuildCachePerformanceBuildCacheOverhead:
      type: object
      description: Information about the build cache overhead in this build.
      required:
        - uploading
        - downloading
        - packing
        - unpacking
      properties:
        uploading:
          type: integer
          format: int64
          description: Overhead of upload operations in milliseconds.
        downloading:
          type: integer
          format: int64
          description: Overhead of download operations in milliseconds.
        packing:
          type: integer
          format: int64
          description: Overhead of pack operations in milliseconds.
        unpacking:
          type: integer
          format: int64
          description: Overhead of unpack operations in milliseconds.
    GradleBuildCachePerformanceBuildCaches:
      type: object
      description: >-
        Information about the local and remote build caches used in the build.
        May be `null` if the build cache is globally disabled.
      x-nullable: true
      required:
        - local
        - remote
        - overhead
      properties:
        local:
          $ref: '#/components/schemas/GradleBuildCachePerformanceBuildCacheLocalInfo'
        remote:
          $ref: '#/components/schemas/GradleBuildCachePerformanceBuildCacheRemoteInfo'
        overhead:
          $ref: '#/components/schemas/GradleBuildCachePerformanceBuildCacheOverhead'
    GradleBuildCachePerformance:
      type: object
      description: The build cache performance of a Gradle Build Scan.
      required:
        - id
        - buildTime
        - effectiveTaskExecutionTime
        - serialTaskExecutionTime
        - serializationFactor
        - taskExecution
        - avoidanceSavingsSummary
      properties:
        id:
          type: string
          description: The Build Scan ID.
        buildTime:
          type: integer
          format: int64
          description: Wall clock duration of the build in milliseconds.
        effectiveTaskExecutionTime:
          type: integer
          format: int64
          description: >-
            Wall clock time spent executing tasks in milliseconds. It is the
            time spent between the start of the first task in the execution
            phase and the end of the last task of the execution phase, removing
            any interval where no task is being executed.
        serialTaskExecutionTime:
          type: integer
          format: int64
          description: >-
            Wall clock time of all task executions in milliseconds. It is the
            sum of all individual task durations.
        serializationFactor:
          type: number
          format: double
          description: >-
            The ratio of `serialTaskExecutionTime` over the
            `effectiveTaskExecutionTime`. Quantifies the effect of task
            parallelization. A value equal to `1` means that no parallelization
            occurred. A value greater than `1` means that tasks were executed
            faster due to parallelization.
        taskExecution:
          $ref: '#/components/schemas/GradleBuildCachePerformanceTaskExecution'
        taskFingerprintingSummary:
          $ref: >-
            #/components/schemas/GradleBuildCachePerformanceTaskFingerprintingSummary
        avoidanceSavingsSummary:
          $ref: >-
            #/components/schemas/GradleBuildCachePerformanceAvoidanceSavingsSummary
        buildCaches:
          $ref: '#/components/schemas/GradleBuildCachePerformanceBuildCaches'
    MavenBuildCachePerformanceGoalExecutionEntry:
      type: object
      required:
        - goalName
        - mojoType
        - goalExecutionId
        - goalProjectName
        - avoidanceOutcome
        - duration
      properties:
        goalName:
          type: string
          description: The goal name.
        mojoType:
          type: string
          description: >-
            The fully qualified class name of the Mojo that provides the
            implementation of this goal.
        goalExecutionId:
          type: string
          description: The goal execution ID.
        goalProjectName:
          type: string
          description: The goal project name.
        avoidanceOutcome:
          type: string
          enum:
            - avoided_from_local_cache
            - avoided_from_remote_cache
            - executed_cacheable
            - executed_not_cacheable
            - executed_unknown_cacheability
            - skipped
          description: |
            The avoidance outcome of this task with respect to performance:
              * `avoided_from_local_cache` - Goal whose execution was avoided due to reusing a local build cache entry
              * `avoided_from_remote_cache` - Goal whose execution was avoided due to reusing a remote build cache entry
              * `executed_cacheable` - Goal which was executed but was cacheable
              * `executed_not_cacheable` - Goal which was executed but was not cacheable
              * `executed_unknown_cacheability` - Goal which was executed and whose cacheability could not be determined
              * `skipped` - Skipped goal
        duration:
          type: integer
          format: int64
          description: The goal duration in milliseconds.
        fingerprintingDuration:
          type: integer
          format: int64
          description: >-
            The goal fingerprinting duration in milliseconds. This duration is
            part of the complete task execution duration. May be `null` if the
            goal was not fingerprinted.
          x-nullable: true
        avoidanceSavings:
          type: integer
          format: int64
          description: >-
            The goal avoidance savings in milliseconds, which can be negative.
            Negative values indicate that it took more time to reuse outputs
            than it did to create them originally. May be `null` if the
            information was not available.
          x-nullable: true
        nonCacheabilityCategory:
          type: string
          enum:
            - build_cache_disabled_by_user
            - goal_execution_marked_non_cacheable
            - goal_not_supported
            - no_gradle_enterprise_server_configured
            - non_clean_build
            - not_entitled
            - offline_build
            - unknown
            - unknown_entitlements
          description: >
            The category of the non-cacheability reason:
              * `build_cache_disabled_by_user` - The build cache was disabled by the user
              * `goal_execution_marked_non_cacheable` - The goal execution was marked as non-cacheable
              * `goal_not_supported` - The goal did not support build caching
              * `no_gradle_enterprise_server_configured` - No Gradle Enterprise server was configured
              * `non_clean_build` - The `clean` lifecycle was not executed 
              * `not_entitled` - The Gradle Enterprise license entitlements did not allow Maven build caching
              * `offline_build` - The build was run in offline mode
              * `unknown` - Reason for disabled caching was not known
              * `unknown_entitlements` - The Gradle Enterprise license entitlements could not be checked

            May be `null` when the goal execution was cacheable or if the
            information was not available.
          x-nullable: true
        nonCacheabilityReason:
          type: string
          description: >-
            The human-readable reason for a non-cacheable goal execution. May be
            `null` when the goal execution was cacheable or if the information
            was not available.
          x-nullable: true
    MavenBuildCachePerformanceGoalExecution:
      type: array
      description: A list of executed goals with performance related information.
      items:
        $ref: '#/components/schemas/MavenBuildCachePerformanceGoalExecutionEntry'
    MavenBuildCachePerformanceGoalFingerprintingSummary:
      type: object
      description: >-
        A summary of goal fingerprinting. Fingerprinted goals are part of the
        `goalExecution.avoidedGoals` or `goalExecution.executedGoals` buckets.
      required:
        - count
        - serialDuration
      properties:
        count:
          type: integer
          description: Count of fingerprinted goals.
        serialDuration:
          type: integer
          format: int64
          description: >-
            Sum of all fingerprinting times of fingerprinted goals in
            milliseconds.
    MavenBuildCachePerformanceAvoidanceSavingsSummary:
      type: object
      description: A breakdown of avoidance savings.
      required:
        - total
        - ratio
        - localBuildCache
        - remoteBuildCache
      properties:
        total:
          type: integer
          format: int64
          description: >-
            The estimated reduction in serial execution time of the goals due to
            their outputs being reused in milliseconds.
        ratio:
          type: number
          format: double
          description: >-
            The ratio of the total avoidance savings against the potential
            serial execution time (which is the actual serial execution time
            plus the total avoidance savings). Quantifies the effect of
            avoidance savings in this build. The bigger the ratio is, the more
            time was saved when running the build.
        localBuildCache:
          type: integer
          format: int64
          description: >-
            The estimated reduction in serial execution time of the goals due to
            their outputs being reused from the local build cache in
            milliseconds.
        remoteBuildCache:
          type: integer
          format: int64
          description: >-
            The estimated reduction in serial execution time of the goals due to
            their outputs being reused from the remote build cache in
            milliseconds.
    MavenBuildCachePerformanceBuildCacheLocalInfo:
      type: object
      description: >-
        Information about the local build cache used in the build, if it was
        configured in the build. May be `null` if the local build cache is not
        configured.
      x-nullable: true
      required:
        - isEnabled
        - isDisabledDueToError
      properties:
        isEnabled:
          type: boolean
          description: Whether the local build cache was enabled.
        isPushEnabled:
          type: boolean
          description: >-
            Whether pushing to the local build cache was enabled. May be `null`
            if the local build cache is disabled.
          x-nullable: true
        isDisabledDueToError:
          type: boolean
          description: >-
            Whether the local cache was disabled due to an error occurring in
            loading or storing local build cache entries.
        directory:
          type: string
          description: >-
            Location of the local build cache. Can be relative or absolute
            depending on its value. May be `null` if the local build cache is
            disabled.
          x-nullable: true
    MavenBuildCachePerformanceBuildCacheRemoteInfo:
      type: object
      description: >-
        Information about the remote build cache used in the build, if it was
        configured in the build. May be `null` if the remote build cache is not
        configured.
      x-nullable: true
      required:
        - isEnabled
        - isDisabledDueToError
      properties:
        isEnabled:
          type: boolean
          description: Whether the remote build cache was enabled.
        isPushEnabled:
          type: boolean
          description: >-
            Whether pushing to the remote build cache was enabled. May be `null`
            if the remote build cache is disabled.
          x-nullable: true
        isDisabledDueToError:
          type: boolean
          description: >-
            Whether the remote build cache was disabled during the build due to
            an error occurring in loading or storing remote build cache entries.
        url:
          type: string
          description: >-
            URL of the remote build cache. May be `null` if the remote build
            cache is disabled.
          x-nullable: true
    MavenBuildCachePerformanceBuildCacheOverhead:
      type: object
      description: Information about the build cache overhead in this build.
      required:
        - uploading
        - downloading
        - packing
        - unpacking
      properties:
        uploading:
          type: integer
          format: int64
          description: Overhead of upload operations in milliseconds.
        downloading:
          type: integer
          format: int64
          description: Overhead of download operations in milliseconds.
        packing:
          type: integer
          format: int64
          description: Overhead of pack operations in milliseconds.
        unpacking:
          type: integer
          format: int64
          description: Overhead of unpack operations in milliseconds.
    MavenBuildCachePerformanceBuildCaches:
      type: object
      description: >-
        Information about the local and remote build caches used in the build,
        if it was configured in the build. May be `null` if the build cache
        configuration could not be captured (e.g. very early build failure).
      x-nullable: true
      required:
        - overhead
      properties:
        local:
          $ref: '#/components/schemas/MavenBuildCachePerformanceBuildCacheLocalInfo'
        remote:
          $ref: '#/components/schemas/MavenBuildCachePerformanceBuildCacheRemoteInfo'
        overhead:
          $ref: '#/components/schemas/MavenBuildCachePerformanceBuildCacheOverhead'
    MavenBuildCachePerformance:
      type: object
      description: The build cache performance of a Maven Build Scan.
      required:
        - id
        - buildTime
        - effectiveProjectExecutionTime
        - serialProjectExecutionTime
        - serializationFactor
        - goalExecution
        - goalFingerprintingSummary
        - avoidanceSavingsSummary
      properties:
        id:
          type: string
          description: The Build Scan ID.
        buildTime:
          type: integer
          format: int64
          description: Wall clock duration of the build in milliseconds.
        effectiveProjectExecutionTime:
          type: integer
          format: int64
          description: >-
            Wall clock time spent executing projects in milliseconds. It is the
            time spent between the start of the first project execution and the
            end of the last project execution, removing any interval where no
            project is being executed.
        serialProjectExecutionTime:
          type: integer
          format: int64
          description: >-
            Wall clock time of all project executions in milliseconds. It is the
            sum of all individual project durations.
        serializationFactor:
          type: number
          format: double
          description: >-
            The ratio of `serialProjectExecutionTime` over the
            `effectiveProjectExecutionTime`. Quantifies the effect of project
            parallelization. A value equal to `1` means that no parallelization
            occurred. A value greater than `1` means that projects were executed
            faster due to parallelization.
        goalExecution:
          $ref: '#/components/schemas/MavenBuildCachePerformanceGoalExecution'
        goalFingerprintingSummary:
          $ref: >-
            #/components/schemas/MavenBuildCachePerformanceGoalFingerprintingSummary
        avoidanceSavingsSummary:
          $ref: >-
            #/components/schemas/MavenBuildCachePerformanceAvoidanceSavingsSummary
        buildCaches:
          $ref: '#/components/schemas/MavenBuildCachePerformanceBuildCaches'
    ReplicationConfiguration:
      description: >-
        Cached data replication configuration description. May be `null` if
        replication is not configured.
      type: object
      x-nullable: true
      required:
        - source
        - preemptive
      properties:
        source:
          type: string
          description: The name of the Build Cache Node which is the source of data.
        preemptive:
          type: boolean
          description: Indicates if preemptive replication is enabled from the source.
    NodeConfiguration:
      description: A Build Cache Node configuration description.
      type: object
      required:
        - enabled
      properties:
        enabled:
          type: boolean
          description: Indicates if the Build Cache Node is enabled.
        replication:
          $ref: '#/components/schemas/ReplicationConfiguration'
    KeySecretPair:
      description: A Build Cache Node key and secret pair.
      type: object
      required:
        - key
        - secret
      properties:
        key:
          type: string
          description: A unique identifier for the Build Cache Node in Gradle Enterprise.
        secret:
          type: string
          description: The secret associated with the Build Cache Node.
  examples:
    BuildDeletedApiProblemExample:
      value:
        type: urn:gradle:enterprise:api:problems:build-deleted
        title: Build deleted.
        detail: |
          Build 9r4d13f0r3v3r has been deleted and is no longer available.
        status: 400
    NonApplicableModelApiProblemExample:
      value:
        type: urn:gradle:enterprise:api:problems:build-model-not-applicable
        title: Build model is not applicable.
        detail: >
          Build model BuildCachePerformance is not available for build
          9r4d13f0r3v3r because the build agent version is not supported.
        status: 400
    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
    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
    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
    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
    NodeNotSignedInProblemExample:
      value:
        type: urn:gradle:enterprise:api:problems:node-not-signed-in
        title: >-
          Node with name not-signed-in-node1 must be signed-in before this
          operation can be performed.
        status: 503
tags:
  - name: Builds
    description: >
      Endpoints related to retrieving details of a Build Scan of the Gradle
      Enterprise instance. 

      To access these endpoints the user requires the `Access build data via the
      API` permission.
  - name: BuildCache
    x-displayName: Build Cache
    description: >
      Endpoints related to configuring the Build Cache nodes of the Gradle
      Enterprise instance. 

      To access these endpoints the user requires the `Configure build caches`
      permission.
  - name: GradleEnterprise
    x-traitTag: true
    description: All endpoints of the Gradle Enterprise API.
