Dependency-Track Projects API

Endpoints related to projects

Operations 2

POST /projects/{uuid}/clone Clones a given project #
GET /projects/{uuid}/components Retrieves a list of all components for a given project #

Documentation

Specifications

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/dependency-track/refs/heads/main/json-schema/dependency-track-component-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/dependency-track/refs/heads/main/json-schema/dependency-track-vulnerability-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/dependency-track/refs/heads/main/json-schema/dependency-track-project-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/dependency-track/refs/heads/main/json-schema/dependency-track-notification-rule-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/dependency-track/refs/heads/main/json-schema/dependency-track-portfolio-metrics-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/dependency-track/refs/heads/main/json-schema/dependency-track-project-metrics-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/dependency-track/refs/heads/main/json-schema/dependency-track-workload-identity-provider-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/dependency-track/refs/heads/main/json-schema/dependency-track-clone-project-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/dependency-track/refs/heads/main/json-schema/dependency-track-create-workload-identity-provider-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/dependency-track/refs/heads/main/json-schema/dependency-track-create-oauth-token-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/dependency-track/refs/heads/main/json-schema/dependency-track-create-component-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/dependency-track/refs/heads/main/json-schema/dependency-track-update-workload-identity-provider-request-schema.json

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/dependency-track:dependency-track-projects-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

dependency-track-projects-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Dependency Track Projects API
  version: 2.0.0
  contact:
    name: The Dependency-Track Authors
    url: https://github.com/DependencyTrack/dependency-track
    email: dependencytrack@owasp.org
  license:
    name: Apache-2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  description: 'Operations tagged Projects across 2 of this provider''s published API definitions: dependency-track-openapi-v2.yaml, dependency-track-v2-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: /api/v2
security:
- apiKeyAuth: []
- bearerAuth: []
tags:
- name: Projects
  description: Endpoints related to projects
paths:
  /projects/{uuid}/clone:
    post:
      tags:
      - Projects
      summary: Clones a given project
      description: Requires permission `PORTFOLIO_MANAGEMENT` or `PORTFOLIO_MANAGEMENT_CREATE`
      operationId: cloneProject
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to clone
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/clone-project-request'
      responses:
        '201':
          description: Project cloned
          headers:
            Location:
              description: URL of the cloned project
              schema:
                type: string
                format: uri
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clone-project-response'
        '401':
          $ref: '#/components/responses/generic-unauthorized-error'
        '403':
          $ref: '#/components/responses/generic-forbidden-error'
        '404':
          $ref: '#/components/responses/generic-not-found-error'
        '409':
          $ref: '#/components/responses/generic-conflict-error'
        default:
          $ref: '#/components/responses/generic-error'
    servers:
    - url: /api/v2
  /projects/{uuid}/components:
    get:
      tags:
      - Projects
      summary: Retrieves a list of all components for a given project
      description: 'Requires permission `VIEW_PORTFOLIO`


        ### Sortable fields


        Sorting is supported for the following fields:


        * `name`

        * `group`

        * `last_inherited_risk_score`

        * `package_artifact_metadata.published_at`


        Components without resolved artifact metadata, or whose upstream registry did not

        report a publication date, are placed at the end of the result for both sort

        directions when sorting by `package_artifact_metadata.published_at`.


        ### Expandable fields


        The following fields can be included via `expand`:


        * `metrics`

        * `package_metadata`

        * `package_artifact_metadata`

        * `occurrence_count`'
      operationId: listProjectComponents
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to retrieve components for
        required: true
        schema:
          type: string
          format: uuid
      - name: only_outdated
        in: query
        description: Optionally exclude recent components so only outdated components are returned
        schema:
          type: boolean
      - name: only_direct
        in: query
        description: Optionally exclude transitive dependencies so only direct dependencies are returned
        schema:
          type: boolean
      - name: q
        in: query
        description: Optional free-text search term. Matches components whose `group` or `name` contains the given value (case-insensitive).
        schema:
          type: string
      - name: expand
        in: query
        description: Optional fields to include in each component response item. Unknown values are silently ignored.
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: limit
        in: query
        description: Maximum number of items to retrieve from the collection
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 100
      - name: page_token
        in: query
        description: Opaque token pointing to a specific position in a collection
        schema:
          type: string
      - name: sort_direction
        in: query
        schema:
          $ref: '#/components/schemas/sort-direction'
      - name: sort_by
        in: query
        description: Field to sort by. Refer to the operation description for information about which fields are sortable.
        schema:
          maxLength: 255
          minLength: 1
          type: string
      responses:
        '200':
          description: A list of all components for a given project
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/list-project-components-response'
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/invalid-sort-field-problem-details'
                - $ref: '#/components/schemas/problem-details'
        '401':
          $ref: '#/components/responses/generic-unauthorized-error'
        '403':
          $ref: '#/components/responses/generic-forbidden-error'
        '404':
          $ref: '#/components/responses/generic-not-found-error'
        default:
          $ref: '#/components/responses/generic-error'
    servers:
    - url: /api/v2
components:
  schemas:
    paginated-response:
      required:
      - total
      type: object
      properties:
        next_page_token:
          type: string
          description: Token to retrieve the next page. Absent when no more items exist.
        total:
          $ref: '#/components/schemas/total-count'
      x-parent: true
    invalid-sort-field-problem-details:
      required:
      - invalid_field
      type: object
      properties:
        invalid_field:
          type: string
          description: Name of the field for which sorting is not supported.
        supported_fields:
          type: array
          description: 'Names of fields for which sorting is supported.

            When empty, sorting is explicitly *not* supported.

            When absent, sorting may be supported, but no definitive guarantees exist.

            Consult the operation''s description.'
          items:
            type: string
      allOf:
      - $ref: '#/components/schemas/problem-details'
    timestamp:
      type: integer
      description: Epoch timestamp in milliseconds since January 1, 1970 UTC.
      format: int64
      example: 1752209050377
    clone-project-include:
      type: string
      enum:
      - ACL
      - COMPONENTS
      - FINDINGS
      - FINDINGS_AUDIT_HISTORY
      - POLICY_VIOLATIONS
      - POLICY_VIOLATIONS_AUDIT_HISTORY
      - PROPERTIES
      - SERVICES
      - TAGS
    clone-project-request:
      required:
      - version
      type: object
      properties:
        version:
          minLength: 1
          type: string
          description: Version of the cloned project.
        version_is_latest:
          type: boolean
          description: Whether to mark the cloned project version as latest. If another version is already marked as latest, it will be atomically un-unmarked as part of the cloning operation.
          default: false
        includes:
          uniqueItems: true
          type: array
          description: "List of items to include in the clone:\n\n  * `ACL`: Include portfolio ACL definitions.\n  * `COMPONENTS`: Include components.\n  * `FINDINGS`: Include findings.\n      * Has no effect unless `COMPONENTS` is also included.\n  * `FINDINGS_AUDIT_HISTORY`: Include audit history of findings.\n      * Has no effect unless `FINDINGS` is also included.\n  * `POLICY_VIOLATIONS`: Include policy violations.\n      * Has no effect unless `COMPONENTS` is also included.\n  * `POLICY_VIOLATIONS_AUDIT_HISTORY`: Include audit history of policy violations.\n      * Has no effect unless `POLICY_VIOLATIONS` is also included.\n  * `PROPERTIES`: Include project properties.\n  * `SERVICES`: Include services.\n  * `TAGS`: Include project tags."
          items:
            $ref: '#/components/schemas/clone-project-include'
          default: []
    package-artifact-metadata:
      type: object
      properties:
        hashes:
          $ref: '#/components/schemas/hashes'
        published_at:
          description: When this artifact was published to the repository.
          allOf:
          - $ref: '#/components/schemas/timestamp'
        resolved_from:
          type:
          - string
          - 'null'
          description: Identifier of the repository from which artifact metadata was fetched.
        resolved_at:
          description: When artifact metadata was last resolved from the upstream repository.
          allOf:
          - $ref: '#/components/schemas/timestamp'
      description: 'Artifact-level metadata for the component''s exact version from configured package repositories. Only present when the component has a PURL with a version, the PURL type is supported by at least one configured repository, and artifact metadata has been successfully resolved from an upstream repository. Metadata resolution is asynchronous and runs in the background after a component is created or updated. This field may be absent for recently created components until resolution completes.

        '
    clone-project-response:
      required:
      - uuid
      type: object
      properties:
        uuid:
          type: string
          description: UUID of the cloned project.
          format: uuid
    sort-direction:
      type: string
      enum:
      - ASC
      - DESC
    package-metadata:
      required:
      - resolved_at
      type: object
      properties:
        latest_version:
          type:
          - string
          - 'null'
          description: 'Latest known version in the configured registries. Null when the resolver ran but returned no version.

            '
        latest_version_published_at:
          description: 'When the latest version was published. May be null even when latest_version is non-null, as some registries do not report publication dates.

            '
          allOf:
          - $ref: '#/components/schemas/timestamp'
        resolved_at:
          description: When package metadata was last resolved from the upstream repository.
          allOf:
          - $ref: '#/components/schemas/timestamp'
      description: 'Latest version information from configured package registries. Only present when the component has a PURL with a type supported by at least one configured repository, and metadata has been successfully resolved from an upstream repository. Metadata resolution is asynchronous and runs in the background after a component is created or updated. This field may be absent for recently created components until resolution completes.

        '
    total-count-type:
      type: string
      enum:
      - AT_LEAST
      - EXACT
    dependency-metrics:
      type: object
      properties:
        critical:
          type: integer
          format: int32
        high:
          type: integer
          format: int32
        medium:
          type: integer
          format: int32
        low:
          type: integer
          format: int32
        unassigned:
          type: integer
          format: int32
        kev:
          type: integer
          format: int32
        vulnerabilities:
          type: integer
          format: int32
        suppressed:
          type: integer
          format: int32
        inherited_risk_score:
          type: number
          format: double
        findings_total:
          type: integer
          format: int32
        findings_audited:
          type: integer
          format: int32
        findings_unaudited:
          type: integer
          format: int32
        policy_violations_fail:
          type: integer
          format: int32
        policy_violations_warn:
          type: integer
          format: int32
        policy_violations_info:
          type: integer
          format: int32
        policy_violations_total:
          type: integer
          format: int32
        policy_violations_audited:
          type: integer
          format: int32
        policy_violations_unaudited:
          type: integer
          format: int32
        policy_violations_security_total:
          type: integer
          format: int32
        policy_violations_security_audited:
          type: integer
          format: int32
        policy_violations_security_unaudited:
          type: integer
          format: int32
        policy_violations_license_total:
          type: integer
          format: int32
        policy_violations_license_audited:
          type: integer
          format: int32
        policy_violations_license_unaudited:
          type: integer
          format: int32
        policy_violations_operational_total:
          type: integer
          format: int32
        policy_violations_operational_audited:
          type: integer
          format: int32
        policy_violations_operational_unaudited:
          type: integer
          format: int32
    problem-details:
      required:
      - detail
      - title
      - type
      type: object
      properties:
        type:
          type: string
          description: A URI reference that identifies the problem type
          format: uri-reference
          default: about:blank
        status:
          maximum: 599
          minimum: 400
          type: integer
          description: HTTP status code generated by the origin server for this occurrence of the problem
          format: int32
          example: 500
        title:
          maxLength: 255
          type: string
          description: Short, human-readable summary of the problem type
        detail:
          maxLength: 1024
          type: string
          description: Human-readable explanation specific to this occurrence of the problem
        instance:
          type: string
          description: Reference URI that identifies the specific occurrence of the problem
          format: uri-reference
      description: An RFC 9457 problem object.
      externalDocs:
        url: https://www.rfc-editor.org/rfc/rfc9457.html
      x-parent: true
    hashes:
      type: object
      properties:
        sha1:
          maxLength: 40
          type: string
        sha256:
          maxLength: 64
          type: string
        sha384:
          maxLength: 96
          type: string
        sha512:
          maxLength: 128
          type: string
        sha3_256:
          maxLength: 64
          type: string
        sha3_384:
          maxLength: 96
          type: string
        sha3_512:
          maxLength: 128
          type: string
        blake2b_256:
          maxLength: 64
          type: string
        blake2b_384:
          maxLength: 96
          type: string
        blake2b_512:
          maxLength: 128
          type: string
        blake3:
          maxLength: 255
          type: string
        streebog_256:
          maxLength: 64
          type: string
        streebog_512:
          maxLength: 128
          type: string
        md5:
          maxLength: 32
          type: string
    scope:
      type: string
      enum:
      - REQUIRED
      - OPTIONAL
      - EXCLUDED
    license:
      type: object
      properties:
        name:
          maxLength: 255
          type: string
        license_id:
          maxLength: 255
          type: string
        uuid:
          type: string
          format: uuid
        osi_approved:
          type: boolean
        fsf_libre:
          type: boolean
        custom_license:
          type: boolean
    list-project-components-response:
      required:
      - items
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/list-project-components-response-item'
      allOf:
      - $ref: '#/components/schemas/paginated-response'
    total-count:
      required:
      - count
      - type
      type: object
      properties:
        count:
          minimum: 0
          type: integer
          description: The total number of records across all pages. Might be an exact count, or a lower bound. Refer to the `type` field for the applicable semantics.
          format: int64
        type:
          $ref: '#/components/schemas/total-count-type'
    list-project-components-response-item:
      required:
      - name
      - uuid
      type: object
      properties:
        name:
          maxLength: 255
          type: string
        version:
          maxLength: 255
          type: string
        group:
          maxLength: 255
          type: string
        classifier:
          maxLength: 255
          type: string
        hashes:
          $ref: '#/components/schemas/hashes'
        cpe:
          maxLength: 255
          type: string
        purl:
          maxLength: 1024
          type: string
        swid_tag_id:
          maxLength: 255
          type: string
        internal:
          type: boolean
        copyright:
          maxLength: 255
          type: string
        license:
          maxLength: 255
          type: string
        license_expression:
          maxLength: 255
          type: string
        license_url:
          maxLength: 255
          type: string
        resolved_license:
          $ref: '#/components/schemas/license'
        occurrence_count:
          minimum: 0
          type: integer
          format: int64
        scope:
          $ref: '#/components/schemas/scope'
        last_inherited_risk_score:
          type: number
          format: double
        uuid:
          type: string
          format: uuid
        metrics:
          $ref: '#/components/schemas/dependency-metrics'
        package_metadata:
          $ref: '#/components/schemas/package-metadata'
        package_artifact_metadata:
          $ref: '#/components/schemas/package-artifact-metadata'
  responses:
    generic-error:
      description: Unexpected error
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problem-details'
    generic-forbidden-error:
      description: Forbidden
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problem-details'
          example:
            type: about:blank
            status: 403
            title: Forbidden
            detail: Not permitted to access the requested resource.
    generic-conflict-error:
      description: Forbidden
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problem-details'
          example:
            type: about:blank
            status: 409
            title: Conflict
            detail: The resource already exists.
    generic-not-found-error:
      description: Not found
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problem-details'
          example:
            type: about:blank
            status: 404
            title: Not Found
            detail: The requested resource could not be found.
    generic-unauthorized-error:
      description: Unauthorized
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problem-details'
          example:
            type: about:blank
            status: 401
            title: Unauthorized
            detail: Not authorized to access the requested resource.
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      description: Authentication via API key.
      name: X-Api-Key
      in: header
    bearerAuth:
      type: http
      description: 'Authentication via opaque server-issued session token.

        Tokens are obtained from `POST /api/v1/user/login`,

        `POST /api/v1/user/oidc/login`, or `POST /api/v2/oauth/token`.'
      scheme: bearer
      bearerFormat: Opaque
x-refined-from:
- dependency-track-openapi-v2.yaml
- dependency-track-v2-openapi.yml