openapi: 3.0.1
info:
  title: OWASP Dependency-Track
  description: REST API of OWASP Dependency-Track
  contact:
    name: The Dependency-Track Authors
    url: https://github.com/DependencyTrack/dependency-track
  license:
    name: Apache-2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  version: 4.13.2
servers:
- url: /api
paths:
  /version:
    get:
      tags:
      - version
      summary: Returns application version information
      description: Returns a simple json object containing the name of the application
        and the version
      operationId: getVersion
      responses:
        "200":
          description: Application version information
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/About"
  /v1/acl/mapping:
    put:
      tags:
      - acl
      summary: Adds an ACL mapping
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: addMapping
      requestBody:
        content:
          '*/*':
            schema:
              $ref: "#/components/schemas/AclMappingRequest"
      responses:
        "200":
          description: Mapping created successfully
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the team or project could not be found
        "409":
          description: A mapping with the same team and project already exists
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/acl/mapping/team/{teamUuid}/project/{projectUuid}:
    delete:
      tags:
      - acl
      summary: Removes an ACL mapping
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: deleteMapping
      parameters:
      - name: teamUuid
        in: path
        description: The UUID of the team to delete the mapping for
        required: true
        schema:
          type: string
          format: uuid
      - name: projectUuid
        in: path
        description: The UUID of the project to delete the mapping for
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Mapping removed successfully
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the team or project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/acl/team/{uuid}:
    get:
      tags:
      - acl
      summary: Returns the projects assigned to the specified team
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: retrieveProjects
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: uuid
        in: path
        description: The UUID of the team to retrieve mappings for
        required: true
        schema:
          type: string
          format: uuid
      - name: excludeInactive
        in: query
        description: Optionally excludes inactive projects from being returned
        schema:
          type: boolean
      - name: onlyRoot
        in: query
        description: Optionally excludes children projects from being returned
        schema:
          type: boolean
      responses:
        "200":
          description: Projects assigned to the specified team
          headers:
            X-Total-Count:
              description: The total number of projects
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Project"
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/analysis:
    get:
      tags:
      - analysis
      summary: Retrieves an analysis trail
      description: <p>Requires permission <strong>VIEW_VULNERABILITY</strong></p>
      operationId: retrieveAnalysis
      parameters:
      - name: project
        in: query
        description: The UUID of the project
        schema:
          type: string
          format: uuid
      - name: component
        in: query
        description: The UUID of the component
        required: true
        schema:
          type: string
          format: uuid
      - name: vulnerability
        in: query
        description: The UUID of the vulnerability
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: An analysis trail
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Analysis"
        "401":
          description: Unauthorized
        "404":
          description: "The project, component, or vulnerability could not be found"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - analysis
      summary: Records an analysis decision
      description: <p>Requires permission <strong>VULNERABILITY_ANALYSIS</strong></p>
      operationId: updateAnalysis
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AnalysisRequest"
      responses:
        "200":
          description: The created analysis
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Analysis"
        "401":
          description: Unauthorized
        "404":
          description: "The project, component, or vulnerability could not be found"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/badge/violations/project/{uuid}:
    get:
      tags:
      - badge
      summary: Returns a policy violations badge for a specific project
      description: <p>Requires permission <strong>VIEW_BADGES</strong></p>
      operationId: getProjectPolicyViolationsBadge
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to retrieve a badge for
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A badge displaying current policy violation metrics of a project
            in SVG format
          content:
            image/svg+xml:
              schema:
                type: string
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      - ApiKeyQueryAuth: []
  /v1/badge/violations/project/{name}/{version}:
    get:
      tags:
      - badge
      summary: Returns a policy violations badge for a specific project
      description: <p>Requires permission <strong>VIEW_BADGES</strong></p>
      operationId: getProjectPolicyViolationsBadge_1
      parameters:
      - name: name
        in: path
        description: The name of the project to query on
        required: true
        schema:
          type: string
      - name: version
        in: path
        description: The version of the project to query on
        required: true
        schema:
          type: string
      responses:
        "200":
          description: A badge displaying current policy violation metrics of a project
            in SVG format
          content:
            image/svg+xml:
              schema:
                type: string
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      - ApiKeyQueryAuth: []
  /v1/badge/vulns/project/{uuid}:
    get:
      tags:
      - badge
      summary: Returns current metrics for a specific project
      description: <p>Requires permission <strong>VIEW_BADGES</strong></p>
      operationId: getProjectVulnerabilitiesBadge
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to retrieve metrics for
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A badge displaying current vulnerability metrics for a project
            in SVG format
          content:
            image/svg+xml:
              schema:
                type: string
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      - ApiKeyQueryAuth: []
  /v1/badge/vulns/project/{name}/{version}:
    get:
      tags:
      - badge
      summary: Returns current metrics for a specific project
      description: <p>Requires permission <strong>VIEW_BADGES</strong></p>
      operationId: getProjectVulnerabilitiesBadge_1
      parameters:
      - name: name
        in: path
        description: The name of the project to query on
        required: true
        schema:
          type: string
      - name: version
        in: path
        description: The version of the project to query on
        required: true
        schema:
          type: string
      responses:
        "200":
          description: A badge displaying current vulnerability metrics for a project
            in SVG format
          content:
            image/svg+xml:
              schema:
                type: string
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      - ApiKeyQueryAuth: []
  /v1/bom/cyclonedx/component/{uuid}:
    get:
      tags:
      - bom
      summary: Returns dependency metadata for a specific component in CycloneDX format
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: exportComponentAsCycloneDx
      parameters:
      - name: uuid
        in: path
        description: The UUID of the component to export
        required: true
        schema:
          type: string
          format: uuid
      - name: format
        in: query
        description: The format to output (defaults to JSON)
        schema:
          type: string
      responses:
        "200":
          description: Dependency metadata for a specific component in CycloneDX format
          content:
            application/vnd.cyclonedx+xml:
              schema:
                type: string
            application/vnd.cyclonedx+json:
              schema:
                type: string
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified component is forbidden
        "404":
          description: The component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/bom/cyclonedx/project/{uuid}:
    get:
      tags:
      - bom
      summary: Returns dependency metadata for a project in CycloneDX format
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: exportProjectAsCycloneDx
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to export
        required: true
        schema:
          type: string
          format: uuid
      - name: format
        in: query
        description: The format to output (defaults to JSON)
        schema:
          type: string
      - name: variant
        in: query
        description: Specifies the CycloneDX variant to export. Value options are
          'inventory' and 'withVulnerabilities'. (defaults to 'inventory')
        schema:
          type: string
      - name: download
        in: query
        description: Force the resulting BOM to be downloaded as a file (defaults
          to 'false')
        schema:
          type: boolean
      responses:
        "200":
          description: Dependency metadata for a project in CycloneDX format
          content:
            application/vnd.cyclonedx+xml:
              schema:
                type: string
            application/vnd.cyclonedx+json:
              schema:
                type: string
            application/octet-stream:
              schema:
                type: string
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/bom/token/{uuid}:
    get:
      tags:
      - bom
      summary: "Determines if there are any tasks associated with the token that are\
        \ being processed, or in the queue to be processed."
      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:
      - name: uuid
        in: path
        description: The UUID of the token to query
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: The processing status of the provided token
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IsTokenBeingProcessedResponse"
        "401":
          description: Unauthorized
      deprecated: true
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/bom:
    put:
      tags:
      - bom
      summary: Upload a supported bill of material format document
      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> 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":
          description: Token to be used for checking BOM processing progress
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BomUploadResponse"
        "400":
          description: Invalid BOM
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/InvalidBomProblemDetails"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    post:
      tags:
      - bom
      summary: Upload a supported bill of material format document
      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> 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>Requires permission <strong>BOM_UPLOAD</strong></p>
      operationId: UploadBom
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                project:
                  type: string
                autoCreate:
                  type: boolean
                  default: false
                projectName:
                  type: string
                projectVersion:
                  type: string
                projectTags:
                  type: string
                parentName:
                  type: string
                parentVersion:
                  type: string
                parentUUID:
                  type: string
                isLatest:
                  type: boolean
                  default: false
                bom:
                  type: string
      responses:
        "200":
          description: Token to be used for checking BOM processing progress
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BomUploadResponse"
        "400":
          description: Invalid BOM
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/InvalidBomProblemDetails"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/calculator/cvss:
    get:
      tags:
      - calculator
      summary: "Returns the CVSS base score, impact sub-score and exploitability sub-score"
      operationId: getCvssScores
      parameters:
      - name: vector
        in: query
        description: A valid CVSSv2 or CVSSv3 vector
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The calculated scores
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Score"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/calculator/owasp:
    get:
      tags:
      - calculator
      summary: "Returns the OWASP Risk Rating likelihood score, technical impact score\
        \ and business impact score"
      operationId: getOwaspRRScores
      parameters:
      - name: vector
        in: query
        description: A valid OWASP Risk Rating vector
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The calculated scores
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Score"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/component/{uuid}/property:
    get:
      tags:
      - componentProperty
      summary: Returns a list of all properties for the specified component
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProperties
      parameters:
      - name: uuid
        in: path
        description: The UUID of the component to retrieve properties for
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A list of all properties for the specified component
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ComponentProperty"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - componentProperty
      summary: Creates a new component property
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: createProperty
      parameters:
      - name: uuid
        in: path
        description: The UUID of the component to create a property for
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ComponentProperty"
      responses:
        "201":
          description: The created component
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ComponentProperty"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified component 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: []
  /v1/component/{uuid}/property/{propertyUuid}:
    delete:
      tags:
      - componentProperty
      summary: Deletes a config property
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: deleteProperty
      parameters:
      - name: uuid
        in: path
        description: The UUID of the component to delete a property from
        required: true
        schema:
          type: string
          format: uuid
      - name: propertyUuid
        in: path
        description: The UUID of the component property to delete
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: Property removed successfully
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified component is forbidden
        "404":
          description: The component or component property could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/component/project/{uuid}:
    get:
      tags:
      - component
      summary: Returns a list of all components for a given project
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getAllComponents
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: uuid
        in: path
        description: The UUID of the project to retrieve components for
        required: true
        schema:
          type: string
          format: uuid
      - name: onlyOutdated
        in: query
        description: Optionally exclude recent components so only outdated components
          are returned
        schema:
          type: boolean
      - name: onlyDirect
        in: query
        description: Optionally exclude transitive dependencies so only direct dependencies
          are returned
        schema:
          type: boolean
      responses:
        "200":
          description: A list of all components for a given project
          headers:
            X-Total-Count:
              description: The total number of components
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Component"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - component
      summary: Creates a new component
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: createComponent
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to create a component for
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Component"
      responses:
        "201":
          description: The created component
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Component"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/component/{uuid}:
    get:
      tags:
      - component
      summary: Returns a specific component
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getComponentByUuid
      parameters:
      - name: uuid
        in: path
        description: The UUID of the component to retrieve
        required: true
        schema:
          type: string
          format: uuid
      - name: includeRepositoryMetaData
        in: query
        description: Optionally includes third-party metadata about the component
          from external repositories
        schema:
          type: boolean
      responses:
        "200":
          description: A component
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Component"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified component is forbidden
        "404":
          description: The component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - component
      summary: Deletes a component
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: deleteComponent
      parameters:
      - name: uuid
        in: path
        description: The UUID of the component to delete
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: Component removed successfully
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified component is forbidden
        "404":
          description: The UUID of the component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/component/hash/{hash}:
    get:
      tags:
      - component
      summary: Returns a list of components that have the specified hash value
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getComponentByHash
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: hash
        in: path
        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"
        required: true
        schema:
          type: string
      responses:
        "200":
          description: A list of components that have the specified hash value
          headers:
            X-Total-Count:
              description: The total number of components
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Component"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/component/identity:
    get:
      tags:
      - component
      summary: "Returns a list of components that have the specified component identity.\
        \ This resource accepts coordinates (group, name, version) or purl, cpe, or\
        \ swidTagId"
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getComponentByIdentity
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: group
        in: query
        description: The group of the component
        schema:
          type: string
      - name: name
        in: query
        description: The name of the component
        schema:
          type: string
      - name: version
        in: query
        description: The version of the component
        schema:
          type: string
      - name: purl
        in: query
        description: The purl of the component
        schema:
          type: string
      - name: cpe
        in: query
        description: The cpe of the component
        schema:
          type: string
      - name: swidTagId
        in: query
        description: The swidTagId of the component
        schema:
          type: string
      - name: project
        in: query
        description: The project the component belongs to
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A list of components that have the specified component identity
          headers:
            X-Total-Count:
              description: The total number of components
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Component"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/component/project/{projectUuid}/dependencyGraph/{componentUuids}:
    get:
      tags:
      - component
      summary: Returns the expanded dependency graph to every occurrence of a component
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getDependencyGraphForComponent
      parameters:
      - name: projectUuid
        in: path
        description: The UUID of the project to get the expanded dependency graph
          for
        required: true
        schema:
          type: string
          format: uuid
      - name: componentUuids
        in: path
        description: List of UUIDs of the components (separated by |) to get the expanded
          dependency graph for
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The expanded dependency graph to every occurrence of a component
          content:
            application/json:
              schema:
                type: object
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified 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: []
  /v1/component/internal/identify:
    get:
      tags:
      - component
      summary: Requests the identification of internal components in the portfolio
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: identifyInternalComponents
      responses:
        "204":
          description: Identification requested successfully
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/component:
    post:
      tags:
      - component
      summary: Updates a component
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: updateComponent
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Component"
      responses:
        "200":
          description: The updated component
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Component"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified component is forbidden
        "404":
          description: The UUID of the component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/configProperty:
    get:
      tags:
      - configProperty
      summary: Returns a list of all ConfigProperties for the specified groupName
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: getConfigProperties
      responses:
        "200":
          description: A list of all ConfigProperties for the specified groupName
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ConfigProperty"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    post:
      tags:
      - configProperty
      summary: Updates a config property
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: updateConfigProperty
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ConfigProperty"
      responses:
        "200":
          description: The updated config property
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ConfigProperty"
        "401":
          description: Unauthorized
        "404":
          description: The config property could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/configProperty/public/{groupName}/{propertyName}:
    get:
      tags:
      - configProperty
      summary: Returns a public ConfigProperty
      description: <p></p>
      operationId: getPublicConfigProperty
      parameters:
      - name: groupName
        in: path
        description: The group name of the value to retrieve
        required: true
        schema:
          type: string
      - name: propertyName
        in: path
        description: The property name of the value to retrieve
        required: true
        schema:
          type: string
      responses:
        "200":
          description: Public ConfigProperty returned
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ConfigProperty"
        "403":
          description: This is not a public visible ConfigProperty
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/configProperty/aggregate:
    post:
      tags:
      - configProperty
      summary: Updates an array of config properties
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: updateConfigProperty_1
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: "#/components/schemas/ConfigProperty"
      responses:
        "200":
          description: The updated config properties
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ConfigProperty"
        "401":
          description: Unauthorized
        "404":
          description: One or more config properties could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/cwe/{cweId}:
    get:
      tags:
      - cwe
      summary: Returns a specific CWE
      operationId: getCwe
      parameters:
      - name: cweId
        in: path
        description: The CWE ID of the CWE to retrieve
        required: true
        schema:
          type: integer
          format: int32
      responses:
        "200":
          description: A CWE matching the provided ID
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Cwe"
        "401":
          description: Unauthorized
        "404":
          description: The CWE could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/cwe:
    get:
      tags:
      - cwe
      summary: Returns a list of all CWEs
      operationId: getCwes
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      responses:
        "200":
          description: A list of all CWEs
          headers:
            X-Total-Count:
              description: The total number of CWEs
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Cwe"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/dependencyGraph/component/{uuid}/directDependencies:
    get:
      tags:
      - dependencyGraph
      summary: Returns a list of specific components and services from component UUID
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getComponentsAndServicesByComponentUuid
      parameters:
      - name: uuid
        in: path
        description: The UUID of the component
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A list of specific components and services from component UUID
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/DependencyGraphResponse"
        "401":
          description: Unauthorized
        "403":
          description: Access to a specified component is forbidden
        "404":
          description: Any component can be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/dependencyGraph/project/{uuid}/directDependencies:
    get:
      tags:
      - dependencyGraph
      summary: Returns a list of specific components and services from project UUID
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getComponentsAndServicesByProjectUuid
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A list of specific components and services from project UUID
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/DependencyGraphResponse"
        "401":
          description: Unauthorized
        "403":
          description: Access to a specified component is forbidden
        "404":
          description: Any component can be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/event/token/{uuid}:
    get:
      tags:
      - event
      summary: "Determines if there are any tasks associated with the token that are\
        \ being processed, or in the queue to be processed."
      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:
      - name: uuid
        in: path
        description: The UUID of the token to query
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: The processing status of the provided token
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IsTokenBeingProcessedResponse"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/finding/project/{uuid}/analyze:
    post:
      tags:
      - finding
      summary: Triggers Vulnerability Analysis on a specific project
      description: <p>Requires permission <strong>VIEW_VULNERABILITY</strong></p>
      operationId: analyzeProject
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to analyze
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Token to be used for checking analysis progress
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BomUploadResponse"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/finding/project/{uuid}/export:
    get:
      tags:
      - finding
      summary: Returns the findings for the specified project as FPF
      description: <p>Requires permission <strong>VIEW_VULNERABILITY</strong></p>
      operationId: exportFindingsByProject
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: The findings for the specified project as FPF
          content:
            application/json:
              schema:
                type: string
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/finding/grouped:
    get:
      tags:
      - finding
      summary: Returns a list of all findings grouped by vulnerability
      description: <p>Requires permission <strong>VIEW_VULNERABILITY</strong></p>
      operationId: getAllFindings
      parameters:
      - name: showInactive
        in: query
        description: Show inactive projects
        schema:
          type: boolean
      - name: severity
        in: query
        description: Filter by severity
        schema:
          type: string
      - name: publishDateFrom
        in: query
        description: Filter published from this date
        schema:
          type: string
      - name: publishDateTo
        in: query
        description: Filter published to this date
        schema:
          type: string
      - name: textSearchField
        in: query
        description: Filter the text input in these fields
        schema:
          type: string
      - name: textSearchInput
        in: query
        description: Filter by this text input
        schema:
          type: string
      - name: cvssv2From
        in: query
        description: Filter CVSSv2 from this value
        schema:
          type: string
      - name: cvssv2To
        in: query
        description: Filter CVSSv2 to this value
        schema:
          type: string
      - name: cvssv3From
        in: query
        description: Filter CVSSv3 from this value
        schema:
          type: string
      - name: cvssv3To
        in: query
        description: Filter CVSSv3 to this value
        schema:
          type: string
      - name: occurrencesFrom
        in: query
        description: Filter occurrences in projects from this value
        schema:
          type: string
      - name: occurrencesTo
        in: query
        description: Filter occurrences in projects to this value
        schema:
          type: string
      responses:
        "200":
          description: A list of all findings grouped by vulnerability
          headers:
            X-Total-Count:
              description: The total number of findings
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Finding"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/finding:
    get:
      tags:
      - finding
      summary: Returns a list of all findings
      description: <p>Requires permission <strong>VIEW_VULNERABILITY</strong></p>
      operationId: getAllFindings_1
      parameters:
      - name: showInactive
        in: query
        description: Show inactive projects
        schema:
          type: boolean
      - name: showSuppressed
        in: query
        description: Show suppressed findings
        schema:
          type: boolean
      - name: severity
        in: query
        description: Filter by severity
        schema:
          type: string
      - name: analysisStatus
        in: query
        description: Filter by analysis status
        schema:
          type: string
      - name: vendorResponse
        in: query
        description: Filter by vendor response
        schema:
          type: string
      - name: publishDateFrom
        in: query
        description: Filter published from this date
        schema:
          type: string
      - name: publishDateTo
        in: query
        description: Filter published to this date
        schema:
          type: string
      - name: attributedOnDateFrom
        in: query
        description: Filter attributed on from this date
        schema:
          type: string
      - name: attributedOnDateTo
        in: query
        description: Filter attributed on to this date
        schema:
          type: string
      - name: textSearchField
        in: query
        description: Filter the text input in these fields
        schema:
          type: string
      - name: textSearchInput
        in: query
        description: Filter by this text input
        schema:
          type: string
      - name: cvssv2From
        in: query
        description: Filter CVSSv2 from this value
        schema:
          type: string
      - name: cvssv2To
        in: query
        description: Filter CVSSv2 from this Value
        schema:
          type: string
      - name: cvssv3From
        in: query
        description: Filter CVSSv3 from this value
        schema:
          type: string
      - name: cvssv3To
        in: query
        description: Filter CVSSv3 from this Value
        schema:
          type: string
      responses:
        "200":
          description: A list of all findings
          headers:
            X-Total-Count:
              description: The total number of findings
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Finding"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/finding/project/{uuid}:
    get:
      tags:
      - finding
      summary: "Returns a list of all findings for a specific project or generates\
        \ SARIF file if Accept: application/sarif+json header is provided"
      description: <p>Requires permission <strong>VIEW_VULNERABILITY</strong></p>
      operationId: getFindingsByProject
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project
        required: true
        schema:
          type: string
          format: uuid
      - name: suppressed
        in: query
        description: Optionally includes suppressed findings
        schema:
          type: boolean
      - name: source
        in: query
        description: Optionally limit findings to specific sources of vulnerability
          intelligence
        schema:
          type: string
          enum:
          - NVD
          - NPM
          - GITHUB
          - VULNDB
          - OSSINDEX
          - RETIREJS
          - INTERNAL
          - OSV
          - SNYK
          - TRIVY
          - UNKNOWN
      - name: accept
        in: header
        schema:
          type: string
      responses:
        "200":
          description: "A list of all findings for a specific project, or a SARIF\
            \ file"
          headers:
            X-Total-Count:
              description: The total number of findings
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Finding"
            application/sarif+json:
              schema:
                type: string
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/integration/osv/ecosystem:
    get:
      tags:
      - integration
      summary: Returns a list of all ecosystems in OSV
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: getAllEcosystems
      responses:
        "200":
          description: A list of all ecosystems in OSV
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/integration/osv/ecosystem/inactive:
    get:
      tags:
      - integration
      summary: Returns a list of available inactive ecosystems in OSV to be selected
        by user
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: getInactiveEcosystems
      responses:
        "200":
          description: A list of available inactive ecosystems in OSV to be selected
            by user
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/ldap/mapping:
    put:
      tags:
      - ldap
      summary: Adds a mapping
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: addMapping_1
      requestBody:
        content:
          '*/*':
            schema:
              $ref: "#/components/schemas/MappedLdapGroupRequest"
      responses:
        "200":
          description: The created mapping
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MappedLdapGroup"
        "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: []
  /v1/ldap/mapping/{uuid}:
    delete:
      tags:
      - ldap
      summary: Removes a mapping
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: deleteMapping_1
      parameters:
      - name: uuid
        in: path
        description: The UUID of the mapping to delete
        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: []
  /v1/ldap/groups:
    get:
      tags:
      - ldap
      summary: Returns the DNs of all accessible groups within the directory
      description: |-
        <p>
          This API performs a pass-through query to the configured LDAP server.
          Search criteria results are cached using default Alpine CacheManager policy.
        <p>
        <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: retrieveLdapGroups
      responses:
        "200":
          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
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/ldap/team/{uuid}:
    get:
      tags:
      - ldap
      summary: Returns the DNs of all groups mapped to the specified team
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: retrieveLdapGroups_1
      parameters:
      - name: uuid
        in: path
        description: The UUID of the team to retrieve mappings for
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: DNs of all groups mapped to the specified team
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/MappedLdapGroup"
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/licenseGroup/{uuid}/license/{licenseUuid}:
    post:
      tags:
      - licenseGroup
      summary: Adds the license to the specified license group.
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: addLicenseToLicenseGroup
      parameters:
      - name: uuid
        in: path
        description: A valid license group
        required: true
        schema:
          type: string
          format: uuid
      - name: licenseUuid
        in: path
        description: A valid license
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: The updated license group
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LicenseGroup"
        "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: []
    delete:
      tags:
      - licenseGroup
      summary: Removes the license from the license group.
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: removeLicenseFromLicenseGroup
      parameters:
      - name: uuid
        in: path
        description: A valid license group
        required: true
        schema:
          type: string
          format: uuid
      - name: licenseUuid
        in: path
        description: A valid license
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: The updated license group
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LicenseGroup"
        "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: []
  /v1/licenseGroup:
    get:
      tags:
      - licenseGroup
      summary: Returns a list of all license groups
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: getLicenseGroups
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      responses:
        "200":
          description: A list of all license groups
          headers:
            X-Total-Count:
              description: The total number of license groups
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/LicenseGroup"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - licenseGroup
      summary: Creates a new license group
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: createLicenseGroup
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LicenseGroup"
      responses:
        "201":
          description: The created license group
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LicenseGroup"
        "401":
          description: Unauthorized
        "409":
          description: A license group with the specified name already exists
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    post:
      tags:
      - licenseGroup
      summary: Updates a license group
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: updateLicenseGroup
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LicenseGroup"
      responses:
        "200":
          description: The updated license group
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LicenseGroup"
        "401":
          description: Unauthorized
        "404":
          description: The license group could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/licenseGroup/{uuid}:
    get:
      tags:
      - licenseGroup
      summary: Returns a specific license group
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: getLicenseGroup
      parameters:
      - name: uuid
        in: path
        description: The UUID of the license group to retrieve
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A specific license group
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LicenseGroup"
        "401":
          description: Unauthorized
        "404":
          description: The license group could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - licenseGroup
      summary: Deletes a license group
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: deleteLicenseGroup
      parameters:
      - name: uuid
        in: path
        description: The UUID of the license group to delete
        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: []
  /v1/license:
    get:
      tags:
      - license
      summary: Returns a list of all licenses with complete metadata for each license
      operationId: getLicenses
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      responses:
        "200":
          description: A list of all licenses with complete metadata for each license
          headers:
            X-Total-Count:
              description: The total number of licenses
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/License"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - license
      summary: Creates a new custom license
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: createLicense
      requestBody:
        content:
          '*/*':
            schema:
              $ref: "#/components/schemas/License"
      responses:
        "201":
          description: The created license
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/License"
        "401":
          description: Unauthorized
        "409":
          description: A license with the specified ID already exists.
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/license/{licenseId}:
    get:
      tags:
      - license
      summary: Returns a specific license
      operationId: getLicense
      parameters:
      - name: licenseId
        in: path
        description: The SPDX License ID of the license to retrieve
        required: true
        schema:
          type: string
      responses:
        "200":
          description: A specific license
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/License"
        "401":
          description: Unauthorized
        "404":
          description: The license could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - license
      summary: Deletes a custom license
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: deleteLicense
      parameters:
      - name: licenseId
        in: path
        description: The SPDX License ID of the license to delete
        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: []
  /v1/license/concise:
    get:
      tags:
      - license
      summary: Returns a concise listing of all licenses
      operationId: getLicenseListing
      responses:
        "200":
          description: A concise listing of all licenses
          headers:
            X-Total-Count:
              description: The total number of licenses
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/License"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/metrics/component/{uuid}/refresh:
    get:
      tags:
      - metrics
      summary: Requests a refresh of a specific components metrics
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: RefreshComponentMetrics
      parameters:
      - name: uuid
        in: path
        description: The UUID of the component to refresh metrics on
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Refresh requested successfully
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified component is forbidden
        "404":
          description: The component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/metrics/portfolio/refresh:
    get:
      tags:
      - metrics
      summary: Requests a refresh of the portfolio metrics
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: RefreshPortfolioMetrics
      responses:
        "200":
          description: Refresh requested successfully
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/metrics/project/{uuid}/refresh:
    get:
      tags:
      - metrics
      summary: Requests a refresh of a specific projects metrics
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: RefreshProjectMetrics
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to refresh metrics on
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Refresh requested successfully
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/metrics/component/{uuid}/current:
    get:
      tags:
      - metrics
      summary: Returns current metrics for a specific component
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getComponentCurrentMetrics
      parameters:
      - name: uuid
        in: path
        description: The UUID of the component to retrieve metrics for
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Current metrics for a specific component
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DependencyMetrics"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified component is forbidden
        "404":
          description: The component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/metrics/component/{uuid}/since/{date}:
    get:
      tags:
      - metrics
      summary: Returns historical metrics for a specific component from a specific
        date
      description: |-
        <p>Date format must be <code>YYYYMMDD</code></p>
        <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getComponentMetricsSince
      parameters:
      - name: uuid
        in: path
        description: The UUID of the component to retrieve metrics for
        required: true
        schema:
          type: string
          format: uuid
      - name: date
        in: path
        description: The start date to retrieve metrics for
        required: true
        schema:
          type: string
      responses:
        "200":
          description: Historical metrics for a specific component from a specific
            date
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/DependencyMetrics"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified component is forbidden
        "404":
          description: The component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/metrics/component/{uuid}/days/{days}:
    get:
      tags:
      - metrics
      summary: Returns X days of historical metrics for a specific component
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getComponentMetricsXDays
      parameters:
      - name: uuid
        in: path
        description: The UUID of the component to retrieve metrics for
        required: true
        schema:
          type: string
          format: uuid
      - name: days
        in: path
        description: The number of days back to retrieve metrics for
        required: true
        schema:
          type: integer
          format: int32
      responses:
        "200":
          description: X days of historical metrics for a specific component
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/DependencyMetrics"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified component is forbidden
        "404":
          description: The component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/metrics/portfolio/current:
    get:
      tags:
      - metrics
      summary: Returns current metrics for the entire portfolio
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getPortfolioCurrentMetrics
      responses:
        "200":
          description: Current metrics for the entire portfolio
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PortfolioMetrics"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/metrics/portfolio/since/{date}:
    get:
      tags:
      - metrics
      summary: Returns historical metrics for the entire portfolio from a specific
        date
      description: |-
        <p>Date format must be <code>YYYYMMDD</code></p>
        <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getPortfolioMetricsSince
      parameters:
      - name: date
        in: path
        description: The start date to retrieve metrics for
        required: true
        schema:
          type: string
      responses:
        "200":
          description: Historical metrics for the entire portfolio from a specific
            date
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PortfolioMetrics"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/metrics/portfolio/{days}/days:
    get:
      tags:
      - metrics
      summary: Returns X days of historical metrics for the entire portfolio
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getPortfolioMetricsXDays
      parameters:
      - name: days
        in: path
        description: The number of days back to retrieve metrics for
        required: true
        schema:
          type: integer
          format: int32
      responses:
        "200":
          description: X days of historical metrics for the entire portfolio
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PortfolioMetrics"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/metrics/project/{uuid}/current:
    get:
      tags:
      - metrics
      summary: Returns current metrics for a specific project
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjectCurrentMetrics
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to retrieve metrics for
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Current metrics for a specific project
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProjectMetrics"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/metrics/project/{uuid}/since/{date}:
    get:
      tags:
      - metrics
      summary: Returns historical metrics for a specific project from a specific date
      description: |-
        <p>Date format must be <code>YYYYMMDD</code></p>
        <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjectMetricsSince
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to retrieve metrics for
        required: true
        schema:
          type: string
          format: uuid
      - name: date
        in: path
        description: The start date to retrieve metrics for
        required: true
        schema:
          type: string
      responses:
        "200":
          description: Historical metrics for a specific project from a specific date
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ProjectMetrics"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/metrics/project/{uuid}/days/{days}:
    get:
      tags:
      - metrics
      summary: Returns X days of historical metrics for a specific project
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjectMetricsXDays
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to retrieve metrics for
        required: true
        schema:
          type: string
          format: uuid
      - name: days
        in: path
        description: The number of days back to retrieve metrics for
        required: true
        schema:
          type: integer
          format: int32
      responses:
        "200":
          description: X days of historical metrics for a specific project
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ProjectMetrics"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/metrics/vulnerability:
    get:
      tags:
      - metrics
      summary: Returns the sum of all vulnerabilities in the database by year and
        month
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getVulnerabilityMetrics
      responses:
        "200":
          description: The sum of all vulnerabilities in the database by year and
            month
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/VulnerabilityMetrics"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/notification/publisher:
    get:
      tags:
      - notification
      summary: Returns a list of all notification publishers
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: getAllNotificationPublishers
      responses:
        "200":
          description: A list of all notification publishers
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/NotificationPublisher"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - notification
      summary: Creates a new notification publisher
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: createNotificationPublisher
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/NotificationPublisher"
      responses:
        "201":
          description: The created notification publisher
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationPublisher"
        "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: []
    post:
      tags:
      - notification
      summary: Updates a notification publisher
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: updateNotificationPublisher
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/NotificationPublisher"
      responses:
        "200":
          description: The updated notification publisher
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationPublisher"
        "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: []
  /v1/notification/publisher/{notificationPublisherUuid}:
    delete:
      tags:
      - notification
      summary: Deletes a notification publisher and all related notification rules
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: deleteNotificationPublisher
      parameters:
      - name: notificationPublisherUuid
        in: path
        description: The UUID of the notification publisher to delete
        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: []
  /v1/notification/publisher/restoreDefaultTemplates:
    post:
      tags:
      - notification
      summary: Restore the default notification publisher templates using the ones
        in the solution classpath
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: restoreDefaultTemplates
      responses:
        "200":
          description: Default templates restored successfully
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/notification/publisher/test/{uuid}:
    post:
      tags:
      - notification
      summary: Dispatches a rule notification test
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: testNotificationRule
      parameters:
      - name: uuid
        in: path
        description: The UUID of the rule to test
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Test notification dispatched successfully
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/notification/publisher/test/smtp:
    post:
      tags:
      - notification
      summary: Dispatches a SMTP notification test
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: testSmtpPublisherConfig
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                destination:
                  type: string
      responses:
        "200":
          description: Test notification dispatched successfully
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/notification/rule/{ruleUuid}/project/{projectUuid}:
    post:
      tags:
      - notification
      summary: Adds a project to a notification rule
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: addProjectToRule
      parameters:
      - name: ruleUuid
        in: path
        description: The UUID of the rule to add a project to
        required: true
        schema:
          type: string
          format: uuid
      - name: projectUuid
        in: path
        description: The UUID of the project to add to the rule
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: The updated notification rule
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
        "304":
          description: The rule already has the specified project assigned
        "401":
          description: Unauthorized
        "404":
          description: The notification rule or project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - notification
      summary: Removes a project from a notification rule
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: removeProjectFromRule
      parameters:
      - name: ruleUuid
        in: path
        description: The UUID of the rule to remove the project from
        required: true
        schema:
          type: string
          format: uuid
      - name: projectUuid
        in: path
        description: The UUID of the project to remove from the rule
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: The updated notification rule
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
        "304":
          description: The rule does not have the specified project assigned
        "401":
          description: Unauthorized
        "404":
          description: The notification rule or project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/notification/rule/{ruleUuid}/team/{teamUuid}:
    post:
      tags:
      - notification
      summary: Adds a team to a notification rule
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: addTeamToRule
      parameters:
      - name: ruleUuid
        in: path
        description: The UUID of the rule to add a team to
        required: true
        schema:
          type: string
          format: uuid
      - name: teamUuid
        in: path
        description: The UUID of the team to add to the rule
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: The updated notification rule
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
        "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: []
    delete:
      tags:
      - notification
      summary: Removes a team from a notification rule
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: removeTeamFromRule
      parameters:
      - name: ruleUuid
        in: path
        description: The UUID of the rule to remove the project from
        required: true
        schema:
          type: string
          format: uuid
      - name: teamUuid
        in: path
        description: The UUID of the project to remove from the rule
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: The updated notification rule
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
        "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: []
  /v1/notification/rule:
    get:
      tags:
      - notification
      summary: Returns a list of all notification rules
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: getAllNotificationRules
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: triggerType
        in: query
        description: The notification trigger type to filter on
        schema:
          type: string
          enum:
          - EVENT
          - SCHEDULE
      responses:
        "200":
          description: A list of all notification rules
          headers:
            X-Total-Count:
              description: The total number of notification rules
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/NotificationRule"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - notification
      summary: Creates a new notification rule
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: createNotificationRule
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/NotificationRule"
      responses:
        "201":
          description: The created notification rule
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the notification rule could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    post:
      tags:
      - notification
      summary: Updates a notification rule
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: updateNotificationRule
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/NotificationRule"
      responses:
        "200":
          description: The updated notification rule
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the notification rule could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - notification
      summary: Deletes a notification rule
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</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: []
  /v1/notification/rule/scheduled:
    put:
      tags:
      - notification
      summary: Creates a new scheduled notification rule
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: createScheduledNotificationRule
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateScheduledNotificationRuleRequest"
      responses:
        "201":
          description: The created notification rule
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
        "401":
          description: Unauthorized
        "404":
          description: Notification publisher could not be found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/oidc/mapping:
    put:
      tags:
      - oidc
      summary: Adds a mapping
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: addMapping_2
      requestBody:
        content:
          '*/*':
            schema:
              $ref: "#/components/schemas/MappedOidcGroupRequest"
      responses:
        "200":
          description: The created mapping
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MappedOidcGroup"
        "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: []
  /v1/oidc/group:
    get:
      tags:
      - oidc
      summary: Returns a list of all groups
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: retrieveGroups
      responses:
        "200":
          description: A list of all groups
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/OidcGroup"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - oidc
      summary: Creates group
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: createGroup
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/OidcGroup"
      responses:
        "201":
          description: The created group
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OidcGroup"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    post:
      tags:
      - oidc
      summary: Updates group
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: updateGroup
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/OidcGroup"
      responses:
        "200":
          description: The updated group
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OidcGroup"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/oidc/group/{uuid}:
    delete:
      tags:
      - oidc
      summary: Deletes a group
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: deleteGroup
      parameters:
      - name: uuid
        in: path
        description: The UUID of the group to delete
        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: []
  /v1/oidc/group/{groupUuid}/team/{teamUuid}/mapping:
    delete:
      tags:
      - oidc
      summary: Deletes a mapping
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: deleteMapping_2
      parameters:
      - name: groupUuid
        in: path
        description: The UUID of the group to delete a mapping for
        required: true
        schema:
          type: string
          format: uuid
      - name: teamUuid
        in: path
        description: The UUID of the team to delete a mapping for
        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: []
  /v1/oidc/mapping/{uuid}:
    delete:
      tags:
      - oidc
      summary: Deletes a mapping
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: deleteMappingByUuid
      parameters:
      - name: uuid
        in: path
        description: The UUID of the mapping to delete
        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: []
  /v1/oidc/available:
    get:
      tags:
      - oidc
      summary: Indicates if OpenID Connect is available for this application
      operationId: isAvailable
      responses:
        "200":
          description: Whether OpenID Connect is available
          content:
            text/plain:
              schema:
                type: boolean
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/oidc/group/{uuid}/team:
    get:
      tags:
      - oidc
      summary: Returns a list of teams associated with the specified group
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: retrieveTeamsMappedToGroup
      parameters:
      - name: uuid
        in: path
        description: The UUID of the mapping to retrieve the team for
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A list of teams associated with the specified group
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Team"
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the mapping could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/permission/{permission}/team/{uuid}:
    post:
      tags:
      - permission
      summary: Adds the permission to the specified team.
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: addPermissionToTeam
      parameters:
      - name: uuid
        in: path
        description: A valid team uuid
        required: true
        schema:
          type: string
          format: uuid
      - name: permission
        in: path
        description: A valid permission
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The updated team
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/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: []
    delete:
      tags:
      - permission
      summary: Removes the permission from the team.
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: removePermissionFromTeam
      parameters:
      - name: uuid
        in: path
        description: A valid team uuid
        required: true
        schema:
          type: string
          format: uuid
      - name: permission
        in: path
        description: A valid permission
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The updated team
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/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: []
  /v1/permission/{permission}/user/{username}:
    post:
      tags:
      - permission
      summary: Adds the permission to the specified username.
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: addPermissionToUser
      parameters:
      - name: username
        in: path
        description: A valid username
        required: true
        schema:
          type: string
      - name: permission
        in: path
        description: A valid permission
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The updated user
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserPrincipal"
        "304":
          description: The user already has the specified permission assigned
        "401":
          description: Unauthorized
        "404":
          description: The user could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - permission
      summary: Removes the permission from the user.
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: removePermissionFromUser
      parameters:
      - name: username
        in: path
        description: A valid username
        required: true
        schema:
          type: string
      - name: permission
        in: path
        description: A valid permission
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The updated user
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserPrincipal"
        "304":
          description: The user already has the specified permission assigned
        "401":
          description: Unauthorized
        "404":
          description: The user could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/permission:
    get:
      tags:
      - permission
      summary: Returns a list of all permissions
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: getAllPermissions
      responses:
        "200":
          description: A list of all permissions
          content:
            application/json:
              schema:
                type: string
                enum:
                - BOM_UPLOAD
                - VIEW_PORTFOLIO
                - PORTFOLIO_MANAGEMENT
                - VIEW_VULNERABILITY
                - VULNERABILITY_ANALYSIS
                - VIEW_POLICY_VIOLATION
                - VULNERABILITY_MANAGEMENT
                - POLICY_VIOLATION_ANALYSIS
                - ACCESS_MANAGEMENT
                - SYSTEM_CONFIGURATION
                - PROJECT_CREATION_UPLOAD
                - POLICY_MANAGEMENT
                - TAG_MANAGEMENT
                - VIEW_BADGES
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/policy/{uuid}/condition:
    put:
      tags:
      - policyCondition
      summary: Creates a new policy condition
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: createPolicyCondition
      parameters:
      - name: uuid
        in: path
        description: The UUID of the policy
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PolicyCondition"
      responses:
        "201":
          description: The created policy condition
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PolicyCondition"
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the policy could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/policy/condition/{uuid}:
    delete:
      tags:
      - policyCondition
      summary: Deletes a policy condition
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: deletePolicyCondition
      parameters:
      - name: uuid
        in: path
        description: The UUID of the policy condition to delete
        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: []
  /v1/policy/condition:
    post:
      tags:
      - policyCondition
      summary: Updates a policy condition
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: updatePolicyCondition
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PolicyCondition"
      responses:
        "200":
          description: The updated policy condition
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PolicyCondition"
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the policy condition could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/policy/{policyUuid}/project/{projectUuid}:
    post:
      tags:
      - policy
      summary: Adds a project to a policy
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: addProjectToPolicy
      parameters:
      - name: policyUuid
        in: path
        description: The UUID of the policy to add a project to
        required: true
        schema:
          type: string
          format: uuid
      - name: projectUuid
        in: path
        description: The UUID of the project to add to the rule
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: The updated policy
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Policy"
        "304":
          description: The policy already has the specified project assigned
        "401":
          description: Unauthorized
        "404":
          description: The policy or project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - policy
      summary: Removes a project from a policy
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: removeProjectFromPolicy
      parameters:
      - name: policyUuid
        in: path
        description: The UUID of the policy to remove the project from
        required: true
        schema:
          type: string
          format: uuid
      - name: projectUuid
        in: path
        description: The UUID of the project to remove from the policy
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: The updated policy
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Policy"
        "304":
          description: The policy does not have the specified project assigned
        "401":
          description: Unauthorized
        "404":
          description: The policy or project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/policy/{policyUuid}/tag/{tagName}:
    post:
      tags:
      - policy
      summary: Adds a tag to a policy
      description: |
        <p><strong>Deprecated</strong>. Use <code>POST /api/v1/tag/{name}/policy</code> instead.</p>
        <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: addTagToPolicy
      parameters:
      - name: policyUuid
        in: path
        description: The UUID of the policy to add a project to
        required: true
        schema:
          type: string
          format: uuid
      - name: tagName
        in: path
        description: The name of the tag to add to the rule
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The updated policy
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Policy"
        "304":
          description: The policy already has the specified tag assigned
        "401":
          description: Unauthorized
        "404":
          description: The policy or tag could not be found
      deprecated: true
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - policy
      summary: Removes a tag from a policy
      description: |
        <p><strong>Deprecated</strong>. Use <code>DELETE /api/v1/tag/{name}/policy</code> instead.</p>
        <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: removeTagFromPolicy
      parameters:
      - name: policyUuid
        in: path
        description: The UUID of the policy to remove the tag from
        required: true
        schema:
          type: string
          format: uuid
      - name: tagName
        in: path
        description: The name of the tag to remove from the policy
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The updated policy
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Policy"
        "304":
          description: The policy does not have the specified tag assigned
        "401":
          description: Unauthorized
        "404":
          description: The policy or tag could not be found
      deprecated: true
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/policy:
    get:
      tags:
      - policy
      summary: Returns a list of all policies
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: getPolicies
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      responses:
        "200":
          description: A list of all policies
          headers:
            X-Total-Count:
              description: The total number of policies
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Policy"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - policy
      summary: Creates a new policy
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: createPolicy
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Policy"
      responses:
        "201":
          description: The created policy
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Policy"
        "401":
          description: Unauthorized
        "409":
          description: A policy with the specified name already exists
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    post:
      tags:
      - policy
      summary: Updates a policy
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: updatePolicy
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Policy"
      responses:
        "200":
          description: The updated policy
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Policy"
        "401":
          description: Unauthorized
        "404":
          description: The policy could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/policy/{uuid}:
    get:
      tags:
      - policy
      summary: Returns a specific policy
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: getPolicy
      parameters:
      - name: uuid
        in: path
        description: The UUID of the policy to retrieve
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A specific policy
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Policy"
        "401":
          description: Unauthorized
        "404":
          description: The policy could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - policy
      summary: Deletes a policy
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: deletePolicy
      parameters:
      - name: uuid
        in: path
        description: The UUID of the policy to delete
        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: []
  /v1/violation:
    get:
      tags:
      - violation
      summary: Returns a list of all policy violations for the entire portfolio
      description: <p>Requires permission <strong>VIEW_POLICY_VIOLATION</strong></p>
      operationId: getViolations
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: suppressed
        in: query
        description: Optionally includes suppressed violations
        schema:
          type: boolean
      - name: showInactive
        in: query
        description: Optionally includes inactive projects
        schema:
          type: boolean
      - name: violationState
        in: query
        description: Filter by violation state
        schema:
          type: string
      - name: riskType
        in: query
        description: Filter by risk type
        schema:
          type: string
      - name: policy
        in: query
        description: Filter by policy
        schema:
          type: string
      - name: analysisState
        in: query
        description: Filter by analysis state
        schema:
          type: string
      - name: occurredOnDateFrom
        in: query
        description: Filter occurred on from
        schema:
          type: string
      - name: occurredOnDateTo
        in: query
        description: Filter occurred on to
        schema:
          type: string
      - name: textSearchField
        in: query
        description: Filter the text input in these fields
        schema:
          type: string
      - name: textSearchInput
        in: query
        description: Filter by this text input
        schema:
          type: string
      responses:
        "200":
          description: A list of all policy violations for the entire portfolio
          headers:
            X-Total-Count:
              description: The total number of policy violations
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PolicyViolation"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/violation/component/{uuid}:
    get:
      tags:
      - violation
      summary: Returns a list of all policy violations for a specific component
      description: <p>Requires permission <strong>VIEW_POLICY_VIOLATION</strong></p>
      operationId: getViolationsByComponent
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: uuid
        in: path
        description: The UUID of the component
        required: true
        schema:
          type: string
          format: uuid
      - name: suppressed
        in: query
        description: Optionally includes suppressed violations
        schema:
          type: boolean
      responses:
        "200":
          description: A list of all policy violations for a specific component
          headers:
            X-Total-Count:
              description: The total number of policy violations
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PolicyViolation"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified component is forbidden
        "404":
          description: The component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/violation/project/{uuid}:
    get:
      tags:
      - violation
      summary: Returns a list of all policy violations for a specific project
      description: <p>Requires permission <strong>VIEW_POLICY_VIOLATION</strong></p>
      operationId: getViolationsByProject
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: uuid
        in: path
        description: The UUID of the project
        required: true
        schema:
          type: string
          format: uuid
      - name: suppressed
        in: query
        description: Optionally includes suppressed violations
        schema:
          type: boolean
      responses:
        "200":
          description: A list of all policy violations for a specific project
          headers:
            X-Total-Count:
              description: The total number of policy violations
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PolicyViolation"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/project/{uuid}/property:
    get:
      tags:
      - projectProperty
      summary: Returns a list of all ProjectProperties for the specified project
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: getProperties_1
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to retrieve properties for
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A list of all ProjectProperties for the specified project
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ProjectProperty"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - projectProperty
      summary: Creates a new project property
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: createProperty_1
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to create a property for
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ProjectProperty"
      responses:
        "201":
          description: The created project property
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProjectProperty"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified 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: []
    post:
      tags:
      - projectProperty
      summary: Updates a project property
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: updateProperty
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to create a property for
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ProjectProperty"
      responses:
        "200":
          description: The updated project property
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProjectProperty"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - projectProperty
      summary: Deletes a config property
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: deleteProperty_1
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to delete a property from
        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":
          description: Access to the specified project is forbidden
        "404":
          description: The project or project property could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/project/clone:
    put:
      tags:
      - project
      summary: Clones a project
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: cloneProject
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CloneProjectRequest"
      responses:
        "200":
          description: Token to be used for checking cloning progress
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BomUploadResponse"
        "401":
          description: Unauthorized
        "403":
          description: The project clone cannot be set to latest version because access
            to current latest version is forbidden.
        "404":
          description: The UUID of the project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/project:
    get:
      tags:
      - project
      summary: Returns a list of all projects
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjects
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: name
        in: query
        description: The optional name of the project to query on
        schema:
          type: string
      - name: excludeInactive
        in: query
        description: Optionally excludes inactive projects from being returned
        schema:
          type: boolean
      - name: onlyRoot
        in: query
        description: Optionally excludes children projects from being returned
        schema:
          type: boolean
      - name: notAssignedToTeamWithUuid
        in: query
        description: The UUID of the team which projects shall be excluded
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A list of all projects
          headers:
            X-Total-Count:
              description: The total number of projects
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Project"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - project
      summary: Creates a new project
      description: |
        <p>If a parent project exists, <code>parent.uuid</code> is required</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></p>
      operationId: createProject
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Project"
      responses:
        "201":
          description: The created project
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Project"
        "400":
          description: Bad Request
        "401":
          description: Unauthorized
        "403":
          description: The project version cannot be created as latest version because
            access to current latest 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: []
    post:
      tags:
      - project
      summary: Updates a project
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: updateProject
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Project"
      responses:
        "200":
          description: The updated project
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Project"
        "401":
          description: Unauthorized
        "403":
          description: The project version cannot be set as latest version because
            access to current latest 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: []
  /v1/project/{uuid}:
    get:
      tags:
      - project
      summary: Returns a specific project
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProject
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to retrieve
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A specific project
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Project"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - project
      summary: Deletes a project
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: deleteProject
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to delete
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: Project removed successfully
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The UUID of the project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    patch:
      tags:
      - project
      summary: Partially updates a project
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: patchProject
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to modify
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Project"
      responses:
        "200":
          description: The updated project
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Project"
        "401":
          description: Unauthorized
        "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: []
  /v1/project/batchDelete:
    post:
      tags:
      - project
      summary: Deletes a list of projects specified by their UUIDs
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: deleteProjects
      requestBody:
        content:
          application/json:
            schema:
              maxItems: 1000
              minItems: 1
              uniqueItems: true
              type: array
              items:
                type: string
                format: uuid
      responses:
        "204":
          description: Projects removed successfully
        "400":
          description: Operation failed
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProjectOperationProblemDetails"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/project/{uuid}/children:
    get:
      tags:
      - project
      summary: Returns a list of all children for a project
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getChildrenProjects
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: uuid
        in: path
        description: The UUID of the project to get the children from
        required: true
        schema:
          type: string
          format: uuid
      - name: excludeInactive
        in: query
        description: Optionally excludes inactive projects from being returned
        schema:
          type: boolean
      responses:
        "200":
          description: A list of all children for a project
          headers:
            X-Total-Count:
              description: The total number of projects
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Project"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The UUID of the project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/project/{uuid}/children/classifier/{classifier}:
    get:
      tags:
      - project
      summary: Returns a list of all children for a project by classifier
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getChildrenProjectsByClassifier
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: classifier
        in: path
        description: The classifier to query on
        required: true
        schema:
          type: string
      - name: uuid
        in: path
        description: The UUID of the project to get the children from
        required: true
        schema:
          type: string
          format: uuid
      - name: excludeInactive
        in: query
        description: Optionally excludes inactive projects from being returned
        schema:
          type: boolean
      responses:
        "200":
          description: A list of all children for a project by classifier
          headers:
            X-Total-Count:
              description: The total number of projects
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Project"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The UUID of the project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/project/{uuid}/children/tag/{tag}:
    get:
      tags:
      - project
      summary: Returns a list of all children for a project by tag
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getChildrenProjectsByTag
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: tag
        in: path
        description: The tag to query on
        required: true
        schema:
          type: string
      - name: uuid
        in: path
        description: The UUID of the project to get the children from
        required: true
        schema:
          type: string
          format: uuid
      - name: excludeInactive
        in: query
        description: Optionally excludes inactive projects from being returned
        schema:
          type: boolean
      responses:
        "200":
          description: A list of all children for a project by tag
          headers:
            X-Total-Count:
              description: The total number of projects
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Project"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The UUID of the project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/project/latest/{name}:
    get:
      tags:
      - project
      summary: Returns the latest version of a project by its name
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getLatestProjectByName
      parameters:
      - name: name
        in: path
        description: The name of the project to retrieve the latest version of
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The latest version of the specified project
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Project"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/project/lookup:
    get:
      tags:
      - project
      summary: Returns a specific project by its name and version
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjectByNameAndVersion
      parameters:
      - name: name
        in: query
        description: The name of the project to query on
        required: true
        schema:
          type: string
      - name: version
        in: query
        description: The version of the project to query on
        required: true
        schema:
          type: string
      responses:
        "200":
          description: A specific project by its name and version
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Project"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/project/classifier/{classifier}:
    get:
      tags:
      - project
      summary: Returns a list of all projects by classifier
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjectsByClassifier
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: classifier
        in: path
        description: The classifier to query on
        required: true
        schema:
          type: string
      - name: excludeInactive
        in: query
        description: Optionally excludes inactive projects from being returned
        schema:
          type: boolean
      - name: onlyRoot
        in: query
        description: Optionally excludes children projects from being returned
        schema:
          type: boolean
      responses:
        "200":
          description: A list of all projects by classifier
          headers:
            X-Total-Count:
              description: The total number of projects
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Project"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/project/tag/{tag}:
    get:
      tags:
      - project
      summary: Returns a list of all projects by tag
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjectsByTag
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: tag
        in: path
        description: The tag to query on
        required: true
        schema:
          type: string
      - name: excludeInactive
        in: query
        description: Optionally excludes inactive projects from being returned
        schema:
          type: boolean
      - name: onlyRoot
        in: query
        description: Optionally excludes children projects from being returned
        schema:
          type: boolean
      responses:
        "200":
          description: A list of all projects by tag
          headers:
            X-Total-Count:
              description: The total number of projects
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Project"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/project/withoutDescendantsOf/{uuid}:
    get:
      tags:
      - project
      summary: Returns a list of all projects without the descendants of the selected
        project
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getProjectsWithoutDescendantsOf
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: uuid
        in: path
        description: The UUID of the project which descendants will be excluded
        required: true
        schema:
          type: string
          format: uuid
      - name: name
        in: query
        description: The optional name of the project to query on
        schema:
          type: string
      - name: excludeInactive
        in: query
        description: Optionally excludes inactive projects from being returned
        schema:
          type: boolean
      responses:
        "200":
          description: A list of all projects without the descendants of the selected
            project
          headers:
            X-Total-Count:
              description: The total number of projects
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Project"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The UUID of the project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/repository:
    get:
      tags:
      - repository
      summary: Returns a list of all repositories
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: getRepositories
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      responses:
        "200":
          description: A list of all repositories
          headers:
            X-Total-Count:
              description: The total number of repositories
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Repository"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - repository
      summary: Creates a new repository
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: createRepository
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Repository"
      responses:
        "201":
          description: The created repository
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Repository"
        "401":
          description: Unauthorized
        "409":
          description: A repository with the specified identifier already exists
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    post:
      tags:
      - repository
      summary: Updates a repository
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: updateRepository
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Repository"
      responses:
        "200":
          description: The updated repository
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Repository"
        "401":
          description: Unauthorized
        "404":
          description: The UUID of the repository could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/repository/{uuid}:
    delete:
      tags:
      - repository
      summary: Deletes a repository
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: deleteRepository
      parameters:
      - name: uuid
        in: path
        description: The UUID of the repository to delete
        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: []
  /v1/repository/{type}:
    get:
      tags:
      - repository
      summary: Returns repositories that support the specific type
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: getRepositoriesByType
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: type
        in: path
        description: The type of repositories to retrieve
        required: true
        schema:
          type: string
          enum:
          - CPAN
          - MAVEN
          - NPM
          - GEM
          - PYPI
          - NUGET
          - HEX
          - COMPOSER
          - CARGO
          - GO_MODULES
          - GITHUB
          - HACKAGE
          - NIXPKGS
          - UNSUPPORTED
      responses:
        "200":
          description: A list of repositories that support the provided type
          headers:
            X-Total-Count:
              description: The total number of repositories
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Repository"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/repository/latest:
    get:
      tags:
      - repository
      summary: Attempts to resolve the latest version of the component available in
        the configured repositories
      operationId: getRepositoryMetaComponent
      parameters:
      - name: purl
        in: query
        description: The Package URL for the component to query
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The latest version of the component available in the configured
            repositories
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RepositoryMetaComponent"
        "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: []
  /v1/search:
    get:
      tags:
      - search
      summary: Processes and returns search results
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: aggregateSearch
      parameters:
      - name: query
        in: query
        schema:
          type: string
      responses:
        "200":
          description: The search result
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchResult"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/search/component:
    get:
      tags:
      - search
      summary: Processes and returns search results
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: componentSearch
      parameters:
      - name: query
        in: query
        schema:
          type: string
      responses:
        "200":
          description: The search result
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchResult"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/search/license:
    get:
      tags:
      - search
      summary: Processes and returns search results
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: licenseSearch
      parameters:
      - name: query
        in: query
        schema:
          type: string
      responses:
        "200":
          description: The search result
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchResult"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/search/project:
    get:
      tags:
      - search
      summary: Processes and returns search results
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: projectSearch
      parameters:
      - name: query
        in: query
        schema:
          type: string
      responses:
        "200":
          description: The search result
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchResult"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/search/reindex:
    post:
      tags:
      - search
      summary: Rebuild lucene indexes for search operations
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: reindex
      parameters:
      - name: type
        in: query
        schema:
          uniqueItems: true
          type: array
          items:
            type: string
      responses:
        "200":
          description: Token to be used for checking index rebuild progress
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BomUploadResponse"
        "401":
          description: Unauthorized
        "400":
          description: No valid index type was provided
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/search/service:
    get:
      tags:
      - search
      summary: Processes and returns search results
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: serviceSearch
      parameters:
      - name: query
        in: query
        schema:
          type: string
      responses:
        "200":
          description: The search result
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchResult"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/search/vulnerability:
    get:
      tags:
      - search
      summary: Processes and returns search results
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: vulnerabilitySearch
      parameters:
      - name: query
        in: query
        schema:
          type: string
      responses:
        "200":
          description: The search result
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchResult"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/search/vulnerablesoftware:
    get:
      tags:
      - search
      summary: Processes and returns search results
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: vulnerableSoftwareSearch
      parameters:
      - name: query
        in: query
        schema:
          type: string
      - name: cpe
        in: query
        schema:
          type: string
      responses:
        "200":
          description: The search result
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchResult"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/service/project/{uuid}:
    get:
      tags:
      - service
      summary: Returns a list of all services for a given project
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getAllServices
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: uuid
        in: path
        description: The UUID of the project
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A list of all services for a given project
          headers:
            X-Total-Count:
              description: The total number of services
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ServiceComponent"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - service
      summary: Creates a new service
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: createService
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceComponent"
      responses:
        "201":
          description: The created service
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceComponent"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/service/{uuid}:
    get:
      tags:
      - service
      summary: Returns a specific service
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getServiceByUuid
      parameters:
      - name: uuid
        in: path
        description: The UUID of the service to retrieve
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A specific service
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceComponent"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified service is forbidden
        "404":
          description: The service could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - service
      summary: Deletes a service
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: deleteService
      parameters:
      - name: uuid
        in: path
        description: The UUID of the service to delete
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "204":
          description: Service removed successfully
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified service is forbidden
        "404":
          description: The UUID of the service could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/service:
    post:
      tags:
      - service
      summary: Updates a service
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: updateService
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceComponent"
      responses:
        "200":
          description: The updated service
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceComponent"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified service is forbidden
        "404":
          description: The UUID of the service could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/tag:
    get:
      tags:
      - tag
      summary: Returns a list of all tags
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getAllTags
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      responses:
        "200":
          description: A list of all tags
          headers:
            X-Total-Count:
              description: The total number of tags
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/TagListResponseItem"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - tag
      summary: Creates one or more tags.
      description: |
        <p>Requires permission <strong>TAG_MANAGEMENT</strong></p>
      operationId: createTags
      requestBody:
        description: Names of the tags to create
        content:
          application/json:
            schema:
              maxItems: 100
              minItems: 1
              uniqueItems: true
              type: array
              items:
                type: string
      responses:
        "201":
          description: Tags created successfully.
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - tag
      summary: Deletes one or more tags.
      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></p>
      operationId: deleteTags
      requestBody:
        description: Names of the tags to delete
        content:
          application/json:
            schema:
              maxItems: 100
              minItems: 1
              uniqueItems: true
              type: array
              items:
                type: string
      responses:
        "204":
          description: Tags deleted successfully.
        "400":
          description: Operation failed
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/TagOperationProblemDetails"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/tag/{name}/collectionProject:
    get:
      tags:
      - tag
      summary: Returns a list of all collection projects that use the given tag for
        their collection logic.
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getTaggedCollectionProjects
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: name
        in: path
        description: Name of the tag to get collection projects for
        required: true
        schema:
          type: string
      responses:
        "200":
          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
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/TaggedCollectionProjectListResponseItem"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/tag/{name}/notificationRule:
    get:
      tags:
      - tag
      summary: Returns a list of all notification rules assigned to the given tag.
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: getTaggedNotificationRules
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: name
        in: path
        description: Name of the tag to get notification rules for
        required: true
        schema:
          type: string
      responses:
        "200":
          description: A list of all notification rules assigned to the given tag
          headers:
            X-Total-Count:
              description: The total number of notification rules
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/TaggedPolicyListResponseItem"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    post:
      tags:
      - tag
      summary: Tags one or more notification rules.
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: tagNotificationRules
      parameters:
      - name: name
        in: path
        description: Name of the tag to assign
        required: true
        schema:
          type: string
      requestBody:
        description: UUIDs of notification rules to tag
        content:
          application/json:
            schema:
              maxItems: 100
              minItems: 1
              type: array
              items:
                maxLength: 100
                minLength: 1
                type: string
                format: uuid
        required: true
      responses:
        "204":
          description: Notification rules tagged successfully.
        "404":
          description: A tag with the provided name does not exist.
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - tag
      summary: Untags one or more notification rules.
      description: <p>Requires permission <strong>SYSTEM_CONFIGURATION</strong></p>
      operationId: untagNotificationRules
      parameters:
      - name: name
        in: path
        description: Name of the tag
        required: true
        schema:
          type: string
      requestBody:
        description: UUIDs of notification rules to untag
        content:
          application/json:
            schema:
              maxItems: 100
              minItems: 1
              type: array
              items:
                maxLength: 100
                minLength: 1
                type: string
                format: uuid
        required: true
      responses:
        "204":
          description: Notification rules untagged successfully.
        "404":
          description: A tag with the provided name does not exist.
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/tag/{name}/policy:
    get:
      tags:
      - tag
      summary: Returns a list of all policies assigned to the given tag.
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getTaggedPolicies
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: name
        in: path
        description: Name of the tag to get policies for
        required: true
        schema:
          type: string
      responses:
        "200":
          description: A list of all policies assigned to the given tag
          headers:
            X-Total-Count:
              description: The total number of policies
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/TaggedPolicyListResponseItem"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    post:
      tags:
      - tag
      summary: Tags one or more policies.
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: tagPolicies
      parameters:
      - name: name
        in: path
        description: Name of the tag to assign
        required: true
        schema:
          type: string
      requestBody:
        description: UUIDs of policies to tag
        content:
          application/json:
            schema:
              maxItems: 100
              minItems: 1
              type: array
              items:
                maxLength: 100
                minLength: 1
                type: string
                format: uuid
        required: true
      responses:
        "204":
          description: Policies tagged successfully.
        "404":
          description: A tag with the provided name does not exist.
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - tag
      summary: Untags one or more policies.
      description: <p>Requires permission <strong>POLICY_MANAGEMENT</strong></p>
      operationId: untagPolicies
      parameters:
      - name: name
        in: path
        description: Name of the tag
        required: true
        schema:
          type: string
      requestBody:
        description: UUIDs of policies to untag
        content:
          application/json:
            schema:
              maxItems: 100
              minItems: 1
              type: array
              items:
                maxLength: 100
                minLength: 1
                type: string
                format: uuid
        required: true
      responses:
        "204":
          description: Policies untagged successfully.
        "404":
          description: A tag with the provided name does not exist.
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/tag/{name}/project:
    get:
      tags:
      - tag
      summary: Returns a list of all projects assigned to the given tag.
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getTaggedProjects
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: name
        in: path
        description: Name of the tag to get projects for
        required: true
        schema:
          type: string
      responses:
        "200":
          description: A list of all projects assigned to the given tag
          headers:
            X-Total-Count:
              description: The total number of projects
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/TaggedProjectListResponseItem"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    post:
      tags:
      - tag
      summary: Tags one or more projects.
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: tagProjects
      parameters:
      - name: name
        in: path
        description: Name of the tag to assign
        required: true
        schema:
          type: string
      requestBody:
        description: UUIDs of projects to tag
        content:
          application/json:
            schema:
              maxItems: 100
              minItems: 1
              type: array
              items:
                maxLength: 100
                minLength: 1
                type: string
                format: uuid
        required: true
      responses:
        "204":
          description: Projects tagged successfully.
        "404":
          description: A tag with the provided name does not exist.
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - tag
      summary: Untags one or more projects.
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: untagProjects
      parameters:
      - name: name
        in: path
        description: Name of the tag
        required: true
        schema:
          type: string
      requestBody:
        description: UUIDs of projects to untag
        content:
          application/json:
            schema:
              maxItems: 100
              minItems: 1
              type: array
              items:
                maxLength: 100
                minLength: 1
                type: string
                format: uuid
        required: true
      responses:
        "204":
          description: Projects untagged successfully.
        "404":
          description: A tag with the provided name does not exist.
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/tag/{policyUuid}:
    get:
      tags:
      - tag
      summary: Returns a list of all tags associated with a given policy
      description: |
        <p><strong>Deprecated</strong>. Use <code>/api/v1/tag/policy/{uuid}</code> instead.</p>
        <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getTags
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: policyUuid
        in: path
        description: The UUID of the policy
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A list of all tags associated with a given policy
          headers:
            X-Total-Count:
              description: The total number of tags
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Tag"
        "401":
          description: Unauthorized
      deprecated: true
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/tag/policy/{uuid}:
    get:
      tags:
      - tag
      summary: Returns a list of all tags associated with a given policy
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getTagsForPolicy
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: uuid
        in: path
        description: The UUID of the policy
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A list of all tags associated with a given policy
          headers:
            X-Total-Count:
              description: The total number of tags
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Tag"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/team/visible:
    get:
      tags:
      - team
      summary: Returns a list of Teams that are visible
      description: <p></p>
      operationId: availableTeams
      responses:
        "200":
          description: The Visible Teams
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/VisibleTeams"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/team:
    get:
      tags:
      - team
      summary: Returns a list of all teams
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: getTeams
      responses:
        "200":
          description: A list of all teams
          headers:
            X-Total-Count:
              description: The total number of teams
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Team"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - team
      summary: Creates a new team
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: createTeam
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Team"
      responses:
        "201":
          description: The created team
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Team"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    post:
      tags:
      - team
      summary: Updates a team's fields
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: updateTeam
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Team"
      responses:
        "200":
          description: The updated team
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Team"
        "401":
          description: Unauthorized
        "404":
          description: The team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - team
      summary: Deletes a team
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</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: []
  /v1/team/key/{publicIdOrKey}:
    post:
      tags:
      - team
      summary: "Regenerates an API key by removing the specified key, generating a\
        \ new one and returning its value"
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: regenerateApiKey
      parameters:
      - name: publicIdOrKey
        in: path
        description: The public ID for the API key or for Legacy the complete Key
          to regenerate
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The re-generated API key
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiKey"
        "401":
          description: Unauthorized
        "404":
          description: The API key could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - team
      summary: Deletes the specified API key
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: deleteApiKey
      parameters:
      - name: publicIdOrKey
        in: path
        description: The public ID for the API key or for Legacy the full Key to delete
        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: []
  /v1/team/{uuid}/key:
    put:
      tags:
      - team
      summary: Generates an API key and returns its value
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: generateApiKey
      parameters:
      - name: uuid
        in: path
        description: The UUID of the team to generate a key for
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "201":
          description: The created API key
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiKey"
        "401":
          description: Unauthorized
        "404":
          description: The team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/team/self:
    get:
      tags:
      - team
      summary: Returns information about the current team.
      operationId: getSelf
      responses:
        "200":
          description: Information about the current team
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TeamSelfResponse"
        "401":
          description: Unauthorized
        "400":
          description: Invalid API key supplied
        "404":
          description: No Team for the given API key found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/team/{uuid}:
    get:
      tags:
      - team
      summary: Returns a specific team
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: getTeam
      parameters:
      - name: uuid
        in: path
        description: The UUID of the team to retrieve
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A specific team
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Team"
        "401":
          description: Unauthorized
        "404":
          description: The team could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/team/key/{publicIdOrKey}/comment:
    post:
      tags:
      - team
      summary: Updates an API key's comment
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: updateApiKeyComment
      parameters:
      - name: publicIdOrKey
        in: path
        description: The public ID for the API key or for Legacy the complete Key
          to comment on
        required: true
        schema:
          type: string
      requestBody:
        content:
          text/plain:
            schema:
              type: string
      responses:
        "200":
          description: The updated API key
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiKey"
        "401":
          description: Unauthorized
        "404":
          description: The API key could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/user/{username}/membership:
    post:
      tags:
      - user
      summary: Adds the username to the specified team.
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: addTeamToUser
      parameters:
      - name: username
        in: path
        description: A valid username
        required: true
        schema:
          type: string
      requestBody:
        description: The UUID of the team to associate username with
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/IdentifiableObject"
        required: true
      responses:
        "200":
          description: The updated user
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserPrincipal"
        "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: []
    delete:
      tags:
      - user
      summary: Removes the username from the specified team.
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: removeTeamFromUser
      parameters:
      - name: username
        in: path
        description: A valid username
        required: true
        schema:
          type: string
      requestBody:
        description: The UUID of the team to un-associate username from
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/IdentifiableObject"
        required: true
      responses:
        "200":
          description: The updated user
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserPrincipal"
        "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: []
  /v1/user/ldap:
    get:
      tags:
      - user
      summary: Returns a list of all LDAP users
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: getLdapUsers
      responses:
        "200":
          description: A list of all LDAP users
          headers:
            X-Total-Count:
              description: The total number of LDAP users
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/LdapUser"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - user
      summary: Creates a new user that references an existing LDAP object.
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: createLdapUser
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LdapUser"
      responses:
        "201":
          description: The created LDAP user
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LdapUser"
        "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: []
    delete:
      tags:
      - user
      summary: Deletes a user.
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</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: []
  /v1/user/managed:
    get:
      tags:
      - user
      summary: Returns a list of all managed users
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: getManagedUsers
      responses:
        "200":
          description: A list of all managed users
          headers:
            X-Total-Count:
              description: The total number of managed users
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ManagedUser"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - user
      summary: Creates a new user.
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: createManagedUser
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ManagedUser"
      responses:
        "201":
          description: The created user
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ManagedUser"
        "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: []
    post:
      tags:
      - user
      summary: Updates a managed user.
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: updateManagedUser
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ManagedUser"
      responses:
        "200":
          description: The updated user
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ManagedUser"
        "400":
          description: Missing required field
        "401":
          description: Unauthorized
        "404":
          description: The user could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - user
      summary: Deletes a user.
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</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: []
  /v1/user/oidc:
    get:
      tags:
      - user
      summary: Returns a list of all OIDC users
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: getOidcUsers
      responses:
        "200":
          description: A list of all OIDC users
          headers:
            X-Total-Count:
              description: The total number of OIDC users
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/OidcUser"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - user
      summary: Creates a new user that references an existing OpenID Connect user.
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</strong></p>
      operationId: createOidcUser
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/OidcUser"
      responses:
        "201":
          description: The created OIDC user
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OidcUser"
        "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: []
    delete:
      tags:
      - user
      summary: Deletes an OpenID Connect user.
      description: <p>Requires permission <strong>ACCESS_MANAGEMENT</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: []
  /v1/user/forceChangePassword:
    post:
      tags:
      - user
      summary: "Asserts login credentials and upon successful authentication, verifies\
        \ passwords match and changes users password"
      description: "Upon a successful login, a JSON Web Token will be returned in\
        \ the response body. This functionality requires authentication to be enabled."
      operationId: forceChangePassword
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                username:
                  type: string
                password:
                  type: string
                newPassword:
                  type: string
                confirmPassword:
                  type: string
      responses:
        "200":
          description: Password changed successfully
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/user/self:
    get:
      tags:
      - user
      summary: Returns information about the current logged in user.
      operationId: getSelf_1
      responses:
        "200":
          description: Information about the current logged in user
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserPrincipal"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    post:
      tags:
      - user
      summary: Updates information about the current logged in user.
      operationId: updateSelf
      requestBody:
        content:
          '*/*':
            schema:
              $ref: "#/components/schemas/ManagedUser"
      responses:
        "200":
          description: The updated user
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ManagedUser"
        "400":
          description: An invalid payload was submitted or the user is not a managed
            user.
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/user/login:
    post:
      tags:
      - user
      summary: Assert login credentials
      description: "Upon a successful login, a JSON Web Token will be returned in\
        \ the response body. This functionality requires authentication to be enabled."
      operationId: validateCredentials
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                username:
                  type: string
                password:
                  type: string
      responses:
        "200":
          description: A bearer token to be used for authenticating with the REST
            API
          content:
            text/plain:
              schema:
                type: string
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/user/oidc/login:
    post:
      tags:
      - user
      summary: Login with OpenID Connect
      description: "Upon a successful login, a JSON Web Token will be returned in\
        \ the response body. This functionality requires authentication to be enabled."
      operationId: validateOidcAccessToken
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
              - idToken
              type: object
              properties:
                idToken:
                  type: string
                  description: An OAuth2 access token
                accessToken:
                  type: string
      responses:
        "200":
          description: A bearer token to be used for authenticating with the REST
            API
          content:
            text/plain:
              schema:
                type: string
        "204":
          description: No Content
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/vex/cyclonedx/project/{uuid}:
    get:
      tags:
      - vex
      summary: Returns a VEX for a project in CycloneDX format
      description: <p>Requires permission <strong>VULNERABILITY_ANALYSIS</strong></p>
      operationId: exportProjectAsCycloneDx_1
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to export
        required: true
        schema:
          type: string
          format: uuid
      - name: download
        in: query
        description: Force the resulting VEX to be downloaded as a file (defaults
          to 'false')
        schema:
          type: boolean
      responses:
        "200":
          description: A VEX for a project in CycloneDX format
          content:
            application/vnd.cyclonedx+json:
              schema:
                type: string
            application/octet-stream:
              schema:
                type: string
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/vex:
    put:
      tags:
      - vex
      summary: Upload a supported VEX document
      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></p>
      operationId: uploadVex
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/VexSubmitRequest"
      responses:
        "200":
          description: Token to be used for checking VEX processing progress
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BomUploadResponse"
        "400":
          description: Invalid VEX
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/InvalidBomProblemDetails"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    post:
      tags:
      - vex
      summary: Upload a supported VEX document
      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></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":
          description: Token to be used for checking VEX processing progress
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BomUploadResponse"
        "400":
          description: Invalid VEX
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/InvalidBomProblemDetails"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/violation/analysis:
    get:
      tags:
      - violationanalysis
      summary: Retrieves a violation analysis trail
      description: <p>Requires permission <strong>VIEW_POLICY_VIOLATION</strong></p>
      operationId: retrieveAnalysis_1
      parameters:
      - name: component
        in: query
        description: The UUID of the component
        required: true
        schema:
          type: string
          format: uuid
      - name: policyViolation
        in: query
        description: The UUID of the policy violation
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A violation analysis trail
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ViolationAnalysis"
        "401":
          description: Unauthorized
        "404":
          description: The component or policy violation could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - violationanalysis
      summary: Records a violation analysis decision
      description: <p>Requires permission <strong>POLICY_VIOLATION_ANALYSIS</strong></p>
      operationId: updateAnalysis_1
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ViolationAnalysisRequest"
      responses:
        "200":
          description: The created violation analysis
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ViolationAnalysis"
        "401":
          description: Unauthorized
        "404":
          description: The component or policy violation could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/vulnerability/{uuid}/component/{component}:
    post:
      tags:
      - vulnerability
      summary: Assigns a vulnerability to a component
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: assignVulnerability
      parameters:
      - name: uuid
        in: path
        description: The UUID of the vulnerability
        required: true
        schema:
          type: string
          format: uuid
      - name: component
        in: path
        description: The UUID of the component
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Assignment successful
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified component is forbidden
        "404":
          description: The vulnerability or component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - vulnerability
      summary: Removes assignment of a vulnerability from a component
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: unassignVulnerability
      parameters:
      - name: uuid
        in: path
        description: The UUID of the vulnerability
        required: true
        schema:
          type: string
          format: uuid
      - name: component
        in: path
        description: The UUID of the component
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Assignment removal successful
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified component is forbidden
        "404":
          description: The vulnerability or component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/vulnerability/source/{source}/vuln/{vulnId}/component/{component}:
    post:
      tags:
      - vulnerability
      summary: Assigns a vulnerability to a component
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: assignVulnerability_1
      parameters:
      - name: source
        in: path
        description: The vulnerability source
        required: true
        schema:
          type: string
      - name: vulnId
        in: path
        description: The vulnId
        required: true
        schema:
          type: string
      - name: component
        in: path
        description: The UUID of the component
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Assignment successful
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified component is forbidden
        "404":
          description: The vulnerability or component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - vulnerability
      summary: Removes assignment of a vulnerability from a component
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: unassignVulnerability_1
      parameters:
      - name: source
        in: path
        description: The vulnerability source
        required: true
        schema:
          type: string
      - name: vulnId
        in: path
        description: The vulnId
        required: true
        schema:
          type: string
      - name: component
        in: path
        description: The UUID of the component
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: Assignment removal successful
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified component is forbidden
        "404":
          description: The vulnerability or component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/vulnerability:
    get:
      tags:
      - vulnerability
      summary: Returns a list of all vulnerabilities
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getAllVulnerabilities
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      responses:
        "200":
          description: A list of all vulnerabilities
          headers:
            X-Total-Count:
              description: The total number of vulnerabilities
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Vulnerability"
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    put:
      tags:
      - vulnerability
      summary: Creates a new vulnerability
      description: <p>Requires permission <strong>VULNERABILITY_MANAGEMENT</strong></p>
      operationId: createVulnerability
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Vulnerability"
      responses:
        "201":
          description: The created vulnerability
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Vulnerability"
        "401":
          description: Unauthorized
        "409":
          description: A vulnerability with the specified vulnId already exists
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    post:
      tags:
      - vulnerability
      summary: Updates an internal vulnerability
      description: <p>Requires permission <strong>VULNERABILITY_MANAGEMENT</strong></p>
      operationId: updateVulnerability
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Vulnerability"
      responses:
        "200":
          description: The updated vulnerability
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Vulnerability"
        "401":
          description: Unauthorized
        "404":
          description: The vulnerability could not be found
        "406":
          description: The vulnId may not be changed
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/vulnerability/{uuid}:
    get:
      tags:
      - vulnerability
      summary: Returns a specific vulnerability
      description: <p>Requires permission <strong>VULNERABILITY_MANAGEMENT</strong></p>
      operationId: getVulnerabilityByUuid
      parameters:
      - name: uuid
        in: path
        description: The UUID of the vulnerability
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A specific vulnerability
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Vulnerability"
        "401":
          description: Unauthorized
        "404":
          description: The vulnerability could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
    delete:
      tags:
      - vulnerability
      summary: Deletes a vulnerability
      description: <p>Requires permission <strong>VULNERABILITY_MANAGEMENT</strong></p>
      operationId: deleteVulnerability
      parameters:
      - name: uuid
        in: path
        description: The UUID of the vulnerability to delete
        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: []
  /v1/vulnerability/vulnId:
    get:
      tags:
      - vulnerability
      summary: Generates an internal vulnerability identifier
      description: <p>Requires permission <strong>PORTFOLIO_MANAGEMENT</strong></p>
      operationId: generateInternalVulnerabilityIdentifier
      responses:
        "200":
          description: An internal vulnerability identifier
          content:
            application/json:
              schema:
                type: string
        "401":
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/vulnerability/source/{source}/vuln/{vuln}/projects:
    get:
      tags:
      - vulnerability
      summary: Returns a list of all projects affected by a specific vulnerability
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getAffectedProject
      parameters:
      - name: source
        in: path
        required: true
        schema:
          type: string
      - name: vuln
        in: path
        required: true
        schema:
          type: string
      - name: excludeInactive
        in: query
        description: Optionally excludes inactive projects from being returned
        schema:
          type: boolean
      responses:
        "200":
          description: A list of all projects affected by a specific vulnerability
          headers:
            X-Total-Count:
              description: The total number of projects
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Project"
        "401":
          description: Unauthorized
        "404":
          description: The vulnerability could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/vulnerability/component/{uuid}:
    get:
      tags:
      - vulnerability
      summary: Returns a list of all vulnerabilities for a specific component
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getVulnerabilitiesByComponent
      parameters:
      - name: pageNumber
        in: query
        description: The page to return. To be used in conjunction with <code>pageSize</code>.
        schema:
          type: string
          default: "1"
      - name: pageSize
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>pageNumber</code>.
        schema:
          type: string
          default: "100"
      - name: offset
        in: query
        description: Offset to start returning elements from. To be used in conjunction
          with <code>limit</code>.
        schema:
          type: string
      - name: limit
        in: query
        description: Number of elements to return per page. To be used in conjunction
          with <code>offset</code>.
        schema:
          type: string
      - name: sortName
        in: query
        description: Name of the resource field to sort on.
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Ordering of items when sorting with <code>sortName</code>.
        schema:
          type: string
          enum:
          - "asc, desc"
      - name: uuid
        in: path
        description: The UUID of the component to retrieve vulnerabilities for
        required: true
        schema:
          type: string
          format: uuid
      - name: suppressed
        in: query
        description: Optionally includes suppressed vulnerabilities
        schema:
          type: boolean
      responses:
        "200":
          description: A list of all vulnerabilities for a specific component
          headers:
            X-Total-Count:
              description: The total number of vulnerabilities
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Vulnerability"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified component is forbidden
        "404":
          description: The component could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/vulnerability/project/{uuid}:
    get:
      tags:
      - vulnerability
      summary: Returns a list of all vulnerabilities for a specific project
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getVulnerabilitiesByProject
      parameters:
      - name: uuid
        in: path
        description: The UUID of the project to retrieve vulnerabilities for
        required: true
        schema:
          type: string
          format: uuid
      - name: suppressed
        in: query
        description: Optionally includes suppressed vulnerabilities
        schema:
          type: boolean
      responses:
        "200":
          description: A list of all vulnerabilities for a specific project
          headers:
            X-Total-Count:
              description: The total number of vulnerabilities
              style: simple
              schema:
                format: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Vulnerability"
        "401":
          description: Unauthorized
        "403":
          description: Access to the specified project is forbidden
        "404":
          description: The project could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
  /v1/vulnerability/source/{source}/vuln/{vuln}:
    get:
      tags:
      - vulnerability
      summary: Returns a specific vulnerability
      description: <p>Requires permission <strong>VIEW_PORTFOLIO</strong></p>
      operationId: getVulnerabilityByVulnId
      parameters:
      - name: source
        in: path
        required: true
        schema:
          type: string
      - name: vuln
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: A specific vulnerability
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Vulnerability"
        "401":
          description: Unauthorized
        "404":
          description: The vulnerability could not be found
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
components:
  schemas:
    About:
      type: object
      properties:
        version:
          type: string
        timestamp:
          type: string
        systemUuid:
          type: string
        uuid:
          type: string
        application:
          type: string
        framework:
          $ref: "#/components/schemas/Framework"
    Framework:
      type: object
      properties:
        name:
          type: string
        version:
          type: string
        timestamp:
          type: string
        uuid:
          type: string
    AclMappingRequest:
      required:
      - project
      - team
      type: object
      properties:
        team:
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
          type: string
        project:
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
          type: string
    ApiKey:
      type: object
      properties:
        comment:
          maxLength: 255
          minLength: 0
          type: string
        created:
          type: string
          format: date-time
        lastUsed:
          type: string
          format: date-time
        publicId:
          maxLength: 8
          minLength: 5
          type: string
        key:
          type: string
        legacy:
          type: boolean
        maskedKey:
          type: string
    ExternalReference:
      type: object
      properties:
        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:
          minLength: 1
          type: string
        comment:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
    LdapUser:
      type: object
      properties:
        username:
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
          type: string
        dn:
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
          type: string
        teams:
          type: array
          items:
            $ref: "#/components/schemas/Team"
        email:
          maxLength: 255
          minLength: 0
          pattern: "[\\P{Cc}]+"
          type: string
        permissions:
          type: array
          items:
            $ref: "#/components/schemas/Permission"
    ManagedUser:
      required:
      - lastPasswordChange
      type: object
      properties:
        username:
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
          type: string
        lastPasswordChange:
          type: string
          format: date-time
        fullname:
          maxLength: 255
          minLength: 0
          pattern: "[\\P{Cc}]+"
          type: string
        email:
          maxLength: 255
          minLength: 0
          pattern: "[\\P{Cc}]+"
          type: string
        suspended:
          type: boolean
        forcePasswordChange:
          type: boolean
        nonExpiryPassword:
          type: boolean
        teams:
          type: array
          items:
            $ref: "#/components/schemas/Team"
        permissions:
          type: array
          items:
            $ref: "#/components/schemas/Permission"
        confirmPassword:
          type: string
        newPassword:
          type: string
    MappedLdapGroup:
      required:
      - uuid
      type: object
      properties:
        dn:
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
          type: string
        uuid:
          type: string
          format: uuid
    MappedOidcGroup:
      required:
      - uuid
      type: object
      properties:
        group:
          $ref: "#/components/schemas/OidcGroup"
        uuid:
          type: string
          format: uuid
    OidcGroup:
      required:
      - uuid
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        name:
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
          type: string
    OidcUser:
      type: object
      properties:
        username:
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
          type: string
        subjectIdentifier:
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
          type: string
        email:
          maxLength: 255
          minLength: 0
          pattern: "[\\P{Cc}]+"
          type: string
        teams:
          type: array
          items:
            $ref: "#/components/schemas/Team"
        permissions:
          type: array
          items:
            $ref: "#/components/schemas/Permission"
    OrganizationalContact:
      type: object
      properties:
        name:
          type: string
        email:
          type: string
        phone:
          type: string
    OrganizationalEntity:
      type: object
      properties:
        name:
          type: string
        urls:
          type: array
          items:
            type: string
        contacts:
          type: array
          items:
            $ref: "#/components/schemas/OrganizationalContact"
    Permission:
      type: object
      properties:
        name:
          maxLength: 255
          minLength: 1
          pattern: "^[a-zA-Z_0-9]*$"
          type: string
        description:
          type: string
    Project:
      required:
      - lastBomImport
      - uuid
      type: object
      properties:
        authors:
          type: array
          items:
            $ref: "#/components/schemas/OrganizationalContact"
        publisher:
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        manufacturer:
          $ref: "#/components/schemas/OrganizationalEntity"
        supplier:
          $ref: "#/components/schemas/OrganizationalEntity"
        group:
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        name:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        description:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        version:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        classifier:
          type: string
          enum:
          - NONE
          - APPLICATION
          - FRAMEWORK
          - LIBRARY
          - CONTAINER
          - OPERATING_SYSTEM
          - DEVICE
          - FIRMWARE
          - FILE
          - PLATFORM
          - DEVICE_DRIVER
          - MACHINE_LEARNING_MODEL
          - DATA
        collectionLogic:
          type: string
          enum:
          - NONE
          - AGGREGATE_DIRECT_CHILDREN
          - AGGREGATE_DIRECT_CHILDREN_WITH_TAG
          - AGGREGATE_LATEST_VERSION_CHILDREN
        collectionTag:
          $ref: "#/components/schemas/Tag"
        cpe:
          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})"
          type: string
        purl:
          maxLength: 786
          minLength: 0
          type: string
        swidTagId:
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        directDependencies:
          type: string
        uuid:
          type: string
          format: uuid
        parent:
          $ref: "#/components/schemas/Project"
        children:
          type: array
          items:
            $ref: "#/components/schemas/Project"
        properties:
          type: array
          items:
            $ref: "#/components/schemas/ProjectProperty"
        tags:
          uniqueItems: true
          type: array
          items:
            $ref: "#/components/schemas/Tag"
        lastBomImport:
          type: integer
          description: UNIX epoch timestamp in milliseconds
          format: int64
        lastBomImportFormat:
          type: string
        lastInheritedRiskScore:
          type: number
          format: double
        lastVulnerabilityAnalysis:
          type: integer
          description: UNIX epoch timestamp in milliseconds
          format: int64
        active:
          type: boolean
        isLatest:
          type: boolean
        accessTeams:
          type: array
          writeOnly: true
          items:
            $ref: "#/components/schemas/Team"
        externalReferences:
          type: array
          items:
            $ref: "#/components/schemas/ExternalReference"
        metadata:
          $ref: "#/components/schemas/ProjectMetadata"
        versions:
          type: array
          items:
            $ref: "#/components/schemas/ProjectVersion"
        author:
          type: string
        metrics:
          $ref: "#/components/schemas/ProjectMetrics"
        bomRef:
          type: string
    ProjectMetadata:
      type: object
      properties:
        supplier:
          $ref: "#/components/schemas/OrganizationalEntity"
        authors:
          type: array
          items:
            $ref: "#/components/schemas/OrganizationalContact"
      readOnly: true
    ProjectMetrics:
      required:
      - critical
      - firstOccurrence
      - high
      - lastOccurrence
      - low
      - medium
      type: object
      properties:
        critical:
          type: integer
          format: int32
        high:
          type: integer
          format: int32
        medium:
          type: integer
          format: int32
        low:
          type: integer
          format: int32
        unassigned:
          type: integer
          format: int32
        vulnerabilities:
          type: integer
          format: int64
        vulnerableComponents:
          type: integer
          format: int32
        components:
          type: integer
          format: int32
        suppressed:
          type: integer
          format: int32
        findingsTotal:
          type: integer
          format: int32
        findingsAudited:
          type: integer
          format: int32
        findingsUnaudited:
          type: integer
          format: int32
        inheritedRiskScore:
          type: number
          format: double
        policyViolationsFail:
          type: integer
          format: int32
        policyViolationsWarn:
          type: integer
          format: int32
        policyViolationsInfo:
          type: integer
          format: int32
        policyViolationsTotal:
          type: integer
          format: int32
        policyViolationsAudited:
          type: integer
          format: int32
        policyViolationsUnaudited:
          type: integer
          format: int32
        policyViolationsSecurityTotal:
          type: integer
          format: int32
        policyViolationsSecurityAudited:
          type: integer
          format: int32
        policyViolationsSecurityUnaudited:
          type: integer
          format: int32
        policyViolationsLicenseTotal:
          type: integer
          format: int32
        policyViolationsLicenseAudited:
          type: integer
          format: int32
        policyViolationsLicenseUnaudited:
          type: integer
          format: int32
        policyViolationsOperationalTotal:
          type: integer
          format: int32
        policyViolationsOperationalAudited:
          type: integer
          format: int32
        policyViolationsOperationalUnaudited:
          type: integer
          format: int32
        collectionLogic:
          type: string
          enum:
          - NONE
          - AGGREGATE_DIRECT_CHILDREN
          - AGGREGATE_DIRECT_CHILDREN_WITH_TAG
          - AGGREGATE_LATEST_VERSION_CHILDREN
        collectionLogicChanged:
          type: boolean
        firstOccurrence:
          type: integer
          description: UNIX epoch timestamp in milliseconds
          format: int64
        lastOccurrence:
          type: integer
          description: UNIX epoch timestamp in milliseconds
          format: int64
    ProjectProperty:
      required:
      - propertyType
      type: object
      properties:
        groupName:
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
          type: string
        propertyName:
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
          type: string
        propertyValue:
          maxLength: 1024
          minLength: 0
          pattern: "[\\P{Cc}]+"
          type: string
        propertyType:
          type: string
          enum:
          - BOOLEAN
          - INTEGER
          - NUMBER
          - STRING
          - ENCRYPTEDSTRING
          - TIMESTAMP
          - URL
          - UUID
        description:
          maxLength: 255
          minLength: 0
          pattern: "[\\P{Cc}]+"
          type: string
    ProjectVersion:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        version:
          type: string
        active:
          type: boolean
    Tag:
      type: object
      properties:
        name:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
    Team:
      required:
      - uuid
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        name:
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
          type: string
        apiKeys:
          type: array
          items:
            $ref: "#/components/schemas/ApiKey"
        ldapUsers:
          type: array
          items:
            $ref: "#/components/schemas/LdapUser"
        managedUsers:
          type: array
          items:
            $ref: "#/components/schemas/ManagedUser"
        oidcUsers:
          type: array
          items:
            $ref: "#/components/schemas/OidcUser"
        mappedLdapGroups:
          type: array
          items:
            $ref: "#/components/schemas/MappedLdapGroup"
        mappedOidcGroups:
          type: array
          items:
            $ref: "#/components/schemas/MappedOidcGroup"
        permissions:
          type: array
          items:
            $ref: "#/components/schemas/Permission"
    Analysis:
      required:
      - analysisDetails
      - analysisJustification
      - analysisResponse
      - analysisState
      type: object
      properties:
        analysisState:
          type: string
          enum:
          - EXPLOITABLE
          - IN_TRIAGE
          - FALSE_POSITIVE
          - NOT_AFFECTED
          - RESOLVED
          - NOT_SET
        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
        analysisDetails:
          type: string
        analysisComments:
          type: array
          items:
            $ref: "#/components/schemas/AnalysisComment"
        isSuppressed:
          type: boolean
    AnalysisComment:
      required:
      - comment
      - timestamp
      type: object
      properties:
        timestamp:
          type: integer
          description: UNIX epoch timestamp in milliseconds
          format: int64
        comment:
          type: string
        commenter:
          type: string
    AnalysisRequest:
      required:
      - component
      - vulnerability
      type: object
      properties:
        project:
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
          type: string
        component:
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
          type: string
        vulnerability:
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
          type: string
        analysisState:
          type: string
          enum:
          - EXPLOITABLE
          - IN_TRIAGE
          - FALSE_POSITIVE
          - NOT_AFFECTED
          - RESOLVED
          - NOT_SET
        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
        analysisDetails:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        comment:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        isSuppressed:
          type: boolean
          writeOnly: true
        suppressed:
          type: boolean
    IsTokenBeingProcessedResponse:
      required:
      - processing
      type: object
      properties:
        processing:
          type: boolean
    BomUploadResponse:
      required:
      - token
      type: object
      properties:
        token:
          type: string
          description: Token used to check task progress
          format: uuid
    InvalidBomProblemDetails:
      required:
      - detail
      - status
      - title
      type: object
      properties:
        type:
          type: string
          description: A URI reference that identifies the problem type
          format: uri
          example: https://api.example.org/foo/bar/example-problem
        status:
          type: integer
          description: HTTP status code generated by the origin server for this occurrence
            of the problem
          format: int32
          example: 400
        title:
          type: string
          description: "Short, human-readable summary of the problem type"
          example: Example title
        detail:
          type: string
          description: Human-readable explanation specific to this occurrence of the
            problem
          example: Example detail
        instance:
          type: string
          description: Reference URI that identifies the specific occurrence of the
            problem
          format: uri
          example: https://api.example.org/foo/bar/example-instance
        errors:
          type: array
          description: Errors identified during schema validation
          items:
            type: string
            description: Errors identified during schema validation
    BomSubmitRequest:
      required:
      - bom
      - project
      type: object
      properties:
        project:
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
          type: string
          example: 38640b33-4ba9-4733-bdab-cbfc40c6f8aa
        projectName:
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
          example: Example Application
        projectVersion:
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
          example: 1.0.0
        projectTags:
          type: array
          description: Overwrite project tags. Modifying the tags of an existing project
            requires the PORTFOLIO_MANAGEMENT permission.
          items:
            $ref: "#/components/schemas/Tag"
        autoCreate:
          type: boolean
        parentUUID:
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
          type: string
          example: 5341f53c-611b-4388-9d9c-731026dc5eec
        parentName:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
          example: Example Application Parent
        parentVersion:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
          example: 1.0.0
        isLatestProjectVersion:
          type: boolean
        bom:
          pattern: "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
          type: string
          description: Base64 encoded BOM
          example: ewogICJib21Gb3JtYXQiOiAiQ3ljbG9uZURYIiwKICAic3BlY1ZlcnNpb24iOiAiMS40IiwKICAiY29tcG9uZW50cyI6IFsKICAgIHsKICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICJuYW1lIjogImFjbWUtbGliIiwKICAgICAgInZlcnNpb24iOiAiMS4wLjAiCiAgICB9CiAgXQp9
    Score:
      type: object
      properties:
        likelihoodScore:
          type: number
          format: double
        technicalImpactScore:
          type: number
          format: double
        businessImpactScore:
          type: number
          format: double
        likelihood:
          type: string
          enum:
          - HIGH
          - MEDIUM
          - LOW
        technicalImpact:
          type: string
          enum:
          - HIGH
          - MEDIUM
          - LOW
        businessImpact:
          type: string
          enum:
          - HIGH
          - MEDIUM
          - LOW
    ComponentProperty:
      required:
      - propertyType
      - uuid
      type: object
      properties:
        groupName:
          maxLength: 255
          minLength: 1
          pattern: "\\P{Cc}+"
          type: string
        propertyName:
          maxLength: 255
          minLength: 1
          pattern: "\\P{Cc}+"
          type: string
        propertyValue:
          maxLength: 1024
          minLength: 0
          pattern: "\\P{Cc}+"
          type: string
        propertyType:
          type: string
          enum:
          - BOOLEAN
          - INTEGER
          - NUMBER
          - STRING
          - ENCRYPTEDSTRING
          - TIMESTAMP
          - URL
          - UUID
        description:
          maxLength: 255
          minLength: 0
          pattern: "\\P{Cc}+"
          type: string
        uuid:
          type: string
          format: uuid
    AffectedComponent:
      type: object
      properties:
        identityType:
          type: string
          enum:
          - CPE
          - PURL
        identity:
          type: string
        versionType:
          type: string
          enum:
          - EXACT
          - RANGE
        version:
          type: string
        versionEndExcluding:
          type: string
        versionEndIncluding:
          type: string
        versionStartExcluding:
          type: string
        versionStartIncluding:
          type: string
        uuid:
          type: string
          format: uuid
        affectedVersionAttributions:
          type: array
          items:
            $ref: "#/components/schemas/AffectedVersionAttribution"
    AffectedVersionAttribution:
      required:
      - firstSeen
      - lastSeen
      type: object
      properties:
        firstSeen:
          type: integer
          description: UNIX epoch timestamp in milliseconds
          format: int64
        lastSeen:
          type: integer
          description: UNIX epoch timestamp in milliseconds
          format: int64
        source:
          type: string
          enum:
          - NVD
          - NPM
          - GITHUB
          - VULNDB
          - OSSINDEX
          - RETIREJS
          - INTERNAL
          - OSV
          - SNYK
          - TRIVY
          - UNKNOWN
        uuid:
          type: string
          format: uuid
    Component:
      required:
      - classifier
      - project
      - uuid
      type: object
      properties:
        authors:
          type: array
          items:
            $ref: "#/components/schemas/OrganizationalContact"
        publisher:
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        supplier:
          $ref: "#/components/schemas/OrganizationalEntity"
        group:
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        name:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        version:
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        classifier:
          type: string
          enum:
          - NONE
          - APPLICATION
          - FRAMEWORK
          - LIBRARY
          - CONTAINER
          - OPERATING_SYSTEM
          - DEVICE
          - FIRMWARE
          - FILE
          - PLATFORM
          - DEVICE_DRIVER
          - MACHINE_LEARNING_MODEL
          - DATA
        filename:
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{Alnum}:/\\\\!@#$%^&{}\\[\\]()_+\\-=,.~'` ]{1,255}$"
          type: string
        extension:
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{Alnum}!@#$%^&{}\\[\\]()_+\\-=,.~'` ]{1,255}$"
          type: string
        md5:
          pattern: "^[0-9a-fA-F]{32}$"
          type: string
        sha1:
          pattern: "^[0-9a-fA-F]{40}$"
          type: string
        sha256:
          pattern: "^[0-9a-fA-F]{64}$"
          type: string
        sha384:
          pattern: "^[0-9a-fA-F]{96}$"
          type: string
        sha512:
          pattern: "^[0-9a-fA-F]{128}$"
          type: string
        sha3_256:
          pattern: "^[0-9a-fA-F]{64}$"
          type: string
        sha3_384:
          pattern: "^[0-9a-fA-F]{96}$"
          type: string
        sha3_512:
          pattern: "^[0-9a-fA-F]{128}$"
          type: string
        blake2b_256:
          pattern: "^[0-9a-f]{64}$"
          type: string
        blake2b_384:
          pattern: "^[0-9a-f]{96}$"
          type: string
        blake2b_512:
          pattern: "^[0-9a-f]{128}$"
          type: string
        blake3:
          pattern: "^[A-Fa-f0-9]*$"
          type: string
        cpe:
          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})"
          type: string
        purl:
          maxLength: 786
          minLength: 0
          type: string
        purlCoordinates:
          maxLength: 786
          minLength: 0
          type: string
          readOnly: true
        swidTagId:
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        description:
          maxLength: 1024
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        copyright:
          maxLength: 1024
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        license:
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        licenseExpression:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        licenseUrl:
          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:]])?$"
          type: string
        resolvedLicense:
          $ref: "#/components/schemas/License"
        directDependencies:
          type: string
        externalReferences:
          type: array
          items:
            $ref: "#/components/schemas/ExternalReference"
        parent:
          $ref: "#/components/schemas/Component"
        children:
          type: array
          items:
            $ref: "#/components/schemas/Component"
        properties:
          type: array
          items:
            $ref: "#/components/schemas/ComponentProperty"
        vulnerabilities:
          type: array
          items:
            $ref: "#/components/schemas/Vulnerability"
        project:
          $ref: "#/components/schemas/Project"
        lastInheritedRiskScore:
          type: number
          format: double
        notes:
          type: string
        uuid:
          type: string
          format: uuid
        author:
          type: string
        metrics:
          $ref: "#/components/schemas/DependencyMetrics"
        repositoryMeta:
          $ref: "#/components/schemas/RepositoryMetaComponent"
        dependencyGraph:
          uniqueItems: true
          type: array
          items:
            type: string
        expandDependencyGraph:
          type: boolean
        isInternal:
          type: boolean
    Cwe:
      type: object
      properties:
        cweId:
          type: integer
          format: int32
        name:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
    DataClassification:
      type: object
      properties:
        direction:
          type: string
          enum:
          - INBOUND
          - OUTBOUND
          - BI_DIRECTIONAL
          - UNKNOWN
        name:
          type: string
    DependencyMetrics:
      required:
      - critical
      - firstOccurrence
      - high
      - lastOccurrence
      - low
      - medium
      type: object
      properties:
        critical:
          type: integer
          format: int32
        high:
          type: integer
          format: int32
        medium:
          type: integer
          format: int32
        low:
          type: integer
          format: int32
        unassigned:
          type: integer
          format: int32
        vulnerabilities:
          type: integer
          format: int64
        suppressed:
          type: integer
          format: int32
        findingsTotal:
          type: integer
          format: int32
        findingsAudited:
          type: integer
          format: int32
        findingsUnaudited:
          type: integer
          format: int32
        inheritedRiskScore:
          type: number
          format: double
        policyViolationsFail:
          type: integer
          format: int32
        policyViolationsWarn:
          type: integer
          format: int32
        policyViolationsInfo:
          type: integer
          format: int32
        policyViolationsTotal:
          type: integer
          format: int32
        policyViolationsAudited:
          type: integer
          format: int32
        policyViolationsUnaudited:
          type: integer
          format: int32
        policyViolationsSecurityTotal:
          type: integer
          format: int32
        policyViolationsSecurityAudited:
          type: integer
          format: int32
        policyViolationsSecurityUnaudited:
          type: integer
          format: int32
        policyViolationsLicenseTotal:
          type: integer
          format: int32
        policyViolationsLicenseAudited:
          type: integer
          format: int32
        policyViolationsLicenseUnaudited:
          type: integer
          format: int32
        policyViolationsOperationalTotal:
          type: integer
          format: int32
        policyViolationsOperationalAudited:
          type: integer
          format: int32
        policyViolationsOperationalUnaudited:
          type: integer
          format: int32
        firstOccurrence:
          type: integer
          description: UNIX epoch timestamp in milliseconds
          format: int64
        lastOccurrence:
          type: integer
          description: UNIX epoch timestamp in milliseconds
          format: int64
    FindingAttribution:
      required:
      - attributedOn
      - component
      - uuid
      - vulnerability
      type: object
      properties:
        attributedOn:
          type: integer
          description: UNIX epoch timestamp in milliseconds
          format: int64
        analyzerIdentity:
          type: string
          enum:
          - INTERNAL_ANALYZER
          - OSSINDEX_ANALYZER
          - NPM_AUDIT_ANALYZER
          - VULNDB_ANALYZER
          - SNYK_ANALYZER
          - TRIVY_ANALYZER
          - NONE
        component:
          $ref: "#/components/schemas/Component"
        vulnerability:
          $ref: "#/components/schemas/Vulnerability"
        alternateIdentifier:
          type: string
        referenceUrl:
          type: string
        uuid:
          type: string
          format: uuid
    License:
      required:
      - uuid
      type: object
      properties:
        licenseGroups:
          type: array
          items:
            $ref: "#/components/schemas/LicenseGroup"
        uuid:
          type: string
          format: uuid
        name:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        licenseText:
          type: string
        standardLicenseTemplate:
          type: string
        standardLicenseHeader:
          type: string
        licenseComments:
          type: string
        licenseId:
          maxLength: 255
          minLength: 1
          pattern: "^[a-zA-Z0-9_.\\-+]*$"
          type: string
        isOsiApproved:
          type: boolean
        isFsfLibre:
          type: boolean
        isDeprecatedLicenseId:
          type: boolean
        isCustomLicense:
          type: boolean
        seeAlso:
          type: array
          items:
            type: string
    LicenseGroup:
      required:
      - uuid
      type: object
      properties:
        name:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        licenses:
          type: array
          items:
            $ref: "#/components/schemas/License"
        riskWeight:
          type: integer
          format: int32
        uuid:
          type: string
          format: uuid
    RepositoryMetaComponent:
      required:
      - lastCheck
      - latestVersion
      - name
      - published
      - repositoryType
      type: object
      properties:
        repositoryType:
          type: string
          enum:
          - CPAN
          - MAVEN
          - NPM
          - GEM
          - PYPI
          - NUGET
          - HEX
          - COMPOSER
          - CARGO
          - GO_MODULES
          - GITHUB
          - HACKAGE
          - NIXPKGS
          - UNSUPPORTED
        namespace:
          type: string
        name:
          type: string
        latestVersion:
          type: string
        published:
          type: integer
          description: UNIX epoch timestamp in milliseconds
          format: int64
        lastCheck:
          type: integer
          description: UNIX epoch timestamp in milliseconds
          format: int64
    ServiceComponent:
      required:
      - project
      - uuid
      type: object
      properties:
        provider:
          $ref: "#/components/schemas/OrganizationalEntity"
        group:
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        name:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        version:
          maxLength: 255
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        description:
          maxLength: 1024
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        endpoints:
          type: array
          items:
            type: string
        authenticated:
          type: boolean
        crossesTrustBoundary:
          type: boolean
        data:
          type: array
          items:
            $ref: "#/components/schemas/DataClassification"
        externalReferences:
          type: array
          items:
            $ref: "#/components/schemas/ExternalReference"
        parent:
          $ref: "#/components/schemas/ServiceComponent"
        children:
          type: array
          items:
            $ref: "#/components/schemas/ServiceComponent"
        vulnerabilities:
          type: array
          items:
            $ref: "#/components/schemas/Vulnerability"
        project:
          $ref: "#/components/schemas/Project"
        lastInheritedRiskScore:
          type: number
          format: double
        notes:
          type: string
        uuid:
          type: string
          format: uuid
        bomRef:
          type: string
    Vulnerability:
      required:
      - uuid
      type: object
      properties:
        vulnId:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        source:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        friendlyVulnId:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        title:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        subTitle:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        description:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        detail:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        recommendation:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        references:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        credits:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        created:
          type: string
          format: date-time
        published:
          type: string
          format: date-time
        updated:
          type: string
          format: date-time
        cwes:
          type: array
          items:
            $ref: "#/components/schemas/Cwe"
        cvssV2BaseScore:
          type: number
        cvssV2ImpactSubScore:
          type: number
        cvssV2ExploitabilitySubScore:
          type: number
        cvssV2Vector:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        cvssV3BaseScore:
          type: number
        cvssV3ImpactSubScore:
          type: number
        cvssV3ExploitabilitySubScore:
          type: number
        cvssV3Vector:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        owaspRRLikelihoodScore:
          type: number
        owaspRRTechnicalImpactScore:
          type: number
        owaspRRBusinessImpactScore:
          type: number
        owaspRRVector:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        severity:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
          enum:
          - CRITICAL
          - HIGH
          - MEDIUM
          - LOW
          - INFO
          - UNASSIGNED
        vulnerableVersions:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        patchedVersions:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        epssScore:
          type: number
        epssPercentile:
          type: number
        components:
          type: array
          items:
            $ref: "#/components/schemas/Component"
        serviceComponents:
          type: array
          items:
            $ref: "#/components/schemas/ServiceComponent"
        uuid:
          type: string
          format: uuid
        aliases:
          type: array
          items:
            $ref: "#/components/schemas/VulnerabilityAlias"
        findingAttribution:
          $ref: "#/components/schemas/FindingAttribution"
        affectedProjectCount:
          type: integer
          format: int32
        affectedActiveProjectCount:
          type: integer
          format: int32
        affectedInactiveProjectCount:
          type: integer
          format: int32
        affectedComponents:
          type: array
          items:
            $ref: "#/components/schemas/AffectedComponent"
        cwe:
          $ref: "#/components/schemas/Cwe"
    VulnerabilityAlias:
      required:
      - uuid
      type: object
      properties:
        internalId:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        cveId:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        ghsaId:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        sonatypeId:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        osvId:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        snykId:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        gsdId:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        vulnDbId:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        uuid:
          type: string
          format: uuid
    ConfigProperty:
      required:
      - propertyType
      type: object
      properties:
        groupName:
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
          type: string
        propertyName:
          maxLength: 255
          minLength: 1
          pattern: "[\\P{Cc}]+"
          type: string
        propertyValue:
          pattern: "[\\P{Cc}]+"
          type: string
        propertyType:
          type: string
          enum:
          - BOOLEAN
          - INTEGER
          - NUMBER
          - STRING
          - ENCRYPTEDSTRING
          - TIMESTAMP
          - URL
          - UUID
        description:
          maxLength: 255
          minLength: 0
          pattern: "[\\P{Cc}]+"
          type: string
    DependencyGraphResponse:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        name:
          type: string
        version:
          type: string
        purl:
          type: string
        directDependencies:
          type: string
        latestVersion:
          type: string
    Finding:
      type: object
      properties:
        component:
          type: object
          additionalProperties:
            type: object
        vulnerability:
          type: object
          additionalProperties:
            type: object
        analysis:
          type: object
          additionalProperties:
            type: object
        attribution:
          type: object
          additionalProperties:
            type: object
        matrix:
          type: string
    MappedLdapGroupRequest:
      required:
      - dn
      - team
      type: object
      properties:
        team:
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
          type: string
        dn:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
    PortfolioMetrics:
      required:
      - critical
      - firstOccurrence
      - high
      - lastOccurrence
      - low
      - medium
      type: object
      properties:
        critical:
          type: integer
          format: int32
        high:
          type: integer
          format: int32
        medium:
          type: integer
          format: int32
        low:
          type: integer
          format: int32
        unassigned:
          type: integer
          format: int32
        vulnerabilities:
          type: integer
          format: int32
        projects:
          type: integer
          format: int32
        vulnerableProjects:
          type: integer
          format: int32
        components:
          type: integer
          format: int32
        vulnerableComponents:
          type: integer
          format: int32
        suppressed:
          type: integer
          format: int32
        findingsTotal:
          type: integer
          format: int32
        findingsAudited:
          type: integer
          format: int32
        findingsUnaudited:
          type: integer
          format: int32
        inheritedRiskScore:
          type: number
          format: double
        policyViolationsFail:
          type: integer
          format: int32
        policyViolationsWarn:
          type: integer
          format: int32
        policyViolationsInfo:
          type: integer
          format: int32
        policyViolationsTotal:
          type: integer
          format: int32
        policyViolationsAudited:
          type: integer
          format: int32
        policyViolationsUnaudited:
          type: integer
          format: int32
        policyViolationsSecurityTotal:
          type: integer
          format: int32
        policyViolationsSecurityAudited:
          type: integer
          format: int32
        policyViolationsSecurityUnaudited:
          type: integer
          format: int32
        policyViolationsLicenseTotal:
          type: integer
          format: int32
        policyViolationsLicenseAudited:
          type: integer
          format: int32
        policyViolationsLicenseUnaudited:
          type: integer
          format: int32
        policyViolationsOperationalTotal:
          type: integer
          format: int32
        policyViolationsOperationalAudited:
          type: integer
          format: int32
        policyViolationsOperationalUnaudited:
          type: integer
          format: int32
        firstOccurrence:
          type: integer
          description: UNIX epoch timestamp in milliseconds
          format: int64
        lastOccurrence:
          type: integer
          description: UNIX epoch timestamp in milliseconds
          format: int64
    VulnerabilityMetrics:
      required:
      - measuredAt
      type: object
      properties:
        year:
          type: integer
          format: int32
        month:
          type: integer
          format: int32
        count:
          type: integer
          format: int32
        measuredAt:
          type: integer
          description: UNIX epoch timestamp in milliseconds
          format: int64
    NotificationPublisher:
      required:
      - name
      - publisherClass
      - templateMimeType
      - uuid
      type: object
      properties:
        name:
          maxLength: 255
          minLength: 1
          type: string
        description:
          maxLength: 1024
          minLength: 0
          type: string
        publisherClass:
          maxLength: 1024
          minLength: 1
          type: string
        template:
          type: string
        templateMimeType:
          maxLength: 255
          minLength: 1
          type: string
        defaultPublisher:
          type: boolean
        uuid:
          type: string
          format: uuid
    NotificationRule:
      required:
      - name
      - scope
      - triggerType
      - uuid
      type: object
      properties:
        name:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        enabled:
          type: boolean
        notifyChildren:
          type: boolean
        logSuccessfulPublish:
          type: boolean
        scope:
          type: string
          enum:
          - SYSTEM
          - PORTFOLIO
        notificationLevel:
          type: string
          enum:
          - INFORMATIONAL
          - WARNING
          - ERROR
        projects:
          type: array
          items:
            $ref: "#/components/schemas/Project"
        tags:
          uniqueItems: true
          type: array
          items:
            $ref: "#/components/schemas/Tag"
        teams:
          type: array
          items:
            $ref: "#/components/schemas/Team"
        notifyOn:
          uniqueItems: true
          type: array
          items:
            type: string
            enum:
            - CONFIGURATION
            - DATASOURCE_MIRRORING
            - REPOSITORY
            - INTEGRATION
            - INDEXING_SERVICE
            - FILE_SYSTEM
            - ANALYZER
            - NEW_VULNERABILITY
            - NEW_VULNERABILITIES_SUMMARY
            - NEW_VULNERABLE_DEPENDENCY
            - PROJECT_AUDIT_CHANGE
            - BOM_CONSUMED
            - BOM_PROCESSED
            - BOM_PROCESSING_FAILED
            - BOM_VALIDATION_FAILED
            - VEX_CONSUMED
            - VEX_PROCESSED
            - POLICY_VIOLATION
            - NEW_POLICY_VIOLATIONS_SUMMARY
            - PROJECT_CREATED
            - USER_CREATED
            - USER_DELETED
        message:
          maxLength: 1024
          minLength: 0
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        publisher:
          $ref: "#/components/schemas/NotificationPublisher"
        publisherConfig:
          type: string
        triggerType:
          type: string
          readOnly: true
          enum:
          - EVENT
          - SCHEDULE
        scheduleLastTriggeredAt:
          type: integer
          description: "When the schedule last triggered, as UNIX epoch timestamp\
            \ in milliseconds"
          format: int64
          readOnly: true
        scheduleNextTriggerAt:
          type: integer
          description: "When the schedule triggers next, as UNIX epoch timestamp in\
            \ milliseconds"
          format: int64
          readOnly: true
        scheduleCron:
          type: string
          description: Schedule of this rule as cron expression. Must not be set for
            rules with trigger type EVENT.
        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.
        uuid:
          type: string
          format: uuid
    ProblemDetails:
      required:
      - detail
      - status
      - title
      type: object
      properties:
        type:
          type: string
          description: A URI reference that identifies the problem type
          format: uri
          example: https://api.example.org/foo/bar/example-problem
        status:
          type: integer
          description: HTTP status code generated by the origin server for this occurrence
            of the problem
          format: int32
          example: 400
        title:
          type: string
          description: "Short, human-readable summary of the problem type"
          example: Example title
        detail:
          type: string
          description: Human-readable explanation specific to this occurrence of the
            problem
          example: Example detail
        instance:
          type: string
          description: Reference URI that identifies the specific occurrence of the
            problem
          format: uri
          example: https://api.example.org/foo/bar/example-instance
      description: An RFC 9457 problem object
    ProjectOperationProblemDetails:
      required:
      - detail
      - status
      - title
      type: object
      allOf:
      - $ref: "#/components/schemas/ProblemDetails"
      - type: object
        properties:
          errors:
            type: object
            additionalProperties:
              type: string
              description: "Errors encountered during the operation, grouped by project\
                \ UUID"
            description: "Errors encountered during the operation, grouped by project\
              \ UUID"
    TagOperationProblemDetails:
      required:
      - detail
      - status
      - title
      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"
    CreateScheduledNotificationRuleRequest:
      required:
      - notificationLevel
      - publisher
      - scope
      type: object
      properties:
        name:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        scope:
          type: string
          enum:
          - SYSTEM
          - PORTFOLIO
        notificationLevel:
          type: string
          enum:
          - INFORMATIONAL
          - WARNING
          - ERROR
        publisher:
          $ref: "#/components/schemas/Publisher"
    Publisher:
      required:
      - uuid
      type: object
      properties:
        uuid:
          type: string
          format: uuid
    MappedOidcGroupRequest:
      required:
      - group
      - team
      type: object
      properties:
        team:
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
          type: string
        group:
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
          type: string
    UserPrincipal:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        permissions:
          type: array
          items:
            $ref: "#/components/schemas/Permission"
        username:
          type: string
        teams:
          type: array
          items:
            $ref: "#/components/schemas/Team"
        email:
          type: string
    Policy:
      required:
      - uuid
      type: object
      properties:
        name:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        operator:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
          enum:
          - ALL
          - ANY
        violationState:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
          enum:
          - INFO
          - WARN
          - FAIL
        policyConditions:
          type: array
          items:
            $ref: "#/components/schemas/PolicyCondition"
        projects:
          type: array
          items:
            $ref: "#/components/schemas/Project"
        tags:
          uniqueItems: true
          type: array
          items:
            $ref: "#/components/schemas/Tag"
        uuid:
          type: string
          format: uuid
        includeChildren:
          type: boolean
        onlyLatestProjectVersion:
          type: boolean
        global:
          type: boolean
    PolicyCondition:
      required:
      - uuid
      type: object
      properties:
        policy:
          $ref: "#/components/schemas/Policy"
        operator:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          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
        subject:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
          enum:
          - AGE
          - COORDINATES
          - CPE
          - LICENSE
          - LICENSE_GROUP
          - PACKAGE_URL
          - SEVERITY
          - SWID_TAGID
          - VERSION
          - COMPONENT_HASH
          - CWE
          - VULNERABILITY_ID
          - VERSION_DISTANCE
          - EPSS
        value:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        uuid:
          type: string
          format: uuid
    PolicyViolation:
      required:
      - timestamp
      - uuid
      type: object
      properties:
        type:
          type: string
          enum:
          - LICENSE
          - SECURITY
          - OPERATIONAL
        project:
          $ref: "#/components/schemas/Project"
        component:
          $ref: "#/components/schemas/Component"
        policyCondition:
          $ref: "#/components/schemas/PolicyCondition"
        timestamp:
          type: integer
          description: UNIX epoch timestamp in milliseconds
          format: int64
        text:
          maxLength: 255
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        analysis:
          $ref: "#/components/schemas/ViolationAnalysis"
        uuid:
          type: string
          format: uuid
    ViolationAnalysis:
      required:
      - analysisState
      type: object
      properties:
        analysisState:
          type: string
          enum:
          - APPROVED
          - REJECTED
          - NOT_SET
        analysisComments:
          type: array
          items:
            $ref: "#/components/schemas/ViolationAnalysisComment"
        violationAnalysisState:
          type: string
          writeOnly: true
          enum:
          - APPROVED
          - REJECTED
          - NOT_SET
        isSuppressed:
          type: boolean
    ViolationAnalysisComment:
      required:
      - comment
      - timestamp
      type: object
      properties:
        timestamp:
          type: integer
          description: UNIX epoch timestamp in milliseconds
          format: int64
        comment:
          type: string
        commenter:
          type: string
    CloneProjectRequest:
      required:
      - project
      - version
      type: object
      properties:
        project:
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
          type: string
        version:
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        includeTags:
          type: boolean
          writeOnly: true
        includeProperties:
          type: boolean
          writeOnly: true
        includeDependencies:
          type: boolean
          writeOnly: true
        includeComponents:
          type: boolean
          writeOnly: true
        includeServices:
          type: boolean
          writeOnly: true
        includeAuditHistory:
          type: boolean
          writeOnly: true
        includeACL:
          type: boolean
          writeOnly: true
        includePolicyViolations:
          type: boolean
          writeOnly: true
        makeCloneLatest:
          type: boolean
          writeOnly: true
    Repository:
      required:
      - enabled
      - internal
      - resolutionOrder
      - type
      - uuid
      type: object
      properties:
        type:
          type: string
          enum:
          - CPAN
          - MAVEN
          - NPM
          - GEM
          - PYPI
          - NUGET
          - HEX
          - COMPOSER
          - CARGO
          - GO_MODULES
          - GITHUB
          - HACKAGE
          - NIXPKGS
          - UNSUPPORTED
        identifier:
          minLength: 1
          type: string
        url:
          minLength: 1
          type: string
        resolutionOrder:
          type: integer
          format: int32
        enabled:
          type: boolean
        internal:
          type: boolean
        authenticationRequired:
          type: boolean
        username:
          type: string
        uuid:
          type: string
          format: uuid
        password:
          type: string
          writeOnly: true
    SearchResult:
      type: object
      properties:
        results:
          type: object
          additionalProperties:
            type: array
            items:
              type: object
              additionalProperties:
                type: string
    TagListResponseItem:
      required:
      - collectionProjectCount
      - name
      - notificationRuleCount
      - policyCount
      - projectCount
      type: object
      properties:
        name:
          type: string
          description: Name of the tag
        projectCount:
          type: integer
          description: Number of projects assigned to this tag
          format: int64
        collectionProjectCount:
          type: integer
          description: Number of collection projects assigned to this tag
          format: int64
        policyCount:
          type: integer
          description: Number of policies assigned to this tag
          format: int64
        notificationRuleCount:
          type: integer
          description: Number of notification rules assigned to this tag
          format: int64
    TaggedCollectionProjectListResponseItem:
      required:
      - name
      - uuid
      type: object
      properties:
        uuid:
          type: string
          description: UUID of the collection project
          format: uuid
        name:
          type: string
          description: Name of the collection project
        version:
          type: string
          description: Version of the collection project
    TaggedPolicyListResponseItem:
      required:
      - name
      - uuid
      type: object
      properties:
        uuid:
          type: string
          description: UUID of the policy
          format: uuid
        name:
          type: string
          description: Name of the policy
    TaggedProjectListResponseItem:
      required:
      - name
      - uuid
      type: object
      properties:
        uuid:
          type: string
          description: UUID of the project
          format: uuid
        name:
          type: string
          description: Name of the project
        version:
          type: string
          description: Version of the project
    VisibleTeams:
      type: object
      properties:
        name:
          type: string
        uuid:
          type: string
          format: uuid
    TeamSelfResponse:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        name:
          type: string
        permissions:
          type: array
          items:
            $ref: "#/components/schemas/Permission"
    IdentifiableObject:
      type: object
      properties:
        uuid:
          type: string
    VexSubmitRequest:
      required:
      - project
      - vex
      type: object
      properties:
        project:
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
          type: string
        projectName:
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        projectVersion:
          minLength: 1
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
          type: string
        vex:
          pattern: "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
          type: string
    ViolationAnalysisRequest:
      required:
      - component
      - policyViolation
      type: object
      properties:
        component:
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
          type: string
        policyViolation:
          pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
          type: string
        analysisState:
          type: string
          enum:
          - APPROVED
          - REJECTED
          - NOT_SET
        comment:
          pattern: "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
          type: string
        isSuppressed:
          type: boolean
          writeOnly: true
        suppressed:
          type: boolean
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      name: X-Api-Key
      in: header
    BearerAuth:
      type: http
      scheme: Bearer
    ApiKeyQueryAuth:
      type: apiKey
      name: apiKey
      in: query
