v2.0.0
OpenAPI 3.0.3

OWASP Dependency-Track (Server v5.2.0)

REST API of OWASP Dependency-Track

Pagination

This API implements token-based pagination. Collection responses have the following structure:

{
  "items": [...],
  "next_page_token": "abcdefg",
  "total": {
    "count": 100,
    "type": "EXACT"
  }
}

next_page_token is present when more items exist, and absent otherwise. To fetch the next page, pass it as the page_token query parameter.

To navigate backwards, clients should keep track of previous page tokens as they paginate through collections. The API does not provide backward navigation!

Collections that support sorting will only consider the sort_by and sort_direction query parameters for the request of the first page. For subsequent pages, sorting preferences are bound to the page token.

Page tokens are opaque strings. Clients should not try to interpret or generate them. Their format may change without notice.

The total object discloses how many items exist in the collection across all pages. Because counting is expensive, some collections that hold a lot of items may return partial counts (type AT_LEAST) instead of exact counts (type EXACT). Which type to expect is usually documented in the operation's description.

Sorting

Items in a collection can be sorted using the sort_by and sort_direction query parameters. Which fields are sortable is documented in the respective operation's description.

Note that if no sortable fields are documented for an operation, sorting is not supported at all.

Field expansion

Some collection endpoints support an expand query parameter. Passing an expand value includes optional fields in each response item that are omitted by default, typically because they are expensive to compute and only needed in specific contexts.

Valid expand values for an endpoint are listed in its operation description. Unknown values are silently ignored.

Errors

All error responses use the application/problem+json media type as defined in RFC 9457.

Example:

{
  "type": "about:blank",
  "status": 404,
  "title": "Resource Not Found",
  "detail": "No project with UUID 0976ef46-e4a0-4be4-8b0e-00e9d3625c1f exists"
}

A request that takes too long to complete is aborted and rejected with 504 Gateway Timeout. Any operation can time out, so operations do not document it individually.

Authentication

Two credential types are accepted:

  • API key via the X-Api-Key request header. API keys are long-lived and intended for machine-to-machine integrations.
  • Bearer token via the Authorization: Bearer <token> request header. Bearer tokens are short-lived, user-bound, and opaque server-issued session tokens.

Bearer tokens are obtained from one of the following endpoints:

  • POST /api/v1/user/login
  • POST /api/v1/user/oidc/login
  • POST /api/v2/oauth/token

API v2 does not yet provide its own login endpoints; users log in through the v1 endpoints above and then call v2 with the token.

Tokens are valid for 8 hours by default and cannot be refreshed. Clients must re-authenticate once a token expires.

Requests with missing or invalid credentials are rejected with 401 Unauthorized.

Authorization

Access is gated by named permissions. Operations document the permission(s) they require; operations without a documented permission requirement only require authentication.

When the Portfolio Access Control feature is enabled (disabled by default), project-scoped operations additionally enforce per-project access via team membership. The PORTFOLIO_ACCESS_CONTROL_BYPASS permission grants access to all projects regardless of team mappings. When the feature is disabled, all authenticated callers holding the required permission can access all projects.

Authenticated requests that lack the required permission, or that target a project the caller cannot access, are rejected with 403 Forbidden.

HTTP Methods

Method Semantics
GET Retrieve a resource
POST Create a new resource
PUT Update a resource
PATCH Partially update a resource
DELETE Delete a resource

Response Conventions

Create and update operations (POST, PUT, PATCH) do not return the full resource in the response. They return either no body, or only server-generated identifiers (e.g. a UUID). POST responses may include a Location header linking to the created resource.

Delete operations return 204 No Content with no body.

Deprecations

Operations may be removed or replaced over time. When a response carries the X-API-Deprecated: true header, the operation that produced it is deprecated and may be removed in a future release. Clients should check for this header on every response and surface it (e.g. via a log warning) so that operators are aware of upcoming breakages. The respective operation's description points out which alternative operation(s) to use.

Internal operations

Operations under the /internal path prefix expose system internals and are reserved for first-party use. They are not part of the stable v2 API contract and may change or be removed without notice. Third-party clients should not depend on them.

Client-Bibliotheken

Components

​

Endpoints related to components

Components Operationen

List all components

​

Retrieves a list of all components matching the provided filter criteria.

Text filters are case-insensitive.

Sortable fields

Sorting is supported for the following fields:

  • name
  • group
  • last_inherited_risk_score

Expandable fields

The following fields can be included via expand:

  • metrics
  • package_metadata
  • package_artifact_metadata

Requires permission VIEW_PORTFOLIO

Query-Parameter

  • Filter by group (substring match)

  • Filter by name (substring match)

  • Filter by version (substring match)

  • Filter by PURL (prefix match).

    Must be a valid PURL, with at least pkg:<ecosystem>/<name> populated.

  • Filter by CPE (exact match).

    Must be a valid CPE.

  • Filter by SWID Tag ID (substring match)

  • The hash type to filter by

    Werte
    • MD5
    • SHA1
    • SHA_256
    • SHA_384
    • SHA_512
    • SHA3_256
    • SHA3_384
    • SHA3_512
  • Filter by hash value (exact match).

    Requires hash_type to be set.

  • Filter by package artifact publish date (inclusive lower bound).

    Note that components without resolved package artifact metadata, or whose upstream repository did not report a publication date, are excluded whenever package_artifact_published_since or package_artifact_published_before is set.

    Epoch timestamp in milliseconds since January 1, 1970 UTC.

  • Filter by package artifact publish date (exclusive upper bound).

    Epoch timestamp in milliseconds since January 1, 1970 UTC.

  • Filter by the state of the project that the component belongs to.

    Omit to include components from projects in any state.

  • Filter by whether the project the component belongs to is flagged as the latest version.

    When true, only components from latest-version projects are returned. When false, only components from non-latest projects are returned. Omit to include components regardless of the flag.

  • Optional fields to include in each component response item. Unknown values are silently ignored.

  • Maximum number of items to retrieve from the collection

  • Opaque token pointing to a specific position in a collection

  • Field to sort by. Refer to the operation description for information about which fields are sortable.

Antworten

  • application/json
  • application/problem+json
  • application/problem+json
  • application/problem+json
  • application/problem+json
Request Example for get/components
curl '/components?package_artifact_published_since=1752209050377&package_artifact_published_before=1752209050377&limit=100' \
  --header 'X-Api-Key: YOUR_SECRET_TOKEN'
{
  "items": [
    {
      "name": "string",
      "version": "string",
      "group": "string",
      "classifier": "string",
      "scope": "REQUIRED",
      "hashes": {
        "sha1": "string",
        "sha256": "string",
        "sha384": "string",
        "sha512": "string",
        "sha3_256": "string",
        "sha3_384": "string",
        "sha3_512": "string",
        "blake2b_256": "string",
        "blake2b_384": "string",
        "blake2b_512": "string",
        "blake3": "string",
        "streebog_256": "string",
        "streebog_512": "string",
        "md5": "string"
      },
      "cpe": "string",
      "purl": "string",
      "swid_tag_id": "string",
      "internal": true,
      "copyright": "string",
      "license": "string",
      "license_expression": "string",
      "license_url": "string",
      "resolved_license": {
        "name": "string",
        "license_id": "string",
        "uuid": "123e4567-e89b-12d3-a456-426614174000",
        "osi_approved": true,
        "fsf_libre": true,
        "custom_license": true
      },
      "last_inherited_risk_score": 1,
      "uuid": "123e4567-e89b-12d3-a456-426614174000",
      "project": {
        "name": "string",
        "version": "string",
        "uuid": "123e4567-e89b-12d3-a456-426614174000"
      },
      "metrics": {
        "critical": 1,
        "high": 1,
        "medium": 1,
        "low": 1,
        "unassigned": 1,
        "kev": 1,
        "vulnerabilities": 1,
        "suppressed": 1,
        "inherited_risk_score": 1,
        "findings_total": 1,
        "findings_audited": 1,
        "findings_unaudited": 1,
        "policy_violations_fail": 1,
        "policy_violations_warn": 1,
        "policy_violations_info": 1,
        "policy_violations_total": 1,
        "policy_violations_audited": 1,
        "policy_violations_unaudited": 1,
        "policy_violations_security_total": 1,
        "policy_violations_security_audited": 1,
        "policy_violations_security_unaudited": 1,
        "policy_violations_license_total": 1,
        "policy_violations_license_audited": 1,
        "policy_violations_license_unaudited": 1,
        "policy_violations_operational_total": 1,
        "policy_violations_operational_audited": 1,
        "policy_violations_operational_unaudited": 1
      },
      "package_metadata": {
        "latest_version": null,
        "latest_version_published_at": 1752209050377,
        "resolved_at": 1752209050377
      },
      "package_artifact_metadata": {
        "hashes": {
          "sha1": "string",
          "sha256": "string",
          "sha384": "string",
          "sha512": "string",
          "sha3_256": "string",
          "sha3_384": "string",
          "sha3_512": "string",
          "blake2b_256": "string",
          "blake2b_384": "string",
          "blake2b_512": "string",
          "blake3": "string",
          "streebog_256": "string",
          "streebog_512": "string",
          "md5": "string"
        },
        "published_at": 1752209050377,
        "resolved_from": null,
        "resolved_at": 1752209050377
      }
    }
  ],
  "next_page_token": "string",
  "total": {
    "count": 0,
    "type": "AT_LEAST"
  }
}

Creates a new component for the project

​

Requires permission PORTFOLIO_MANAGEMENT or PORTFOLIO_MANAGEMENT_UPDATE

Body·

erforderlich
application/json
  • Eigenschaften: 3
  • Werte
    • APPLICATION
    • FRAMEWORK
    • LIBRARY
    • CONTAINER
    • OPERATING_SYSTEM
    • DEVICE
    • FIRMWARE
    • FILE
  • Eigenschaften: 14

Antworten

  • application/problem+json
  • application/problem+json
  • application/problem+json
  • application/problem+json
  • application/problem+json
Request Example for post/components
curl /components \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'X-Api-Key: YOUR_SECRET_TOKEN' \
  --data '{
  "project_uuid": "",
  "name": "",
  "description": "",
  "group": "",
  "version": "",
  "classifier": "APPLICATION",
  "filename": "",
  "extension": "",
  "hashes": {
    "sha1": "",
    "sha256": "",
    "sha384": "",
    "sha512": "",
    "sha3_256": "",
    "sha3_384": "",
    "sha3_512": "",
    "blake2b_256": "",
    "blake2b_384": "",
    "blake2b_512": "",
    "blake3": "",
    "streebog_256": "",
    "streebog_512": "",
    "md5": ""
  },
  "cpe": "",
  "publisher": "",
  "supplier": {
    "name": "",
    "urls": [
      ""
    ],
    "contacts": [
      {
        "name": "",
        "email": "",
        "phone": ""
      }
    ]
  },
  "authors": [
    {
      "name": "",
      "email": "",
      "phone": ""
    }
  ],
  "purl": "",
  "swid_tag_id": "",
  "internal": true,
  "copyright": "",
  "license": "",
  "license_expression": "",
  "license_url": "",
  "notes": ""
}'
Kein Body

Kev Data Sources (Eingeklappt)

​

Endpoints related to KEV data sources

OAuth (Eingeklappt)

​

Endpoints related to OAuth 2.0 token issuance

OAuth Operationen

Projects (Eingeklappt)

​

Endpoints related to projects

Secrets (Eingeklappt)

​

System Capabilities (Eingeklappt)

​

Endpoints exposing the capabilities of the running server

System Capabilities Operationen

Task Queues (Eingeklappt)

​

Endpoints related to task queue management

Vuln Data Sources (Eingeklappt)

​

Endpoints related to vulnerability data sources

Vulns (Eingeklappt)

​

Endpoints related to vulnerabilities

Workflows (Eingeklappt)

​

Workload Identity Providers (Eingeklappt)

​

Modelle

v1.0.0
OpenAPI 3.0.1

OWASP Dependency-Track (Server v5.2.0)

REST API of OWASP Dependency-Track

Note: This API version is in maintenance mode and will be superseded by v2, available under /api/v2, which follows a spec-first approach. New operations will be added there.

This specification is generated and may not always accurately reflect the actual response content of every operation. When in doubt, treat observed runtime behavior as authoritative.

Authentication

Two credential types are accepted:

  • API key via the X-Api-Key request header. API keys are long-lived and intended for machine-to-machine integrations.
  • Bearer token via the Authorization: Bearer <token> request header. Bearer tokens are short-lived, user-bound, and opaque server-issued session tokens.

Bearer tokens are obtained from one of the following endpoints:

  • POST /api/v1/user/login
  • POST /api/v1/user/oidc/login

Tokens are valid for 8 hours by default and cannot be refreshed. Clients must re-authenticate once a token expires.

Requests with missing or invalid credentials are rejected with 401 Unauthorized.

Authorization

Access is gated by named permissions. Operations document the permission(s) they require; operations without a documented permission requirement only require authentication.

When the Portfolio Access Control feature is enabled (disabled by default), project-scoped operations additionally enforce per-project access via team membership. The PORTFOLIO_ACCESS_CONTROL_BYPASS permission grants access to all projects regardless of team mappings. When the feature is disabled, all authenticated callers holding the required permission can access all projects.

Authenticated requests that lack the required permission, or that target a project the caller cannot access, are rejected with 403 Forbidden.

Pagination

Collection endpoints support page-based pagination via the following query parameters:

Parameter Description Default
pageNumber The page to retrieve (1-based). 1
pageSize The maximum number of items per page. 100

The total number of items in the collection across all pages is returned in the X-Total-Count response header.

Bounded total counts

An exact X-Total-Count gets more expensive as a collection grows, and on large collections it can time out. Some endpoints therefore accept an optional totalCount query parameter that caps the cost of counting:

totalCount Description
EXACT Count every matching item. The default. Can time out.
BOUNDED Stop counting at a server-side cap. May return only a lower bound.

Any other value is rejected with 400. Each endpoint documents how it computes the bounded count, on its totalCount parameter.

Endpoints that accept totalCount also return an X-Total-Count-Type header saying how to read X-Total-Count. They return it on every collection response, including ones that did not opt in.

X-Total-Count-Type Meaning
EXACT X-Total-Count is the true total.
AT_LEAST X-Total-Count is only a lower bound. The true total may be higher.

HTTP Methods

Method Semantics
GET Retrieve a resource.
PUT Create a new resource.
POST Update an existing resource.
DELETE Delete a resource.

Note that the use of PUT for create and POST for update is the inverse of the convention followed by most other REST APIs, including API v2.

Response Conventions

Create (PUT) and update (POST) operations typically return the full resource representation in the response body, with status 201 Created and 200 OK respectively.

Delete (DELETE) operations typically return 204 No Content.

Timeouts

A request that takes too long to complete is aborted and answered with 504 Gateway Timeout and a problem details body. Any operation can time out, so operations do not document it individually.

Requesting a bounded total count can avoid the timeout where the operation supports it, because counting is often the expensive part.

Deprecations

Operations may be removed or replaced over time. When a response carries the X-API-Deprecated: true header, the operation that produced it is deprecated and may be removed in a future release. Clients should check for this header on every response and surface it (e.g. via a log warning) so that operators are aware of upcoming breakages. The respective operation's description points out which alternative operation(s) to use.

Client-Bibliotheken

acl

​

Adds an ACL mapping

​

Requires permission ACCESS_MANAGEMENT

Body·

application/json

Antworten

  • application/json
  • Unauthorized

  • application/problem+json
  • application/problem+json
Request Example for put/v1/acl/mapping
curl /v1/acl/mapping \
  --request PUT \
  --header 'Content-Type: application/json' \
  --header 'X-Api-Key: YOUR_SECRET_TOKEN' \
  --data '{
  "project": "",
  "team": ""
}'
{
  "project": "string",
  "team": "string"
}

Removes an ACL mapping

​

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_DELETE

Pfadparameter

  • The UUID of the team to delete the mapping for

  • The UUID of the project to delete the mapping for

Antworten

  • Mapping removed successfully

  • Unauthorized

  • application/problem+json
Request Example for delete/v1/acl/mapping/team/{teamUuid}/project/{projectUuid}
curl /v1/acl/mapping/team/123e4567-e89b-12d3-a456-426614174000/project/123e4567-e89b-12d3-a456-426614174000 \
  --request DELETE \
  --header 'X-Api-Key: YOUR_SECRET_TOKEN'
Kein Body

Returns the projects assigned to the specified team

​

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_READ

Pfadparameter

  • The UUID of the team to retrieve mappings for

Query-Parameter

  • The page to return. To be used in conjunction with pageSize.

  • Number of elements to return per page. To be used in conjunction with pageNumber.

  • Offset to start returning elements from. To be used in conjunction with limit.

  • Number of elements to return per page. To be used in conjunction with offset.

  • Name of the resource field to sort on.

  • Ordering of items when sorting with sortName.

  • Optionally excludes inactive projects from being returned

  • Optionally excludes children projects from being returned

Antworten

  • application/json
  • Unauthorized

  • The UUID of the team could not be found

Request Example for get/v1/acl/team/{uuid}
curl '/v1/acl/team/123e4567-e89b-12d3-a456-426614174000?pageNumber=1&pageSize=100' \
  --header 'X-Api-Key: YOUR_SECRET_TOKEN'
[
{
"active": true,
"authors": [
{
"email": "string",
"name": "string",
"phone": "string"
}
],

analysis (Eingeklappt)

​

calculator (Eingeklappt)

​

componentProperty (Eingeklappt)

​

cwe (Eingeklappt)

​

dependencyGraph (Eingeklappt)

​

event (Eingeklappt)

​

ldap (Eingeklappt)

​

policyCondition (Eingeklappt)

​

projectProperty (Eingeklappt)

​

vex (Eingeklappt)

​

violation (Eingeklappt)

​

violationanalysis (Eingeklappt)

​

version (Eingeklappt)

​
version Operationen

Modelle