openapi: 3.0.1
info:
  contact:
    name: The Dependency-Track Authors
    url: https://github.com/DependencyTrack/dependency-track
  description: |-
    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.

    ## 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`.

    ## 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.
  license:
    name: Apache-2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  title: OWASP Dependency-Track
  version: 1.0.0
servers:
- url: /api
paths:
  /v1/acl/mapping:
    put:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: addMapping
      requestBody:
        content:
          '*/*':
            schema:
              $ref: "#/components/schemas/AclMappingRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AclMappingRequest"
          description: Mapping created successfully
        "401":
          description: Unauthorized
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Team or project could not be found
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: A mapping with the same team and project already exists
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Adds an ACL mapping
      tags:
      - acl
  /v1/acl/mapping/team/{teamUuid}/project/{projectUuid}:
    delete:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_DELETE</strong></p>
      operationId: deleteMapping
      parameters:
      - description: The UUID of the team to delete the mapping for
        in: path
        name: teamUuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The UUID of the project to delete the mapping for
        in: path
        name: projectUuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Mapping removed successfully
        "401":
          description: Unauthorized
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Team or project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Removes an ACL mapping
      tags:
      - acl
  /v1/acl/team/{uuid}:
    get:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_READ</strong></p>
      operationId: retrieveProjects
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: The UUID of the team to retrieve mappings for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: Optionally excludes inactive projects from being returned
        in: query
        name: excludeInactive
        schema:
          type: boolean
      - description: Optionally excludes children projects from being returned
        in: query
        name: onlyRoot
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ListProjectsResponseItem"
          description: Projects assigned to the specified team
          headers:
            X-Total-Count:
              description: The total number of projects
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns the projects assigned to the specified team
      tags:
      - acl
  /v1/analysis:
    get:
      description: <p>Requires permission <strong>VIEW_VULNERABILITY</strong></p>
      operationId: retrieveAnalysis
      parameters:
      - description: The UUID of the project
        in: query
        name: project
        schema:
          type: string
          format: uuid
      - description: The UUID of the component
        in: query
        name: component
        required: true
        schema:
          type: string
          format: uuid
      - description: The UUID of the vulnerability
        in: query
        name: vulnerability
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Analysis"
          description: An analysis trail
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: "The project, component, or vulnerability could not be found"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Retrieves an analysis trail
      tags:
      - analysis
    put:
      description: <p>Requires permission <strong>VULNERABILITY_ANALYSIS</strong></strong>
        or <strong>VULNERABILITY_ANALYSIS_UPDATE</strong></p>
      operationId: updateAnalysis
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AnalysisRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Analysis"
          description: The created analysis
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: "The project, component, or vulnerability could not be found"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Records an analysis decision
      tags:
      - analysis
  /v1/badge/violations/project/{name}/{version}:
    get:
      operationId: getProjectPolicyViolationsBadge_1
      parameters:
      - description: The name of the project to query on
        in: path
        name: name
        required: true
        schema:
          type: string
      - description: The version of the project to query on
        in: path
        name: version
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            image/svg+xml:
              schema:
                type: string
          description: A badge displaying current policy violation metrics of a project
            in SVG format
        "403":
          description: Badges are disabled
        "404":
          description: The project could not be found
      summary: Returns a policy violations badge for a specific project
      tags:
      - badge
  /v1/badge/violations/project/{uuid}:
    get:
      operationId: getProjectPolicyViolationsBadge
      parameters:
      - description: The UUID of the project to retrieve a badge for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            image/svg+xml:
              schema:
                type: string
          description: A badge displaying current policy violation metrics of a project
            in SVG format
        "403":
          description: Badges are disabled
        "404":
          description: The project could not be found
      summary: Returns a policy violations badge for a specific project
      tags:
      - badge
  /v1/badge/vulns/project/{name}/{version}:
    get:
      operationId: getProjectVulnerabilitiesBadge_1
      parameters:
      - description: The name of the project to query on
        in: path
        name: name
        required: true
        schema:
          type: string
      - description: The version of the project to query on
        in: path
        name: version
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            image/svg+xml:
              schema:
                type: string
          description: A badge displaying current vulnerability metrics for a project
            in SVG format
        "403":
          description: Badges are disabled
        "404":
          description: The project could not be found
      summary: Returns current metrics for a specific project
      tags:
      - badge
  /v1/badge/vulns/project/{uuid}:
    get:
      operationId: getProjectVulnerabilitiesBadge
      parameters:
      - description: The UUID of the project to retrieve metrics for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            image/svg+xml:
              schema:
                type: string
          description: A badge displaying current vulnerability metrics for a project
            in SVG format
        "403":
          description: Badges are disabled
        "404":
          description: The project could not be found
      summary: Returns current metrics for a specific project
      tags:
      - badge
  /v1/bom:
    post:
      description: |-
        <p>
          Expects CycloneDX and a valid project UUID. If a UUID is not specified,
          then the <code>projectName</code> and <code>projectVersion</code> must be specified.
          Optionally, if <code>autoCreate</code> is specified and <code>true</code> and the project does not exist,
          the project will be created. In this scenario, the principal making the request will
          additionally need the <strong>PORTFOLIO_MANAGEMENT</strong>, <strong>PORTFOLIO_MANAGEMENT_CREATE</strong>,
          or <strong>PROJECT_CREATION_UPLOAD</strong> permission.
        </p>
        <p>
          MediaType supported for BOM artifact is 'application/xml' or 'application/json'.
          The BOM will be validated against the CycloneDX schema. If schema validation fails,
          a response with problem details in RFC 9457 format will be returned. In this case,
          the response's content type will be <code>application/problem+json</code>.
        </p>
        <p>Requires permission <strong>BOM_UPLOAD</strong></p>
      operationId: UploadBom
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                autoCreate:
                  type: boolean
                  default: false
                bom:
                  type: string
                isLatest:
                  type: boolean
                  default: false
                parentName:
                  type: string
                parentUUID:
                  type: string
                parentVersion:
                  type: string
                project:
                  type: string
                projectName:
                  type: string
                projectTags:
                  type: string
                projectVersion:
                  type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BomUploadResponse"
          description: Token to be used for checking BOM processing progress
        "400":
          description: The uploaded BOM is invalid
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Upload a supported bill of material format document
      tags:
      - bom
    put:
      description: |-
        <p>
          Expects CycloneDX and a valid project UUID. If a UUID is not specified,
          then the <code>projectName</code> and <code>projectVersion</code> must be specified.
          Optionally, if <code>autoCreate</code> is specified and <code>true</code> and the project does not exist,
          the project will be created. In this scenario, the principal making the request will
          additionally need the <strong>PORTFOLIO_MANAGEMENT</strong>, <strong>PORTFOLIO_MANAGEMENT_CREATE</strong>,
          or <strong>PROJECT_CREATION_UPLOAD</strong> permission.
        </p>
        <p>
          The BOM will be validated against the CycloneDX schema. If schema validation fails,
          a response with problem details in RFC 9457 format will be returned. In this case,
          the response's content type will be <code>application/problem+json</code>.
        </p>
        <p>
          The maximum allowed length of the <code>bom</code> value is 20'000'000 characters.
          When uploading large BOMs, the <code>POST</code> endpoint is preferred,
          as it does not have this limit.
        </p>
        <p>Requires permission <strong>BOM_UPLOAD</strong></p>
      operationId: UploadBomBase64Encoded
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/BomSubmitRequest"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BomUploadResponse"
          description: Token to be used for checking BOM processing progress
        "400":
          description: The uploaded BOM is invalid
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Upload a supported bill of material format document
      tags:
      - bom
  /v1/bom/cyclonedx/component/{uuid}:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: exportComponentAsCycloneDx
      parameters:
      - description: The UUID of the component to export
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The format to output (defaults to JSON)
        in: query
        name: format
        schema:
          type: string
      - description: "The CycloneDX Spec variant exported (defaults to: '1.5')"
        in: query
        name: version
        schema:
          type: string
      responses:
        "200":
          content:
            application/vnd.cyclonedx+json:
              schema:
                type: string
            application/vnd.cyclonedx+xml:
              schema:
                type: string
          description: Dependency metadata for a specific component in CycloneDX format
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns dependency metadata for a specific component in CycloneDX format
      tags:
      - bom
  /v1/bom/cyclonedx/project/{uuid}:
    get:
      description: |
        <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
        <p>
          The <code>withVulnerabilities</code> and <code>vdr</code> variants
          further require any of the following permissions:
          <ul>
            <li><strong>VIEW_VULNERABILITY</strong></li>
            <li><strong>VULNERABILITY_ANALYSIS</strong></li>
            <li><strong>VULNERABILITY_ANALYSIS_READ</strong></li>
          </ul>
        </p>
      operationId: exportProjectAsCycloneDx
      parameters:
      - description: The UUID of the project to export
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The format to output (defaults to JSON)
        in: query
        name: format
        schema:
          type: string
      - description: Specifies the CycloneDX variant to export. Value options are
          'inventory' and 'withVulnerabilities'. (defaults to 'inventory')
        in: query
        name: variant
        schema:
          type: string
      - description: Force the resulting BOM to be downloaded as a file (defaults
          to 'false')
        in: query
        name: download
        schema:
          type: boolean
      - description: "The CycloneDX Spec variant exported (defaults to: '1.5')"
        in: query
        name: version
        schema:
          type: string
      responses:
        "200":
          content:
            application/octet-stream:
              schema:
                type: string
            application/vnd.cyclonedx+json:
              schema:
                type: string
            application/vnd.cyclonedx+xml:
              schema:
                type: string
          description: Dependency metadata for a project in CycloneDX format
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns dependency metadata for a project in CycloneDX format
      tags:
      - bom
  /v1/bom/token/{uuid}:
    get:
      deprecated: true
      description: |-
        <p>
          This endpoint is intended to be used in conjunction with uploading a supported BOM document.
          Upon upload, a token will be returned. The token can then be queried using this endpoint to
          determine if any tasks (such as vulnerability analysis) is being performed on the BOM:
          <ul>
            <li>A value of <code>true</code> indicates processing is occurring.</li>
            <li>A value of <code>false</code> indicates that no processing is occurring for the specified token.</li>
          </ul>
          However, a value of <code>false</code> also does not confirm the token is valid,
          only that no processing is associated with the specified token.
        </p>
        <p>Requires permission <strong>BOM_UPLOAD</strong></p>
        <p><strong>Deprecated</strong>. Use <code>/v1/event/token/{uuid}</code> instead.</p>
      operationId: isTokenBeingProcessed
      parameters:
      - description: The UUID of the token to query
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IsTokenBeingProcessedResponse"
          description: The processing status of the provided token
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: "Determines if there are any tasks associated with the token that are\
        \ being processed, or in the queue to be processed."
      tags:
      - bom
  /v1/calculator/cvss:
    get:
      operationId: getCvssScores
      parameters:
      - description: "A valid CVSSv2, CVSSv3 or CVSSv4 vector"
        in: query
        name: vector
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CvssScoreResponse"
          description: The calculated scores
        "400":
          description: An invalid CVSS vector was submitted
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: "Returns the CVSS base score, impact sub-score and exploitability sub-score"
      tags:
      - calculator
  /v1/calculator/owasp:
    get:
      operationId: getOwaspRRScores
      parameters:
      - description: A valid OWASP Risk Rating vector
        in: query
        name: vector
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Score"
          description: The calculated scores
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: "Returns the OWASP Risk Rating likelihood score, technical impact score\
        \ and business impact score"
      tags:
      - calculator
  /v1/component:
    post:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_UPDATE</strong></p>
      operationId: updateComponent
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Component"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Component"
          description: The updated component
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The UUID of the component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates a component
      tags:
      - component
  /v1/component/hash/{hash}:
    get:
      deprecated: true
      description: |-
        <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
        <p><strong>Deprecated</strong>! Use <code>/api/v2/components</code> instead.</p>
      operationId: getComponentByHash
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: "The MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA3-256, SHA3-384,\
          \ SHA3-512, BLAKE2b-256, BLAKE2b-384, BLAKE2b-512, or BLAKE3 hash of the\
          \ component to retrieve"
        in: path
        name: hash
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Component"
          description: A list of components that have the specified hash value
          headers:
            X-Total-Count:
              description: The total number of components
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of components that have the specified hash value
      tags:
      - component
  /v1/component/identity:
    get:
      deprecated: true
      description: |-
        <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
        <p><strong>Deprecated</strong>! Use <code>/api/v2/components</code> instead.</p>
      operationId: getComponentByIdentity
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: The group of the component
        in: query
        name: group
        schema:
          type: string
      - description: The name of the component
        in: query
        name: name
        schema:
          type: string
      - description: The version of the component
        in: query
        name: version
        schema:
          type: string
      - description: The purl of the component
        in: query
        name: purl
        schema:
          type: string
      - description: The cpe of the component
        in: query
        name: cpe
        schema:
          type: string
      - description: The swidTagId of the component
        in: query
        name: swidTagId
        schema:
          type: string
      - description: The project the component belongs to
        in: query
        name: project
        schema:
          type: string
          format: uuid
      - description: "When true, only return components from active projects"
        in: query
        name: excludeInactiveProjects
        schema:
          type: boolean
      - description: "When true, only return components from projects flagged as the\
          \ latest version"
        in: query
        name: onlyLatestProjectVersions
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Component"
          description: A list of components that have the specified component identity
          headers:
            X-Total-Count:
              description: The total number of components
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: "Returns a list of components that have the specified component identity.\
        \ This resource accepts coordinates (group, name, version) or purl, cpe, or\
        \ swidTagId"
      tags:
      - component
  /v1/component/internal/identify:
    get:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_READ</strong></p>
      operationId: identifyInternalComponents
      responses:
        "204":
          description: Identification requested successfully
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Requests the identification of internal components in the portfolio
      tags:
      - component
  /v1/component/project/{projectUuid}/dependencyGraph/{componentUuids}:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getDependencyGraphForComponent
      parameters:
      - description: The UUID of the project to get the expanded dependency graph
          for
        in: path
        name: projectUuid
        required: true
        schema:
          type: string
          format: uuid
      - description: List of UUIDs of the components (separated by |) to get the expanded
          dependency graph for
        in: path
        name: componentUuids
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: object
          description: The expanded dependency graph to every occurrence of a component
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: |-
            - The UUID of the project could not be found
            - The UUID of the component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns the expanded dependency graph to every occurrence of a component
      tags:
      - component
  /v1/component/project/{uuid}:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getAllComponents
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: The UUID of the project to retrieve components for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: Optionally exclude recent components so only outdated components
          are returned
        in: query
        name: onlyOutdated
        schema:
          type: boolean
      - description: Optionally exclude transitive dependencies so only direct dependencies
          are returned
        in: query
        name: onlyDirect
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Component"
          description: A list of all components for a given project
          headers:
            X-Total-Count:
              description: The total number of components
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all components for a given project
      tags:
      - component
    put:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_UPDATE</strong></p>
      operationId: createComponent
      parameters:
      - description: The UUID of the project to create a component for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Component"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Component"
          description: The created component
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new component
      tags:
      - component
  /v1/component/{uuid}:
    delete:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: deleteComponent
      parameters:
      - description: The UUID of the component to delete
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: Component removed successfully
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The UUID of the component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a component
      tags:
      - component
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getComponentByUuid
      parameters:
      - description: The UUID of the component to retrieve
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: Optionally includes third-party metadata about the component
          from external repositories
        in: query
        name: includeRepositoryMetaData
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Component"
          description: A component
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a specific component
      tags:
      - component
  /v1/component/{uuid}/occurrence:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getOccurrences
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ComponentOccurrence"
          description: The occurrences of a component
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns the occurrences of a component
      tags:
      - component
  /v1/component/{uuid}/property:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProperties
      parameters:
      - description: The UUID of the component to retrieve properties for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ComponentProperty"
          description: A list of all properties for the specified component
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all properties for the specified component
      tags:
      - componentProperty
    put:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_CREATE</strong></p>
      operationId: createProperty
      parameters:
      - description: The UUID of the component to create a property for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ComponentProperty"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ComponentProperty"
          description: The created component
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The component could not be found
        "409":
          description: A property with the specified component/group/name combination
            already exists
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new component property
      tags:
      - componentProperty
  /v1/component/{uuid}/property/{propertyUuid}:
    delete:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_DELETE</strong></p>
      operationId: deleteProperty
      parameters:
      - description: The UUID of the component to delete a property from
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The UUID of the component property to delete
        in: path
        name: propertyUuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: Property removed successfully
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The component or component property could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a config property
      tags:
      - componentProperty
  /v1/configProperty:
    get:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_READ</strong></p>
      operationId: getConfigProperties
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ConfigProperty"
          description: A list of all ConfigProperties for the specified groupName
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all ConfigProperties for the specified groupName
      tags:
      - configProperty
    post:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_UPDATE</strong></p>
      operationId: updateConfigProperty
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ConfigProperty"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ConfigProperty"
          description: The updated config property
        "401":
          description: Unauthorized
        "404":
          description: The config property could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates a config property
      tags:
      - configProperty
  /v1/configProperty/aggregate:
    post:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_UPDATE</strong></p>
      operationId: updateConfigProperty_1
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: "#/components/schemas/ConfigProperty"
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ConfigProperty"
          description: The updated config properties
        "401":
          description: Unauthorized
        "404":
          description: One or more config properties could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates an array of config properties
      tags:
      - configProperty
  /v1/configProperty/public/{groupName}/{propertyName}:
    get:
      description: <p></p>
      operationId: getPublicConfigProperty
      parameters:
      - description: The group name of the value to retrieve
        in: path
        name: groupName
        required: true
        schema:
          type: string
      - description: The property name of the value to retrieve
        in: path
        name: propertyName
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ConfigProperty"
          description: Public ConfigProperty returned
        "403":
          description: This is not a public visible ConfigProperty
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a public ConfigProperty
      tags:
      - configProperty
  /v1/cwe:
    get:
      description: Returns a list of all CWEs
      operationId: getCwes
      parameters:
      - description: Case-insensitive substring filter matched against CWE name and
          CWE-ID.
        in: query
        name: searchText
        schema:
          type: string
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Cwe"
          description: A list of all CWEs
          headers:
            X-Total-Count:
              description: The total number of CWEs
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      tags:
      - cwe
  /v1/cwe/{cweId}:
    get:
      operationId: getCwe
      parameters:
      - description: The CWE ID of the CWE to retrieve
        in: path
        name: cweId
        required: true
        schema:
          type: integer
          format: int32
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Cwe"
          description: A CWE matching the provided ID
        "401":
          description: Unauthorized
        "404":
          description: The CWE could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a specific CWE
      tags:
      - cwe
  /v1/dependencyGraph/component/{uuid}/directDependencies:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getComponentsAndServicesByComponentUuid
      parameters:
      - description: The UUID of the component
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/DependencyGraphResponse"
          description: A list of specific components and services from component UUID
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: Any component can be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of specific components and services from component UUID
      tags:
      - dependencyGraph
  /v1/dependencyGraph/project/{uuid}/directDependencies:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getComponentsAndServicesByProjectUuid
      parameters:
      - description: The UUID of the project
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/DependencyGraphResponse"
          description: A list of specific components and services from project UUID
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: Any component can be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of specific components and services from project UUID
      tags:
      - dependencyGraph
  /v1/event/token/{uuid}:
    get:
      description: |-
        <p>
          This endpoint is intended to be used in conjunction with other API calls which return a token for asynchronous tasks.
          The token can then be queried using this endpoint to determine if the task is complete:
          <ul>
            <li>A value of <code>true</code> indicates processing is occurring.</li>
            <li>A value of <code>false</code> indicates that no processing is occurring for the specified token.</li>
          </ul>
          However, a value of <code>false</code> also does not confirm the token is valid,
          only that no processing is associated with the specified token.
        </p>
      operationId: isTokenBeingProcessed_1
      parameters:
      - description: The UUID of the token to query
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IsTokenBeingProcessedResponse"
          description: The processing status of the provided token
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: "Determines if there are any tasks associated with the token that are\
        \ being processed, or in the queue to be processed."
      tags:
      - event
  /v1/finding:
    get:
      description: <p>Requires permission <strong>VIEW_VULNERABILITY</strong></p>
      operationId: getAllFindings_1
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: Show inactive projects
        in: query
        name: showInactive
        schema:
          type: boolean
      - description: Show suppressed findings
        in: query
        name: showSuppressed
        schema:
          type: boolean
      - description: Filter by severity
        in: query
        name: severity
        schema:
          type: string
      - description: Filter by analysis status
        in: query
        name: analysisStatus
        schema:
          type: string
      - description: Filter by vendor response
        in: query
        name: vendorResponse
        schema:
          type: string
      - description: Filter published from this date
        in: query
        name: publishDateFrom
        schema:
          type: string
      - description: Filter published to this date
        in: query
        name: publishDateTo
        schema:
          type: string
      - description: Filter attributed on from this date
        in: query
        name: attributedOnDateFrom
        schema:
          type: string
      - description: Filter attributed on to this date
        in: query
        name: attributedOnDateTo
        schema:
          type: string
      - description: Filter the text input in these fields
        in: query
        name: textSearchField
        schema:
          type: string
      - description: Filter by this text input
        in: query
        name: textSearchInput
        schema:
          type: string
      - description: Filter CVSSv2 from this value
        in: query
        name: cvssv2From
        schema:
          type: string
      - description: Filter CVSSv2 from this Value
        in: query
        name: cvssv2To
        schema:
          type: string
      - description: Filter CVSSv3 from this value
        in: query
        name: cvssv3From
        schema:
          type: string
      - description: Filter CVSSv3 from this Value
        in: query
        name: cvssv3To
        schema:
          type: string
      - description: Filter CVSSv4 from this value
        in: query
        name: cvssv4From
        schema:
          type: string
      - description: Filter CVSSv4 to this value
        in: query
        name: cvssv4To
        schema:
          type: string
      - description: Filter EPSS from this value
        in: query
        name: epssFrom
        schema:
          type: string
      - description: Filter EPSS to this value
        in: query
        name: epssTo
        schema:
          type: string
      - description: Filter EPSS Percentile from this value
        in: query
        name: epssPercentileFrom
        schema:
          type: string
      - description: Filter EPSS Percentile to this value
        in: query
        name: epssPercentileTo
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Finding"
          description: A list of all findings
          headers:
            X-Total-Count:
              description: The total number of findings
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all findings
      tags:
      - finding
  /v1/finding/grouped:
    get:
      description: <p>Requires permission <strong>VIEW_VULNERABILITY</strong></p>
      operationId: getAllFindings
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: Show inactive projects
        in: query
        name: showInactive
        schema:
          type: boolean
      - description: Filter by severity
        in: query
        name: severity
        schema:
          type: string
      - description: Filter published from this date
        in: query
        name: publishDateFrom
        schema:
          type: string
      - description: Filter published to this date
        in: query
        name: publishDateTo
        schema:
          type: string
      - description: Filter the text input in these fields
        in: query
        name: textSearchField
        schema:
          type: string
      - description: Filter by this text input
        in: query
        name: textSearchInput
        schema:
          type: string
      - description: Filter CVSSv2 from this value
        in: query
        name: cvssv2From
        schema:
          type: string
      - description: Filter CVSSv2 to this value
        in: query
        name: cvssv2To
        schema:
          type: string
      - description: Filter CVSSv3 from this value
        in: query
        name: cvssv3From
        schema:
          type: string
      - description: Filter CVSSv3 to this value
        in: query
        name: cvssv3To
        schema:
          type: string
      - description: Filter CVSSv4 from this value
        in: query
        name: cvssv4From
        schema:
          type: string
      - description: Filter CVSSv4 to this value
        in: query
        name: cvssv4To
        schema:
          type: string
      - description: Filter EPSS from this value
        in: query
        name: epssFrom
        schema:
          type: string
      - description: Filter EPSS to this value
        in: query
        name: epssTo
        schema:
          type: string
      - description: Filter EPSS Percentile from this value
        in: query
        name: epssPercentileFrom
        schema:
          type: string
      - description: Filter EPSS Percentile to this value
        in: query
        name: epssPercentileTo
        schema:
          type: string
      - description: Filter occurrences in projects from this value
        in: query
        name: occurrencesFrom
        schema:
          type: string
      - description: Filter occurrences in projects to this value
        in: query
        name: occurrencesTo
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Finding"
          description: A list of all findings grouped by vulnerability
          headers:
            X-Total-Count:
              description: The total number of findings
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all findings grouped by vulnerability
      tags:
      - finding
  /v1/finding/project/{uuid}:
    get:
      description: <p>Requires permission <strong>VIEW_VULNERABILITY</strong></p>
      operationId: getFindingsByProject
      parameters:
      - description: "Case-insensitive substring filter matched against component\
          \ name, component group, and vulnerability ID. Additionally matched as an\
          \ exact value against component UUID, vulnerability UUID, and the `componentUuid:vulnerabilityUuid`\
          \ pair."
        in: query
        name: searchText
        schema:
          type: string
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: The UUID of the project
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: Optionally includes suppressed findings
        in: query
        name: suppressed
        schema:
          type: boolean
      - description: Optionally limit findings to specific sources of vulnerability
          intelligence
        in: query
        name: source
        schema:
          type: string
          enum:
          - NVD
          - GITHUB
          - VULNDB
          - OSSINDEX
          - INTERNAL
          - OSV
          - SNYK
          - UNKNOWN
      - in: header
        name: accept
        schema:
          type: string
      - description: Whether to include only projects with existing analysis.
        in: query
        name: hasAnalysis
        schema:
          type: boolean
      - description: Filter EPSS score from this value (inclusive)
        in: query
        name: epssFrom
        schema:
          type: number
      - description: Filter EPSS score to this value (inclusive)
        in: query
        name: epssTo
        schema:
          type: number
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Finding"
            application/sarif+json:
              schema:
                type: string
          description: "A list of all findings for a specific project, or a SARIF\
            \ file"
          headers:
            X-Total-Count:
              description: The total number of findings
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: "Returns a list of all findings for a specific project or generates\
        \ SARIF file if Accept: application/sarif+json header is provided"
      tags:
      - finding
  /v1/finding/project/{uuid}/analyze:
    post:
      description: <p>Requires permission <strong>VULNERABILITY_ANALYSIS</strong></p>
      operationId: analyzeProject
      parameters:
      - description: The UUID of the project to analyze
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BomUploadResponse"
          description: Token to be used for checking analysis progress
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Triggers Vulnerability Analysis on a specific project
      tags:
      - finding
  /v1/finding/project/{uuid}/export:
    get:
      description: <p>Requires permission <strong>VIEW_VULNERABILITY</strong></p>
      operationId: exportFindingsByProject
      parameters:
      - description: The UUID of the project
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                type: string
          description: The findings for the specified project as FPF
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns the findings for the specified project as FPF
      tags:
      - finding
  /v1/ldap/groups:
    get:
      description: |-
        <p>
          This API performs a pass-through query to the configured LDAP server.
        <p>
        <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_READ</strong></p>
      operationId: retrieveLdapGroups
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
          description: DNs of all accessible groups within the directory
          headers:
            X-Total-Count:
              description: The total number of ldap groups that match the specified
                search criteria
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns the DNs of all accessible groups within the directory
      tags:
      - ldap
  /v1/ldap/mapping:
    put:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_CREATE</strong></p>
      operationId: addMapping_1
      requestBody:
        content:
          '*/*':
            schema:
              $ref: "#/components/schemas/MappedLdapGroupRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MappedLdapGroup"
          description: The created mapping
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the team could not be found
        "409":
          description: A mapping with the same team and dn already exists
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Adds a mapping
      tags:
      - ldap
  /v1/ldap/mapping/{uuid}:
    delete:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_DELETE</strong></p>
      operationId: deleteMapping_1
      parameters:
      - description: The UUID of the mapping to delete
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: Mapping removed successfully
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the mapping could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Removes a mapping
      tags:
      - ldap
  /v1/ldap/team/{uuid}:
    get:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_READ</strong></p>
      operationId: retrieveLdapGroups_1
      parameters:
      - description: The UUID of the team to retrieve mappings for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/MappedLdapGroup"
          description: DNs of all groups mapped to the specified team
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns the DNs of all groups mapped to the specified team
      tags:
      - ldap
  /v1/license:
    get:
      operationId: getLicenses
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/License"
          description: A list of all licenses with complete metadata for each license
          headers:
            X-Total-Count:
              description: The total number of licenses
              schema:
                format: integeger
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all licenses with complete metadata for each license
      tags:
      - license
    put:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_CREATE</strong></p>
      operationId: createLicense
      requestBody:
        content:
          '*/*':
            schema:
              $ref: "#/components/schemas/License"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/License"
          description: The created license
        "401":
          description: Unauthorized
        "409":
          description: A license with the specified ID already exists.
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new custom license
      tags:
      - license
  /v1/license/concise:
    get:
      operationId: getLicenseListing
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/License"
          description: A concise listing of all licenses
          headers:
            X-Total-Count:
              description: The total number of licenses
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a concise listing of all licenses
      tags:
      - license
  /v1/license/{licenseId}:
    delete:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_DELETE</strong></p>
      operationId: deleteLicense
      parameters:
      - description: The SPDX License ID of the license to delete
        in: path
        name: licenseId
        required: true
        schema:
          type: string
      responses:
        "204":
          description: License removed successfully
        "401":
          description: Unauthorized
        "404":
          description: The license could not be found
        "409":
          description: Only custom licenses can be deleted.
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a custom license
      tags:
      - license
    get:
      operationId: getLicense
      parameters:
      - description: The SPDX License ID of the license to retrieve
        in: path
        name: licenseId
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/License"
          description: A specific license
        "401":
          description: Unauthorized
        "404":
          description: The license could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a specific license
      tags:
      - license
  /v1/licenseGroup:
    get:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_READ</strong></p>
      operationId: getLicenseGroups
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/LicenseGroup"
          description: A list of all license groups
          headers:
            X-Total-Count:
              description: The total number of license groups
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all license groups
      tags:
      - licenseGroup
    post:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_UPDATE</strong></p>
      operationId: updateLicenseGroup
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LicenseGroup"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LicenseGroup"
          description: The updated license group
        "401":
          description: Unauthorized
        "404":
          description: The license group could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates a license group
      tags:
      - licenseGroup
    put:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_CREATE</strong></p>
      operationId: createLicenseGroup
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LicenseGroup"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LicenseGroup"
          description: The created license group
        "401":
          description: Unauthorized
        "409":
          description: A license group with the specified name already exists
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new license group
      tags:
      - licenseGroup
  /v1/licenseGroup/{uuid}:
    delete:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_DELETE</strong></p>
      operationId: deleteLicenseGroup
      parameters:
      - description: The UUID of the license group to delete
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: License group removed successfully
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the license group could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a license group
      tags:
      - licenseGroup
    get:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_READ</strong></p>
      operationId: getLicenseGroup
      parameters:
      - description: The UUID of the license group to retrieve
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LicenseGroup"
          description: A specific license group
        "401":
          description: Unauthorized
        "404":
          description: The license group could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a specific license group
      tags:
      - licenseGroup
  /v1/licenseGroup/{uuid}/license/{licenseUuid}:
    delete:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_UPDATE</strong></p>
      operationId: removeLicenseFromLicenseGroup
      parameters:
      - description: A valid license group
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: A valid license
        in: path
        name: licenseUuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LicenseGroup"
          description: The updated license group
        "304":
          description: The license is not a member with the license group
        "401":
          description: Unauthorized
        "404":
          description: The license group or license could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Removes the license from the license group.
      tags:
      - licenseGroup
    post:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_UPDATE</strong></p>
      operationId: addLicenseToLicenseGroup
      parameters:
      - description: A valid license group
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: A valid license
        in: path
        name: licenseUuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LicenseGroup"
          description: The updated license group
        "304":
          description: The license group already has the specified license assigned
        "401":
          description: Unauthorized
        "404":
          description: The license group or license could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Adds the license to the specified license group.
      tags:
      - licenseGroup
  /v1/metrics/component/{uuid}/current:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getComponentCurrentMetrics
      parameters:
      - description: The UUID of the component to retrieve metrics for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DependencyMetrics"
          description: Current metrics for a specific component
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested component is forbidden
        "404":
          description: The component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns current metrics for a specific component
      tags:
      - metrics
  /v1/metrics/component/{uuid}/days/{days}:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getComponentMetricsXDays
      parameters:
      - description: The UUID of the component to retrieve metrics for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The number of days back to retrieve metrics for
        in: path
        name: days
        required: true
        schema:
          type: integer
          format: int32
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/DependencyMetrics"
          description: X days of historical metrics for a specific component
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested component is forbidden
        "404":
          description: The component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns X days of historical metrics for a specific component
      tags:
      - metrics
  /v1/metrics/component/{uuid}/refresh:
    get:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_UPDATE</strong></p>
      operationId: RefreshComponentMetrics
      parameters:
      - description: The UUID of the component to refresh metrics on
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Refresh requested successfully
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested component is forbidden
        "404":
          description: The component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Requests a refresh of a specific components metrics
      tags:
      - metrics
  /v1/metrics/component/{uuid}/since/{date}:
    get:
      description: |-
        <p>Date format must be <code>YYYYMMDD</code>. The date is interpreted as UTC midnight.</p>
        <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getComponentMetricsSince
      parameters:
      - description: The UUID of the component to retrieve metrics for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The start date (UTC) to retrieve metrics for
        in: path
        name: date
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/DependencyMetrics"
          description: Historical metrics for a specific component from a specific
            date
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested component is forbidden
        "404":
          description: The component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns historical metrics for a specific component from a specific
        date
      tags:
      - metrics
  /v1/metrics/portfolio/current:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getPortfolioCurrentMetrics
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PortfolioMetrics"
          description: Current metrics for the entire portfolio
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns current metrics for the entire portfolio
      tags:
      - metrics
  /v1/metrics/portfolio/refresh:
    get:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_UPDATE</strong></p>
      operationId: RefreshPortfolioMetrics
      responses:
        "200":
          description: Refresh requested successfully
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Requests a refresh of the portfolio metrics
      tags:
      - metrics
  /v1/metrics/portfolio/since/{date}:
    get:
      description: |-
        <p>Date format must be <code>YYYYMMDD</code>. The number of days returned is computed against the current UTC date.
        </p>
        <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getPortfolioMetricsSince
      parameters:
      - description: The start date to retrieve metrics for
        in: path
        name: date
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PortfolioMetrics"
          description: Historical metrics for the entire portfolio from a specific
            date
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns historical metrics for the entire portfolio from a specific
        date
      tags:
      - metrics
  /v1/metrics/portfolio/{days}/days:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getPortfolioMetricsXDays
      parameters:
      - description: The number of days back to retrieve metrics for
        in: path
        name: days
        required: true
        schema:
          type: integer
          format: int32
          exclusiveMinimum: true
          minimum: 0
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PortfolioMetrics"
          description: X days of historical metrics for the entire portfolio
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns X days of historical metrics for the entire portfolio
      tags:
      - metrics
  /v1/metrics/project/{uuid}/current:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjectCurrentMetrics
      parameters:
      - description: The UUID of the project to retrieve metrics for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProjectMetrics"
          description: Current metrics for a specific project
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns current metrics for a specific project
      tags:
      - metrics
  /v1/metrics/project/{uuid}/days/{days}:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjectMetricsXDays
      parameters:
      - description: The UUID of the project to retrieve metrics for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The number of days back to retrieve metrics for
        in: path
        name: days
        required: true
        schema:
          type: integer
          format: int32
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ProjectMetrics"
          description: X days of historical metrics for a specific project
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns X days of historical metrics for a specific project
      tags:
      - metrics
  /v1/metrics/project/{uuid}/refresh:
    get:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_UPDATE</strong></p>
      operationId: RefreshProjectMetrics
      parameters:
      - description: The UUID of the project to refresh metrics on
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Refresh requested successfully
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Requests a refresh of a specific projects metrics
      tags:
      - metrics
  /v1/metrics/project/{uuid}/since/{date}:
    get:
      description: |-
        <p>Date format must be <code>YYYYMMDD</code>. The date is interpreted as UTC midnight.</p>
        <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjectMetricsSince
      parameters:
      - description: The UUID of the project to retrieve metrics for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The start date (UTC) to retrieve metrics for
        in: path
        name: date
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ProjectMetrics"
          description: Historical metrics for a specific project from a specific date
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns historical metrics for a specific project from a specific date
      tags:
      - metrics
  /v1/metrics/vulnerability:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getVulnerabilityMetrics
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/VulnerabilityMetrics"
          description: The sum of all vulnerabilities in the database by year and
            month
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns the sum of all vulnerabilities in the database by year and
        month
      tags:
      - metrics
  /v1/notification/publisher:
    get:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_READ</strong></p>
      operationId: getAllNotificationPublishers
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/NotificationPublisher"
          description: A list of all notification publishers
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all notification publishers
      tags:
      - notification
    post:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_UPDATE</strong></p>
      operationId: updateNotificationPublisher
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateNotificationPublisherRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationPublisher"
          description: The updated notification publisher
        "400":
          description: Invalid notification class or trying to modify a default publisher
        "401":
          description: Unauthorized
        "404":
          description: The notification publisher could not be found
        "409":
          description: Conflict with an existing publisher's name
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates a notification publisher
      tags:
      - notification
    put:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_CREATE</strong></p>
      operationId: createNotificationPublisher
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateNotificationPublisherRequest"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationPublisher"
          description: The created notification publisher
        "400":
          description: Invalid notification class or trying to modify a default publisher
        "401":
          description: Unauthorized
        "409":
          description: Conflict with an existing publisher's name
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new notification publisher
      tags:
      - notification
  /v1/notification/publisher/test/{uuid}:
    post:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: testNotificationRule
      parameters:
      - description: The UUID of the rule to test
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Test notification dispatched successfully
        "401":
          description: Unauthorized
        "404":
          description: Notification rule not found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Dispatches a rule notification test
      tags:
      - notification
  /v1/notification/publisher/{notificationPublisherUuid}:
    delete:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_DELETE</strong></p>
      operationId: deleteNotificationPublisher
      parameters:
      - description: The UUID of the notification publisher to delete
        in: path
        name: notificationPublisherUuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: Notification publisher removed successfully
        "400":
          description: Deleting a default notification publisher is forbidden
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the notification publisher could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a notification publisher and all related notification rules
      tags:
      - notification
  /v1/notification/publisher/{uuid}/configSchema:
    get:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_READ</strong></p>
      operationId: getNotificationPublisherConfigSchema
      parameters:
      - in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                type: string
                additionalProperties: true
          description: Publisher config JSON schema
        "204":
          description: Publisher has no configuration
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the notification publisher could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Get notification publisher config schema
      tags:
      - notification
  /v1/notification/rule:
    delete:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_DELETE</strong></p>
      operationId: deleteNotificationRule
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/NotificationRule"
      responses:
        "204":
          description: Notification rule removed successfully
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the notification rule could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a notification rule
      tags:
      - notification
    get:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_READ</strong></p>
      operationId: getAllNotificationRules
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: The notification trigger type to filter on
        in: query
        name: triggerType
        schema:
          type: string
          enum:
          - EVENT
          - SCHEDULE
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/NotificationRule"
          description: A list of all notification rules
          headers:
            X-Total-Count:
              description: The total number of notification rules
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all notification rules
      tags:
      - notification
    post:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_UPDATE</strong></p>
      operationId: updateNotificationRule
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateNotificationRuleRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
          description: The updated notification rule
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/InvalidNotificationFilterExpressionProblemDetails"
          description: Invalid filter expression
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the notification rule could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates a notification rule
      tags:
      - notification
    put:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_CREATE</strong></p>
      operationId: createNotificationRule
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateNotificationRuleRequest"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
          description: The created notification rule
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the notification publisher could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new notification rule
      tags:
      - notification
  /v1/notification/rule/scheduled:
    put:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_CREATE</strong></p>
      operationId: createScheduledNotificationRule
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateScheduledNotificationRuleRequest"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
          description: The created scheduled notification rule
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the notification publisher could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new scheduled notification rule
      tags:
      - notification
  /v1/notification/rule/{ruleUuid}/project/{projectUuid}:
    delete:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_DELETE</strong></p>
      operationId: removeProjectFromRule
      parameters:
      - description: The UUID of the rule to remove the project from
        in: path
        name: ruleUuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The UUID of the project to remove from the rule
        in: path
        name: projectUuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
          description: The updated notification rule
        "304":
          description: The rule does not have the specified project assigned
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The notification rule or project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Removes a project from a notification rule
      tags:
      - notification
    post:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_UPDATE</strong></p>
      operationId: addProjectToRule
      parameters:
      - description: The UUID of the rule to add a project to
        in: path
        name: ruleUuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The UUID of the project to add to the rule
        in: path
        name: projectUuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
          description: The updated notification rule
        "304":
          description: The rule already has the specified project assigned
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The notification rule or project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Adds a project to a notification rule
      tags:
      - notification
  /v1/notification/rule/{ruleUuid}/team/{teamUuid}:
    delete:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_DELETE</strong></p>
      operationId: removeTeamFromRule
      parameters:
      - description: The UUID of the rule to remove the project from
        in: path
        name: ruleUuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The UUID of the project to remove from the rule
        in: path
        name: teamUuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
          description: The updated notification rule
        "304":
          description: The rule does not have the specified team assigned
        "401":
          description: Unauthorized
        "404":
          description: The notification rule or team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Removes a team from a notification rule
      tags:
      - notification
    post:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_UPDATE</strong></p>
      operationId: addTeamToRule
      parameters:
      - description: The UUID of the rule to add a team to
        in: path
        name: ruleUuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The UUID of the team to add to the rule
        in: path
        name: teamUuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
          description: The updated notification rule
        "304":
          description: The rule already has the specified team assigned
        "401":
          description: Unauthorized
        "404":
          description: The notification rule or team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Adds a team to a notification rule
      tags:
      - notification
  /v1/oidc/available:
    get:
      operationId: isAvailable
      responses:
        "200":
          content:
            text/plain:
              schema:
                type: boolean
          description: Whether OpenID Connect is available
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Indicates if OpenID Connect is available for this application
      tags:
      - oidc
  /v1/oidc/group:
    get:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_READ</strong></p>
      operationId: retrieveGroups
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/OidcGroup"
          description: A list of all groups
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all groups
      tags:
      - oidc
    post:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_UPDATE</strong></p>
      operationId: updateGroup
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/OidcGroup"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OidcGroup"
          description: The updated group
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates group
      tags:
      - oidc
    put:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_CREATE</strong></p>
      operationId: createGroup
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/OidcGroup"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OidcGroup"
          description: The created group
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates group
      tags:
      - oidc
  /v1/oidc/group/{groupUuid}/team/{teamUuid}/mapping:
    delete:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_DELETE</strong></p>
      operationId: deleteMapping_2
      parameters:
      - description: The UUID of the group to delete a mapping for
        in: path
        name: groupUuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The UUID of the team to delete a mapping for
        in: path
        name: teamUuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: Mapping removed successfully
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the mapping could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a mapping
      tags:
      - oidc
  /v1/oidc/group/{uuid}:
    delete:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_DELETE</strong></p>
      operationId: deleteGroup
      parameters:
      - description: The UUID of the group to delete
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: Group removed successfully
        "401":
          description: Unauthorized
        "404":
          description: The group could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a group
      tags:
      - oidc
  /v1/oidc/group/{uuid}/team:
    get:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_READ</strong></p>
      operationId: retrieveTeamsMappedToGroup
      parameters:
      - description: The UUID of the mapping to retrieve the team for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Team"
          description: A list of teams associated with the specified group
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the mapping could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of teams associated with the specified group
      tags:
      - oidc
  /v1/oidc/mapping:
    put:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_CREATE</strong></p>
      operationId: addMapping_2
      requestBody:
        content:
          '*/*':
            schema:
              $ref: "#/components/schemas/MappedOidcGroupRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MappedOidcGroup"
          description: The created mapping
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the team or group could not be found
        "409":
          description: A mapping with the same team and group name already exists
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Adds a mapping
      tags:
      - oidc
  /v1/oidc/mapping/{uuid}:
    delete:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_DELETE</strong></p>
      operationId: deleteMappingByUuid
      parameters:
      - description: The UUID of the mapping to delete
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: Mapping removed successfully
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the mapping could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a mapping
      tags:
      - oidc
  /v1/permission:
    get:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_READ</strong></p>
      operationId: getAllPermissions
      responses:
        "200":
          content:
            application/json:
              schema:
                type: string
                enum:
                - BOM_UPLOAD
                - VIEW_PORTFOLIO
                - PORTFOLIO_ACCESS_CONTROL_BYPASS
                - PORTFOLIO_MANAGEMENT
                - PORTFOLIO_MANAGEMENT_CREATE
                - PORTFOLIO_MANAGEMENT_READ
                - PORTFOLIO_MANAGEMENT_UPDATE
                - PORTFOLIO_MANAGEMENT_DELETE
                - VIEW_VULNERABILITY
                - VULNERABILITY_ANALYSIS
                - VULNERABILITY_ANALYSIS_CREATE
                - VULNERABILITY_ANALYSIS_READ
                - VULNERABILITY_ANALYSIS_UPDATE
                - VIEW_POLICY_VIOLATION
                - VULNERABILITY_MANAGEMENT
                - VULNERABILITY_MANAGEMENT_CREATE
                - VULNERABILITY_MANAGEMENT_READ
                - VULNERABILITY_MANAGEMENT_UPDATE
                - VULNERABILITY_MANAGEMENT_DELETE
                - POLICY_VIOLATION_ANALYSIS
                - ACCESS_MANAGEMENT
                - ACCESS_MANAGEMENT_CREATE
                - ACCESS_MANAGEMENT_READ
                - ACCESS_MANAGEMENT_UPDATE
                - ACCESS_MANAGEMENT_DELETE
                - SECRET_MANAGEMENT
                - SECRET_MANAGEMENT_CREATE
                - SECRET_MANAGEMENT_UPDATE
                - SECRET_MANAGEMENT_DELETE
                - SYSTEM_CONFIGURATION
                - SYSTEM_CONFIGURATION_CREATE
                - SYSTEM_CONFIGURATION_READ
                - SYSTEM_CONFIGURATION_UPDATE
                - SYSTEM_CONFIGURATION_DELETE
                - PROJECT_CREATION_UPLOAD
                - POLICY_MANAGEMENT
                - POLICY_MANAGEMENT_CREATE
                - POLICY_MANAGEMENT_READ
                - POLICY_MANAGEMENT_UPDATE
                - POLICY_MANAGEMENT_DELETE
                - TAG_MANAGEMENT
                - TAG_MANAGEMENT_DELETE
          description: A list of all permissions
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all permissions
      tags:
      - permission
  /v1/permission/team:
    put:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_UPDATE</strong></p>
      operationId: setTeamPermissions
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TeamPermissionsSetRequest"
        description: Team UUID and requested permissions
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Team"
          description: The updated team
        "304":
          description: The team already has the specified permission(s)
        "400":
          description: Bad request
        "401":
          description: Unauthorized
        "404":
          description: The team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Replaces a team's permissions with the specified list
      tags:
      - permission
  /v1/permission/user:
    put:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_UPDATE</strong></p>
      operationId: setUserPermissions
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UserPermissionsSetRequest"
        description: A username and valid list permission
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
          description: The updated user
        "304":
          description: The user is already has the specified permission(s)
        "400":
          description: Bad request
        "401":
          description: Unauthorized
        "404":
          description: The user could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Replaces a users's permissions with the specified list
      tags:
      - permission
  /v1/permission/{permission}/team/{uuid}:
    delete:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_DELETE</strong></p>
      operationId: removePermissionFromTeam
      parameters:
      - description: A valid team uuid
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: A valid permission
        in: path
        name: permission
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Team"
          description: The updated team
        "304":
          description: The team already has the specified permission assigned
        "401":
          description: Unauthorized
        "404":
          description: The team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      tags:
      - permission
    post:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_UPDATE</strong></p>
      operationId: addPermissionToTeam
      parameters:
      - description: A valid team uuid
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: A valid permission
        in: path
        name: permission
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Team"
          description: The updated team
        "304":
          description: The team already has the specified permission assigned
        "401":
          description: Unauthorized
        "404":
          description: The team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      tags:
      - permission
  /v1/permission/{permission}/user/{username}:
    delete:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_DELETE</strong></p>
      operationId: removePermissionFromUser
      parameters:
      - description: A valid username
        in: path
        name: username
        required: true
        schema:
          type: string
      - description: A valid permission
        in: path
        name: permission
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
          description: The updated user
        "304":
          description: The user already has the specified permission assigned
        "401":
          description: Unauthorized
        "404":
          description: The user could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Removes the permission from the user.
      tags:
      - permission
    post:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_UPDATE</strong></p>
      operationId: addPermissionToUser
      parameters:
      - description: A valid username
        in: path
        name: username
        required: true
        schema:
          type: string
      - description: A valid permission
        in: path
        name: permission
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
          description: The updated user
        "304":
          description: The user already has the specified permission assigned
        "401":
          description: Unauthorized
        "404":
          description: The user could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Adds the permission to the specified username.
      tags:
      - permission
  /v1/policy:
    get:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_READ</strong></p>
      operationId: getPolicies
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Policy"
          description: A list of all policies
          headers:
            X-Total-Count:
              description: The total number of policies
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all policies
      tags:
      - policy
    post:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_UPDATE</strong></p>
      operationId: updatePolicy
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Policy"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Policy"
          description: The updated policy
        "401":
          description: Unauthorized
        "404":
          description: The policy could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates a policy
      tags:
      - policy
    put:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_CREATE</strong></p>
      operationId: createPolicy
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Policy"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Policy"
          description: The created policy
        "401":
          description: Unauthorized
        "409":
          description: A policy with the specified name already exists
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new policy
      tags:
      - policy
  /v1/policy/condition:
    post:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_UPDATE</strong></p>
      operationId: updatePolicyCondition
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PolicyCondition"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PolicyCondition"
          description: The updated policy condition
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the policy condition could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates a policy condition
      tags:
      - policyCondition
  /v1/policy/condition/{uuid}:
    delete:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_UPDATE</strong></p>
      operationId: deletePolicyCondition
      parameters:
      - description: The UUID of the policy condition to delete
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: Policy condition removed successfully
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the policy condition could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a policy condition from an existing policy
      tags:
      - policyCondition
  /v1/policy/{policyUuid}/project/{projectUuid}:
    delete:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_DELETE</strong></p>
      operationId: removeProjectFromPolicy
      parameters:
      - description: The UUID of the policy to remove the project from
        in: path
        name: policyUuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The UUID of the project to remove from the policy
        in: path
        name: projectUuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Policy"
          description: The updated policy
        "304":
          description: The policy does not have the specified project assigned
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The policy or project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Removes a project from a policy
      tags:
      - policy
    post:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_UPDATE</strong></p>
      operationId: addProjectToPolicy
      parameters:
      - description: The UUID of the policy to add a project to
        in: path
        name: policyUuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The UUID of the project to add to the rule
        in: path
        name: projectUuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Policy"
          description: The updated policy
        "304":
          description: The policy already has the specified project assigned
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The policy or project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Adds a project to a policy
      tags:
      - policy
  /v1/policy/{uuid}:
    delete:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_DELETE</strong></p>
      operationId: deletePolicy
      parameters:
      - description: The UUID of the policy to delete
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: Policy removed successfully
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the policy could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a policy
      tags:
      - policy
    get:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_READ</strong></p>
      operationId: getPolicy
      parameters:
      - description: The UUID of the policy to retrieve
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Policy"
          description: A specific policy
        "401":
          description: Unauthorized
        "404":
          description: The policy could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a specific policy
      tags:
      - policy
  /v1/policy/{uuid}/condition:
    put:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_UPDATE</strong></p>
      operationId: createPolicyCondition
      parameters:
      - description: The UUID of the policy
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PolicyCondition"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PolicyCondition"
          description: The created policy condition
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the policy could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new policy condition for an existing policy
      tags:
      - policyCondition
  /v1/project:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjects
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: The optional name of the project to query on
        in: query
        name: name
        schema:
          type: string
      - description: Optionally excludes inactive projects from being returned
        in: query
        name: excludeInactive
        schema:
          type: boolean
      - description: Optionally excludes children projects from being returned
        in: query
        name: onlyRoot
        schema:
          type: boolean
      - description: The UUID of the team which projects shall be excluded
        in: query
        name: notAssignedToTeamWithUuid
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ListProjectsResponseItem"
          description: A list of all projects
          headers:
            X-Total-Count:
              description: The total number of projects
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all projects
      tags:
      - project
    post:
      description: |-
        <p>
          To re-parent the project, set <code>parent</code> to an object containing
          the new parent's <code>uuid</code>. Omit <code>parent</code> (or set it to
          <code>null</code>) to leave the parent unchanged. Providing <code>parent</code>
          without a non-null <code>uuid</code> is rejected with 400.
        </p>
        <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or <strong>PORTFOLIO_MANAGEMENT_UPDATE</strong></p>
      operationId: updateProject
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Project"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Project"
          description: The updated project
        "400":
          description: Bad Request
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: "Access to the project, the provided parent, or the previous\
            \ latest project version, is forbidden"
        "404":
          description: The UUID of the project could not be found
        "409":
          description: |-
            <ul>
              <li>An inactive Parent cannot be selected as parent, or</li>
              <li>Project cannot be set to inactive if active children are present, or</li>
              <li>A project with the specified name already exists, or</li>
              <li>A project cannot select itself as a parent</li>
            </ul>
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates a project
      tags:
      - project
    put:
      description: |-
        <p>
          To create the project under a parent, set <code>parent</code> to an object
          containing the parent's <code>uuid</code>. To create a top-level project,
          omit <code>parent</code> or set it to <code>null</code>. Providing
          <code>parent</code> without a non-null <code>uuid</code> is rejected with 400.
        </p>
        <p>
          When portfolio access control is enabled, one or more teams to grant access
          to can be provided via <code>accessTeams</code>. Either <code>uuid</code> or
          <code>name</code> of a team must be specified. Only teams which the authenticated
          principal is a member of can be assigned. Principals with <strong>ACCESS_MANAGEMENT</strong>
          permission can assign <em>any</em> team.
        </p>
        <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or <strong>PORTFOLIO_MANAGEMENT_CREATE</strong></p>
      operationId: createProject
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Project"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Project"
          description: The created project
        "400":
          description: Bad Request
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: "Access to the provided parent project, or previous latest\
            \ project version, is forbidden"
        "409":
          description: |-
            <ul>
              <li>An inactive Parent cannot be selected as parent, or</li>
              <li>A project with the specified name already exists</li>
            </ul>
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new project
      tags:
      - project
  /v1/project/batchDelete:
    post:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_DELETE</strong></p>
      operationId: deleteProjects
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
                format: uuid
              maxItems: 1000
              minItems: 1
              uniqueItems: true
      responses:
        "204":
          description: Projects removed successfully
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a list of projects specified by their UUIDs
      tags:
      - project
  /v1/project/classifier/{classifier}:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjectsByClassifier
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: The classifier to query on
        in: path
        name: classifier
        required: true
        schema:
          type: string
          enum:
          - APPLICATION
          - FRAMEWORK
          - LIBRARY
          - CONTAINER
          - OPERATING_SYSTEM
          - DEVICE
          - FIRMWARE
          - FILE
          - PLATFORM
          - DEVICE_DRIVER
          - MACHINE_LEARNING_MODEL
          - DATA
          - CRYPTOGRAPHIC_ASSET
      - description: Optionally excludes inactive projects from being returned
        in: query
        name: excludeInactive
        schema:
          type: boolean
      - description: Optionally excludes children projects from being returned
        in: query
        name: onlyRoot
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ListProjectsResponseItem"
          description: A list of all projects by classifier
          headers:
            X-Total-Count:
              description: The total number of projects
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all projects by classifier
      tags:
      - project
  /v1/project/clone:
    put:
      deprecated: true
      description: |-
        <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or <strong>PORTFOLIO_MANAGEMENT_CREATE</strong></p>
        <p><strong>Deprecated</strong>! Use <code>/api/v2/projects/{uuid}/clone</code> instead.</p>
      operationId: cloneProject
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CloneProjectRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BomUploadResponse"
          description: Token to be used for checking cloning progress
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: "Access to the requested project, or the previous latest project\
            \ version, is forbidden"
        "404":
          description: The UUID of the project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Clones a project
      tags:
      - project
  /v1/project/concise:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjectsConcise
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: Name to filter on. Must be exact match.
        in: query
        name: name
        schema:
          type: string
      - description: Version to filter on. Must be exact match.
        in: query
        name: version
        schema:
          type: string
      - description: Classifier to filter on. Must be exact match.
        in: query
        name: classifier
        schema:
          type: string
      - description: Tag to filter on. Must be exact match.
        in: query
        name: tag
        schema:
          type: string
      - description: Team to filter on. Must be exact match.
        in: query
        name: team
        schema:
          type: string
      - description: "Whether to show only active, or only inactive projects."
        in: query
        name: active
        schema:
          type: boolean
      - description: "Whether to show only root projects, i.e. those without a parent."
        in: query
        name: onlyRoot
        schema:
          type: boolean
      - description: Whether to include metrics in the response.
        in: query
        name: includeMetrics
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ConciseProject"
          description: A list of all projects in concise representation
          headers:
            X-Total-Count:
              description: The total number of projects
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: "Returns a list of all projects, in a concise representation."
      tags:
      - project
  /v1/project/concise/{uuid}/children:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjectChildrenConcise
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: UUID of the project
        in: path
        name: uuid
        required: true
        schema:
          type: string
      - description: Name to filter on. Must be exact match.
        in: query
        name: name
        schema:
          type: string
      - description: Version to filter on. Must be exact match.
        in: query
        name: version
        schema:
          type: string
      - description: Classifier to filter on. Must be exact match.
        in: query
        name: classifier
        schema:
          type: string
      - description: Tag to filter on. Must be exact match.
        in: query
        name: tag
        schema:
          type: string
      - description: Team to filter on. Must be exact match.
        in: query
        name: team
        schema:
          type: string
      - description: "Whether to show only active, or only inactive projects. Omitting\
          \ the filter will show both."
        in: query
        name: active
        schema:
          type: boolean
      - description: Whether to include metrics in the response.
        in: query
        name: includeMetrics
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ConciseProject"
          description: A list of all child projects in a concise representation
          headers:
            X-Total-Count:
              description: The total number of child projects
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: "Returns a list of a given project's children, in a concise representation."
      tags:
      - project
  /v1/project/latest/{name}:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getLatestProjectByName
      parameters:
      - description: The name of the project to retrieve the latest version of
        in: path
        name: name
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Project"
          description: The latest version of the specified project
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns the latest version of a project by its name
      tags:
      - project
  /v1/project/lookup:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjectByNameAndVersion
      parameters:
      - description: The name of the project to query on
        in: query
        name: name
        required: true
        schema:
          type: string
      - description: The version of the project to query on
        in: query
        name: version
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Project"
          description: A specific project by its name and version
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a specific project by its name and version
      tags:
      - project
  /v1/project/tag/{tag}:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjectsByTag
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: The tag to query on
        in: path
        name: tag
        required: true
        schema:
          type: string
      - description: Optionally excludes inactive projects from being returned
        in: query
        name: excludeInactive
        schema:
          type: boolean
      - description: Optionally excludes children projects from being returned
        in: query
        name: onlyRoot
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ListProjectsResponseItem"
          description: A list of all projects by tag
          headers:
            X-Total-Count:
              description: The total number of projects
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all projects by tag
      tags:
      - project
  /v1/project/withoutDescendantsOf/{uuid}:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjectsWithoutDescendantsOf
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: The UUID of the project which descendants will be excluded
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The optional name of the project to query on
        in: query
        name: name
        schema:
          type: string
      - description: Optionally excludes inactive projects from being returned
        in: query
        name: excludeInactive
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ListProjectsResponseItem"
          description: A list of all projects without the descendants of the selected
            project
          headers:
            X-Total-Count:
              description: The total number of projects
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The UUID of the project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all projects without the descendants of the selected
        project
      tags:
      - project
  /v1/project/{uuid}:
    delete:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_DELETE</strong></p>
      operationId: deleteProject
      parameters:
      - description: The UUID of the project to delete
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: Project removed successfully
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The UUID of the project could not be found
        "500":
          description: Unable to delete components of the project
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a project
      tags:
      - project
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProject
      parameters:
      - description: The UUID of the project to retrieve
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Project"
          description: A specific project
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a specific project
      tags:
      - project
    patch:
      description: |-
        <p>
          To re-parent the project, set <code>parent</code> to an object containing
          the new parent's <code>uuid</code>. Omit <code>parent</code> (or set it to
          <code>null</code>) to leave the parent unchanged. Providing <code>parent</code>
          without a non-null <code>uuid</code> is rejected with 400.
        </p>
        <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or <strong>PORTFOLIO_MANAGEMENT_UPDATE</strong></p>
      operationId: patchProject
      parameters:
      - description: The UUID of the project to modify
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Project"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Project"
          description: The updated project
        "400":
          description: Bad Request
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: "Access to the requested project, the provided parent, or the\
            \ previous latest project version, is forbidden"
        "404":
          description: The UUID of the project could not be found
        "409":
          description: |-
            <ul>
              <li>An inactive Parent cannot be selected as parent, or</li>
              <li>Project cannot be set to inactive if active children are present, or</li>
              <li>A project with the specified name already exists, or</li>
              <li>A project cannot select itself as a parent</li>
            </ul>
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Partially updates a project
      tags:
      - project
  /v1/project/{uuid}/children:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getChildrenProjects
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: The UUID of the project to get the children from
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: Optionally excludes inactive projects from being returned
        in: query
        name: excludeInactive
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ListProjectsResponseItem"
          description: A list of all children for a project
          headers:
            X-Total-Count:
              description: The total number of projects
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The UUID of the project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all children for a project
      tags:
      - project
  /v1/project/{uuid}/children/classifier/{classifier}:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getChildrenProjectsByClassifier
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: The classifier to query on
        in: path
        name: classifier
        required: true
        schema:
          type: string
          enum:
          - APPLICATION
          - FRAMEWORK
          - LIBRARY
          - CONTAINER
          - OPERATING_SYSTEM
          - DEVICE
          - FIRMWARE
          - FILE
          - PLATFORM
          - DEVICE_DRIVER
          - MACHINE_LEARNING_MODEL
          - DATA
          - CRYPTOGRAPHIC_ASSET
      - description: The UUID of the project to get the children from
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: Optionally excludes inactive projects from being returned
        in: query
        name: excludeInactive
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ListProjectsResponseItem"
          description: A list of all children for a project by classifier
          headers:
            X-Total-Count:
              description: The total number of projects
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The UUID of the project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all children for a project by classifier
      tags:
      - project
  /v1/project/{uuid}/children/tag/{tag}:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getChildrenProjectsByTag
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: The tag to query on
        in: path
        name: tag
        required: true
        schema:
          type: string
      - description: The UUID of the project to get the children from
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: Optionally excludes inactive projects from being returned
        in: query
        name: excludeInactive
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ListProjectsResponseItem"
          description: A list of all children for a project by tag
          headers:
            X-Total-Count:
              description: The total number of projects
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The UUID of the project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all children for a project by tag
      tags:
      - project
  /v1/project/{uuid}/property:
    delete:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_DELETE</strong></p>
      operationId: deleteProperty_1
      parameters:
      - description: The UUID of the project to delete a property from
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ProjectProperty"
      responses:
        "204":
          description: Project property removed successfully
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project or project property could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a config property
      tags:
      - projectProperty
    get:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_READ</strong></p>
      operationId: getProperties_1
      parameters:
      - description: The UUID of the project to retrieve properties for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ProjectProperty"
          description: A list of all ProjectProperties for the specified project
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all ProjectProperties for the specified project
      tags:
      - projectProperty
    post:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_UPDATE</strong></p>
      operationId: updateProperty
      parameters:
      - description: The UUID of the project to create a property for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ProjectProperty"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProjectProperty"
          description: The updated project property
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates a project property
      tags:
      - projectProperty
    put:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_CREATE</strong></p>
      operationId: createProperty_1
      parameters:
      - description: The UUID of the project to create a property for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ProjectProperty"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProjectProperty"
          description: The created project property
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
        "409":
          description: A property with the specified project/group/name combination
            already exists
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new project property
      tags:
      - projectProperty
  /v1/repository:
    get:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_READ</strong></p>
      operationId: getRepositories
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Repository"
          description: A list of all repositories
          headers:
            X-Total-Count:
              description: The total number of repositories
              schema:
                type: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all repositories
      tags:
      - repository
    post:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_UPDATE</strong></p>
      operationId: updateRepository
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Repository"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Repository"
          description: The updated repository
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the repository could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates a repository
      tags:
      - repository
    put:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_CREATE</strong></p>
      operationId: createRepository
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Repository"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Repository"
          description: The created repository
        "401":
          description: Unauthorized
        "409":
          description: A repository with the specified identifier already exists
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new repository
      tags:
      - repository
  /v1/repository/latest:
    get:
      operationId: getRepositoryMetaComponent
      parameters:
      - description: The Package URL for the component to query
        in: query
        name: purl
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RepositoryMetaComponent"
          description: The latest version of the component available in the configured
            repositories
        "204":
          description: "The request was successful, but no repositories are configured\
            \ to support the specified Package URL"
        "400":
          description: The specified Package URL is invalid and not in the correct
            format
        "401":
          description: Unauthorized
        "404":
          description: The repository metadata for the specified component cannot
            be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Attempts to resolve the latest version of the component available in
        the configured repositories
      tags:
      - repository
  /v1/repository/{type}:
    get:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_READ</strong></p>
      operationId: getRepositoriesByType
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: The type of repositories to retrieve
        in: path
        name: type
        required: true
        schema:
          type: string
          enum:
          - MAVEN
          - NPM
          - GEM
          - PYPI
          - NUGET
          - HEX
          - COMPOSER
          - CARGO
          - GO_MODULES
          - CPAN
          - GITHUB
          - HACKAGE
          - NIXPKGS
          - UNSUPPORTED
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Repository"
          description: A list of repositories that support the provided type
          headers:
            X-Total-Count:
              description: The total number of repositories
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns repositories that support the specific type
      tags:
      - repository
  /v1/repository/{uuid}:
    delete:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_DELETE</strong></p>
      operationId: deleteRepository
      parameters:
      - description: The UUID of the repository to delete
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: Repository removed successfully
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the repository could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a repository
      tags:
      - repository
  /v1/service:
    post:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_UPDATE</strong></p>
      operationId: updateService
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceComponent"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceComponent"
          description: The updated service
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The UUID of the service could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates a service
      tags:
      - service
  /v1/service/project/{uuid}:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getAllServices
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: The UUID of the project
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ServiceComponent"
          description: A list of all services for a given project
          headers:
            X-Total-Count:
              description: The total number of services
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all services for a given project
      tags:
      - service
    put:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_CREATE</strong></p>
      operationId: createService
      parameters:
      - description: The UUID of the project
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceComponent"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceComponent"
          description: The created service
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new service
      tags:
      - service
  /v1/service/{uuid}:
    delete:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_DELETE</strong></p>
      operationId: deleteService
      parameters:
      - description: The UUID of the service to delete
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: Service removed successfully
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The UUID of the service could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a service
      tags:
      - service
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getServiceByUuid
      parameters:
      - description: The UUID of the service to retrieve
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceComponent"
          description: A specific service
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The service could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a specific service
      tags:
      - service
  /v1/tag:
    delete:
      description: |
        <p>A tag can only be deleted if no projects or policies are assigned to it.</p>
        <p>
          Principals with <strong>PORTFOLIO_MANAGEMENT</strong> permission, and access
          to <em>all</em> assigned projects (if portfolio ACL is enabled), can delete
          a tag with assigned projects.
        </p>
        <p>
          Principals with <strong>POLICY_MANAGEMENT</strong> permission can delete tags
          with assigned policies.
        </p>
        <p>Requires permission <strong>TAG_MANAGEMENT</strong> or <strong>TAG_MANAGEMENT_DELETE</strong></p>
      operationId: deleteTags
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
              maxItems: 100
              minItems: 1
              uniqueItems: true
        description: Names of the tags to delete
      responses:
        "204":
          description: Tags deleted successfully.
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/TagOperationProblemDetails"
          description: Operation failed
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes one or more tags.
      tags:
      - tag
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getAllTags
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/TagListResponseItem"
          description: A list of all tags
          headers:
            X-Total-Count:
              description: The total number of tags
              schema:
                format: integer
              style: simple
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all tags
      tags:
      - tag
    put:
      description: <p>Requires permission <strong>TAG_MANAGEMENT</strong></p>
      operationId: createTags
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
              maxItems: 100
              minItems: 1
              uniqueItems: true
        description: Names of the tags to create
        required: true
      responses:
        "201":
          description: Tags created successfully.
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates one or more tags.
      tags:
      - tag
  /v1/tag/policy/{uuid}:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getTagsForPolicy
      parameters:
      - description: The UUID of the policy
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Tag"
          description: A list of all tags associated with a given policy
          headers:
            X-Total-Count:
              description: The total number of tags
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all tags associated with a given policy
      tags:
      - tag
  /v1/tag/{name}/collectionProject:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getTaggedCollectionProjects
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: Name of the tag to get collection projects for
        in: path
        name: name
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/TaggedCollectionProjectListResponseItem"
          description: A list of all collection projects that use the given tag for
            their collection logic
          headers:
            X-Total-Count:
              description: The total number of collection projects
              schema:
                format: integer
              style: simple
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all collection projects that use the given tag for
        their collection logic.
      tags:
      - tag
  /v1/tag/{name}/notificationRule:
    delete:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_UPDATE</strong></p>
      operationId: untagNotificationRules
      parameters:
      - description: Name of the tag
        in: path
        name: name
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
                format: uuid
                maxLength: 100
                minLength: 1
              maxItems: 100
              minItems: 1
        description: UUIDs of notification rules to untag
        required: true
      responses:
        "204":
          description: Notification rules untagged successfully.
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: A tag with the provided name does not exist.
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Untags one or more notification rules.
      tags:
      - tag
    get:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_READ</strong></p>
      operationId: getTaggedNotificationRules
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: Name of the tag to get notification rules for
        in: path
        name: name
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/TaggedPolicyListResponseItem"
          description: A list of all notification rules assigned to the given tag
          headers:
            X-Total-Count:
              description: The total number of notification rules
              schema:
                format: integer
              style: simple
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all notification rules assigned to the given tag.
      tags:
      - tag
    post:
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong> or
        <strong>SYSTEM_CONFIGURATION_UPDATE</strong></p>
      operationId: tagNotificationRules
      parameters:
      - description: Name of the tag to assign
        in: path
        name: name
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
                format: uuid
                maxLength: 100
                minLength: 1
              maxItems: 100
              minItems: 1
        description: UUIDs of notification rules to tag
        required: true
      responses:
        "204":
          description: Notification rules tagged successfully.
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: A tag with the provided name does not exist.
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Tags one or more notification rules.
      tags:
      - tag
  /v1/tag/{name}/policy:
    delete:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_UPDATE</strong></p>
      operationId: untagPolicies
      parameters:
      - description: Name of the tag
        in: path
        name: name
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
                format: uuid
                maxLength: 100
                minLength: 1
              maxItems: 100
              minItems: 1
        description: UUIDs of policies to untag
        required: true
      responses:
        "204":
          description: Policies untagged successfully.
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: A tag with the provided name does not exist.
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Untags one or more policies.
      tags:
      - tag
    get:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_READ</strong></p>
      operationId: getTaggedPolicies
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: Name of the tag to get policies for.
        in: path
        name: name
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/TaggedPolicyListResponseItem"
          description: A list of all policies assigned to the given tag
          headers:
            X-Total-Count:
              description: The total number of policies
              schema:
                format: integer
              style: simple
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all policies assigned to the given tag.
      tags:
      - tag
    post:
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong> or <strong>POLICY_MANAGEMENT_UPDATE</strong></p>
      operationId: tagPolicies
      parameters:
      - description: Name of the tag to assign
        in: path
        name: name
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
                format: uuid
                maxLength: 100
                minLength: 1
              maxItems: 100
              minItems: 1
        description: UUIDs of policies to tag
        required: true
      responses:
        "204":
          description: Policies tagged successfully.
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: A tag with the provided name does not exist.
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Tags one or more policies.
      tags:
      - tag
  /v1/tag/{name}/project:
    delete:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_UPDATE</strong></p>
      operationId: untagProjects
      parameters:
      - description: Name of the tag
        in: path
        name: name
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
                format: uuid
                maxLength: 100
                minLength: 1
              maxItems: 100
              minItems: 1
        description: UUIDs of projects to untag
        required: true
      responses:
        "204":
          description: Projects untagged successfully.
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: A tag with the provided name does not exist.
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Untags one or more projects.
      tags:
      - tag
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getTaggedProjects
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: Name of the tag to get projects for.
        in: path
        name: name
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/TaggedProjectListResponseItem"
          description: A list of all projects assigned to the given tag
          headers:
            X-Total-Count:
              description: The total number of projects
              schema:
                format: integer
              style: simple
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all projects assigned to the given tag.
      tags:
      - tag
    post:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_UPDATE</strong></p>
      operationId: tagProjects
      parameters:
      - description: Name of the tag to assign
        in: path
        name: name
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
                format: uuid
                maxLength: 100
                minLength: 1
              maxItems: 100
              minItems: 1
        description: UUIDs of projects to tag
        required: true
      responses:
        "204":
          description: Projects tagged successfully.
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: A tag with the provided name does not exist.
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Tags one or more projects.
      tags:
      - tag
  /v1/tag/{name}/vulnerability:
    delete:
      description: <p>Requires permission <strong>VULNERABILITY_MANAGEMENT</strong>
        or <strong>VULNERABILITY_MANAGEMENT_UPDATE</strong></p>
      operationId: untagVulnerabilities
      parameters:
      - description: Name of the tag
        in: path
        name: name
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
                format: uuid
                maxLength: 100
                minLength: 1
              maxItems: 100
              minItems: 1
        description: UUIDs of vulnerabilities to untag
        required: true
      responses:
        "204":
          description: Vulnerabilities untagged successfully.
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: A tag with the provided name does not exist.
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Untags one or more vulnerabilities.
      tags:
      - tag
    get:
      description: <p>Requires permission <strong>VULNERABILITY_MANAGEMENT</strong>
        or <strong>VULNERABILITY_MANAGEMENT_READ</strong></p>
      operationId: getTaggedVulnerabilities
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: Name of the tag to get vulnerabilities for.
        in: path
        name: name
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/TaggedVulnerabilityListResponseItem"
          description: A list of all vulnerabilities assigned to the given tag
          headers:
            X-Total-Count:
              description: The total number of vulnerabilities
              schema:
                format: integer
              style: simple
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all vulnerabilities assigned to the given tag.
      tags:
      - tag
  /v1/team:
    delete:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_DELETE</strong></p>
      operationId: deleteTeam
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Team"
      responses:
        "204":
          description: Team removed successfully
        "401":
          description: Unauthorized
        "404":
          description: The team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a team
      tags:
      - team
    get:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_READ</strong></p>
      operationId: getTeams
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Team"
          description: A list of all teams
          headers:
            X-Total-Count:
              description: The total number of teams
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all teams
      tags:
      - team
    post:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_UPDATE</strong></p>
      operationId: updateTeam
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Team"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Team"
          description: The updated team
        "401":
          description: Unauthorized
        "404":
          description: The team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates a team's fields
      tags:
      - team
    put:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_CREATE</strong></p>
      operationId: createTeam
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Team"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Team"
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Team"
          description: The created team
        "401":
          description: Unauthorized
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/TeamAlreadyExistsProblemDetails"
          description: Team already exists
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new team
      tags:
      - team
  /v1/team/key/{publicIdOrKey}:
    delete:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_DELETE</strong></p>
      operationId: deleteApiKey
      parameters:
      - description: The public ID for the API key or for Legacy the full Key to delete
        in: path
        name: publicIdOrKey
        required: true
        schema:
          type: string
      responses:
        "204":
          description: API key removed successfully
        "401":
          description: Unauthorized
        "404":
          description: The API key could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes the specified API key
      tags:
      - team
    post:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_CREATE</strong></p>
      operationId: regenerateApiKey
      parameters:
      - description: The public ID for the API key or for Legacy the complete Key
          to regenerate
        in: path
        name: publicIdOrKey
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiKey"
          description: The re-generated API key
        "401":
          description: Unauthorized
        "404":
          description: The API key could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: "Regenerates an API key by removing the specified key, generating a\
        \ new one and returning its value"
      tags:
      - team
  /v1/team/key/{publicIdOrKey}/comment:
    post:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_UPDATE</strong></p>
      operationId: updateApiKeyComment
      parameters:
      - description: The public ID for the API key or for Legacy the complete Key
          to comment on
        in: path
        name: publicIdOrKey
        required: true
        schema:
          type: string
      requestBody:
        content:
          text/plain:
            schema:
              type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiKey"
          description: The updated API key
        "401":
          description: Unauthorized
        "404":
          description: The API key could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates an API key's comment
      tags:
      - team
  /v1/team/self:
    get:
      operationId: getSelf
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TeamSelfResponse"
          description: Information about the current team
        "400":
          description: Invalid API key supplied
        "401":
          description: Unauthorized
        "404":
          description: No Team for the given API key found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns information about the current team.
      tags:
      - team
  /v1/team/visible:
    get:
      description: <p></p>
      operationId: availableTeams
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/VisibleTeams"
          description: The Visible Teams
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of Teams that are visible
      tags:
      - team
  /v1/team/{uuid}:
    get:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_READ</strong></p>
      operationId: getTeam
      parameters:
      - description: The UUID of the team to retrieve
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Team"
          description: A specific team
        "401":
          description: Unauthorized
        "404":
          description: The team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a specific team
      tags:
      - team
  /v1/team/{uuid}/key:
    put:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_CREATE</strong></p>
      operationId: generateApiKey
      parameters:
      - description: The UUID of the team to generate a key for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiKey"
          description: The created API key
        "401":
          description: Unauthorized
        "404":
          description: The team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Generates an API key and returns its value
      tags:
      - team
  /v1/user/forceChangePassword:
    post:
      description: "Upon a successful login, a bearer token will be returned in the\
        \ response body."
      operationId: forceChangePassword
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                confirmPassword:
                  type: string
                newPassword:
                  type: string
                password:
                  type: string
                username:
                  type: string
      responses:
        "200":
          description: Password changed successfully
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: "Asserts login credentials and upon successful authentication, verifies\
        \ passwords match and changes users password"
      tags:
      - user
  /v1/user/ldap:
    delete:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_DELETE</strong></p>
      operationId: deleteLdapUser
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LdapUser"
      responses:
        "204":
          description: LDAP user removed successfully
        "401":
          description: Unauthorized
        "404":
          description: The user could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a user.
      tags:
      - user
    get:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_READ</strong></p>
      operationId: getLdapUsers
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/LdapUser"
          description: A list of all LDAP users
          headers:
            X-Total-Count:
              description: The total number of LDAP users
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all LDAP users
      tags:
      - user
    put:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_CREATE</strong></p>
      operationId: createLdapUser
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LdapUser"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LdapUser"
          description: The created LDAP user
        "400":
          description: Username cannot be null or blank.
        "401":
          description: Unauthorized
        "409":
          description: A user with the same username already exists. Cannot create
            new user
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new user that references an existing LDAP object.
      tags:
      - user
  /v1/user/login:
    post:
      description: "Upon a successful login, a bearer token will be returned in the\
        \ response body."
      operationId: validateCredentials
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                password:
                  type: string
                username:
                  type: string
      responses:
        "200":
          content:
            text/plain:
              schema:
                type: string
          description: A bearer token to be used for authenticating with the REST
            API
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Assert login credentials
      tags:
      - user
  /v1/user/logout:
    post:
      description: Invalidates the current session. No-op when authenticated via API
        key.
      operationId: logout
      parameters:
      - in: header
        name: Authorization
        schema:
          type: string
      responses:
        "204":
          description: Session invalidated
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Invalidates the current session
      tags:
      - user
  /v1/user/managed:
    delete:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_DELETE</strong></p>
      operationId: deleteManagedUser
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ManagedUser"
      responses:
        "204":
          description: User removed successfully
        "401":
          description: Unauthorized
        "404":
          description: The user could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a user.
      tags:
      - user
    get:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_READ</strong></p>
      operationId: getManagedUsers
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ManagedUser"
          description: A list of all managed users
          headers:
            X-Total-Count:
              description: The total number of managed users
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all managed users
      tags:
      - user
    post:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_UPDATE</strong></p>
      operationId: updateManagedUser
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ManagedUser"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ManagedUser"
          description: The updated user
        "400":
          description: Missing required field
        "401":
          description: Unauthorized
        "404":
          description: The user could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates a managed user.
      tags:
      - user
    put:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_CREATE</strong></p>
      operationId: createManagedUser
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ManagedUser"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ManagedUser"
          description: The created user
        "400":
          description: Missing required field
        "401":
          description: Unauthorized
        "409":
          description: A user with the same username already exists. Cannot create
            new user
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new user.
      tags:
      - user
  /v1/user/membership:
    put:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_UPDATE</strong></p>
      operationId: setUserTeams
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TeamsSetRequest"
        description: Username and list of UUIDs to assign to user
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
          description: The updated user
        "304":
          description: The user is already a member of the specified team(s)
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Bad request
        "401":
          description: Unauthorized
        "404":
          description: The user or team(s) could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Sets specified teams to a user.
      tags:
      - user
  /v1/user/oidc:
    delete:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_DELETE</strong></p>
      operationId: deleteOidcUser
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/OidcUser"
      responses:
        "204":
          description: OIDC user removed successfully
        "401":
          description: Unauthorized
        "404":
          description: The user could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes an OpenID Connect user.
      tags:
      - user
    get:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_READ</strong></p>
      operationId: getOidcUsers
      responses:
        "200":
          description: A list of all OIDC users
          headers:
            X-Total-Count:
              description: The total number of OIDC users
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all OIDC users
      tags:
      - user
    put:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_CREATE</strong></p>
      operationId: createOidcUser
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/OidcUser"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OidcUser"
          description: The created OIDC user
        "400":
          description: Username cannot be null or blank.
        "401":
          description: Unauthorized
        "409":
          description: A user with the same username already exists. Cannot create
            new user
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new user that references an existing OpenID Connect user.
      tags:
      - user
  /v1/user/oidc/login:
    post:
      description: "Upon a successful login, a bearer token will be returned in the\
        \ response body."
      operationId: validateOidcAccessToken
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                accessToken:
                  type: string
                idToken:
                  type: string
                  description: An OAuth2 access token
              required:
              - idToken
      responses:
        "200":
          content:
            text/plain:
              schema:
                type: string
          description: A bearer token to be used for authenticating with the REST
            API
        "204":
          description: No Content
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Login with OpenID Connect
      tags:
      - user
  /v1/user/self:
    get:
      operationId: getSelf_1
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
          description: Information about the current logged in user
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns information about the current logged in user.
      tags:
      - user
    post:
      operationId: updateSelf
      requestBody:
        content:
          '*/*':
            schema:
              $ref: "#/components/schemas/ManagedUser"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ManagedUser"
          description: The updated user
        "400":
          description: An invalid payload was submitted or the user is not a managed
            user.
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates information about the current logged in user.
      tags:
      - user
  /v1/user/self/permissions:
    get:
      description: "Returns all permissions the authenticated user has, including\
        \ those inherited from teams."
      operationId: getSelfPermissions
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
          description: A list of effective permission names
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns the effective permissions of the authenticated user
      tags:
      - user
  /v1/user/{username}/membership:
    delete:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_DELETE</strong></p>
      operationId: removeTeamFromUser
      parameters:
      - description: A valid username
        in: path
        name: username
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/IdentifiableObject"
        description: The UUID of the team to un-associate username from
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
          description: The updated user
        "304":
          description: The user was not a member of the specified team
        "401":
          description: Unauthorized
        "404":
          description: The user or team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Removes the username from the specified team.
      tags:
      - user
    post:
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong> or <strong>ACCESS_MANAGEMENT_UPDATE</strong></p>
      operationId: addTeamToUser
      parameters:
      - description: A valid username
        in: path
        name: username
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/IdentifiableObject"
        description: The UUID of the team to associate username with
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
          description: The updated user
        "304":
          description: The user is already a member of the specified team
        "401":
          description: Unauthorized
        "404":
          description: The user or team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Adds the username to the specified team.
      tags:
      - user
  /v1/vex:
    post:
      description: |-
        <p>
          Expects CycloneDX and a valid project UUID. If a UUID is not specified,
          then the <code>projectName</code> and <code>projectVersion</code> must be specified.
        </p>
        <p>
          The VEX will be validated against the CycloneDX schema. If schema validation fails,
          a response with problem details in RFC 9457 format will be returned. In this case,
          the response's content type will be <code>application/problem+json</code>.
        </p>
        <p>Requires permission <strong>VULNERABILITY_ANALYSIS</strong> or <strong>VULNERABILITY_ANALYSIS_UPDATE</strong></p>
      operationId: uploadVex_1
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                project:
                  type: string
                projectName:
                  type: string
                projectVersion:
                  type: string
                vex:
                  type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BomUploadResponse"
          description: Token to be used for checking VEX processing progress
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/InvalidBomProblemDetails"
          description: Invalid VEX
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Upload a supported VEX document
      tags:
      - vex
    put:
      description: |-
        <p>
          Expects CycloneDX and a valid project UUID. If a UUID is not specified,
          then the <code>projectName</code> and <code>projectVersion</code> must be specified.
        </p>
        <p>
          The VEX will be validated against the CycloneDX schema. If schema validation fails,
          a response with problem details in RFC 9457 format will be returned. In this case,
          the response's content type will be <code>application/problem+json</code>.
        </p>
        <p>
          The maximum allowed length of the <code>vex</code> value is 20'000'000 characters.
          When uploading large VEX files, the <code>POST</code> endpoint is preferred,
          as it does not have this limit.
        </p>
        <p>Requires permission <strong>VULNERABILITY_ANALYSIS</strong> or <strong>VULNERABILITY_ANALYSIS_UPDATE</strong></p>
      operationId: uploadVex
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/VexSubmitRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BomUploadResponse"
          description: Token to be used for checking VEX processing progress
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/InvalidBomProblemDetails"
          description: Invalid VEX
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Upload a supported VEX document
      tags:
      - vex
  /v1/vex/cyclonedx/project/{uuid}:
    get:
      description: <p>Requires permission <strong>VULNERABILITY_ANALYSIS</strong>
        or <strong>VULNERABILITY_ANALYSIS_READ</strong></p>
      operationId: exportProjectAsCycloneDx_1
      parameters:
      - description: The UUID of the project to export
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: Force the resulting VEX to be downloaded as a file (defaults
          to 'false')
        in: query
        name: download
        schema:
          type: boolean
      - description: "The CycloneDX Spec variant exported (defaults to: '1.5')"
        in: query
        name: version
        schema:
          type: string
      responses:
        "200":
          content:
            application/octet-stream:
              schema:
                type: string
            application/vnd.cyclonedx+json:
              schema:
                type: string
          description: A VEX for a project in CycloneDX format
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a VEX for a project in CycloneDX format
      tags:
      - vex
  /v1/violation:
    get:
      description: <p>Requires permission <strong>VIEW_POLICY_VIOLATION</strong></p>
      operationId: getViolations
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: Optionally includes suppressed violations
        in: query
        name: suppressed
        schema:
          type: boolean
      - description: Optionally includes inactive projects
        in: query
        name: showInactive
        schema:
          type: boolean
      - description: Filter by violation state
        in: query
        name: violationState
        schema:
          type: string
      - description: Filter by risk type
        in: query
        name: riskType
        schema:
          type: string
      - description: Filter by policy
        in: query
        name: policy
        schema:
          type: string
      - description: Filter by analysis state
        in: query
        name: analysisState
        schema:
          type: string
      - description: Filter occurred on from
        in: query
        name: occurredOnDateFrom
        schema:
          type: string
      - description: Filter occurred on to
        in: query
        name: occurredOnDateTo
        schema:
          type: string
      - description: Filter the text input in these fields
        in: query
        name: textSearchField
        schema:
          type: string
      - description: Filter by this text input
        in: query
        name: textSearchInput
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PolicyViolation"
          description: A list of all policy violations for the entire portfolio
          headers:
            X-Total-Count:
              description: The total number of policy violations
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all policy violations for the entire portfolio
      tags:
      - violation
  /v1/violation/analysis:
    get:
      description: <p>Requires permission <strong>VIEW_POLICY_VIOLATION</strong></p>
      operationId: retrieveAnalysis_1
      parameters:
      - description: The UUID of the component
        in: query
        name: component
        required: true
        schema:
          type: string
          format: uuid
      - description: The UUID of the policy violation
        in: query
        name: policyViolation
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ViolationAnalysis"
          description: A violation analysis trail
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The component or policy violation could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Retrieves a violation analysis trail
      tags:
      - violationanalysis
    put:
      description: <p>Requires permission <strong>POLICY_VIOLATION_ANALYSIS</strong></p>
      operationId: updateAnalysis_1
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ViolationAnalysisRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ViolationAnalysis"
          description: The created violation analysis
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The component or policy violation could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Records a violation analysis decision
      tags:
      - violationanalysis
  /v1/violation/component/{uuid}:
    get:
      description: <p>Requires permission <strong>VIEW_POLICY_VIOLATION</strong></p>
      operationId: getViolationsByComponent
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: The UUID of the component
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: Optionally includes suppressed violations
        in: query
        name: suppressed
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PolicyViolation"
          description: A list of all policy violations for a specific component
          headers:
            X-Total-Count:
              description: The total number of policy violations
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all policy violations for a specific component
      tags:
      - violation
  /v1/violation/project/{uuid}:
    get:
      description: <p>Requires permission <strong>VIEW_POLICY_VIOLATION</strong></p>
      operationId: getViolationsByProject
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: The UUID of the project
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: Optionally includes suppressed violations
        in: query
        name: suppressed
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PolicyViolation"
          description: A list of all policy violations for a specific project
          headers:
            X-Total-Count:
              description: The total number of policy violations
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all policy violations for a specific project
      tags:
      - violation
  /v1/vulnerability:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getAllVulnerabilities
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Vulnerability"
          description: A list of all vulnerabilities
          headers:
            X-Total-Count:
              description: The total number of vulnerabilities
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all vulnerabilities
      tags:
      - vulnerability
    post:
      description: <p>Requires permission <strong>VULNERABILITY_MANAGEMENT</strong>
        or <strong>VULNERABILITY_MANAGEMENT_UPDATE</strong></p>
      operationId: updateVulnerability
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Vulnerability"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Vulnerability"
          description: The updated vulnerability
        "401":
          description: Unauthorized
        "404":
          description: The vulnerability could not be found
        "406":
          description: The vulnId may not be changed
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      tags:
      - vulnerability
    put:
      description: <p>Requires permission <strong>VULNERABILITY_MANAGEMENT</strong>
        or <strong>VULNERABILITY_MANAGEMENT_CREATE</strong></p>
      operationId: createVulnerability
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Vulnerability"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Vulnerability"
          description: The created vulnerability
        "401":
          description: Unauthorized
        "409":
          description: A vulnerability with the specified vulnId already exists
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Creates a new vulnerability
      tags:
      - vulnerability
  /v1/vulnerability/component/{uuid}:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getVulnerabilitiesByComponent
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: The UUID of the component to retrieve vulnerabilities for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: Optionally includes suppressed vulnerabilities
        in: query
        name: suppressed
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Vulnerability"
          description: A list of all vulnerabilities for a specific component
          headers:
            X-Total-Count:
              description: The total number of vulnerabilities
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all vulnerabilities for a specific component
      tags:
      - vulnerability
  /v1/vulnerability/project/{uuid}:
    get:
      deprecated: true
      description: |-
        <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
        <p><strong>Deprecated</strong>! Use <code>/api/v1/finding/project/{uuid}</code> instead.</p>
      operationId: getVulnerabilitiesByProject
      parameters:
      - description: The UUID of the project to retrieve vulnerabilities for
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: Optionally includes suppressed vulnerabilities
        in: query
        name: suppressed
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Vulnerability"
          description: A list of all vulnerabilities for a specific project
          headers:
            X-Total-Count:
              description: The total number of vulnerabilities
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all vulnerabilities for a specific project
      tags:
      - vulnerability
  /v1/vulnerability/source/{source}/vuln/{vulnId}/component/{component}:
    delete:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_DELETE</strong></p>
      operationId: unassignVulnerability_1
      parameters:
      - description: The vulnerability source
        in: path
        name: source
        required: true
        schema:
          type: string
      - description: The vulnId
        in: path
        name: vulnId
        required: true
        schema:
          type: string
      - description: The UUID of the component
        in: path
        name: component
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Assignment removal successful
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The vulnerability or component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Removes assignment of a vulnerability from a component
      tags:
      - vulnerability
    post:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_UPDATE</strong></p>
      operationId: assignVulnerability_1
      parameters:
      - description: The vulnerability source
        in: path
        name: source
        required: true
        schema:
          type: string
      - description: The vulnId
        in: path
        name: vulnId
        required: true
        schema:
          type: string
      - description: The UUID of the component
        in: path
        name: component
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Assignment successful
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The vulnerability or component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Assigns a vulnerability to a component
      tags:
      - vulnerability
  /v1/vulnerability/source/{source}/vuln/{vuln}:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getVulnerabilityByVulnId
      parameters:
      - in: path
        name: source
        required: true
        schema:
          type: string
      - in: path
        name: vuln
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Vulnerability"
          description: A specific vulnerability
        "401":
          description: Unauthorized
        "404":
          description: The vulnerability could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a specific vulnerability
      tags:
      - vulnerability
  /v1/vulnerability/source/{source}/vuln/{vuln}/projects:
    get:
      description: |-
        <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p><p>Optional query parameter <code>searchText</code>. The search is case insensitive.
        So if a search is done for project 'abc' and a project named 'aBc' exists in the knowledgebase,
        then the latter would appear in the search results</p>
      operationId: getAffectedProject
      parameters:
      - description: The page to return. To be used in conjunction with <code>pageSize</code>.
        in: query
        name: pageNumber
        schema:
          type: string
          default: "1"
      - description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        in: query
        name: pageSize
        schema:
          type: string
          default: "100"
      - description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        in: query
        name: offset
        schema:
          type: string
      - description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        in: query
        name: limit
        schema:
          type: string
      - description: Name of the resource field to sort on.
        in: query
        name: sortName
        schema:
          type: string
      - description: Ordering of items when sorting with <code>sortName</code>.
        in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - "asc, desc"
      - description: Optional case-insensitive substring match on project name.
        in: query
        name: searchText
        schema:
          type: string
      - in: path
        name: source
        required: true
        schema:
          type: string
      - in: path
        name: vuln
        required: true
        schema:
          type: string
      - description: Optionally excludes inactive projects from being returned
        in: query
        name: excludeInactive
        schema:
          type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/AffectedProject"
          description: A list of all projects affected by a specific vulnerability
          headers:
            X-Total-Count:
              description: The total number of projects
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all projects affected by a specific vulnerability
      tags:
      - vulnerability
  /v1/vulnerability/tag/{tag}:
    get:
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getVulnerabilitiesByTag
      parameters:
      - description: The tag to query on
        in: path
        name: tag
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Vulnerability"
          description: A list of all tagged vulnerabilities
          headers:
            X-Total-Count:
              description: The total number of vulnerabilities with the tag
              schema:
                format: integer
              style: simple
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a list of all vulnerabilities by tag
      tags:
      - vulnerability
  /v1/vulnerability/vulnId:
    get:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_CREATE</strong></p>
      operationId: generateInternalVulnerabilityIdentifier
      responses:
        "200":
          content:
            application/json:
              schema:
                type: string
          description: An internal vulnerability identifier
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Generates an internal vulnerability identifier
      tags:
      - vulnerability
  /v1/vulnerability/{uuid}:
    delete:
      description: <p>Requires permission <strong>VULNERABILITY_MANAGEMENT</strong>
        or <strong>VULNERABILITY_MANAGEMENT_DELETE</strong></p>
      operationId: deleteVulnerability
      parameters:
      - description: The UUID of the vulnerability to delete
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: Vulnerability removed successfully
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified vulnerability is forbidden
        "404":
          description: The UUID of the vulnerability could not be found
        "412":
          description: Portfolio components or services are affected by this vulnerability.
            Unable to delete.
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Deletes a vulnerability
      tags:
      - vulnerability
    get:
      description: <p>Requires permission <strong>VULNERABILITY_MANAGEMENT</strong>
        or <strong>VULNERABILITY_MANAGEMENT_READ</strong></p>
      operationId: getVulnerabilityByUuid
      parameters:
      - description: The UUID of the vulnerability
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Vulnerability"
          description: A specific vulnerability
        "401":
          description: Unauthorized
        "404":
          description: The vulnerability could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Returns a specific vulnerability
      tags:
      - vulnerability
  /v1/vulnerability/{uuid}/component/{component}:
    delete:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_DELETE</strong></p>
      operationId: unassignVulnerability
      parameters:
      - description: The UUID of the vulnerability
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The UUID of the component
        in: path
        name: component
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Assignment removal successful
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The vulnerability or component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Removes assignment of a vulnerability from a component
      tags:
      - vulnerability
    post:
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong> or
        <strong>PORTFOLIO_MANAGEMENT_UPDATE</strong></p>
      operationId: assignVulnerability
      parameters:
      - description: The UUID of the vulnerability
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      - description: The UUID of the component
        in: path
        name: component
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Assignment successful
        "401":
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Access to the requested project is forbidden
        "404":
          description: The vulnerability or component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Assigns a vulnerability to a component
      tags:
      - vulnerability
  /v1/vulnerability/{uuid}/tags:
    post:
      description: <p>Requires permission <strong>VULNERABILITY_MANAGEMENT</strong>
        or <strong>VULNERABILITY_MANAGEMENT_UPDATE</strong></p>
      operationId: updateVulnerabilityTags
      parameters:
      - description: UUID of the vulnerability
        in: path
        name: uuid
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Vulnerability"
          description: The updated vulnerability
        "401":
          description: Unauthorized
        "404":
          description: The vulnerability could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      summary: Updates tags for a vulnerability
      tags:
      - vulnerability
  /version:
    get:
      description: Returns a simple json object containing the name of the application
        and the version
      operationId: getVersion
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/About"
          description: Application version information
      summary: Returns application version information
      tags:
      - version
components:
  schemas:
    About:
      type: object
      properties:
        application:
          type: string
        framework:
          $ref: "#/components/schemas/Framework"
        timestamp:
          type: string
        uuid:
          type: string
        version:
          type: string
    AclMappingRequest:
      type: object
      properties:
        project:
          type: string
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        team:
          type: string
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
      required:
      - project
      - team
    AffectedComponent:
      type: object
      properties:
        affectedVersionAttributions:
          type: array
          items:
            $ref: "#/components/schemas/AffectedVersionAttribution"
        identity:
          type: string
        identityType:
          type: string
          enum:
          - CPE
          - PURL
        uuid:
          type: string
          format: uuid
        version:
          type: string
        versionEndExcluding:
          type: string
        versionEndIncluding:
          type: string
        versionStartExcluding:
          type: string
        versionStartIncluding:
          type: string
        versionType:
          type: string
          enum:
          - EXACT
          - RANGE
    AffectedProject:
      type: object
      properties:
        active:
          type: boolean
        affectedComponentUuids:
          type: array
          items:
            type: string
            format: uuid
        dependencyGraphAvailable:
          type: boolean
        name:
          type: string
        uuid:
          type: string
          format: uuid
        version:
          type: string
    AffectedVersionAttribution:
      type: object
      properties:
        firstSeen:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        lastSeen:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        source:
          type: string
          enum:
          - NVD
          - GITHUB
          - VULNDB
          - OSSINDEX
          - INTERNAL
          - OSV
          - SNYK
          - UNKNOWN
      required:
      - firstSeen
      - lastSeen
    Analysis:
      type: object
      properties:
        analysisComments:
          type: array
          items:
            $ref: "#/components/schemas/AnalysisComment"
        analysisDetails:
          type: string
        analysisJustification:
          type: string
          enum:
          - CODE_NOT_PRESENT
          - CODE_NOT_REACHABLE
          - REQUIRES_CONFIGURATION
          - REQUIRES_DEPENDENCY
          - REQUIRES_ENVIRONMENT
          - PROTECTED_BY_COMPILER
          - PROTECTED_AT_RUNTIME
          - PROTECTED_AT_PERIMETER
          - PROTECTED_BY_MITIGATING_CONTROL
          - NOT_SET
        analysisResponse:
          type: string
          enum:
          - CAN_NOT_FIX
          - WILL_NOT_FIX
          - UPDATE
          - ROLLBACK
          - WORKAROUND_AVAILABLE
          - NOT_SET
        analysisState:
          type: string
          enum:
          - EXPLOITABLE
          - IN_TRIAGE
          - FALSE_POSITIVE
          - NOT_AFFECTED
          - RESOLVED
          - NOT_SET
        cvssV2Score:
          type: number
        cvssV2Vector:
          type: string
        cvssV3Score:
          type: number
        cvssV3Vector:
          type: string
        cvssV4Score:
          type: number
        cvssV4Vector:
          type: string
        isSuppressed:
          type: boolean
        owaspScore:
          type: number
        owaspVector:
          type: string
        severity:
          type: string
          enum:
          - CRITICAL
          - HIGH
          - MEDIUM
          - LOW
          - INFO
          - UNASSIGNED
      required:
      - analysisDetails
      - analysisJustification
      - analysisResponse
      - analysisState
    AnalysisComment:
      type: object
      properties:
        comment:
          type: string
        commenter:
          type: string
        timestamp:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
      required:
      - comment
      - timestamp
    AnalysisRequest:
      type: object
      properties:
        analysisDetails:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        analysisJustification:
          type: string
          enum:
          - CODE_NOT_PRESENT
          - CODE_NOT_REACHABLE
          - REQUIRES_CONFIGURATION
          - REQUIRES_DEPENDENCY
          - REQUIRES_ENVIRONMENT
          - PROTECTED_BY_COMPILER
          - PROTECTED_AT_RUNTIME
          - PROTECTED_AT_PERIMETER
          - PROTECTED_BY_MITIGATING_CONTROL
          - NOT_SET
        analysisResponse:
          type: string
          enum:
          - CAN_NOT_FIX
          - WILL_NOT_FIX
          - UPDATE
          - ROLLBACK
          - WORKAROUND_AVAILABLE
          - NOT_SET
        analysisState:
          type: string
          enum:
          - EXPLOITABLE
          - IN_TRIAGE
          - FALSE_POSITIVE
          - NOT_AFFECTED
          - RESOLVED
          - NOT_SET
        comment:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        component:
          type: string
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        isSuppressed:
          type: boolean
          writeOnly: true
        project:
          type: string
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        suppressed:
          type: boolean
        vulnerability:
          type: string
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
      required:
      - component
      - vulnerability
    ApiKey:
      type: object
      properties:
        comment:
          type: string
          maxLength: 255
          minLength: 0
        created:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        key:
          type: string
        lastUsed:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        legacy:
          type: boolean
        maskedKey:
          type: string
        publicId:
          type: string
          maxLength: 8
          minLength: 5
    BomSubmitRequest:
      type: object
      properties:
        autoCreate:
          type: boolean
        bom:
          type: string
          description: Base64 encoded BOM
          example: ewogICJib21Gb3JtYXQiOiAiQ3ljbG9uZURYIiwKICAic3BlY1ZlcnNpb24iOiAiMS40IiwKICAiY29tcG9uZW50cyI6IFsKICAgIHsKICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICJuYW1lIjogImFjbWUtbGliIiwKICAgICAgInZlcnNpb24iOiAiMS4wLjAiCiAgICB9CiAgXQp9
          pattern: "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
        isLatest:
          type: boolean
        parentName:
          type: string
          example: Example Application Parent
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        parentUUID:
          type: string
          example: 5341f53c-611b-4388-9d9c-731026dc5eec
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        parentVersion:
          type: string
          example: 1.0.0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        project:
          type: string
          example: 38640b33-4ba9-4733-bdab-cbfc40c6f8aa
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        projectName:
          type: string
          example: Example Application
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        projectTags:
          type: array
          example: "tag1, tag2"
          items:
            $ref: "#/components/schemas/Tag"
        projectVersion:
          type: string
          example: 1.0.0
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
      required:
      - bom
      - project
      - projectName
      - projectVersion
    BomUploadResponse:
      type: object
      properties:
        projectUuid:
          type: string
          format: uuid
          description: UUID of the project the BOM was uploaded for
        token:
          type: string
          format: uuid
          description: Token used to check task progress
      required:
      - projectUuid
      - token
    CelExpressionError:
      type: object
      description: Errors identified during CEL expression compilation
      properties:
        column:
          type: integer
          format: int32
        line:
          type: integer
          format: int32
        message:
          type: string
    CloneProjectRequest:
      type: object
      properties:
        includeACL:
          type: boolean
          writeOnly: true
        includeAuditHistory:
          type: boolean
          writeOnly: true
        includeComponents:
          type: boolean
          writeOnly: true
        includeDependencies:
          type: boolean
          writeOnly: true
        includePolicyViolations:
          type: boolean
          writeOnly: true
        includeProperties:
          type: boolean
          writeOnly: true
        includeServices:
          type: boolean
          writeOnly: true
        includeTags:
          type: boolean
          writeOnly: true
        makeCloneLatest:
          type: boolean
          writeOnly: true
        project:
          type: string
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        version:
          type: string
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
      required:
      - project
      - version
    Component:
      type: object
      properties:
        author:
          type: string
        authors:
          type: array
          items:
            $ref: "#/components/schemas/OrganizationalContact"
        blake2b_256:
          type: string
          pattern: "^[0-9a-f]{64}$"
        blake2b_384:
          type: string
          pattern: "^[0-9a-f]{96}$"
        blake2b_512:
          type: string
          pattern: "^[0-9a-f]{128}$"
        blake3:
          type: string
          pattern: "^[A-Fa-f0-9]*$"
        children:
          type: array
          items:
            $ref: "#/components/schemas/Component"
        classifier:
          type: string
          enum:
          - APPLICATION
          - FRAMEWORK
          - LIBRARY
          - CONTAINER
          - OPERATING_SYSTEM
          - DEVICE
          - FIRMWARE
          - FILE
          - PLATFORM
          - DEVICE_DRIVER
          - MACHINE_LEARNING_MODEL
          - DATA
          - CRYPTOGRAPHIC_ASSET
        copyright:
          type: string
          maxLength: 1024
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        cpe:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "(cpe:2\\.3:[aho\\*\\-](:(((\\?*|\\*?)([a-zA-Z0-9\\-\\._]|(\\\\\
            [\\\\\\*\\?!\"#$$%&'\\(\\)\\+,/:;<=>@\\[\\]\\^`\\{\\|}~]))+(\\?*|\\*?))|[\\\
            *\\-])){5}(:(([a-zA-Z]{2,3}(-([a-zA-Z]{2}|[0-9]{3}))?)|[\\*\\-]))(:(((\\\
            ?*|\\*?)([a-zA-Z0-9\\-\\._]|(\\\\[\\\\\\*\\?!\"#$$%&'\\(\\)\\+,/:;<=>@\\\
            [\\]\\^`\\{\\|}~]))+(\\?*|\\*?))|[\\*\\-])){4})|([c][pP][eE]:/[AHOaho]?(:[A-Za-z0-9\\\
            ._\\-~%]*){0,6})"
        dependencyGraph:
          type: array
          items:
            type: string
          uniqueItems: true
        description:
          type: string
          maxLength: 1024
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        directDependencies:
          type: string
        expandDependencyGraph:
          type: boolean
        extension:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{Alnum}!@#$%^&{}\\[\\]()_+\\-=,.~'` ]{1,255}$"
        externalReferences:
          type: array
          items:
            $ref: "#/components/schemas/ExternalReference"
        filename:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{Alnum}:/\\\\!@#$%^&{}\\[\\]()_+\\-=,.~'` ]{1,255}$"
        group:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        isInternal:
          type: boolean
        lastInheritedRiskScore:
          type: number
          format: double
        license:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        licenseExpression:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        licenseUrl:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "^((((https?|ftps?|sftp|imap|rtsp|rtmp|sip|sips|git|ssh|telnet|nntp|file)://)|(mailto:|news:))(%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@&=+$,A-Za-z0-9])+)([).!';/?:,][[:blank:]])?$"
        md5:
          type: string
          pattern: "^[0-9a-fA-F]{32}$"
        metrics:
          $ref: "#/components/schemas/DependencyMetrics"
        name:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        notes:
          type: string
        occurrenceCount:
          type: integer
          format: int64
        parent:
          $ref: "#/components/schemas/Component"
        project:
          $ref: "#/components/schemas/Project"
        properties:
          type: array
          items:
            $ref: "#/components/schemas/ComponentProperty"
        publisher:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        purl:
          type: string
          maxLength: 1024
          minLength: 0
        purlCoordinates:
          type: string
          maxLength: 1024
          minLength: 0
          readOnly: true
        repositoryMeta:
          $ref: "#/components/schemas/RepositoryMetaComponent"
        resolvedLicense:
          $ref: "#/components/schemas/License"
        scope:
          type: string
          enum:
          - REQUIRED
          - OPTIONAL
          - EXCLUDED
          maxLength: 255
          minLength: 0
        sha1:
          type: string
          pattern: "^[0-9a-fA-F]{40}$"
        sha256:
          type: string
          pattern: "^[0-9a-fA-F]{64}$"
        sha384:
          type: string
          pattern: "^[0-9a-fA-F]{96}$"
        sha3_256:
          type: string
          pattern: "^[0-9a-fA-F]{64}$"
        sha3_384:
          type: string
          pattern: "^[0-9a-fA-F]{96}$"
        sha3_512:
          type: string
          pattern: "^[0-9a-fA-F]{128}$"
        sha512:
          type: string
          pattern: "^[0-9a-fA-F]{128}$"
        supplier:
          $ref: "#/components/schemas/OrganizationalEntity"
        swidTagId:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        uuid:
          type: string
          format: uuid
        version:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        vulnerabilities:
          type: array
          items:
            $ref: "#/components/schemas/Vulnerability"
      required:
      - classifier
      - name
      - project
      - uuid
    ComponentOccurrence:
      type: object
      properties:
        createdAt:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        id:
          type: string
          format: uuid
        line:
          type: integer
          format: int32
        location:
          type: string
        offset:
          type: integer
          format: int32
        symbol:
          type: string
    ComponentProperty:
      type: object
      properties:
        description:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "\\P{Cc}+"
        groupName:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "\\P{Cc}+"
        propertyName:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "\\P{Cc}+"
        propertyType:
          type: string
          enum:
          - BOOLEAN
          - INTEGER
          - NUMBER
          - STRING
          - TIMESTAMP
          - URL
          - UUID
        propertyValue:
          type: string
          maxLength: 1024
          minLength: 0
          pattern: "\\P{Cc}+"
        uuid:
          type: string
          format: uuid
      required:
      - propertyName
      - propertyType
      - uuid
    ConciseProject:
      type: object
      description: A concise representation of a project
      properties:
        active:
          type: boolean
          description: Whether the project is active
        classifier:
          type: string
          description: Classifier of the project
          enum:
          - APPLICATION
          - FRAMEWORK
          - LIBRARY
          - CONTAINER
          - OPERATING_SYSTEM
          - DEVICE
          - FIRMWARE
          - FILE
          - PLATFORM
          - DEVICE_DRIVER
          - MACHINE_LEARNING_MODEL
          - DATA
          - CRYPTOGRAPHIC_ASSET
        collectionLogic:
          type: string
          description: Collection logic for aggregating child metrics
          enum:
          - AGGREGATE_DIRECT_CHILDREN
          - AGGREGATE_DIRECT_CHILDREN_WITH_TAG
          - AGGREGATE_LATEST_VERSION_CHILDREN
        group:
          type: string
          description: Group or namespace of the project
        hasChildren:
          type: boolean
          description: Whether the project has children
        isLatest:
          type: boolean
          description: Whether the project version is latest
        lastBomImport:
          type: integer
          format: int64
          description: Timestamp of the last BOM import
        lastBomImportFormat:
          type: string
          description: Format of the last imported BOM
        lastRiskScore:
          type: number
          format: double
          description: Last observed risk score
        metrics:
          $ref: "#/components/schemas/ConciseProjectMetrics"
        name:
          type: string
          description: Name of the project
        tags:
          type: array
          description: Tags associated with the project
          items:
            $ref: "#/components/schemas/Tag"
        teams:
          type: array
          description: Teams associated with the project
          items:
            $ref: "#/components/schemas/Team"
        uuid:
          type: string
          format: uuid
          description: UUID of the project
        version:
          type: string
          description: Version of the project
      required:
      - active
      - hasChildren
      - name
      - uuid
    ConciseProjectMetrics:
      type: object
      description: A concise representation of a project's metrics
      properties:
        components:
          type: integer
          format: int32
          description: Total number of components
        critical:
          type: integer
          format: int32
          description: Number of vulnerabilities with critical severity
        high:
          type: integer
          format: int32
          description: Number of vulnerabilities with high severity
        inheritedRiskScore:
          type: number
          format: double
          description: The inherited risk score
        low:
          type: integer
          format: int32
          description: Number of vulnerabilities with low severity
        medium:
          type: integer
          format: int32
          description: Number of vulnerabilities with medium severity
        policyViolationsFail:
          type: integer
          format: int32
          description: Number of policy violations with status FAIL
        policyViolationsInfo:
          type: integer
          format: int32
          description: Number of policy violations with status WARN
        policyViolationsLicenseTotal:
          type: integer
          format: int32
          description: Number of license policy violations
        policyViolationsOperationalTotal:
          type: integer
          format: int32
          description: Number of operational policy violations
        policyViolationsSecurityTotal:
          type: integer
          format: int32
          description: Number of security policy violations
        policyViolationsTotal:
          type: integer
          format: int32
          description: Total number of policy violations
        policyViolationsWarn:
          type: integer
          format: int32
          description: Number of policy violations with status WARN
        unassigned:
          type: integer
          format: int32
          description: Number of vulnerabilities with unassigned severity
        vulnerabilities:
          type: integer
          format: int32
          description: Total number of vulnerabilities
      required:
      - components
      - critical
      - high
      - inheritedRiskScore
      - low
      - medium
      - policyViolationsFail
      - policyViolationsInfo
      - policyViolationsLicenseTotal
      - policyViolationsOperationalTotal
      - policyViolationsSecurityTotal
      - policyViolationsTotal
      - policyViolationsWarn
      - unassigned
      - vulnerabilities
    ConfigProperty:
      type: object
      properties:
        description:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "[\\P{Cc}]+"
        groupName:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
        propertyName:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
        propertyType:
          type: string
          enum:
          - BOOLEAN
          - INTEGER
          - NUMBER
          - STRING
          - TIMESTAMP
          - URL
          - UUID
        propertyValue:
          type: string
          pattern: "[\\P{Cc}]+"
      required:
      - groupName
      - propertyName
      - propertyType
    CreateNotificationPublisherRequest:
      type: object
      properties:
        description:
          type: string
        extensionName:
          type: string
          minLength: 1
        name:
          type: string
          minLength: 1
        template:
          type: string
        templateMimeType:
          type: string
      required:
      - extensionName
      - name
    CreateNotificationRuleRequest:
      type: object
      properties:
        level:
          type: string
          enum:
          - INFORMATIONAL
          - WARNING
          - ERROR
        name:
          type: string
          minLength: 1
        publisher:
          $ref: "#/components/schemas/Publisher"
        scope:
          type: string
          enum:
          - SYSTEM
          - PORTFOLIO
      required:
      - level
      - name
      - publisher
      - scope
    CreateScheduledNotificationRuleRequest:
      type: object
      properties:
        level:
          type: string
          enum:
          - INFORMATIONAL
          - WARNING
          - ERROR
        name:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        publisher:
          $ref: "#/components/schemas/Publisher"
        scope:
          type: string
          enum:
          - SYSTEM
          - PORTFOLIO
      required:
      - level
      - name
      - publisher
      - scope
    CvssScoreResponse:
      type: object
      properties:
        baseScore:
          type: number
          format: double
        environmentalScore:
          type: number
          format: double
        exploitabilitySubScore:
          type: number
          format: double
        impactSubScore:
          type: number
          format: double
        modifiedImpactSubScore:
          type: number
          format: double
        temporalScore:
          type: number
          format: double
    Cwe:
      type: object
      properties:
        cweId:
          type: integer
          format: int32
        name:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
    DataClassification:
      type: object
      properties:
        direction:
          type: string
          enum:
          - INBOUND
          - OUTBOUND
          - BI_DIRECTIONAL
          - UNKNOWN
        name:
          type: string
    DependencyGraphResponse:
      type: object
      properties:
        directDependencies:
          type: string
        latestVersion:
          type: string
        name:
          type: string
        purl:
          type: string
        uuid:
          type: string
          format: uuid
        version:
          type: string
    DependencyMetrics:
      type: object
      properties:
        critical:
          type: integer
          format: int32
        findingsAudited:
          type: integer
          format: int32
        findingsTotal:
          type: integer
          format: int32
        findingsUnaudited:
          type: integer
          format: int32
        firstOccurrence:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        high:
          type: integer
          format: int32
        inheritedRiskScore:
          type: number
          format: double
        lastOccurrence:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        low:
          type: integer
          format: int32
        medium:
          type: integer
          format: int32
        policyViolationsAudited:
          type: integer
          format: int32
        policyViolationsFail:
          type: integer
          format: int32
        policyViolationsInfo:
          type: integer
          format: int32
        policyViolationsLicenseAudited:
          type: integer
          format: int32
        policyViolationsLicenseTotal:
          type: integer
          format: int32
        policyViolationsLicenseUnaudited:
          type: integer
          format: int32
        policyViolationsOperationalAudited:
          type: integer
          format: int32
        policyViolationsOperationalTotal:
          type: integer
          format: int32
        policyViolationsOperationalUnaudited:
          type: integer
          format: int32
        policyViolationsSecurityAudited:
          type: integer
          format: int32
        policyViolationsSecurityTotal:
          type: integer
          format: int32
        policyViolationsSecurityUnaudited:
          type: integer
          format: int32
        policyViolationsTotal:
          type: integer
          format: int32
        policyViolationsUnaudited:
          type: integer
          format: int32
        policyViolationsWarn:
          type: integer
          format: int32
        suppressed:
          type: integer
          format: int32
        unassigned:
          type: integer
          format: int32
        vulnerabilities:
          type: integer
          format: int32
      required:
      - firstOccurrence
      - lastOccurrence
    Epss:
      type: object
      properties:
        cve:
          type: string
        percentile:
          type: number
        score:
          type: number
    ExternalReference:
      type: object
      properties:
        comment:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        type:
          type: string
          enum:
          - vcs
          - issue-tracker
          - website
          - advisories
          - bom
          - mailing-list
          - social
          - chat
          - documentation
          - support
          - source-distribution
          - distribution
          - distribution-intake
          - license
          - build-meta
          - build-system
          - release-notes
          - security-contact
          - model_card
          - attestation
          - threat-model
          - adversary-model
          - risk-assessment
          - vulnerability-assertion
          - exploitability-statement
          - pentest-report
          - static-analysis-report
          - dynamic-analysis-report
          - runtime-analysis-report
          - component-analysis-report
          - maturity-report
          - certification-report
          - codified-infrastructure
          - quality-metrics
          - log
          - configuration
          - evidence
          - formulation
          - rfc-9116
          - electronic-signature
          - digital-signature
          - other
        url:
          type: string
          minLength: 1
      required:
      - url
    Finding:
      type: object
      properties:
        analysis:
          type: object
          additionalProperties:
            type: object
        attribution:
          type: object
          additionalProperties:
            type: object
        component:
          type: object
          additionalProperties:
            type: object
        matrix:
          type: string
        vulnerability:
          type: object
          additionalProperties:
            type: object
    Framework:
      type: object
      properties:
        name:
          type: string
        timestamp:
          type: string
        uuid:
          type: string
        version:
          type: string
    IdentifiableObject:
      type: object
      properties:
        uuid:
          type: string
    InvalidBomProblemDetails:
      type: object
      allOf:
      - $ref: "#/components/schemas/ProblemDetails"
      - type: object
        properties:
          errors:
            type: array
            description: Errors identified during schema validation
            items:
              type: string
              description: Errors identified during schema validation
      required:
      - detail
      - status
      - title
    InvalidNotificationFilterExpressionProblemDetails:
      type: object
      allOf:
      - $ref: "#/components/schemas/ProblemDetails"
      - type: object
        properties:
          errors:
            type: array
            description: Errors identified during CEL expression compilation
            items:
              $ref: "#/components/schemas/CelExpressionError"
      required:
      - detail
      - status
      - title
    IsTokenBeingProcessedResponse:
      type: object
      properties:
        processing:
          type: boolean
      required:
      - processing
    LdapUser:
      type: object
      properties:
        dn:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
        email:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "[\\P{Cc}]+"
        permissions:
          type: array
          items:
            $ref: "#/components/schemas/Permission"
        username:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
      required:
      - username
    License:
      type: object
      properties:
        isCustomLicense:
          type: boolean
        isDeprecatedLicenseId:
          type: boolean
        isFsfLibre:
          type: boolean
        isOsiApproved:
          type: boolean
        licenseComments:
          type: string
        licenseGroups:
          type: array
          items:
            $ref: "#/components/schemas/LicenseGroup"
        licenseId:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "^[a-zA-Z0-9_.\\-+]*$"
        licenseText:
          type: string
        name:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        seeAlso:
          type: array
          items:
            type: string
        standardLicenseHeader:
          type: string
        standardLicenseTemplate:
          type: string
        uuid:
          type: string
          format: uuid
      required:
      - licenseId
      - name
      - uuid
    LicenseGroup:
      type: object
      properties:
        licenses:
          type: array
          items:
            $ref: "#/components/schemas/License"
        name:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        riskWeight:
          type: integer
          format: int32
        uuid:
          type: string
          format: uuid
      required:
      - name
      - uuid
    ListProjectsResponseItem:
      type: object
      properties:
        active:
          type: boolean
        authors:
          type: array
          items:
            $ref: "#/components/schemas/OrganizationalContact"
        classifier:
          type: string
          enum:
          - APPLICATION
          - FRAMEWORK
          - LIBRARY
          - CONTAINER
          - OPERATING_SYSTEM
          - DEVICE
          - FIRMWARE
          - FILE
          - PLATFORM
          - DEVICE_DRIVER
          - MACHINE_LEARNING_MODEL
          - DATA
          - CRYPTOGRAPHIC_ASSET
        collectionLogic:
          type: string
          enum:
          - AGGREGATE_DIRECT_CHILDREN
          - AGGREGATE_DIRECT_CHILDREN_WITH_TAG
          - AGGREGATE_LATEST_VERSION_CHILDREN
        collectionTag:
          $ref: "#/components/schemas/Tag"
        cpe:
          type: string
        description:
          type: string
        directDependencies:
          type: string
        externalReferences:
          type: array
          items:
            $ref: "#/components/schemas/ExternalReference"
        group:
          type: string
        hasChildren:
          type: boolean
          description: Whether the project has child projects
        inactiveSince:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
          readOnly: true
        isLatest:
          type: boolean
        lastBomImport:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        lastBomImportFormat:
          type: string
        lastInheritedRiskScore:
          type: number
          format: double
        lastVulnerabilityAnalysis:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        manufacturer:
          $ref: "#/components/schemas/OrganizationalEntity"
        metadata:
          $ref: "#/components/schemas/ProjectMetadata"
        metrics:
          $ref: "#/components/schemas/ProjectMetrics"
        name:
          type: string
        parent:
          $ref: "#/components/schemas/Parent"
        publisher:
          type: string
        purl:
          type: string
        supplier:
          $ref: "#/components/schemas/OrganizationalEntity"
        swidTagId:
          type: string
        tags:
          type: array
          items:
            $ref: "#/components/schemas/Tag"
        uuid:
          type: string
          format: uuid
        version:
          type: string
      required:
      - hasChildren
      - lastBomImport
      - name
      - uuid
    ManagedUser:
      type: object
      properties:
        confirmPassword:
          type: string
        email:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "[\\P{Cc}]+"
        forcePasswordChange:
          type: boolean
        fullname:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "[\\P{Cc}]+"
        lastPasswordChange:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        newPassword:
          type: string
        nonExpiryPassword:
          type: boolean
        permissions:
          type: array
          items:
            $ref: "#/components/schemas/Permission"
        suspended:
          type: boolean
        teams:
          type: array
          items:
            $ref: "#/components/schemas/Team"
        username:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
      required:
      - lastPasswordChange
      - username
    MappedLdapGroup:
      type: object
      properties:
        dn:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
        uuid:
          type: string
          format: uuid
      required:
      - dn
      - uuid
    MappedLdapGroupRequest:
      type: object
      properties:
        dn:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        team:
          type: string
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
      required:
      - dn
      - team
    MappedOidcGroup:
      type: object
      properties:
        group:
          $ref: "#/components/schemas/OidcGroup"
        uuid:
          type: string
          format: uuid
      required:
      - uuid
    MappedOidcGroupRequest:
      type: object
      properties:
        group:
          type: string
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        team:
          type: string
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
      required:
      - group
      - team
    NotificationPublisher:
      type: object
      properties:
        defaultPublisher:
          type: boolean
        description:
          type: string
          maxLength: 1024
          minLength: 0
        extensionName:
          type: string
          maxLength: 1024
          minLength: 1
        name:
          type: string
          maxLength: 255
          minLength: 1
        template:
          type: string
        templateMimeType:
          type: string
          maxLength: 255
          minLength: 1
        uuid:
          type: string
          format: uuid
      required:
      - extensionName
      - name
      - templateMimeType
      - uuid
    NotificationRule:
      type: object
      properties:
        enabled:
          type: boolean
        filterExpression:
          type: string
        logSuccessfulPublish:
          type: boolean
        message:
          type: string
          maxLength: 1024
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        name:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        notificationLevel:
          type: string
          enum:
          - INFORMATIONAL
          - WARNING
          - ERROR
        notifyChildren:
          type: boolean
        notifyOn:
          type: array
          items:
            type: string
            enum:
            - CONFIGURATION
            - DATASOURCE_MIRRORING
            - REPOSITORY
            - INTEGRATION
            - FILE_SYSTEM
            - ANALYZER
            - NEW_VULNERABILITY
            - NEW_VULNERABLE_DEPENDENCY
            - VULNERABILITY_RETRACTED
            - PROJECT_AUDIT_CHANGE
            - BOM_CONSUMED
            - BOM_PROCESSED
            - BOM_PROCESSING_FAILED
            - BOM_VALIDATION_FAILED
            - VEX_CONSUMED
            - VEX_PROCESSED
            - POLICY_VIOLATION
            - PROJECT_CREATED
            - USER_CREATED
            - USER_DELETED
            - NEW_VULNERABILITIES_SUMMARY
            - NEW_POLICY_VIOLATIONS_SUMMARY
          uniqueItems: true
        projects:
          type: array
          items:
            $ref: "#/components/schemas/Project"
        publisher:
          $ref: "#/components/schemas/NotificationPublisher"
        publisherConfig:
          type: string
        scheduleCron:
          type: string
          description: Schedule of this rule as cron expression. Must not be set for
            rules with trigger type EVENT.
        scheduleLastTriggeredAt:
          type: integer
          format: int64
          description: "When the schedule last triggered, as UNIX epoch timestamp\
            \ in milliseconds"
          readOnly: true
        scheduleNextTriggerAt:
          type: integer
          format: int64
          description: "When the schedule triggers next, as UNIX epoch timestamp in\
            \ milliseconds"
          readOnly: true
        scheduleSkipUnchanged:
          type: boolean
          description: Whether to skip emitting a scheduled notification if it doesn't
            contain any changes since its last emission. Must not be set for rules
            with trigger type EVENT.
        scope:
          type: string
          enum:
          - SYSTEM
          - PORTFOLIO
        tags:
          type: array
          items:
            $ref: "#/components/schemas/Tag"
          uniqueItems: true
        teams:
          type: array
          items:
            $ref: "#/components/schemas/Team"
          uniqueItems: true
        triggerType:
          type: string
          enum:
          - EVENT
          - SCHEDULE
          readOnly: true
        uuid:
          type: string
          format: uuid
      required:
      - name
      - scope
      - triggerType
      - uuid
    OidcGroup:
      type: object
      properties:
        name:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
        uuid:
          type: string
          format: uuid
      required:
      - name
      - uuid
    OidcUser:
      type: object
      properties:
        email:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "[\\P{Cc}]+"
        subjectIdentifier:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
        username:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
      required:
      - username
    OrganizationalContact:
      type: object
      properties:
        email:
          type: string
        name:
          type: string
        phone:
          type: string
    OrganizationalEntity:
      type: object
      properties:
        contacts:
          type: array
          items:
            $ref: "#/components/schemas/OrganizationalContact"
        name:
          type: string
        urls:
          type: array
          items:
            type: string
    Parent:
      type: object
      properties:
        name:
          type: string
        uuid:
          type: string
          format: uuid
        version:
          type: string
      required:
      - name
      - uuid
    Permission:
      type: object
      properties:
        description:
          type: string
        ldapUsers:
          type: array
          items:
            $ref: "#/components/schemas/LdapUser"
        managedUsers:
          type: array
          items:
            $ref: "#/components/schemas/ManagedUser"
        name:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "^[a-zA-Z_0-9]*$"
        oidcUsers:
          type: array
          items:
            $ref: "#/components/schemas/OidcUser"
      required:
      - name
    Policy:
      type: object
      properties:
        global:
          type: boolean
        includeChildren:
          type: boolean
        name:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        onlyLatestProjectVersion:
          type: boolean
        operator:
          type: string
          enum:
          - ALL
          - ANY
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        policyConditions:
          type: array
          items:
            $ref: "#/components/schemas/PolicyCondition"
        projects:
          type: array
          items:
            $ref: "#/components/schemas/Project"
        tags:
          type: array
          items:
            $ref: "#/components/schemas/Tag"
          uniqueItems: true
        uuid:
          type: string
          format: uuid
        violationState:
          type: string
          enum:
          - INFO
          - WARN
          - FAIL
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
      required:
      - name
      - operator
      - uuid
      - violationState
    PolicyCondition:
      type: object
      properties:
        operator:
          type: string
          enum:
          - IS
          - IS_NOT
          - MATCHES
          - NO_MATCH
          - NUMERIC_GREATER_THAN
          - NUMERIC_LESS_THAN
          - NUMERIC_EQUAL
          - NUMERIC_NOT_EQUAL
          - NUMERIC_GREATER_THAN_OR_EQUAL
          - NUMERIC_LESSER_THAN_OR_EQUAL
          - CONTAINS_ALL
          - CONTAINS_ANY
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        policy:
          $ref: "#/components/schemas/Policy"
        subject:
          type: string
          enum:
          - AGE
          - COORDINATES
          - CPE
          - EXPRESSION
          - LICENSE
          - LICENSE_GROUP
          - PACKAGE_URL
          - SEVERITY
          - SWID_TAGID
          - VERSION
          - COMPONENT_HASH
          - IS_INTERNAL
          - CWE
          - VULNERABILITY_ID
          - VERSION_DISTANCE
          - EPSS
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        uuid:
          type: string
          format: uuid
        value:
          type: string
          maxLength: 2147483647
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        violationType:
          type: string
          enum:
          - LICENSE
          - SECURITY
          - OPERATIONAL
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
      required:
      - operator
      - subject
      - uuid
      - value
    PolicyViolation:
      type: object
      properties:
        analysis:
          $ref: "#/components/schemas/ViolationAnalysis"
        component:
          $ref: "#/components/schemas/Component"
        policyCondition:
          $ref: "#/components/schemas/PolicyCondition"
        project:
          $ref: "#/components/schemas/Project"
        text:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        timestamp:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        type:
          type: string
          enum:
          - LICENSE
          - SECURITY
          - OPERATIONAL
        uuid:
          type: string
          format: uuid
      required:
      - timestamp
      - uuid
    PortfolioMetrics:
      type: object
      properties:
        components:
          type: integer
          format: int32
        critical:
          type: integer
          format: int32
        findingsAudited:
          type: integer
          format: int32
        findingsTotal:
          type: integer
          format: int32
        findingsUnaudited:
          type: integer
          format: int32
        firstOccurrence:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        high:
          type: integer
          format: int32
        inheritedRiskScore:
          type: number
          format: double
        lastOccurrence:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        low:
          type: integer
          format: int32
        medium:
          type: integer
          format: int32
        policyViolationsAudited:
          type: integer
          format: int32
        policyViolationsFail:
          type: integer
          format: int32
        policyViolationsInfo:
          type: integer
          format: int32
        policyViolationsLicenseAudited:
          type: integer
          format: int32
        policyViolationsLicenseTotal:
          type: integer
          format: int32
        policyViolationsLicenseUnaudited:
          type: integer
          format: int32
        policyViolationsOperationalAudited:
          type: integer
          format: int32
        policyViolationsOperationalTotal:
          type: integer
          format: int32
        policyViolationsOperationalUnaudited:
          type: integer
          format: int32
        policyViolationsSecurityAudited:
          type: integer
          format: int32
        policyViolationsSecurityTotal:
          type: integer
          format: int32
        policyViolationsSecurityUnaudited:
          type: integer
          format: int32
        policyViolationsTotal:
          type: integer
          format: int32
        policyViolationsUnaudited:
          type: integer
          format: int32
        policyViolationsWarn:
          type: integer
          format: int32
        projects:
          type: integer
          format: int32
        suppressed:
          type: integer
          format: int32
        unassigned:
          type: integer
          format: int32
        vulnerabilities:
          type: integer
          format: int32
        vulnerableComponents:
          type: integer
          format: int32
        vulnerableProjects:
          type: integer
          format: int32
      required:
      - firstOccurrence
      - lastOccurrence
    ProblemDetails:
      type: object
      description: An RFC 9457 problem object
      properties:
        detail:
          type: string
          description: Human-readable explanation specific to this occurrence of the
            problem
          example: Example detail
        instance:
          type: string
          format: uri
          description: Reference URI that identifies the specific occurrence of the
            problem
          example: https://api.example.org/foo/bar/example-instance
        status:
          type: integer
          format: int32
          description: HTTP status code generated by the origin server for this occurrence
            of the problem
          example: 400
        title:
          type: string
          description: "Short, human-readable summary of the problem type"
          example: Example title
        type:
          type: string
          format: uri
          description: A URI reference that identifies the problem type
          example: https://api.example.org/foo/bar/example-problem
      required:
      - detail
      - status
      - title
    Project:
      type: object
      properties:
        accessTeams:
          type: array
          items:
            $ref: "#/components/schemas/Team"
          uniqueItems: true
          writeOnly: true
        active:
          type: boolean
        author:
          type: string
        authors:
          type: array
          items:
            $ref: "#/components/schemas/OrganizationalContact"
        bomRef:
          type: string
        children:
          type: array
          items:
            $ref: "#/components/schemas/Project"
        classifier:
          type: string
          enum:
          - APPLICATION
          - FRAMEWORK
          - LIBRARY
          - CONTAINER
          - OPERATING_SYSTEM
          - DEVICE
          - FIRMWARE
          - FILE
          - PLATFORM
          - DEVICE_DRIVER
          - MACHINE_LEARNING_MODEL
          - DATA
          - CRYPTOGRAPHIC_ASSET
        collectionLogic:
          type: string
          enum:
          - AGGREGATE_DIRECT_CHILDREN
          - AGGREGATE_DIRECT_CHILDREN_WITH_TAG
          - AGGREGATE_LATEST_VERSION_CHILDREN
        collectionTag:
          $ref: "#/components/schemas/Tag"
        cpe:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "(cpe:2\\.3:[aho\\*\\-](:(((\\?*|\\*?)([a-zA-Z0-9\\-\\._]|(\\\\\
            [\\\\\\*\\?!\"#$$%&'\\(\\)\\+,/:;<=>@\\[\\]\\^`\\{\\|}~]))+(\\?*|\\*?))|[\\\
            *\\-])){5}(:(([a-zA-Z]{2,3}(-([a-zA-Z]{2}|[0-9]{3}))?)|[\\*\\-]))(:(((\\\
            ?*|\\*?)([a-zA-Z0-9\\-\\._]|(\\\\[\\\\\\*\\?!\"#$$%&'\\(\\)\\+,/:;<=>@\\\
            [\\]\\^`\\{\\|}~]))+(\\?*|\\*?))|[\\*\\-])){4})|([c][pP][eE]:/[AHOaho]?(:[A-Za-z0-9\\\
            ._\\-~%]*){0,6})"
        description:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        directDependencies:
          type: string
        externalReferences:
          type: array
          items:
            $ref: "#/components/schemas/ExternalReference"
        group:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        inactiveSince:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
          readOnly: true
        isLatest:
          type: boolean
        lastBomImport:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        lastBomImportFormat:
          type: string
        lastInheritedRiskScore:
          type: number
          format: double
        lastVulnerabilityAnalysis:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        manufacturer:
          $ref: "#/components/schemas/OrganizationalEntity"
        metadata:
          $ref: "#/components/schemas/ProjectMetadata"
        metrics:
          $ref: "#/components/schemas/ProjectMetrics"
        name:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        parent:
          $ref: "#/components/schemas/Project"
        publisher:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        purl:
          type: string
          maxLength: 1024
          minLength: 0
        supplier:
          $ref: "#/components/schemas/OrganizationalEntity"
        swidTagId:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        tags:
          type: array
          items:
            $ref: "#/components/schemas/Tag"
          uniqueItems: true
        uuid:
          type: string
          format: uuid
        version:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        versions:
          type: array
          items:
            $ref: "#/components/schemas/ProjectVersion"
      required:
      - lastBomImport
      - name
      - uuid
    ProjectMetadata:
      type: object
      properties:
        authors:
          type: array
          items:
            $ref: "#/components/schemas/OrganizationalContact"
        supplier:
          $ref: "#/components/schemas/OrganizationalEntity"
        tools:
          $ref: "#/components/schemas/Tools"
      readOnly: true
    ProjectMetrics:
      type: object
      properties:
        components:
          type: integer
          format: int32
        critical:
          type: integer
          format: int32
        findingsAudited:
          type: integer
          format: int32
        findingsTotal:
          type: integer
          format: int32
        findingsUnaudited:
          type: integer
          format: int32
        firstOccurrence:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        high:
          type: integer
          format: int32
        inheritedRiskScore:
          type: number
          format: double
        lastOccurrence:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        low:
          type: integer
          format: int32
        medium:
          type: integer
          format: int32
        policyViolationsAudited:
          type: integer
          format: int32
        policyViolationsFail:
          type: integer
          format: int32
        policyViolationsInfo:
          type: integer
          format: int32
        policyViolationsLicenseAudited:
          type: integer
          format: int32
        policyViolationsLicenseTotal:
          type: integer
          format: int32
        policyViolationsLicenseUnaudited:
          type: integer
          format: int32
        policyViolationsOperationalAudited:
          type: integer
          format: int32
        policyViolationsOperationalTotal:
          type: integer
          format: int32
        policyViolationsOperationalUnaudited:
          type: integer
          format: int32
        policyViolationsSecurityAudited:
          type: integer
          format: int32
        policyViolationsSecurityTotal:
          type: integer
          format: int32
        policyViolationsSecurityUnaudited:
          type: integer
          format: int32
        policyViolationsTotal:
          type: integer
          format: int32
        policyViolationsUnaudited:
          type: integer
          format: int32
        policyViolationsWarn:
          type: integer
          format: int32
        suppressed:
          type: integer
          format: int32
        unassigned:
          type: integer
          format: int32
        vulnerabilities:
          type: integer
          format: int32
        vulnerableComponents:
          type: integer
          format: int32
      required:
      - firstOccurrence
      - lastOccurrence
    ProjectProperty:
      type: object
      properties:
        description:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "[\\P{Cc}]+"
        groupName:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
        propertyName:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
        propertyType:
          type: string
          enum:
          - BOOLEAN
          - INTEGER
          - NUMBER
          - STRING
          - TIMESTAMP
          - URL
          - UUID
        propertyValue:
          type: string
          maxLength: 1024
          minLength: 0
          pattern: "[\\P{Cc}]+"
      required:
      - groupName
      - propertyName
      - propertyType
    ProjectVersion:
      type: object
      properties:
        active:
          type: boolean
        isLatest:
          type: boolean
        uuid:
          type: string
          format: uuid
        version:
          type: string
    Publisher:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
      required:
      - uuid
    Repository:
      type: object
      properties:
        authenticationRequired:
          type: boolean
        enabled:
          type: boolean
        identifier:
          type: string
          minLength: 1
        internal:
          type: boolean
        password:
          type: string
        resolutionOrder:
          type: integer
          format: int32
        type:
          type: string
          enum:
          - MAVEN
          - NPM
          - GEM
          - PYPI
          - NUGET
          - HEX
          - COMPOSER
          - CARGO
          - GO_MODULES
          - CPAN
          - GITHUB
          - HACKAGE
          - NIXPKGS
          - UNSUPPORTED
        url:
          type: string
          minLength: 1
        username:
          type: string
        uuid:
          type: string
          format: uuid
      required:
      - authenticationRequired
      - enabled
      - identifier
      - internal
      - resolutionOrder
      - type
      - url
      - uuid
    RepositoryMetaComponent:
      type: object
      properties:
        lastCheck:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        latestVersion:
          type: string
        latestVersionPublishedAt:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        name:
          type: string
        namespace:
          type: string
        repositoryType:
          type: string
          enum:
          - MAVEN
          - NPM
          - GEM
          - PYPI
          - NUGET
          - HEX
          - COMPOSER
          - CARGO
          - GO_MODULES
          - CPAN
          - GITHUB
          - HACKAGE
          - NIXPKGS
          - UNSUPPORTED
    Score:
      type: object
      properties:
        businessImpact:
          type: string
          enum:
          - HIGH
          - MEDIUM
          - LOW
        businessImpactScore:
          type: number
          format: double
        likelihood:
          type: string
          enum:
          - HIGH
          - MEDIUM
          - LOW
        likelihoodScore:
          type: number
          format: double
        technicalImpact:
          type: string
          enum:
          - HIGH
          - MEDIUM
          - LOW
        technicalImpactScore:
          type: number
          format: double
    ServiceComponent:
      type: object
      properties:
        authenticated:
          type: boolean
        bomRef:
          type: string
        children:
          type: array
          items:
            $ref: "#/components/schemas/ServiceComponent"
        crossesTrustBoundary:
          type: boolean
        data:
          type: array
          items:
            $ref: "#/components/schemas/DataClassification"
        description:
          type: string
          maxLength: 1024
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        endpoints:
          type: array
          items:
            type: string
        externalReferences:
          type: array
          items:
            $ref: "#/components/schemas/ExternalReference"
        group:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        lastInheritedRiskScore:
          type: number
          format: double
        name:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        notes:
          type: string
        parent:
          $ref: "#/components/schemas/ServiceComponent"
        project:
          $ref: "#/components/schemas/Project"
        provider:
          $ref: "#/components/schemas/OrganizationalEntity"
        uuid:
          type: string
          format: uuid
        version:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        vulnerabilities:
          type: array
          items:
            $ref: "#/components/schemas/Vulnerability"
      required:
      - name
      - project
      - uuid
    Tag:
      type: object
      properties:
        name:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
      required:
      - name
    TagListResponseItem:
      type: object
      properties:
        collectionProjectCount:
          type: integer
          format: int64
          description: Number of collection projects assigned to this tag
        name:
          type: string
          description: Name of the tag
        notificationRuleCount:
          type: integer
          format: int64
          description: Number of notification rules assigned to this tag
        policyCount:
          type: integer
          format: int64
          description: Number of policies assigned to this tag
        projectCount:
          type: integer
          format: int64
          description: Number of projects assigned to this tag
        vulnerabilityCount:
          type: integer
          format: int64
          description: Number of vulnerabilities assigned to this tag
      required:
      - collectionProjectCount
      - name
      - notificationRuleCount
      - policyCount
      - projectCount
      - vulnerabilityCount
    TagOperationProblemDetails:
      type: object
      allOf:
      - $ref: "#/components/schemas/ProblemDetails"
      - type: object
        properties:
          errors:
            type: object
            additionalProperties:
              type: string
              description: "Errors encountered during the operation, grouped by tag\
                \ name"
            description: "Errors encountered during the operation, grouped by tag\
              \ name"
      required:
      - detail
      - status
      - title
    TaggedCollectionProjectListResponseItem:
      type: object
      properties:
        name:
          type: string
          description: Name of the collection project
        uuid:
          type: string
          format: uuid
          description: UUID of the collection project
        version:
          type: string
          description: Version of the collection project
      required:
      - name
      - uuid
    TaggedPolicyListResponseItem:
      type: object
      properties:
        name:
          type: string
          description: Name of the policy
        uuid:
          type: string
          format: uuid
          description: UUID of the policy
      required:
      - name
      - uuid
    TaggedProjectListResponseItem:
      type: object
      properties:
        name:
          type: string
          description: Name of the project
        uuid:
          type: string
          format: uuid
          description: UUID of the project
        version:
          type: string
          description: Version of the project
      required:
      - name
      - uuid
    TaggedVulnerabilityListResponseItem:
      type: object
      properties:
        source:
          type: string
          description: Source of the vulnerability
        uuid:
          type: string
          format: uuid
          description: UUID of the vulnerability
        vulnId:
          type: string
          description: Vulnerability ID
      required:
      - source
      - uuid
      - vulnId
    Team:
      type: object
      properties:
        apiKeys:
          type: array
          items:
            $ref: "#/components/schemas/ApiKey"
        ldapUsers:
          type: array
          items:
            $ref: "#/components/schemas/LdapUser"
        managedUsers:
          type: array
          items:
            $ref: "#/components/schemas/ManagedUser"
        mappedLdapGroups:
          type: array
          items:
            $ref: "#/components/schemas/MappedLdapGroup"
        mappedOidcGroups:
          type: array
          items:
            $ref: "#/components/schemas/MappedOidcGroup"
        name:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
        oidcUsers:
          type: array
          items:
            $ref: "#/components/schemas/OidcUser"
        permissions:
          type: array
          items:
            $ref: "#/components/schemas/Permission"
        uuid:
          type: string
          format: uuid
      required:
      - name
      - uuid
    TeamAlreadyExistsProblemDetails:
      type: object
      properties:
        detail:
          type: string
          description: Human-readable explanation specific to this occurrence of the
            problem
          example: Example detail
        instance:
          type: string
          format: uri
          description: Reference URI that identifies the specific occurrence of the
            problem
          example: https://api.example.org/foo/bar/example-instance
        status:
          type: integer
          format: int32
          description: HTTP status code generated by the origin server for this occurrence
            of the problem
          example: 400
        teamName:
          type: string
          description: Name of the existing team
        teamUuid:
          type: string
          format: uuid
          description: UUID of the existing team
        title:
          type: string
          description: "Short, human-readable summary of the problem type"
          example: Example title
        type:
          type: string
          format: uri
          description: A URI reference that identifies the problem type
          example: https://api.example.org/foo/bar/example-problem
      required:
      - detail
      - status
      - title
    TeamPermissionsSetRequest:
      type: object
      properties:
        permissions:
          type: array
          items:
            type: string
            enum:
            - BOM_UPLOAD
            - VIEW_PORTFOLIO
            - PORTFOLIO_ACCESS_CONTROL_BYPASS
            - PORTFOLIO_MANAGEMENT
            - PORTFOLIO_MANAGEMENT_CREATE
            - PORTFOLIO_MANAGEMENT_READ
            - PORTFOLIO_MANAGEMENT_UPDATE
            - PORTFOLIO_MANAGEMENT_DELETE
            - VIEW_VULNERABILITY
            - VULNERABILITY_ANALYSIS
            - VULNERABILITY_ANALYSIS_CREATE
            - VULNERABILITY_ANALYSIS_READ
            - VULNERABILITY_ANALYSIS_UPDATE
            - VIEW_POLICY_VIOLATION
            - VULNERABILITY_MANAGEMENT
            - VULNERABILITY_MANAGEMENT_CREATE
            - VULNERABILITY_MANAGEMENT_READ
            - VULNERABILITY_MANAGEMENT_UPDATE
            - VULNERABILITY_MANAGEMENT_DELETE
            - POLICY_VIOLATION_ANALYSIS
            - ACCESS_MANAGEMENT
            - ACCESS_MANAGEMENT_CREATE
            - ACCESS_MANAGEMENT_READ
            - ACCESS_MANAGEMENT_UPDATE
            - ACCESS_MANAGEMENT_DELETE
            - SECRET_MANAGEMENT
            - SECRET_MANAGEMENT_CREATE
            - SECRET_MANAGEMENT_UPDATE
            - SECRET_MANAGEMENT_DELETE
            - SYSTEM_CONFIGURATION
            - SYSTEM_CONFIGURATION_CREATE
            - SYSTEM_CONFIGURATION_READ
            - SYSTEM_CONFIGURATION_UPDATE
            - SYSTEM_CONFIGURATION_DELETE
            - PROJECT_CREATION_UPLOAD
            - POLICY_MANAGEMENT
            - POLICY_MANAGEMENT_CREATE
            - POLICY_MANAGEMENT_READ
            - POLICY_MANAGEMENT_UPDATE
            - POLICY_MANAGEMENT_DELETE
            - TAG_MANAGEMENT
            - TAG_MANAGEMENT_DELETE
          uniqueItems: true
        team:
          type: string
          minLength: 1
      required:
      - permissions
      - team
    TeamSelfResponse:
      type: object
      properties:
        name:
          type: string
        permissions:
          type: array
          items:
            $ref: "#/components/schemas/Permission"
        uuid:
          type: string
          format: uuid
    TeamsSetRequest:
      type: object
      properties:
        teams:
          type: array
          items:
            type: string
          uniqueItems: true
        username:
          type: string
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
      required:
      - teams
      - username
    Tools:
      type: object
      properties:
        components:
          type: array
          items:
            $ref: "#/components/schemas/Component"
        services:
          type: array
          items:
            $ref: "#/components/schemas/ServiceComponent"
    UpdateNotificationPublisherRequest:
      type: object
      properties:
        description:
          type: string
        extensionName:
          type: string
          minLength: 1
        name:
          type: string
          minLength: 1
        template:
          type: string
        templateMimeType:
          type: string
        uuid:
          type: string
          format: uuid
      required:
      - extensionName
      - name
      - uuid
    UpdateNotificationRuleRequest:
      type: object
      properties:
        enabled:
          type: boolean
        filterExpression:
          type: string
          maxLength: 2048
          minLength: 0
        level:
          type: string
          enum:
          - INFORMATIONAL
          - WARNING
          - ERROR
        logSuccessfulPublish:
          type: boolean
        name:
          type: string
          minLength: 1
        notifyChildren:
          type: boolean
        notifyOn:
          type: array
          items:
            type: string
            enum:
            - CONFIGURATION
            - DATASOURCE_MIRRORING
            - REPOSITORY
            - INTEGRATION
            - FILE_SYSTEM
            - ANALYZER
            - NEW_VULNERABILITY
            - NEW_VULNERABLE_DEPENDENCY
            - VULNERABILITY_RETRACTED
            - PROJECT_AUDIT_CHANGE
            - BOM_CONSUMED
            - BOM_PROCESSED
            - BOM_PROCESSING_FAILED
            - BOM_VALIDATION_FAILED
            - VEX_CONSUMED
            - VEX_PROCESSED
            - POLICY_VIOLATION
            - PROJECT_CREATED
            - USER_CREATED
            - USER_DELETED
            - NEW_VULNERABILITIES_SUMMARY
            - NEW_POLICY_VIOLATIONS_SUMMARY
          uniqueItems: true
        publisherConfig:
          type: string
        scheduleCron:
          type: string
        scheduleSkipUnchanged:
          type: boolean
        scope:
          type: string
          enum:
          - SYSTEM
          - PORTFOLIO
        tags:
          type: array
          items:
            $ref: "#/components/schemas/Tag"
          uniqueItems: true
        uuid:
          type: string
          format: uuid
      required:
      - level
      - name
      - scope
      - uuid
    User:
      type: object
      properties:
        email:
          type: string
          maxLength: 255
          minLength: 0
          pattern: "[\\P{Cc}]+"
        permissions:
          type: array
          items:
            $ref: "#/components/schemas/Permission"
        teams:
          type: array
          items:
            $ref: "#/components/schemas/Team"
        username:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
      required:
      - username
    UserPermissionsSetRequest:
      type: object
      properties:
        permissions:
          type: array
          items:
            type: string
            enum:
            - BOM_UPLOAD
            - VIEW_PORTFOLIO
            - PORTFOLIO_ACCESS_CONTROL_BYPASS
            - PORTFOLIO_MANAGEMENT
            - PORTFOLIO_MANAGEMENT_CREATE
            - PORTFOLIO_MANAGEMENT_READ
            - PORTFOLIO_MANAGEMENT_UPDATE
            - PORTFOLIO_MANAGEMENT_DELETE
            - VIEW_VULNERABILITY
            - VULNERABILITY_ANALYSIS
            - VULNERABILITY_ANALYSIS_CREATE
            - VULNERABILITY_ANALYSIS_READ
            - VULNERABILITY_ANALYSIS_UPDATE
            - VIEW_POLICY_VIOLATION
            - VULNERABILITY_MANAGEMENT
            - VULNERABILITY_MANAGEMENT_CREATE
            - VULNERABILITY_MANAGEMENT_READ
            - VULNERABILITY_MANAGEMENT_UPDATE
            - VULNERABILITY_MANAGEMENT_DELETE
            - POLICY_VIOLATION_ANALYSIS
            - ACCESS_MANAGEMENT
            - ACCESS_MANAGEMENT_CREATE
            - ACCESS_MANAGEMENT_READ
            - ACCESS_MANAGEMENT_UPDATE
            - ACCESS_MANAGEMENT_DELETE
            - SECRET_MANAGEMENT
            - SECRET_MANAGEMENT_CREATE
            - SECRET_MANAGEMENT_UPDATE
            - SECRET_MANAGEMENT_DELETE
            - SYSTEM_CONFIGURATION
            - SYSTEM_CONFIGURATION_CREATE
            - SYSTEM_CONFIGURATION_READ
            - SYSTEM_CONFIGURATION_UPDATE
            - SYSTEM_CONFIGURATION_DELETE
            - PROJECT_CREATION_UPLOAD
            - POLICY_MANAGEMENT
            - POLICY_MANAGEMENT_CREATE
            - POLICY_MANAGEMENT_READ
            - POLICY_MANAGEMENT_UPDATE
            - POLICY_MANAGEMENT_DELETE
            - TAG_MANAGEMENT
            - TAG_MANAGEMENT_DELETE
          uniqueItems: true
        username:
          type: string
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
      required:
      - permissions
      - username
    VexSubmitRequest:
      type: object
      properties:
        project:
          type: string
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        projectName:
          type: string
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        projectVersion:
          type: string
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        vex:
          type: string
          pattern: "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
      required:
      - project
      - projectName
      - projectVersion
      - vex
    ViolationAnalysis:
      type: object
      properties:
        analysisComments:
          type: array
          items:
            $ref: "#/components/schemas/ViolationAnalysisComment"
        analysisState:
          type: string
          enum:
          - APPROVED
          - REJECTED
          - NOT_SET
        isSuppressed:
          type: boolean
        violationAnalysisState:
          type: string
          enum:
          - APPROVED
          - REJECTED
          - NOT_SET
          writeOnly: true
      required:
      - analysisState
    ViolationAnalysisComment:
      type: object
      properties:
        comment:
          type: string
        commenter:
          type: string
        timestamp:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
      required:
      - comment
      - timestamp
    ViolationAnalysisRequest:
      type: object
      properties:
        analysisState:
          type: string
          enum:
          - APPROVED
          - REJECTED
          - NOT_SET
        comment:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        component:
          type: string
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        isSuppressed:
          type: boolean
          writeOnly: true
        policyViolation:
          type: string
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        suppressed:
          type: boolean
      required:
      - component
      - policyViolation
    VisibleTeams:
      type: object
      properties:
        name:
          type: string
        uuid:
          type: string
          format: uuid
    Vulnerability:
      type: object
      properties:
        affectedActiveProjectCount:
          type: integer
          format: int32
        affectedComponents:
          type: array
          items:
            $ref: "#/components/schemas/AffectedComponent"
        affectedInactiveProjectCount:
          type: integer
          format: int32
        affectedProjectCount:
          type: integer
          format: int32
        aliases:
          type: array
          items:
            $ref: "#/components/schemas/VulnerabilityAlias"
        components:
          type: array
          items:
            $ref: "#/components/schemas/Component"
        created:
          type: string
          format: date-time
        credits:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        cvssV2BaseScore:
          type: number
        cvssV2ExploitabilitySubScore:
          type: number
        cvssV2ImpactSubScore:
          type: number
        cvssV2Vector:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        cvssV3BaseScore:
          type: number
        cvssV3ExploitabilitySubScore:
          type: number
        cvssV3ImpactSubScore:
          type: number
        cvssV3Vector:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        cvssV4Score:
          type: number
        cvssV4Vector:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        cwes:
          type: array
          items:
            $ref: "#/components/schemas/Cwe"
        description:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        detail:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        epss:
          $ref: "#/components/schemas/Epss"
        epssPercentile:
          type: number
        epssScore:
          type: number
        friendlyVulnId:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        owaspRRBusinessImpactScore:
          type: number
        owaspRRLikelihoodScore:
          type: number
        owaspRRTechnicalImpactScore:
          type: number
        owaspRRVector:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        patchedVersions:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        published:
          type: string
          format: date-time
        recommendation:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        references:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        rejected:
          type: string
          format: date-time
        serviceComponents:
          type: array
          items:
            $ref: "#/components/schemas/ServiceComponent"
        severity:
          type: string
          enum:
          - CRITICAL
          - HIGH
          - MEDIUM
          - LOW
          - INFO
          - UNASSIGNED
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        source:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        subTitle:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        tags:
          type: array
          items:
            $ref: "#/components/schemas/Tag"
          uniqueItems: true
        title:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        updated:
          type: string
          format: date-time
        uuid:
          type: string
          format: uuid
        vulnId:
          type: string
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        vulnerableVersions:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
      required:
      - friendlyVulnId
      - source
      - uuid
      - vulnId
    VulnerabilityAlias:
      type: object
      properties:
        cveId:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        ghsaId:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        gsdId:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        internalId:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        osvId:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        snykId:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        sonatypeId:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        vulnDbId:
          type: string
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
    VulnerabilityMetrics:
      type: object
      properties:
        count:
          type: integer
          format: int32
        measuredAt:
          type: integer
          format: int64
          description: UNIX epoch timestamp in milliseconds
        month:
          type: integer
          format: int32
        year:
          type: integer
          format: int32
      required:
      - measuredAt
  securitySchemes:
    ApiKeyAuth:
      description: Authentication via API key.
      in: header
      name: X-Api-Key
      type: apiKey
    BearerAuth:
      bearerFormat: Opaque
      description: |-
        Authentication via opaque server-issued session token.
        Tokens are obtained from `POST /api/v1/user/login` or
        `POST /api/v1/user/oidc/login`.
      scheme: bearer
      type: http
