openapi: 3.0.1
info:
  title: Code Insight REST API Documentation
  description: >
    The Code Insight REST APIs provide a standardized interface for interacting
    with the application.


    An authorization JWT token must be included in the HTTP Authorization header
    using the Bearer schema.

    The token can be obtained from the Code Insight Web UI under the Preferences
    menu. 

    To set the token, click the **Authorize** button below on the right, enter
    the JWT token in the **Value** field, then click Authorize and close the
    dialog. Once authorized, the token will be automatically included in the
    HTTP Authorization header for all API requests made through the Swagger UI.


    **Note:** If accessing the REST APIs through external tools such as **curl**
    or **Postman**, include the token manually in the HTTP header using the
    following format:

    `Authorization: Bearer JWT_TOKEN`. _*"Bearer" must precede the actual JWT
    token value.*_
  version: v1
servers:
  - url: /codeinsight/api
    description: Code Insight REST API Server
security:
  - bearerAuth: []
tags:
  - name: Email Templates
    description: >-
      Internal API for fetching custom email templates and images from core
      server
paths:
  /codebasefolder/{folderId}/review:
    put:
      tags:
        - CodebaseFolder
      summary: Mark folder as reviewed/unreviewed
      description: >-
        For the given folderId mark as reviewed/unreviewed. Only the Analyst has
        the permission to do this operation.
      operationId: updateFolderReview
      parameters:
        - name: folderId
          in: path
          description: ID of the Folder
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
        - name: isRemote
          in: query
          description: if true, fetch results of corresponding remote folder
          schema:
            type: boolean
            default: false
        - name: markAsReviewed
          in: query
          description: if true, mark files inside the folder as reviewed
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /component/lookup:
    get:
      tags:
        - Deprecated APIs
        - Component
      summary: Component Lookup
      description: This API is Deprecated and new API is codeinsight/api/components/search
      operationId: componentLookup
      parameters:
        - name: keyword
          in: query
          description: 'Any Keyword (Example: GNU)'
          required: true
          schema:
            type: string
        - name: size
          in: query
          description: Page Size
          schema:
            type: integer
            format: int64
            default: 100
        - name: page
          in: query
          description: Page Number
          schema:
            type: integer
            format: int64
            default: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Bad request
        '500':
          description: Internal Server Error
      deprecated: true
  /components/search:
    get:
      tags:
        - Component
      summary: Component Search
      description: >-
        Search for the components based on the given input and return list of
        components which includes registered,popular and unpopular.Response will
        not include vulnerabilities and licenses of the version
      operationId: componentSearch
      parameters:
        - name: searchBy
          in: query
          description: Search Type. default is NAME.
          required: true
          schema:
            pattern: NAME|URL|CPE|FORGE
            type: string
            default: NAME
            enum:
              - NAME
              - URL
              - CPE
              - FORGE
        - name: filter
          in: query
          description: >-
            Search Filter. This is required for searchBy NAME, default is
            ALL_TERMS.
          schema:
            type: string
            enum:
              - ALL_TERMS
              - ANY_TERM
              - BEGINS_WITH
              - EXACT_MATCH
        - name: searchTerm
          in: query
          description: >-
            Any Keyword. This is required for searchBy NAME/URL and optional for
            CPE. For searchBy CPE, the supplied searchTerm E.g."apache commons"
            would perform exact match against the component.
          schema:
            type: string
        - name: includeVersions
          in: query
          description: If true , response will include versions as well.
          schema:
            type: boolean
            default: false
        - name: vendor
          in: query
          description: 'Vendor name (Example: gnu)'
          schema:
            type: string
        - name: product
          in: query
          description: 'Product name (Example: zlib)'
          schema:
            type: string
        - name: forgeName
          in: query
          description: >-
            Forge Name. is required for searchBy FORGE and optional for
            NAME/URL/CPE
          schema:
            pattern: >-
              SourceForge|Apache|MySQL AB|Java.net|GNU|Free Software
              Directory|CodePlex|Savannah|Google Code|Hackage|NuGet
              Gallery|npm|CentOS Project|PyPI|Google's Maven
              Repository|Clojars|Ibiblio
              Maven2|Packagist|GitHub|RubyGems|crates.io|CRAN|CPAN|Fedora
              Koji|GitLab|Conan
            type: string
            enum:
              - SourceForge
              - Apache
              - MySQL AB
              - Java.net
              - GNU
              - Free Software Directory
              - CodePlex
              - Savannah
              - Google Code
              - Hackage
              - NuGet Gallery
              - npm
              - CentOS Project
              - PyPI
              - Google's Maven Repository
              - Clojars
              - Ibiblio Maven2
              - Packagist
              - GitHub
              - RubyGems
              - crates.io
              - CRAN
              - CPAN
              - Fedora Koji
              - GitLab
              - Conan
        - name: projectName
          in: query
          description: >-
            Required param for forges: SourceForge|Apache|MySQL
            AB|Java.net|GNU|Free Software Directory|CodePlex|Savannah|Google
            Code|GitLab (Example: apache-batik)
          schema:
            type: string
        - name: packageName
          in: query
          description: >-
            Required param for forges: Hackage|NuGet
            Gallery|npm|PyPI|Packagist|CentOS Project (Example: newtonsoft.json)
          schema:
            type: string
        - name: groupId
          in: query
          description: >-
            Required param for forges: Google's Maven Repository|Clojars|Ibiblio
            Maven2 (Example: com.google.firebase)
          schema:
            type: string
        - name: artifactId
          in: query
          description: >-
            Required param for forges: Google's Maven Repository|Clojars|Ibiblio
            Maven2 (Example: firebase-abt)
          schema:
            type: string
        - name: moduleOrDistributionName
          in: query
          description: 'Required param for forge: CPAN (Example: exporter-tidy)'
          schema:
            type: string
        - name: packageOrDistributionName
          in: query
          description: 'Required param for forge: CRAN | Fedora Koji (Example: acid)'
          schema:
            type: string
        - name: author
          in: query
          description: >-
            Required param for forge: GitHub | GitLab (It accepts Author/Org
            value (Example: jquery)
          schema:
            type: string
        - name: repositoryName
          in: query
          description: 'Required param for forge: GitHub (Example: jquery-ui)'
          schema:
            type: string
        - name: vendorName
          in: query
          description: 'Required param for forge: Packagist (Example: 100hz)'
          schema:
            type: string
        - name: gemName
          in: query
          description: 'Required param for forge: RubyGems (Example: x-editable-rails)'
          schema:
            type: string
        - name: crate
          in: query
          description: 'Required param for forge: crates.io (Example: brewstillery)'
          schema:
            type: string
        - name: limit
          in: query
          description: Page Size. Number Of Records to fetch per page
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int32
            default: 100
        - name: offset
          in: query
          description: Page Number. Index of the page to start with(starts from 1)
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int32
            default: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComponentListModel'
        '400':
          description: Bad request
        '500':
          description: Internal Server Error
  /components/{componentId}/versions:
    post:
      tags:
        - Component
      summary: Create a component custom version
      description: Create a component custom version
      operationId: createComponentVersion
      parameters:
        - name: componentId
          in: path
          description: ID of the Component
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VersionModel'
        required: true
      responses:
        '201':
          description: Created
        '400':
          description: Bad Request
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /components:
    post:
      tags:
        - Component
      summary: Create a custom component
      description: Creates a custom component
      operationId: createCustomComponent
      requestBody:
        description: >-
          To create a custom component the name, title and url field is
          required.<br>

          Only users with the “library_manager” permission can create a custom
          component.<br>

          Allowable values of forgeId(Optional) are<br>

          1 : Other(This will be used as default when none is supplied) | 2 :
          SourceForge | 3 : Apache | 5 : MySQL AB | 11 : kernel.org | 53 :
          Mozilla | 78 : Java.net | 87 : GNU | 175 : Free Software Directory |
          176 : CodePlex | 186 : Savannah | 248 : CPAN | 419 : Google Code | 628
          : Ibiblio Maven2 | 696 : GitHub | 2033 : NuGet Gallery | 2037 : npm
          |2039 : RubyGems | 2040 : CentOS Project | 2067 : PyPI | 2070 :
          Packagist | 2073 : Google's Maven Repository | 2076 : crates.io
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ComponentModel'
        required: true
      responses:
        '201':
          description: Created
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
  /components/{componentId}/versions/{id}:
    delete:
      tags:
        - Component
      summary: Delete a component custom version
      description: >-
        Delete a custom version using the component ID and version ID. All
        existing inventory that uses this version will have its version changed
        to Unknown. You must have the Library Manager permission to delete a
        custom version.
      operationId: deleteComponentVersion
      parameters:
        - name: componentId
          in: path
          description: ID of the component
          required: true
          schema:
            type: integer
            format: int64
          example: 1
        - name: id
          in: path
          description: ID of the component version
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
      responses:
        '201':
          description: Deleted
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
  /components/{id}:
    delete:
      tags:
        - Component
      summary: Delete a custom component
      description: >-
        Delete a custom component using the component ID. All existing inventory
        that uses this component will be changed to work in progress. You must
        have the Library Manager permission to delete a custom component.
      operationId: deleteCustomComponent
      parameters:
        - name: id
          in: path
          description: ID of the component
          required: true
          schema:
            type: integer
            format: int64
          example: 1
      responses:
        '201':
          description: Deleted
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
  /components/{componentId}:
    get:
      tags:
        - Component
      summary: Get Component
      description: Get Component by id.
      operationId: getComponent
      parameters:
        - name: componentId
          in: path
          description: ID of the Component
          required: true
          schema:
            type: integer
            format: int64
          example: 1
        - name: includeVersions
          in: query
          description: If true, display version details(Default is true)
          schema:
            type: boolean
            default: true
        - name: vulnerabilitySummary
          in: query
          description: >-
            If true , display vulnerability summary details and hide
            vulnerability list
          schema:
            type: boolean
            default: false
        - name: cvssVersion
          in: query
          description: >-
            CVSS Version : This field is required only if vulnerabilitySummary
            is set to true
          schema:
            type: string
            enum:
              - V2
              - V3
              - ANY
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExtendedComponentModel'
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /components/versions/{id}:
    get:
      tags:
        - Component
      summary: Get Component version details
      description: Get Component version details
      operationId: getVersionDetails
      parameters:
        - name: id
          in: path
          description: ID of the component version
          required: true
          schema:
            type: integer
            format: int64
          example: 1
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /components/{versionId}/vulnerabilities:
    get:
      tags:
        - Component
      summary: Get Component version vulnerabilities
      description: Get vulnerability details of a component version
      operationId: getVulnerabilties
      parameters:
        - name: versionId
          in: path
          description: ID of the component version
          required: true
          schema:
            type: integer
            format: int64
          example: 1
        - name: limit
          in: query
          description: Page Size. Number Of Records to fetch per page
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 25
        - name: offset
          in: query
          description: Page Number. Index of the page to start with(starts from 1)
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 1
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /emailTemplates/{templateName}:
    get:
      tags:
        - Email Templates
      summary: Get custom email template
      description: Retrieves a custom email template from the core server's file system
      operationId: getEmailTemplate
      parameters:
        - name: templateName
          in: path
          description: Template name without .html extension
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Template content returned successfully
        '404':
          description: Template not found
        '500':
          description: Internal server error
  /emailTemplates/images/{imageName}:
    get:
      tags:
        - Email Templates
      summary: Get email template inline image
      description: >-
        Retrieves an inline image from the core server's email templates images
        folder
      operationId: getEmailTemplateImage
      parameters:
        - name: imageName
          in: path
          description: Image filename with extension
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Image returned successfully
        '404':
          description: Image not found
        '500':
          description: Internal server error
  /emailTemplates/{templateName}/exists:
    get:
      tags:
        - Email Templates
      summary: Check if custom email template exists
      description: Checks if a custom email template exists on the core server
      operationId: templateExists
      parameters:
        - name: templateName
          in: path
          description: Template name without .html extension
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Template exists
        '404':
          description: Template not found
  /files/{fileId}:
    get:
      tags:
        - Files
      summary: Get details of a file by Id
      description: >-
        Get file details of a given fileId. If the remote flag is true, it'll
        fetch the corresponding remote file info, otherwise by default the flag
        is false and scanner file information will be shown.
      operationId: getFileDetails
      parameters:
        - name: fileId
          in: path
          description: ID of the File
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
        - name: isRemote
          in: query
          description: if true, fetch results of corresponding remote file
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /files/{fileId}/review:
    put:
      tags:
        - Files
      summary: Mark file reviewed/unreviewed
      description: >-
        For the given fileId mark as reviewed/unreviewed. Only the Analyst has
        the permission to do this operation.
      operationId: updateFileReview
      parameters:
        - name: fileId
          in: path
          description: ID of the File
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
        - name: isRemote
          in: query
          description: if true, fetch results of corresponding remote file
          schema:
            type: boolean
            default: false
        - name: markAsReviewed
          in: query
          description: if true, mark file as reviewed
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /folders:
    post:
      tags:
        - Folder
      summary: Create Folder
      description: >-
        Creates a folder for the given name and returns folderId with success
        message.
      operationId: createFolder
      requestBody:
        description: >-
          To create a folder, folderName is required and parentFolderId is
          optional. 
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FolderModel'
        required: true
      responses:
        '201':
          description: Created
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
  /folders/{folderId}:
    get:
      tags:
        - Folder
      summary: Get Folder By Id
      description: Get existing folder by folderId
      operationId: getFolder
      parameters:
        - name: folderId
          in: path
          required: true
          schema:
            minimum: 1
            type: integer
            format: int32
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    put:
      tags:
        - Folder
      summary: Update folder details
      description: Update folder details for the given folderId.
      operationId: updateFolder
      parameters:
        - name: folderId
          in: path
          required: true
          schema:
            minimum: 1
            type: integer
            format: int32
      requestBody:
        description: Update details of a folder.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FolderModel'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    delete:
      tags:
        - Folder
      summary: Delete a folder
      description: >-
        Deleting a folder will delete all subfolders, contained projects will be
        associated wih the parent folder(Projects(0)).
      operationId: deleteFolder
      parameters:
        - name: folderId
          in: path
          description: ID of the folder
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /folders/search:
    get:
      tags:
        - Folder
      summary: Get folders based on the name provided
      description: Return folders based on the name provided
      operationId: searchFolders
      parameters:
        - name: folderName
          in: query
          description: 'Search happens based on the name given '
          schema:
            type: string
        - name: offset
          in: query
          description: Index of the page to start with
          schema:
            minimum: 1
            type: integer
            format: int64
            default: 1
        - name: limit
          in: query
          description: Number of records to fetch
          schema:
            minimum: 1
            type: integer
            format: int64
            default: 25
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
  /project/generateReport:
    get:
      tags:
        - Deprecated APIs
        - Project API
      summary: Generate Report
      description: >
        This API is deprecated please refer to
        /projects/{projectId}/reports/{reportId}/generate to Generate a
        report.<br>

        Refer /projects/{projectId}/reports/{reportId}/download to Download a
        report.<br>

        Generates Reports (PROJECT, AUDIT, NOTICES, CUSTOM_REPORT) for a given
        projectId. For CUSTOM_REPORT provide the name of the report. All project
        users including Observer, Reviewer and Analyst can generate reports for
        private projects.<br>

        Try it out is not available for this API. This API can be tested using
        conventional REST API clients such as postman or cURL.<br>

        When calling this API from a REST client, you need to redirect output to
        a zip file as follows<br>

        ```

        curl -X GET
        "http://HOST:PORT/codeinsight/api/project/generateReport?reportType=REPORT_TYPE&projectId=PROJECT_ID"
        -H "accept: application/octet-stream" -H "Authorization: Bearer
        JWT_TOKEN" > report.zip

        ```
      operationId: generateReport
      parameters:
        - name: projectId
          in: query
          description: ID of the Project
          required: true
          schema:
            type: integer
            format: int64
          example: 1
        - name: reportType
          in: query
          description: Report Type
          required: true
          schema:
            type: string
          example: PROJECT
        - name: otherProjectId
          in: query
          description: >-
            Project Id of the secondary project to be included in the report.
            This parameter is required, if the enableProjectPicker property for
            this report type is set to true. (Example: 2)
          schema:
            minimum: 1
            type: integer
            format: int64
      responses:
        '200':
          description: OK
          content:
            application/octet-stream: {}
        '400':
          description: 'Bad request: No project with id x'
      deprecated: true
  /inventories/{inventoryId}/files:
    put:
      tags:
        - Inventory API
      summary: Add Files and/or Folders to Inventory
      description: >-
        Add files and/or folders to inventory item and returns the response
        message
      operationId: addFilesToInventory
      parameters:
        - name: inventoryId
          in: path
          description: ID of the Inventory
          required: true
          schema:
            type: integer
            format: int64
          example: 1
      requestBody:
        description: >-
          To Add files and folders to the inventory provide file and folder
          paths.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InventoryFilesModel'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /inventories:
    post:
      tags:
        - Inventory API
      summary: Create Inventory
      description: >-
        Create an inventory. Name and Inventory type is a mandatory field.


        **Note:** Value for rememberLicense can be GLOBAL or INVENTORY
        (default).

        - **GLOBAL**: Saves and applies the component version and license
        mapping to the current inventory and all future inventories across
        projects.

        - **INVENTORY**: Updates only the current inventory. Future inventories
        will use the original license mapping.
      operationId: createInventory
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectInventoryModel'
        required: true
      responses:
        '201':
          description: Created
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
  /inventories/{inventoryId}:
    get:
      tags:
        - Inventory API
      summary: Get details of an inventory
      description: Get details of an inventory.
      operationId: getInventoryById
      parameters:
        - name: inventoryId
          in: path
          description: ID of the Inventory
          required: true
          schema:
            type: integer
            format: int64
          example: 1
        - name: skipVulnerabilities
          in: query
          description: If true , hide vulnerabilty details
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    put:
      tags:
        - Inventory API
      summary: Update Inventory
      description: >-
        Update an inventory for a given inventoryId.


        **Note:** Value for rememberLicense can be GLOBAL or INVENTORY
        (default).

        - **GLOBAL**: Saves and applies the component version and license
        mapping to the current inventory and all future inventories across
        projects.

        - **INVENTORY**: Updates only the current inventory. Future inventories
        will use the original license mapping.
      operationId: updateInventory
      parameters:
        - name: inventoryId
          in: path
          description: ID of the Inventory
          required: true
          schema:
            type: integer
            format: int64
          example: 1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InventoryModel'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    delete:
      tags:
        - Inventory API
      summary: Delete the inventory
      description: delete inventory
      operationId: deleteInventory
      parameters:
        - name: inventoryId
          in: path
          description: ID of the Inventory
          required: true
          schema:
            type: integer
            format: int64
          example: 1
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /inventories/{inventoryId}/history:
    get:
      tags:
        - Inventory API
      summary: Get history of an inventory
      description: >-
        Fetches the history for a given inventoryId, changes are grouped based
        on the revision id.
      operationId: fetchHistory
      parameters:
        - name: inventoryId
          in: path
          description: ID of the Inventory
          required: true
          schema:
            type: integer
            format: int64
          example: 1
        - name: limit
          in: query
          description: Page Size. Number Of Records to fetch per page
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 25
        - name: offset
          in: query
          description: Page Number. Index of the page to start with(starts from 1)
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /inventories/{inventoryId}/children:
    get:
      tags:
        - Inventory API
      summary: Get children of an inventory
      description: Fetches the children for a given inventoryId.
      operationId: fetchInventoryChildren
      parameters:
        - name: inventoryId
          in: path
          description: ID of the Inventory
          required: true
          schema:
            type: integer
            format: int64
          example: 1
        - name: limit
          in: query
          description: Page Size. Number Of Records to fetch per page
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 25
        - name: offset
          in: query
          description: Page Number. Index of the page to start with(starts from 1)
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /inventories/{inventoryId}/parents:
    get:
      tags:
        - Inventory API
      summary: Get parents of an inventory
      description: Fetches the parents for a given inventoryId.
      operationId: fetchInventoryParents
      parameters:
        - name: inventoryId
          in: path
          description: ID of the Inventory
          required: true
          schema:
            type: integer
            format: int64
          example: 1
        - name: limit
          in: query
          description: Page Size. Number Of Records to fetch per page
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 25
        - name: offset
          in: query
          description: Page Number. Index of the page to start with(starts from 1)
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /inventories/searchByDate:
    get:
      tags:
        - Inventory API
      summary: Get All Inventories by Date
      description: >-
        Returns a list of inventories and relevant details within the given date
        and time. All users can view project inventories of public projects and
        users with permission can view the inventories of private project
      operationId: getAllProjectInventoriesByDate
      parameters:
        - name: startTime
          in: query
          description: 'Start time for an inventory (Format: YYYY-MM-DD HH:MM:SS)'
          schema:
            type: string
        - name: endTime
          in: query
          description: 'End time for an inventory (Format: YYYY-MM-DD HH:MM:SS)'
          schema:
            type: string
        - name: published
          in: query
          description: >-
            If published, then only published inventory items are returned; if
            unpublished, then only not-published inventory items are returned;
            if all, then return all inventories
          schema:
            type: string
            default: PUBLISHED
            enum:
              - PUBLISHED
              - UNPUBLISHED
              - ALL
        - name: size
          in: query
          description: Page Size. Number Of Records to fetch per page
          schema:
            type: integer
            format: int64
            default: 100
        - name: page
          in: query
          description: Page Number. Index of the page to start with(starts from 1)
          schema:
            type: integer
            format: int64
            default: 1
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /inventories/search:
    get:
      tags:
        - Inventory API
      summary: Get the inventories of file/folder ids
      description: Returns the inventories file and/or folder ids
      operationId: getInventory
      parameters:
        - name: projectId
          in: query
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
        - name: fileIds
          in: query
          description: Provide list of file ids
          schema:
            type: string
        - name: folderIds
          in: query
          description: Provide list of folder ids
          schema:
            type: string
        - name: published
          in: query
          description: >-
            If true, then only published inventory items are returned; if false,
            then only un-published inventory items are returned
          schema:
            type: boolean
        - name: limit
          in: query
          description: Page Size. Number Of Records to fetch per page
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 25
        - name: offset
          in: query
          description: Page Number. Index of the page to start with(starts from 1)
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Json'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
  /inventories/{inventoryId}/vulnerabilities/analysis:
    get:
      tags:
        - Inventory API
      summary: Get vulnerability analysis details of an inventory
      description: Get vulnerability analysis details of an inventory.
      operationId: getVulnerabilityAnalysis
      parameters:
        - name: inventoryId
          in: path
          description: ID of the Inventory
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
        - name: vulnerabilityName
          in: query
          description: Name of the vulnerability
          schema:
            type: string
        - name: analysisState
          in: query
          description: Analysis State.
          schema:
            pattern: ANY|SUPPRESSED|UNSUPPRESSED
            type: string
            default: ANY
            enum:
              - ANY
              - SUPPRESSED
              - UNSUPPRESSED
        - name: limit
          in: query
          description: Page Size. Number Of Records to fetch per page
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 25
        - name: offset
          in: query
          description: Page Number. Index of the page to start with(starts from 1)
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VulnerabilityAnalysisSuppressionModel'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /inventories/{inventoryId}/vulnerabilities:
    get:
      tags:
        - Inventory API
      summary: Get vulnerability details of an inventory
      description: Get vulnerability details of an inventory.
      operationId: getVulnerabilties_1
      parameters:
        - name: inventoryId
          in: path
          description: ID of the Inventory
          required: true
          schema:
            type: integer
            format: int64
          example: 1
        - name: limit
          in: query
          description: Page Size. Number Of Records to fetch per page
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 25
        - name: offset
          in: query
          description: Page Number. Index of the page to start with(starts from 1)
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 1
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /inventories/{inventoryId}/notices:
    put:
      tags:
        - Inventory API
      summary: Update notices text
      description: Update notices text for the given inventory
      operationId: noticesTextInventory
      parameters:
        - name: inventoryId
          in: path
          description: ID of the Inventory
          required: true
          schema:
            type: integer
            format: int64
          example: 1
        - name: overwrite
          in: query
          description: If true, overwrite notices text
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /inventories/{inventoryId}/publish:
    put:
      tags:
        - Inventory API
      summary: Publish Inventory
      description: Publish an inventory for a given inventoryId
      operationId: publishInventory
      parameters:
        - name: inventoryId
          in: path
          description: ID of the Inventory
          required: true
          schema:
            type: integer
            format: int64
          example: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /inventories/{inventoryId}/recall:
    put:
      tags:
        - Inventory API
      summary: Recall Inventory
      description: Recall an inventory for a given inventoryId
      operationId: recallInventory
      parameters:
        - name: inventoryId
          in: path
          description: ID of the Inventory
          required: true
          schema:
            type: integer
            format: int64
          example: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /inventories/{inventoryId}/status:
    put:
      tags:
        - Inventory API
      summary: inventory status
      description: >-
        update an inventory status with DRAFT, APPROVED and REJECTED status.The
        approve/reject inventory affects Manual Review task only. Any changes
        made to Inventory will not affect Remediation and Miscellaneous tasks.
        On Approving Inventory, Inventory gets Approved and Manual review task
        will be closed with Approve status. On Rejecting Inventory, Inventory
        gets Rejected by creating an open Remediation task and the Manual review
        task will be closed with Reject status.
      operationId: updateInventoryStatus
      parameters:
        - name: inventoryId
          in: path
          description: ID of the Inventory
          required: true
          schema:
            type: integer
            format: int64
          example: 1
        - name: status
          in: query
          required: true
          schema:
            pattern: DRAFT|APPROVED|REJECTED
            type: string
            default: DRAFT
            enum:
              - DRAFT
              - APPROVED
              - REJECTED
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /inventories/{inventoryId}/workflows:
    get:
      tags:
        - inventoryWorkflow
      summary: Get workflow details for an inventory
      description: Get workflow details for an inventory
      operationId: getWorkflowByInventoryId
      parameters:
        - name: inventoryId
          in: path
          description: ID of the Inventory
          required: true
          schema:
            type: integer
            format: int64
          example: 1
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    post:
      tags:
        - inventoryWorkflow
      summary: workflows
      description: Create or update workflow for an inventory
      operationId: createWorkflow
      parameters:
        - name: inventoryId
          in: path
          description: ID of the Inventory
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/InventoryWorkflow'
        required: true
      responses:
        '201':
          description: Created
        '400':
          description: Bad Request
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /jobs/sbomexport/{projectId}:
    post:
      tags:
        - Jobs
      summary: Export project inventory to SBOM Insights
      description: >-
        Export project to SBOM Insights operation will be added to queue. To get
        status of Export to SBOM Insights use jobs/{jobId} API
      operationId: addExportToSBOMInsightsTask
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
      responses:
        '202':
          description: Accepted
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
        '503':
          description: Service Unavailable
  /jobs/notices/{projectId}:
    post:
      tags:
        - Jobs
      summary: Update project notices
      description: >-
        Update notices operation will be added to queue. To get status of update
        notices use jobs/{jobId} API
      operationId: addUpdateNoticesTask
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
        - name: overwriteAll
          in: query
          description: >-
            If true, overwrite all notices text, else update only empty notices
            texts
          schema:
            type: boolean
            default: false
      responses:
        '202':
          description: Accepted
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
        '503':
          description: Service Unavailable
  /jobs/{jobId}:
    get:
      tags:
        - Jobs
      summary: Get Job details based on the jobId provided
      description: Returns Job details for a given JobId which is obtained from /jobs/all
      operationId: getJobDetails
      parameters:
        - name: jobId
          in: path
          description: ID of the Job
          required: true
          schema:
            type: integer
            format: int64
          example: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobModel'
        '400':
          description: Bad request
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /jobs:
    get:
      tags:
        - Jobs
      summary: Get jobs details based on filters
      description: >-
        Returns jobs in descending order with pagination based on jobType,
        status, projectId, triggeredBy, jobsHistoryInDays
      operationId: getJobs
      parameters:
        - name: jobType
          in: query
          description: >-
            Required param for jobType: Project Branching|Project Copy|Project
            Scan|Project Re-Scan|PDL Update|Project Deletion|Export to SBOM
            Insights|Update Notices|Project Import|Project Export|Remote
            Scan|Apply Policy - Global|Apply Policy - Project|Report - Audit
            Report|Report - Notices Report|Report - Project Report|Report -
            &lt;Custom Report Name&gt;
          schema:
            type: string
        - name: status
          in: query
          schema:
            type: string
            enum:
              - New
              - Active
              - Canceled
              - Completed
              - Failed
              - Scheduled
              - Terminated
              - Waiting on update
        - name: projectId
          in: query
          description: 'Id of the project (Example: 10)'
          schema:
            minimum: 0
            exclusiveMinimum: false
            type: integer
            format: int32
        - name: triggeredBy
          in: query
          description: 'Login Name of the user (Example: admin)'
          schema:
            type: string
        - name: jobsHistoryInDays
          in: query
          description: >-
            Days in number. Get jobs in days. (Default=0, All the jobs will be
            fetched with other filters)
          schema:
            maximum: 3650
            exclusiveMaximum: false
            minimum: 0
            exclusiveMinimum: false
            type: integer
            format: int32
            default: 0
        - name: limit
          in: query
          description: Page Size. Number Of Records to fetch per page
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int32
            default: 25
        - name: offset
          in: query
          description: Page Number. Index of the page to start with(starts from 1)
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int32
            default: 1
      responses:
        '200':
          description: OK
        '400':
          description: Bad request
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /ldap/sync:
    post:
      tags:
        - ldap
      summary: Trigger ldap sync
      description: >-
        Trigger on demand ldap sync if already configured.Only the system admin
        has the permission to do this operation.
      operationId: triggerLdapSync
      responses:
        '200':
          description: 'OK : LDAP sync triggered successfully'
        '403':
          description: >-
            FORBIDDEN : User does not have permission to perform this
            operation,only system admin can perform this operation. Please check
            and try again
        '500':
          description: >-
            INTERNAL_SERVER_ERROR : Failed to trigger LDAP sync. Please contact
            your administrator.
        '501':
          description: >-
            NOT_IMPLEMENTED : Code Insight is not configured with LDAP. Please
            contact your administrator
        '503':
          description: >-
            SERVICE_UNAVAILABLE : LDAP sync is already in progress. Please wait
            for sync to finish
  /ldap/password:
    put:
      tags:
        - ldap
      summary: Update LDAP password
      description: >-
        Update the LDAP password used for authentication and user
        synchronization. Only system administrators have permission to perform
        this operation.
      operationId: updateLdapPassword
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LdapPasswordUpdateRequest'
      responses:
        '200':
          description: 'OK : LDAP password updated successfully'
        '400':
          description: 'BAD_REQUEST : Invalid password or connection test failed'
        '403':
          description: >-
            FORBIDDEN : User does not have permission to perform this operation,
            only system admin can perform this operation. Please check and try
            again
        '500':
          description: >-
            INTERNAL_SERVER_ERROR : Failed to update LDAP password. Please
            contact your administrator.
        '501':
          description: >-
            NOT_IMPLEMENTED : Code Insight is not configured with LDAP. Please
            contact your administrator
  /license/lookup:
    get:
      tags:
        - license
      summary: License Lookup
      description: >-
        Returns  id, name, priority, url, description, text, shortName and
        spdxIdentifier for a given license ID or license Name.
      operationId: licenseLookup
      parameters:
        - name: licenseId
          in: query
          description: 'ID of the license (Example: 1)'
          schema:
            type: integer
            format: int64
        - name: licenseName
          in: query
          description: 'Full name of the license (Example: Apache License 1.1)'
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Bad request
        '500':
          description: Internal Server Error
  /licenses:
    post:
      tags:
        - license
      summary: Create a custom license
      description: Creates a custom license
      operationId: createLicenses
      requestBody:
        description: >-
          To create a custom license the name, shortName and licenseText is
          required.<br>

          Only users with Library Manager permission can create custom
          licenses.<br>

          Allowable values for familyName(Optional) are:<br>

          GNU LGPL 2.1 Style | Artistic License 1.0 Style | Proprietary Style |
          BSD 3-Clause Style |
           Apache 1.1 Style | CPL 1.0 Style | MIT Style | Public Domain Style | MPL 1.1 Style | MPL 1.0 Style | Academic Free License Style | Apache 2.0 Style | Sleepycat Style | EPL 1.0 Style | CDDL 1.0 Style | Commercial Style | GNU GPL 3 Style |
           GNU LGPL 2.0 Style | GNU LGPL 3.0 Style | GNU AGPL 3.0 Style | Ambiguous License Style | GNU GPL 2 Style | Artistic License 2.0 Style | BSD 2-Clause Style | GNU GPL 2 w/CPE Style | CDDL 1.1 Style | Apache 1.0 Style | BSD 4-Clause Style | GNU GPL 2+ Style |
           GNU GPL 3+ Style | GNU LGPL 2.1+ Style | GNU LGPL 3.0+ Style | GNU LGPL 2.0+ Style | MirOS Style | zlib Style | GNU GPL Style | GNU LGPL Style | GNU AGPL 3.0+ Style
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LicenseModel'
        required: true
      responses:
        '201':
          description: Created
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
  /licenses/{licenseId}:
    put:
      tags:
        - license
      summary: Edit Custom License
      description: Only users with Library Manager permission can edit a custom license.
      operationId: editCustomLicense
      parameters:
        - name: licenseId
          in: path
          description: ID of License
          required: true
          schema:
            type: integer
            format: int64
          example: 1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LicenseModel'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    delete:
      tags:
        - license
      summary: Delete a custom license
      description: >-
        Delete a custom license using the license ID. All existing inventory
        that uses this license will have its license changed to Unknown. You
        must have the Library Manager permission to delete a custom license.
      operationId: deleteCustomLicense
      parameters:
        - name: licenseId
          in: path
          description: ID of the License
          required: true
          schema:
            type: integer
            format: int64
          example: 1
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    patch:
      tags:
        - license
      summary: Update Licenses External Id
      description: >-
        Update Licenses External Id. 

        Only users with Library Manager permission can update the External Id of
        a license. 

        The licenseId should be a valid license id and the externalId should not
        exceed 255 characters.
      operationId: updateLicenseExternalId
      parameters:
        - name: licenseId
          in: path
          description: ID of the license
          required: true
          schema:
            type: integer
            format: int64
          example: 1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LicenseUpdateModel'
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /licenses/listAll:
    get:
      tags:
        - license
      summary: Get All Licenses
      description: >-
        Returns all license details. If onlyCustom is true, returns only custom
        licenses. Supports pagination with page and size parameters.
      operationId: getAllLicenses
      parameters:
        - name: onlyCustom
          in: query
          description: If true, returns only custom licenses
          schema:
            type: boolean
            default: false
          example: false
        - name: page
          in: query
          description: Page Number. Index of the page to start with(starts from 1)
          schema:
            type: integer
            format: int64
            default: 1
        - name: size
          in: query
          description: Page Size. Number Of Records to fetch per page
          schema:
            type: integer
            format: int64
            default: 25
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /licenses/{shortName}:
    get:
      tags:
        - license
      summary: License lookup based on short name
      description: >-
        Returns  id, name, priority, url, description, text and spdxIdentifier
        for a given shortName.
      operationId: licenseLookupShortName
      parameters:
        - name: shortName
          in: path
          description: Short name of the license
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /scmInstances/Perforce:
    put:
      tags:
        - sourceCodeManagement
      summary: Perforce scmInstances
      description: Updates an instance of Perforce SCM.
      operationId: updatePerforceSCMInstance
      parameters:
        - name: projectId
          in: query
          description: ID of the project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: instanceId
          in: query
          description: ID of the SCM instance
          required: true
          schema:
            minimum: 0
            type: integer
            format: int64
          example: 0
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PerforceSCMModel'
        required: true
      responses:
        '200':
          description: Ok
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    post:
      tags:
        - sourceCodeManagement
      summary: Perforce scmInstances
      description: >-
        Create a new instance of Perforce SCM.<br>

        **url** - URL in the format:
        &lt;protocol&gt;:&lt;host&gt;:&lt;port&gt;/&lt;depot&gt;,or else
        configured P4PORT will be taken a default url.<br>

        **userName/password** - userName/password or else configured
        P4USER/P4PASSWD will be taken a default.<br>

        **branchSpec** - branchSpec(&lt;Depot&gt;/&lt;ProjectPath&gt;)<br>

        **changeListNum/label** - changeListNum/label Or leave blank to sync to
        the head revision.
      operationId: createPerforceSCMInstance
      parameters:
        - name: projectId
          in: query
          description: ID of the project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PerforceSCMModel'
        required: true
      responses:
        '201':
          description: Created
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /project/createProject:
    post:
      tags:
        - Deprecated APIs
        - Project API
      summary: Create Project
      description: Use the enhanced '/projects' api.
      operationId: createProject
      requestBody:
        description: >-
          To create a project the projectName field is required and other fields
          are optional. If the optional fields are left blank, the 'Project
          Default' values are applied for them.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProjectModel'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: integer
                format: int32
        '500':
          description: 'Error : error message'
      deprecated: true
  /project/inventoryDeltaFromLastScan/{projectId}:
    get:
      tags:
        - Project API
      summary: Get Project Inventories Delta from latest scan
      description: >-
        Returns a Delta list of inventory after latest scan and relevant details
        for a given project. All project users including Observer, Reviewer and
        Analyst can view project inventory of private/public projects.
      operationId: getModifiedProjectInventoryByProject
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            type: integer
            format: int64
          example: 1
        - name: inventoryUpdatedType
          in: query
          description: >-
            Required param for inventoryUpdatedType: All | New Inventories |
            Updated Inventories | Removed Inventories
          schema:
            type: string
            default: All
        - name: size
          in: query
          description: Page Size. Number Of Records to fetch per page
          schema:
            type: integer
            format: int64
            default: 100
        - name: page
          in: query
          description: Page Number. Index of the page to start with(starts from 1)
          schema:
            type: integer
            format: int64
            default: 1
      responses:
        '200':
          description: OK
        '400':
          description: 'Bad request: The project Id entered was not found'
  /project/id:
    get:
      tags:
        - Project API
      summary: Get Project Id
      description: Returns projectId for a given projectName.
      operationId: getProjectId
      parameters:
        - name: projectName
          in: query
          description: 'Name of the Project (Example: eportal)'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: integer
                format: int32
        '400':
          description: 'Bad request: The project name entered was not found'
  /project/inventory/{projectId}:
    get:
      tags:
        - Project API
      summary: Get Project Inventory
      description: >-
        Returns a list of inventory and inventory details for a given project;
        includes a flag for a short/long version. All project users including
        Observer, Reviewer and Analyst can view project inventory of private
        projects.
      operationId: getProjectInventory
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            type: integer
            format: int64
          example: 1
        - name: skipVulnerabilities
          in: query
          description: If true , hide vulnerability details in the response
          schema:
            type: boolean
            default: false
        - name: published
          in: query
          description: >-
            If true, then only published inventory items are returned; if false,
            then only not-published inventory items are returned;; if all, then
            all inventory items are returned
          schema:
            type: boolean
            default: true
        - name: vendor
          in: query
          description: 'CPE Vendor name (Example: gnu)'
          schema:
            type: string
        - name: product
          in: query
          description: 'CPE Product name (Example: zlib)'
          schema:
            type: string
        - name: size
          in: query
          description: Page Size. Number Of Records to fetch per page
          schema:
            type: integer
            format: int64
            default: 100
        - name: page
          in: query
          description: Page Number. Index of the page to start with(starts from 1)
          schema:
            type: integer
            format: int64
            default: 1
        - name: reviewStatus
          in: query
          description: >-
            return items based on the reviewStatus which we selected. Ex: if
            reviewStatus is APPROVED then only APPROVED items returned
          schema:
            type: string
            enum:
              - READY_TO_REVIEW
              - DRAFT
              - APPROVED
              - REJECTED
        - name: alerts
          in: query
          description: >-
            return items based the alert status selected. If alert status
            selected as OPEN then only open alerts returned
          schema:
            type: string
            enum:
              - OPEN
              - CLOSED
              - ANY
        - name: includeFiles
          in: query
          description: >-
            If true, display the associated files to an Inventory(Default is
            true)
          schema:
            type: boolean
            default: true
        - name: includeCopyrights
          in: query
          description: If true, display the copyrights of an Inventory(Default is false)
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InventoryGroup'
        '400':
          description: 'Bad request: The project Id entered was not found'
  /project/inventoryLite/{projectId}:
    get:
      tags:
        - Project API
      summary: Get Project Inventory by Date
      description: >-
        Returns a list of inventory and relevant details for a given project
        within the given date and time. All project users including Observer,
        Reviewer and Analyst can view project inventory of private/public
        projects.
      operationId: getProjectInventoryByDate
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            type: integer
            format: int64
          example: 1
        - name: startTime
          in: query
          description: 'Start time for an inventory (Format: YYYY-MM-DD HH:MM:SS)'
          schema:
            type: string
        - name: endTime
          in: query
          description: 'End time for an inventory (Format: YYYY-MM-DD HH:MM:SS)'
          schema:
            type: string
        - name: size
          in: query
          description: Page Size. Number Of Records to fetch per page
          schema:
            type: integer
            format: int64
            default: 100
        - name: page
          in: query
          description: Page Number. Index of the page to start with(starts from 1)
          schema:
            type: integer
            format: int64
            default: 1
      responses:
        '200':
          description: OK
        '400':
          description: 'Bad request: The project Id entered was not found'
  /project/scanStatus/{taskId}:
    get:
      tags:
        - Project API
      summary: Get Scan Status
      description: >-
        Returns a scan status for a given taskId which is obtained from
        /projectScan/{projectId}
      operationId: getProjectScanStatus
      parameters:
        - name: taskId
          in: path
          description: ID of the project scan task
          required: true
          schema:
            type: integer
            format: int64
          example: 1
      responses:
        '200':
          description: ' SCHEDULED | ACTIVE | TERMINATED | FAILED | COMPLETED'
          content:
            application/json:
              schema:
                type: string
                enum:
                  - new
                  - scheduled
                  - active
                  - waiting on update
                  - waiting on library refresh
                  - canceled
                  - terminated
                  - failed
                  - completed
        '400':
          description: 'Bad request: The task Id entered was not found'
  /project/uploadProjectCodebase:
    post:
      tags:
        - Project API
      summary: Upload Project Files.
      description: >
        Uploads and extracts a codebase zip file for a project. (* Maximum
        supported file size is 10GB.). Upload only files with extensions
        zip,tar,tar.gz and 7z. Do not upload any .gz files directly without
        archiving it in a tar file. The upload result may come wrong if any
        compressed files uploaded directly without archiving it. Only Project
        Admin and Analyst can upload project codebase to a project.<br>

        Try it out is not available for this API. This API can be tested using
        conventional REST API clients such as postman or cURL.<br>

        When calling this API from a REST client, you need to run curl as
        follows<br>

        ```

        curl -X POST
        "http://HOST:PORT/codeinsight/api/project/uploadProjectCodebase?projectId=PROJECT_ID&deleteExistingFileOnServer=true&expansionLevel=1"
        -H "accept: application/json" -H "Authorization: Bearer JWT_TOKEN" -H
        "content-type: application/octet-stream" --data-binary
        "@path/filename.zip"

        ```
      operationId: uploadProject
      parameters:
        - name: projectId
          in: query
          description: ID of the Project
          required: true
          schema:
            type: integer
            format: int64
          example: 1
        - name: deleteExistingFileOnServer
          in: query
          description: >-
            Delete existing files on server. By deleting exiting files on the
            server, all existing project codebase files will be permanently
            removed from the scan server. If you rescan the project without
            replacing these files via a new upload, the scan results for the
            removed files will be permanently deleted.
          schema:
            type: boolean
            default: false
        - name: expansionLevel
          in: query
          description: >-
            Codebase expansion level for the project. 1: None | 2: First level |
            3: Recursive level . If the expansionLevel parameter is not
            provided, the codebase will get extracted as 'None' by default.
          schema:
            type: integer
            format: int64
        - name: deleteArchiveAfterExpand
          in: query
          description: Delete inner archives after expansion
          schema:
            type: boolean
            default: false
        - name: archiveDirSuffix
          in: query
          description: >-
            Suffix to be added to the expanded folder. Value cannot be more than
            20 characters and cannot contain the following special characters  \
            / : * ? " < > | \0 (Example: _Expanded)
          schema:
            type: string
      requestBody:
        description: Zipped codebase to scan
        content:
          application/octet-stream:
            schema:
              type: boolean
              readOnly: true
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
        '503':
          description: Service Unavailable
  /project/exportProjectData:
    get:
      tags:
        - Project API
      summary: Export Project Data
      description: >
        Exports project data for a given projectId. Only Project Admin and
        Analyst can Export Project Data from a project.<br>

        Try it out is not available for this API. This API can be tested using
        conventional REST API clients such as postman or cURL.<br>

        When calling this API from a REST client, you need to redirect output to
        a zip file as follows<br>

        ```

        curl -X GET
        "http://HOST:PORT/codeinsight/api/project/exportProjectData?projectId=PROJECT_ID"
        -H "accept: application/octet-stream" -H "Authorization: Bearer
        JWT_TOKEN" > export.zip

        ```
      operationId: exportProjectData
      parameters:
        - name: projectId
          in: query
          description: ID of the Project
          required: true
          schema:
            type: integer
            format: int64
          example: 1
      responses:
        '200':
          description: OK
          content:
            application/octet-stream: {}
        '400':
          description: 'Bad request: No project named x'
  /projects/{projectId}/reports/{reportId}/download:
    get:
      tags:
        - Project API
      summary: Download Report
      description: >
        Download Reports (PROJECT, AUDIT, NOTICES, CUSTOM_REPORT) for a given
        projectId. For ALL Reports we need to provide the id of the report. All
        project users including Observer, Reviewer and Analyst can download
        reports for private projects.<br>

        If a task is in progress the response will be 202 and the status will be
        provided in the header for e.g(ACTIVE, SCHEDULED).<br>

        Try it out is not available for this API. This API can be tested using
        conventional REST API clients such as postman or cURL.<br>

        When calling this API from a REST client, you need to redirect output to
        a zip file as follows<br>

        ```

        curl -X GET
        "http://HOST:PORT/codeinsight/api/projects/{projectId}/reports/{reportId}/download?taskId={taskId}"
        -H "accept: application/octet-stream" -H "Authorization: Bearer
        JWT_TOKEN" > report.zip

        ```
      operationId: downloadReport
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: reportId
          in: path
          description: ID of the Report that is to be generated or downloaded
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: taskId
          in: query
          description: ID of the Report Task that is to be downloaded
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
      responses:
        '200':
          description: OK
          content:
            application/octet-stream: {}
        '202':
          description: Accepted
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /projects/{projectId}/reports/{reportId}/generate:
    post:
      tags:
        - Project API
      summary: Generate Report
      description: >-
        Generates Reports (PROJECT, AUDIT, NOTICES, CUSTOM_REPORT) for a given
        projectId. For ALL Reports we need to provide the id of the report. All
        project users including Observer, Reviewer and Analyst can generate
        reports for private projects.
      operationId: generateReport_1
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: reportId
          in: path
          description: ID of the Report that is to be generated
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
      requestBody:
        description: >-
          The success response of the generate is a taskId which should be used
          during download. If the report type is custom report and
          enableProjectPicker is true otherProjectId is required.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportsModel'
      responses:
        '200':
          description: OK
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
        '503':
          description: Service Unavailable
  /projects/{projectId}/children:
    post:
      tags:
        - Project API
      summary: Add child projects to parent project
      description: Add child projects to parent project.
      operationId: addChildProjects
      parameters:
        - name: projectId
          in: path
          description: Id of Parent Project
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
        - name: childProjectIds
          in: query
          description: Id of Child Projects
          required: true
          schema:
            type: array
            items:
              type: integer
              format: int32
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    delete:
      tags:
        - Project API
      summary: Remove child Projects from parent project
      description: Remove child project from parent project
      operationId: removeChildProjects
      parameters:
        - name: projectId
          in: path
          description: Id of Parent Project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: childProjectIds
          in: query
          description: Id of Child Projects
          required: true
          schema:
            type: array
            items:
              type: integer
              format: int32
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '500':
          description: Internal Server Error
  /projects/{projectId}/users:
    get:
      tags:
        - Project API
      summary: Users
      description: Get Project Users with respect to Role
      operationId: getProjectUserRole
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
        - name: roleId
          in: query
          required: true
          schema:
            pattern: ANALYST|REVIEWER|OBSERVER|PROJECT_ADMIN
            type: string
            default: ANALYST
            enum:
              - ANALYST
              - REVIEWER
              - OBSERVER
              - PROJECT_ADMIN
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    post:
      tags:
        - Project API
      summary: Assign Role
      description: >-
        Assign a Users to a specific Project Role.<br>Here "ownerId refers to
        the "contactId of the project.
      operationId: assignProjectRole
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
      requestBody:
        description: >-
          Add a Users to a specific Project Role. Accepted RoleId:
          PROJECT_ADMIN, ANALYST, REVIEWER, OBSERVER
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectRoleModel'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    delete:
      tags:
        - Project API
      summary: Unassign Project Role
      description: Remove User(s) from a specific Project Role
      operationId: unassignProjectRoles
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /projects:
    get:
      tags:
        - Project API
      summary: Get Projects
      description: Get All The Projects
      operationId: getProjects
      parameters:
        - name: offset
          in: query
          description: Index of the page to start with
          schema:
            minimum: 1
            type: integer
            format: int64
            default: 1
        - name: limit
          in: query
          description: Number Of Records to fetch
          schema:
            minimum: 1
            type: integer
            format: int64
            default: 25
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
    post:
      tags:
        - Project API
      summary: Create Project
      description: >-
        Creates a project for the given input, updates project custom field
        values and returns projectId with success message.
      operationId: createProject_1
      requestBody:
        description: >-
          To create a project the projectName field is required and other fields
          are optional. If the optional fields are left blank, the 'Project
          Default' values are applied for them.

          Note: For 'folderName', passing entire folder path like
          'folder1/folder2' is not supported.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectModel'
        required: true
      responses:
        '201':
          description: Created
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
  /projects/{projectId}:
    get:
      tags:
        - Project API
      summary: Get Project Information
      description: Get Project Information By Id
      operationId: getProjectById
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            type: integer
            format: int64
          example: 1
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    put:
      tags:
        - Project API
      summary: Update Project
      description: >-
        Updates a project, custom field values for the given projectId.<br>Here
        "owner" field refers to the "contact" of the project.
      operationId: updateProject
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
      requestBody:
        description: >-
          Updates a project, autoPublish is required when
          markAssociatedFilesAsReviewed and doNotPublishInventoryUnknownLicense
          is part of a request.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtendedProjectModel'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    delete:
      tags:
        - Project API
      summary: >-
        Delete a project, deletion operation will be added to queue. To get
        status of project deletion use jobs/{jobId} API
      description: >-
        Deleting a project will delete all project inventory, custom field
        values, corresponding notes and all code base files permanently from the
        server.
      operationId: deleteProject
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
      responses:
        '202':
          description: Accepted
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /projects/{projectId}/childProjects:
    get:
      tags:
        - Project API
      summary: get all child projects
      description: >-
        Get all child projects. parentProject property will not be shown in the
        response.
      operationId: getAllChildProjects
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
        - name: recursive
          in: query
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /projects/{projectId}/parentProjects:
    get:
      tags:
        - Project API
      summary: get all parent projects
      description: >-
        Get all parent projects. childProject property will not be shown in the
        response.
      operationId: getAllParentProjects
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
        - name: recursive
          in: query
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /projects/{projectId}/allscannedfiles:
    get:
      tags:
        - Project API
      summary: Fetch all scanned files for a project
      operationId: getAllScannedFiles
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: includeMD5Hash
          in: query
          description: if true, display MD5 of the files
          schema:
            type: string
            format: boolean
            default: 'false'
        - name: includeSHA1Hash
          in: query
          description: if true, display SHA1 of the files
          schema:
            type: string
            format: boolean
            default: 'false'
        - name: offset
          in: query
          description: Index of the page to start with
          schema:
            minimum: 1
            type: integer
            format: int64
            default: 1
        - name: limit
          in: query
          description: Number Of Records to fetch
          schema:
            minimum: 1
            type: integer
            format: int64
            default: 25
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /projects/{projectId}/evidences:
    get:
      tags:
        - Project API
      summary: Fetch Evidences for a project
      operationId: getEvidences
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /projects/{projectId}/files:
    get:
      tags:
        - Project API
      summary: Get Id of file or folder
      description: Returns the ID of file and/or folder
      operationId: getFileOrFolderId
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
        - name: filePath
          in: query
          description: 'Path of File (Example: git.0/angular/packages/forms/package.json)'
          schema:
            type: string
        - name: folderPath
          in: query
          description: 'Path of Folder (Example: git.0/angular/packages/forms)'
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /projects/{projectId}/contact:
    get:
      tags:
        - Project API
      summary: Get Project Contact
      description: Get project contact for the given projectId.
      operationId: getProjectContact
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    put:
      tags:
        - Project API
      summary: Update Project Contact
      description: Updates project contact for the given projectId.
      operationId: updateProjectContact
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
      requestBody:
        description: Updates a project contact
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectContact'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /projects/{projectId}/inventories/{alias}:
    get:
      tags:
        - Project API
      summary: Get project inventories for the given scan-agent or scan-server alias
      description: >-
        Returns all inventories of the project associated with the given
        scan-agent or scan-server alias
      operationId: getProjectInventoriesByAlias
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
        - name: alias
          in: path
          description: 'Alias of scan-server or scan-agent (Example: generic-plugin-test)'
          required: true
          schema:
            type: string
        - name: limit
          in: query
          description: Page Size. Number Of Records to fetch per page
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 25
        - name: offset
          in: query
          description: Page Number. Index of the page to start with(starts from 1)
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 1
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '409':
          description: Conflict
        '500':
          description: Internal Server Error
  /projects/{projectId}/inventorySummary:
    get:
      tags:
        - Project API
      summary: Get Inventory Summary of the project
      description: Get Project level inventory summary
      operationId: getProjectInventorySummary
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: vulnerabilitySummary
          in: query
          description: If false , hide vulnerabilty summary details
          schema:
            type: boolean
            default: false
        - name: cvssVersion
          in: query
          description: >-
            CVSS : This field is required only if vulnerabilitySummary is set to
            true
          schema:
            type: string
            enum:
              - V2
              - V3
              - ANY
        - name: published
          in: query
          description: >-
            If published, then only published inventory items are returned; if
            unpublished, then only not-published inventory items are returned;
            if all, then return all inventories
          schema:
            type: string
            default: PUBLISHED
            enum:
              - PUBLISHED
              - UNPUBLISHED
              - ALL
        - name: offset
          in: query
          description: Index of the page to start with
          schema:
            minimum: 1
            type: integer
            format: int64
            default: 1
        - name: limit
          in: query
          description: Number Of Records to fetch
          schema:
            minimum: 1
            type: integer
            format: int64
            default: 25
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /projects/{projectId}/scanNodes:
    get:
      tags:
        - Project API
      summary: Fetch all scan nodes (alias) of a project
      description: Returns all the alias node information of a project
      operationId: getScanNodes
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /projects/{projectId}/status:
    put:
      tags:
        - Project API
      summary: project status
      description: >
        Updates the status of a project. 
         By default, a newly created project has the status "Not Started". After scanning begins, the status is automatically updated to "Analysis In Progress".
        **Note:** ProjectAction can be specified with below values: 

        - **Update Status Only**: Only updates the status of the project, if
        project status is kept COMPLETED, it will lock the current project. 

        - **Lock Child Projects**: Locks all child projects of the current
        project. (allowed only if project status is kept COMPLETED)

        - **Unlock Child Projects**: Unlocks all child projects of the current
        project. (allowed only if project status is not COMPLETED)

        Use projectAction to control the locking behavior in relation to the
        project's current status.
      operationId: updateProjectStatus
      parameters:
        - name: projectId
          in: path
          description: ID of the Project
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
          example: 1
        - name: status
          in: query
          required: true
          schema:
            type: string
            default: Not Started
            enum:
              - Not Started
              - Analysis In Progress
              - Analysis Completed
              - Project Completed
        - name: projectAction
          in: query
          required: true
          schema:
            type: string
            default: Update Status Only
            enum:
              - Update Status Only
              - Lock Child Projects
              - Unlock Child Projects
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /projects/uploadReport:
    post:
      tags:
        - Project API
      summary: Upload Report.
      description: >-
        Uploads and extracts a report zip file for a project.curl -H
        "Authorization: Bearer %jwt%" --form projectId=%projectId% --form
        reportId=%reportId% --form file=@"pdf_reports.zip"
        http://localhost:8888/codeinsight/api/projects/uploadReport
      operationId: uploadReport
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                projectId:
                  type: integer
                  format: int32
                reportId:
                  type: integer
                  format: int32
                file:
                  $ref: '#/components/schemas/FormDataContentDisposition'
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /reports:
    get:
      tags:
        - Reports
      summary: Get Reports
      description: Get existing reports
      operationId: searchReports
      parameters:
        - name: reportId
          in: query
          description: ID of the Report to be used in search
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: offset
          in: query
          description: Index of the page to start with
          schema:
            minimum: 1
            type: integer
            format: int64
            default: 1
        - name: limit
          in: query
          description: Number Of Records to fetch
          schema:
            minimum: 1
            type: integer
            format: int64
            default: 25
        - name: name
          in: query
          description: Name of the Report to be used in search
          schema:
            type: string
        - name: path
          in: query
          description: Path of the Script to be used in search
          schema:
            type: string
        - name: enabled
          in: query
          description: Enabled status of the Report to be used in search
          schema:
            type: boolean
        - name: default
          in: query
          description: Default status of the Report to be used in search
          schema:
            type: boolean
        - name: order
          in: query
          description: 'Order of the Report to be used in search (Example: 1)'
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
    put:
      tags:
        - Reports
      summary: Update Report
      description: Update existing report
      operationId: updateReport
      requestBody:
        description: Update existing report.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtendedReportModel'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    post:
      tags:
        - Reports
      summary: Create Report
      description: >-
        Add new report. All the report options, if given will have datatype as
        String/text.
      operationId: createReport
      requestBody:
        description: Add new report.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportModel'
        required: true
      responses:
        '201':
          description: Created
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
  /reports/{reportId}:
    get:
      tags:
        - Reports
      summary: Get Report By Id
      description: Get existing report by reportId
      operationId: getReport
      parameters:
        - name: reportId
          in: path
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    delete:
      tags:
        - Reports
      summary: Delete Report by Id
      description: Delete the report by report id
      operationId: deleteReport
      parameters:
        - name: reportId
          in: path
          required: true
          schema:
            type: integer
            format: int32
            default: 0
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /rules:
    get:
      tags:
        - Rules
      summary: Get Rules
      description: Get existing custom rules
      operationId: getRules
      parameters:
        - name: offset
          in: query
          description: Index of the page to start with
          schema:
            minimum: 1
            type: integer
            format: int64
            default: 1
        - name: limit
          in: query
          description: Number Of Records to fetch
          schema:
            minimum: 1
            type: integer
            format: int64
            default: 25
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
    put:
      tags:
        - Rules
      summary: Update Rule
      description: >-
        Update existing rule.


        **Note:** Value for detectionCriteria is an array of string Eg.
        detectionCriteria: ["filepath1 or folderpath1","filepath2 or
        folderpath2"].


        Parameters fileInfo and ruleInfo are mutually exclusive. 
         Only users with Library Manager role can update rules.
      operationId: updateRule
      requestBody:
        description: Update existing rule.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtendedRuleModel'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
    post:
      tags:
        - Rules
      summary: Create Rule
      description: >-
        Add new rule with either file info or rule info.


        **Note:** Value for detectionCriteria is an array of string Eg.
        detectionCriteria: ["filepath1 or folderpath1","filepath2 or
        folderpath2"].


        Parameters fileInfo and ruleInfo are mutually exclusive. 
         Only users with Library Manager role can create rules.
      operationId: createRule
      requestBody:
        description: Add new rule.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RuleModel'
        required: true
      responses:
        '201':
          description: Created
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
  /rules/{ruleId}:
    get:
      tags:
        - Rules
      summary: Get Rule By Id
      description: Get existing rule by ruleId
      operationId: getRule
      parameters:
        - name: ruleId
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    delete:
      tags:
        - Rules
      summary: Delete Rule
      description: |-
        Delete existing rule. 
         Only users with Library Manager role can delete rules.
      operationId: deleteRule
      parameters:
        - name: ruleId
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /rules/disable:
    put:
      tags:
        - Rules
      summary: Disable Rules
      description: >-
        Disable multiple rules by their IDs. Disabled rules will not be applied
        during project scanning. Only users with Library Manager role can
        disable rules.
      operationId: disableRules
      requestBody:
        description: List of rule IDs to disable
        content:
          application/json:
            schema:
              type: array
              items:
                type: integer
                format: int64
        required: true
      responses:
        '200':
          description: Rules disabled successfully
        '400':
          description: Bad Request - Rule IDs cannot be empty
        '401':
          description: Unauthorized
        '403':
          description: Forbidden - Insufficient permissions
        '500':
          description: Internal Server Error
  /rules/enable:
    put:
      tags:
        - Rules
      summary: Enable Rules
      description: >-
        Enable multiple rules. Enabled rules will be applied during project
        scanning. Only users with Library Manager role can enable rules.
      operationId: enableRules
      requestBody:
        description: List of rules ids to enable
        content:
          application/json:
            schema:
              type: array
              items:
                type: integer
                format: int64
        required: true
      responses:
        '200':
          description: Rules enabled successfully
        '400':
          description: Bad Request - Rule data cannot be empty or invalid
        '401':
          description: Unauthorized
        '403':
          description: Forbidden - Insufficient permissions
        '500':
          description: Internal Server Error
  /scmInstances/Git:
    put:
      tags:
        - sourceCodeManagement
      summary: Git scmInstances
      description: >-
        Updates an instance of Git SCM.<br>

        **url*** - Enter one repository URL and branch/ tag/ commit ID in
        individual fields or one or more repository URLs separated by comma.<br>

        You can include a branch, tag, or commit ID notation as part of the
        URL.<br>

        **userName/password** - userName/password for authenticated access to
        the repository. Leave blank for anonymous or SSH access.<br>

        **branch/commitId/tag** - branch, tag or commit ID. Specify one of these
        values. Or leave blank to sync to the master branch.<br>

        These three fields will be considered only when single URL is provided
        without branch/ tag/ commit ID properties in the URL.<br>

        **expansionLevel** - (Optional, Integer, default: 1, values: 1/2/3)
        Control archive extraction depth: 1=None (no extraction), 2=Top-level
        archives only, 3=Recursive (nested archives).<br>

        **deleteArchiveAfterExpand** - (Optional, Boolean, default: false)
        Delete archive files after extraction to save disk space. <b>Note: This
        field is only applicable when expansionLevel is 2 or 3.</b><br>

        **archiveDirSuffix** - (Optional, String, max: 20 chars) Suffix to be
        added to the expanded folder. Value cannot be more than 20 characters
        and cannot contain the following special characters: \ / : * ? " < > |
        \0 (Example: _Expanded). <b>Note: This field is only applicable when
        expansionLevel is 2 or 3.</b>
      operationId: updateGITSCMInstance
      parameters:
        - name: projectId
          in: query
          description: ID of the project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: instanceId
          in: query
          description: ID of the SCM instance
          required: true
          schema:
            minimum: 0
            type: integer
            format: int64
          example: 0
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GITSCMModel'
        required: true
      responses:
        '200':
          description: Ok
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    post:
      tags:
        - sourceCodeManagement
      summary: Git scmInstances
      description: >-
        Create a new instance of Git SCM.<br>

        **url*** - Enter one repository URL and branch/ tag/ commit ID in
        individual fields or one or more repository URLs separated by comma.<br>

        You can include a branch, tag, or commit ID notation as part of the
        URL.<br>

        **userName/password** - userName/password for authenticated access to
        the repository. Leave blank for anonymous or SSH access.<br>

        **branch/commitId/tag** - branch, tag or commit ID. Specify one of these
        values. Or leave blank to sync to the master branch.<br>

        These three fields will be considered only when single URL is provided
        without branch/ tag/ commit ID properties in the URL.<br>

        **expansionLevel** - (Optional, Integer, default: 1, values: 1/2/3)
        Control archive extraction depth: 1=None (no extraction), 2=Top-level
        archives only, 3=Recursive (nested archives).<br>

        **deleteArchiveAfterExpand** - (Optional, Boolean, default: false)
        Delete archive files after extraction to save disk space. <b>Note: This
        field is only applicable when expansionLevel is 2 or 3.</b><br>

        **archiveDirSuffix** - (Optional, String, max: 20 chars) Suffix to be
        added to the expanded folder. Value cannot be more than 20 characters
        and cannot contain the following special characters: \ / : * ? " < > |
        \0 (Example: _Expanded). <b>Note: This field is only applicable when
        expansionLevel is 2 or 3.</b>
      operationId: createGITSCMInstance
      parameters:
        - name: projectId
          in: query
          description: ID of the project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GITSCMModel'
        required: true
      responses:
        '201':
          description: Created
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /scmInstances:
    get:
      tags:
        - sourceCodeManagement
      summary: scmInstances
      description: Fetch details of scm instances of a project.
      operationId: getSCMInstance
      parameters:
        - name: projectId
          in: query
          description: ID of the project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: scmType
          in: query
          schema:
            type: string
            enum:
              - GIT
              - TFS
              - PERFORCE
              - SUBVERSION
        - name: instanceId
          in: query
          description: ID of the SCM instance
          schema:
            minimum: 0
            type: integer
            format: int64
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SCMModel'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    post:
      tags:
        - sourceCodeManagement
      summary: scmInstances
      description: Test connection api for scm instances
      operationId: testSCMInstanceConnection
      parameters:
        - name: projectId
          in: query
          description: ID of the project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: scmType
          in: query
          required: true
          schema:
            type: string
            default: GIT
            enum:
              - GIT
              - TFS
              - PERFORCE
              - SUBVERSION
        - name: instanceId
          in: query
          description: ID of the SCM instance
          required: true
          schema:
            minimum: 0
            type: integer
            format: int64
          example: 0
      responses:
        '200':
          description: Ok
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    delete:
      tags:
        - sourceCodeManagement
      summary: scmInstances
      description: Deletes an instance of a particular SCMType.
      operationId: deleteSCMInstance
      parameters:
        - name: projectId
          in: query
          description: ID of the project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: scmType
          in: query
          required: true
          schema:
            type: string
            default: GIT
            enum:
              - GIT
              - TFS
              - PERFORCE
              - SUBVERSION
        - name: instanceId
          in: query
          description: ID of the SCM instance
          required: true
          schema:
            minimum: 0
            type: integer
            format: int64
          example: 0
      responses:
        '200':
          description: Ok
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /profiles/dependencyScope:
    get:
      tags:
        - Scan profiles
      summary: Get DependencyScopes
      description: Get DependencyScopes
      operationId: getDependencyScopes
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /profiles/{projectId}:
    get:
      tags:
        - Scan profiles
      summary: Get profiles for project
      description: Get profiles for project
      operationId: getScanProfile
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            minimum: 1
            type: integer
            format: int32
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /scmInstances/Subversion:
    put:
      tags:
        - sourceCodeManagement
      summary: Subversion scmInstances
      description: Updates an instance of Subversion SCM.
      operationId: updateSVNSCMInstance
      parameters:
        - name: projectId
          in: query
          description: ID of the project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: instanceId
          in: query
          description: ID of the SCM instance
          required: true
          schema:
            minimum: 0
            type: integer
            format: int64
          example: 0
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubversionSCMModel'
        required: true
      responses:
        '200':
          description: Ok
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    post:
      tags:
        - sourceCodeManagement
      summary: Subversion scmInstances
      description: >-
        Create a new instance of Subversion SCM.<br>

        **url*** - URL in the format:
        &lt;protocol&gt;://&lt;host&gt;/&lt;svnroot&gt;/&lt;repository&gt;<br>

        **userName/password** - userName/password or leave blank for anonymous
        connection<br>

        **revisionNumber** - revision for which you want to create workspace and
        run scan on the same.
      operationId: createSVNSCMInstance
      parameters:
        - name: projectId
          in: query
          description: ID of the project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubversionSCMModel'
        required: true
      responses:
        '201':
          description: Created
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /scmInstances/TFS:
    put:
      tags:
        - sourceCodeManagement
      summary: TFS scmInstances
      description: Updates an instance of TFS SCM.
      operationId: updateTFSSCMInstance
      parameters:
        - name: projectId
          in: query
          description: ID of the project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: instanceId
          in: query
          description: ID of the SCM instance
          required: true
          schema:
            minimum: 0
            type: integer
            format: int64
          example: 0
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TFSSCMModel'
        required: true
      responses:
        '200':
          description: Ok
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    post:
      tags:
        - sourceCodeManagement
      summary: TFS scmInstances
      description: >-
        Create a new instance of TFS SCM.<br>

        **url*** - URL in the below format:<br>

        &lt;protocol&gt;:&lt;host&gt;:&lt;port&gt;/&lt;tfsroot&gt;/&lt;collection&gt;/&lt;project&gt;<br>

        URL format for TFS 2016 and above:<br>

        &lt;protocol&gt;:&lt;host&gt;:&lt;port&gt;/&lt;collection&gt;/&lt;project&gt;<br>

        **userName/password*** - userName/password for authentication<br>

        **changeSet** - changeset you wish to sync.If Changeset is not provided,
        latest revision will be synced unless Label is specified.<br>

        **label** - Label you wish to sync. If Label is not provided, latest
        revision will be synced unless changeset is specified.
      operationId: createTFSSCMInstance
      parameters:
        - name: projectId
          in: query
          description: ID of the project
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TFSSCMModel'
        required: true
      responses:
        '201':
          description: Created
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /tasks/{taskId}/issues:
    post:
      tags:
        - Task
      summary: Assign Alm Issues
      description: Assign Alm Issues to task
      operationId: assignAlmIssuesToTask
      parameters:
        - name: taskId
          in: path
          description: ID of the task to be updated
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
      requestBody:
        description: Map alm Issues to workflow task
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AlmIssues'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /tasks/{taskId}/close:
    put:
      tags:
        - Task
      summary: Close Task
      description: Close Task
      operationId: closeTask
      parameters:
        - name: taskId
          in: path
          description: ID of the task to be closed
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: resolution
          in: query
          required: true
          schema:
            pattern: CLOSED|APPROVED|REJECTED
            type: string
            default: CLOSED
            enum:
              - CLOSED
              - APPROVED
              - REJECTED
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /tasks:
    post:
      tags:
        - Task
      summary: Create Task
      description: Create Task
      operationId: createTask
      parameters:
        - name: inventoryId
          in: query
          description: ID of the inventory to be used to create the task
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
      requestBody:
        description: "Create new workflow task \t\n **priority** :\"LOW, MEDIUM, HIGH\" \n **type** : \"MISCELLANEOUS, MANUAL_INVENTORY_REVIEW, REMEDIATE_INVENTORY\""
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkflowTaskModel'
        required: true
      responses:
        '201':
          description: Created
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
  /tasks/{taskId}:
    get:
      tags:
        - Task
      summary: Get Task
      description: Get Task
      operationId: getTask
      parameters:
        - name: taskId
          in: path
          description: ID of the task to be fetched
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    put:
      tags:
        - Task
      summary: Update Task
      description: Update Task
      operationId: updateTask
      parameters:
        - name: taskId
          in: path
          description: ID of the task to be updated
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
      requestBody:
        description: "Update existing workflow task \t\n priority :\"LOW, MEDIUM, HIGH\""
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtendedWorkflowTaskModel'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /tasks/{taskId}/reassign:
    put:
      tags:
        - Task
      summary: Reassign Task
      description: Reassign Task
      operationId: reassignTask
      parameters:
        - name: taskId
          in: path
          description: ID of the task to be reassigned
          required: true
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: ownerId
          in: query
          description: >-
            ID / Name of the owner to whom the task needs to be reassigned
            (Example: admin)
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /tasks/search:
    get:
      tags:
        - Task
      summary: Get Tasks based on the search Terms
      description: Return Tasks associated with the search term
      operationId: searchTask
      parameters:
        - name: projectId
          in: query
          description: ID of the Project to be used in search
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: inventoryId
          in: query
          description: ID of the inventory to be used in search
          schema:
            minimum: 1
            type: integer
            format: int64
          example: 1
        - name: offset
          in: query
          description: Index of the page to start with
          schema:
            minimum: 1
            type: integer
            format: int64
            default: 1
        - name: limit
          in: query
          description: Number Of Records to fetch
          schema:
            minimum: 1
            type: integer
            format: int64
            default: 25
        - name: status
          in: query
          schema:
            type: string
            description: Status of the Task to be used in search
            default: ALL
            enum:
              - OPEN
              - CLOSED
              - ALL
        - name: type
          in: query
          schema:
            pattern: MISCELLANEOUS|MANUAL_INVENTORY_REVIEW|REMEDIATE_INVENTORY|ALL
            type: string
            description: Type of the Task to be used in search
            default: ALL
            enum:
              - MISCELLANEOUS
              - MANUAL_INVENTORY_REVIEW
              - REMEDIATE_INVENTORY
              - ALL
        - name: priority
          in: query
          schema:
            type: string
            description: Priority of the Task to be used in search
            default: ALL
            enum:
              - LOW
              - MEDIUM
              - HIGH
              - ALL
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
  /scanResource/projectScan/{projectId}:
    post:
      tags:
        - Scan API
      summary: Project Scan
      description: >-
        Initiates a scan for a given project, specified by the projectId.
        Returns the taskId corresponding to the scan task. The taskId can be
        used to check the scan status. Only Project Admin and Analyst can invoke
        a scan of a project.
      operationId: addProjectScanTask
      parameters:
        - name: projectId
          in: path
          description: ID of the project
          required: true
          schema:
            type: integer
            format: int64
          example: 1
        - name: fullRescan
          in: query
          description: >-
            Irrespective of codebase changes, pass value as true to perform a
            full scan of the codebase
          schema:
            type: boolean
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties:
                type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: integer
                format: int32
        '400':
          description: 'Bad request: The project Id entered was not found'
        '409':
          description: 'Conflict: Project is already in queue or already being scanned'
        '503':
          description: Service Unavailable
  /users/{loginId}/activate:
    put:
      tags:
        - User API
      summary: activate User
      description: Activate a User
      operationId: activateUser
      parameters:
        - name: loginId
          in: path
          description: 'loginId (Example: admin)'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
  /users:
    post:
      tags:
        - User API
      summary: Create User
      description: Creates a user
      operationId: createUser
      requestBody:
        description: >-
          To create a user the login, First Name, Last Name, Email, Password,
          Question, Answer field is required.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserModel'
        required: true
      responses:
        '201':
          description: Created
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
  /users/{loginId}/deactivate:
    put:
      tags:
        - User API
      summary: deactivate User
      description: Deactivate a User
      operationId: deactivateUser
      parameters:
        - name: loginId
          in: path
          description: 'loginId (Example: admin)'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
  /users/{loginId}/permission:
    put:
      tags:
        - User API
      summary: manage Permission
      description: >-
        Manage User Permission for the existing user in the system. This will
        remove the permission mapped earlier and the current request permissions
        will be considered always.
      operationId: managePermission
      parameters:
        - name: loginId
          in: path
          description: 'loginId (Example: admin)'
          required: true
          schema:
            type: string
      requestBody:
        description: >-
          list of permission is a required field. Allowable permission are
          system_admin, edit_policy, create_project, library_manager
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PermissionsWrapper'
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
  /users/search:
    get:
      tags:
        - User API
      summary: Search Users
      description: Search User By id or login
      operationId: searchUser
      parameters:
        - name: id
          in: query
          schema:
            type: integer
            format: int64
          example: 1
        - name: login
          in: query
          schema:
            type: string
          example: admin
        - name: email
          in: query
          schema:
            type: string
          example: admin@gmail.com
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /vulnerability/suppress:
    get:
      tags:
        - vulnerability
      summary: Get suppressed vulnerabilities
      description: >-
        Get suppressed vulnerabilities based on componentId/vulnerabilityName or
        both, either of them is mandatory.Only the system administrator has the
        permission to do this operation.
      operationId: getSuppressedVulnerability
      parameters:
        - name: componentId
          in: query
          description: ID of the Component
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
        - name: vulnerabilityName
          in: query
          description: Name of the vulnerability
          schema:
            type: string
        - name: limit
          in: query
          description: Page Size. Number Of Records to fetch per page
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 25
        - name: offset
          in: query
          description: Page Number. Index of the page to start with(starts from 1)
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuppressedVulnerabilityModel'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
    post:
      tags:
        - vulnerability
      summary: Suppress vulnerability
      description: >-
        Suppress vulnerability for component version(s). System administrator
        only has permission for global suppression, while Developer/Security
        contact have permission for project-specific suppression.<br>**Note:**
        For **GLOBAL** level suppression, providing suppression details is not
        necessary. These details are only required for **PROJECT** level
        suppression and will be ignored if provided in the **GLOBAL** scope.  

        - The default value for the Suppression Scope will be considered
        **GLOBAL** if left empty.
      operationId: suppressVulnerability
      requestBody:
        description: Input model to suppress vulnerability for component versions.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VulnerabilitySuppressModel'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VulnerabilitySuppressModel'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
  /vulnerability/suppress/details:
    get:
      tags:
        - vulnerability
      summary: Get vulnerability suppress details
      description: >-
        Get vulnerability suppress details. Provide suppressId/versionId or both
        as inputs, either of them is mandatory.Only the system administrator has
        the permission to do this operation.
      operationId: getSuppressedVulnerabilityDetails
      parameters:
        - name: suppressId
          in: query
          description: ID of suppression
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
        - name: componentVersionId
          in: query
          description: Id of component version
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
        - name: limit
          in: query
          description: Page Size. Number Of Records to fetch per page
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 25
        - name: offset
          in: query
          description: Page Number. Index of the page to start with(starts from 1)
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int64
            default: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VersionSuppressModel'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
  /vulnerability/unSuppress:
    post:
      tags:
        - vulnerability
      summary: UnSuppress vulnerability
      description: >-
        UnSuppress a vulnerability for given component versions. System
        administrator only has permission for Global un-suppression, while
        Developer/Security contact have permission for Project-specific
        un-suppression.<br>**Note:** If a project ID is provided, the
        un-suppression occurs at the **PROJECT** level, otherwise, it happens at
        the **GLOBAL** level.
      operationId: unSuppressVulnerability
      requestBody:
        description: Input model to unSuppress vulnerability
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VulnerabilityUnsuppressModel'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /importer/importProjectData:
    post:
      tags:
        - Deprecated APIs
      summary: Import Project Data
      description: >-
        Imports project data for a given projectId. Only Project Owner and
        Analyst can Import Project Data into a private project.<br>

        Try it out is not available for this API. This API can be tested using
        conventional REST API clients such as postman or cURL<br>

        When calling this API from a REST client, you need to run curl as
        follows<br>

        ```

        curl -X POST
        "http://HOST:PORT/codeinsight/api/importer/importProjectData?projectId=PROJECT_ID&checkInventory=false&checkReviewed=false&createEmptyInventory=false&overwriteInventoryNotes=true"
        -H "accept: application/json" -H "Authorization: Bearer JWT_TOKEN" -H
        "content-type: application/octet-stream" --data-binary
        "@path/filename.zip"

        ```

        Since this is deprecated, you can find the new api under projects api
        i.e., /projects/{projectId}/import
      operationId: importProjectData
      parameters:
        - name: projectId
          in: query
          description: ID of the Project
          required: true
          schema:
            type: integer
            format: int64
          example: 1
        - name: checkInventory
          in: query
          description: >-
            Check file MD5 for inventory. If enabled, only files with matching
            MD5 in the import data file and the scanned file will be associated
            to inventory.
          schema:
            type: string
        - name: checkReviewed
          in: query
          description: >-
            Check file MD5 for review.  If enabled, only files with matching MD5
            in the import data file and the scanned file will be marked as
            reviewed.
          schema:
            type: string
        - name: createEmptyInventory
          in: query
          description: >-
            Create inventory even if no matching file is found. By default value
            of this parameter is retrieved from the Project Setting(On data
            import or rescan, delete inventory with no associated files). If you
            wish to override the project setting you can pass true or false. 
          schema:
            type: string
        - name: overwriteInventoryNotes
          in: query
          description: >-
            Choose to overwrite or append inventory notes (Audit Notes, Notices
            Text, Usage Guidance, Remediation Notes). By default notes will be
            overwritten if the inventory is same. If set to false, notes will be
            appended to existing ones.
          schema:
            type: string
      requestBody:
        description: Project data to import
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
              readOnly: true
              default: ''
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
      deprecated: true
  /projects/{projectId}/import:
    post:
      tags:
        - Project API
      summary: Import Project Data
      description: >-
        Imports project data for a given projectId. Only Project Owner and
        Analyst can Import Project Data into a private project.<br>

        Try it out is not available for this API. This API can be tested using
        conventional REST API clients such as postman or cURL<br>

        When calling this API from a REST client, you need to run either of the
        curl commands.<br>

        Save the required attributes in a json or a text file for project import
        and provide that file in the command. If you are using text file, don't
        give .txt extension.<br>

        ```

        curl -H "Authorization:Bearer %jwt%" -F importFile=@"fileToImport.zip"
        -F projectImportModel=@"JsonFile.json Or textFile;type=application/json"
        http://localhost:8888/codeinsight/api/projects/%projectId%/import

        ```

        Or else, instead of providing file, you can directly define the
        attributes for projectImportModel inside curly braces.<br>

        Provide 'FileMatchingCriteria' either of the below values:<br>

        COMPLETE_FILEPATH|PARTIAL_FILEPATH|FILENAME|MD5|MD5_AND_FILENAME|MD5_AND_COMPLETE_FILEPATH|MD5_AND_PARTIAL_FILEPATH
      operationId: importProjectData_1
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int32
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                File to import:
                  type: object
                Project Import Model:
                  $ref: '#/components/schemas/ProjectImportModel'
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
  /projects/{projectId}/importSbom:
    post:
      tags:
        - Project API
      summary: Import Sbom
      description: >-
        Imports Sbom for a given projectId. Only Project Owner and Analyst can
        Import Project Sbom into a private project.<br>

        Try it out is not available for this API. This API can be tested using
        conventional REST API clients such as postman or cURL. When calling this
        API from a REST client, you need to run either of the curl commands.<br>

        ```

        curl -H "Authorization:Bearer %jwt%" -F
        sbomFile=@"fileToImport.json;type=application/json"
        http://localhost:8888/codeinsight/api/projects/%projectId%/importSbom

        ```
      operationId: importSbom
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            minimum: 1
            exclusiveMinimum: false
            type: integer
            format: int32
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                Sbom File to import:
                  type: object
                sbomFile:
                  $ref: '#/components/schemas/FormDataContentDisposition'
                Delete SBOM bucket:
                  type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
components:
  schemas:
    ComponentCPEModel:
      type: object
      properties:
        cpeName:
          type: string
          description: cpeName
          example: E.g.  cpe://a:gnome:gedit
        cpeVendor:
          type: string
          description: cpeVendor
          example: Vendor name
        cpeProduct:
          type: string
          description: cpeProduct
          example: Product name
    ComponentListModel:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        description:
          type: string
        title:
          type: string
        url:
          type: string
        forge:
          type: string
        versionList:
          type: array
          items:
            $ref: '#/components/schemas/VersionListModel'
        licenseList:
          type: array
          items:
            $ref: '#/components/schemas/LicenseListModel'
        cpeList:
          type: array
          items:
            $ref: '#/components/schemas/ComponentCPEModel'
    LicenseListModel:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        url:
          type: string
        priority:
          type: string
        externalId:
          type: string
    VersionListModel:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        custom:
          type: boolean
        purl:
          type: string
    VersionModel:
      type: object
      properties:
        name:
          type: string
          description: name
        vulnerabilitySummary:
          type: array
          items:
            type: object
            additionalProperties:
              type: object
              additionalProperties:
                type: integer
                format: int32
    ComponentModel:
      required:
        - name
        - title
        - url
      type: object
      properties:
        name:
          maxLength: 127
          minLength: 0
          pattern: ^[a-zA-Z0-9\.\_\-]+$
          type: string
          description: name
          example: Comp1
        title:
          maxLength: 255
          minLength: 0
          type: string
          description: title
          example: Component1
        url:
          maxLength: 2400
          minLength: 0
          pattern: >-
            (NA|^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*))
          type: string
          description: url
          example: http://abc@xyz.com | NA
        description:
          maxLength: 65535
          minLength: 0
          type: string
          description: description
          example: This is a custom component.
        encryption:
          pattern: YES|NO
          type: string
          description: encryption
          example: 'E.g. YES | default: NO'
          enum:
            - 'YES'
            - 'NO'
        forgeId:
          minimum: 1
          type: integer
          description: forgeId
          format: int32
        purl:
          maxLength: 2400
          minLength: 0
          pattern: (^$|^pkg:[a-zA-Z0-9\+\-\.]+\/.*)
          type: string
          description: purl
          example: pkg:maven/org.apache/commons-lang3
    ComponentLicenseModel:
      required:
        - licenseText
        - name
        - shortName
      type: object
      properties:
        name:
          maxLength: 127
          minLength: 0
          type: string
          description: name
          example: General Public License
        shortName:
          maxLength: 255
          minLength: 0
          type: string
          description: shortName
          example: GPL
        licenseText:
          maxLength: 16777215
          minLength: 0
          type: string
          description: licenseText
          example: License Text
        priority:
          pattern: P1|P2|P3
          type: string
          description: priority
          example: 'E.g. P1 | P2 | P3 | default: P3'
          enum:
            - P1
            - P2
            - P3
        url:
          maxLength: 2400
          minLength: 0
          pattern: >-
            (^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*))
          type: string
          description: url
          example: https://abc.xyz
        description:
          maxLength: 65535
          minLength: 0
          type: string
          description: description
          example: License description
        familyName:
          type: string
          description: familyName
          example: License family
        externalId:
          type: string
          description: externalId
          example: 'External License Id Eg: 156'
    ExtendedComponentModel:
      required:
        - name
        - title
        - url
      type: object
      properties:
        name:
          maxLength: 127
          minLength: 0
          pattern: ^[a-zA-Z0-9\.\_\-]+$
          type: string
          description: name
          example: Comp1
        title:
          maxLength: 255
          minLength: 0
          type: string
          description: title
          example: Component1
        url:
          maxLength: 2400
          minLength: 0
          pattern: >-
            (NA|^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*))
          type: string
          description: url
          example: http://abc@xyz.com | NA
        description:
          maxLength: 65535
          minLength: 0
          type: string
          description: description
          example: This is a custom component.
        encryption:
          pattern: YES|NO
          type: string
          description: encryption
          example: 'E.g. YES | default: NO'
          enum:
            - 'YES'
            - 'NO'
        forgeId:
          minimum: 1
          type: integer
          description: forgeId
          format: int32
        purl:
          maxLength: 2400
          minLength: 0
          pattern: (^$|^pkg:[a-zA-Z0-9\+\-\.]+\/.*)
          type: string
          description: purl
          example: pkg:maven/org.apache/commons-lang3
        id:
          type: integer
          format: int64
        forge:
          type: string
        versionList:
          type: array
          items:
            $ref: '#/components/schemas/VersionModel'
        licenseList:
          type: array
          items:
            $ref: '#/components/schemas/ComponentLicenseModel'
        componentCPEList:
          type: array
          items:
            $ref: '#/components/schemas/ComponentCPEModel'
        createdBy:
          type: string
        createdOn:
          type: string
        updatedBy:
          type: string
        updatedOn:
          type: string
    FolderModel:
      required:
        - name
      type: object
      properties:
        name:
          maxLength: 255
          minLength: 1
          type: string
          description: name
          example: SCA
        parentFolderId:
          minimum: 1
          type: integer
          description: parentFolderId
          format: int32
          example: 1
    InventoryFilesModel:
      type: object
      properties:
        filePaths:
          type: array
          description: filePaths
          items:
            type: string
            description: filePaths
        folderPaths:
          type: array
          description: folderPaths
          items:
            type: string
            description: folderPaths
        markAssociatedFilesAsReviewed:
          type: boolean
          description: markAssociatedFilesAsReviewed
          example: false
    CreateInventoryModel:
      type: object
      properties:
        name:
          maxLength: 255
          minLength: 1
          type: string
          description: name
          example: maven-artifact 3.6.1 (Apache-2.0)
        description:
          type: string
          description: description
          example: 'Sources: scm:git:https://git-wip-us.apache.org/repos/asf/maven.git'
        url:
          pattern: >-
            (@)?(href=')?(HREF=')?(HREF=")?(href=")?(http://)?(https://)?[a-zA-Z_0-9\-]+(\.\w[a-zA-Z_0-9\-\/]+)+(/[@#&!~:\n\-=?\+\%\/\.\w]+)?
          type: string
          description: url
          example: https://repo1.maven.org/maven2/org/apache/maven/maven-artifact
        priority:
          pattern: P1|P2|P3|P4
          type: string
          description: priority
          example: P1 | P2 | P3 | P4
          enum:
            - P1
            - P2
            - P3
            - P4
        disclosed:
          pattern: YES|NO
          type: string
          description: disclosed
          example: YES | NO
          enum:
            - 'YES'
            - 'NO'
        distribution:
          pattern: UNKNOWN|INTERNAL|EXTERNAL|HOSTED_ANY|HOSTED_INTERNAL|HOSTED_EXTERNAL
          type: string
          description: distribution
          example: >-
            UNKNOWN | INTERNAL | EXTERNAL | HOSTED_ANY | HOSTED_INTERNAL |
            HOSTED_EXTERNAL
          enum:
            - UNKNOWN
            - INTERNAL
            - EXTERNAL
            - HOSTED_ANY
            - HOSTED_INTERNAL
            - HOSTED_EXTERNAL
        partOfProduct:
          pattern: UNKNOWN|YES|NO
          type: string
          description: partOfProduct
          example: UNKNOWN | YES | NO
          enum:
            - UNKNOWN
            - 'YES'
            - 'NO'
        linking:
          pattern: UNKNOWN|NOT_LINKED|STATIC|DYNAMIC
          type: string
          description: linking
          example: UNKNOWN | NOT_LINKED | STATIC | DYNAMIC
          enum:
            - UNKNOWN
            - NOT_LINKED
            - STATIC
            - DYNAMIC
        modified:
          pattern: UNKNOWN|YES|NO
          type: string
          description: modified
          example: UNKNOWN | YES | NO
          enum:
            - UNKNOWN
            - 'YES'
            - 'NO'
        encryption:
          pattern: UNKNOWN|YES|NO
          type: string
          description: encryption
          example: UNKNOWN | YES | NO
          enum:
            - UNKNOWN
            - 'YES'
            - 'NO'
        auditorReviewNotes:
          type: string
          description: auditorReviewNotes
        noticeText:
          type: string
          description: noticeText
        usageGuidance:
          type: string
          description: usageGuidance
        remediationNotes:
          type: string
          description: remediationNotes
        confidenceLevel:
          pattern: HIGH|MEDIUM|LOW
          type: string
          description: confidenceLevel
          example: 'HIGH | MEDIUM | LOW default: HIGH'
          enum:
            - HIGH
            - MEDIUM
            - LOW
        inventoryType:
          pattern: COMPONENT|LICENSE|WORK_IN_PROGRESS
          type: string
          description: inventoryType
          example: COMPONENT | LICENSE | WORK_IN_PROGRESS
        component:
          $ref: '#/components/schemas/component'
        licenseId:
          type: string
          description: licenseId
          example: '158'
        rememberLicense:
          pattern: GLOBAL|INVENTORY
          type: string
          description: rememberLicense
          example: 'GLOBAL | INVENTORY default: INVENTORY'
        workflowURL:
          type: string
          description: workflowURL
          example: 'SVM-123 | https://www.example.com | default: None'
        invProvenanceId:
          minimum: 1
          type: integer
          description: invProvenanceId
          format: int32
          example: 1
        customFields:
          type: array
          description: customFields
          items:
            $ref: '#/components/schemas/CustomFieldModel'
      description: inventoryModel
    CustomFieldModel:
      required:
        - id
        - value
      type: object
      properties:
        id:
          minimum: 1
          type: integer
          description: id
          format: int32
          example: 1
        value:
          type: string
          description: value
          example: Value for custom field
      description: customFields
    ProjectInventoryModel:
      required:
        - projectId
      type: object
      properties:
        projectId:
          minimum: 1
          type: integer
          description: projectId
          format: int32
          example: 1
        inventoryModel:
          $ref: '#/components/schemas/CreateInventoryModel'
    component:
      required:
        - id
        - licenseId
        - versionId
      type: object
      properties:
        id:
          type: string
          description: id
          example: '58316'
        versionId:
          type: string
          description: versionId
          example: '3704669'
        licenseId:
          type: string
          description: licenseId
          example: '158'
      description: component
    Json:
      type: object
    VexAnalysisModel:
      type: object
      properties:
        id:
          type: integer
          format: int64
        state:
          type: string
        justification:
          type: string
        response:
          type: string
        detail:
          type: string
        firstIssued:
          type: string
        firstIssuedBy:
          type: string
        lastUpdated:
          type: string
        lastUpdatedBy:
          type: string
    VulnerabilityAnalysisSuppressionModel:
      type: object
      properties:
        inventoryId:
          type: integer
          format: int32
        analyzedVulnerabilities:
          type: array
          items:
            $ref: '#/components/schemas/VulnerabilityModel'
    VulnerabilityModel:
      type: object
      properties:
        vulnerabilityId:
          type: integer
          format: int64
        vulnerabilityName:
          type: string
        componentVersionId:
          type: integer
          format: int64
        analysis:
          $ref: '#/components/schemas/VexAnalysisModel'
        suppression:
          $ref: '#/components/schemas/VulnerabilitySuppressionModel'
        suppressed:
          type: boolean
    VulnerabilitySuppressionModel:
      type: object
      properties:
        id:
          type: integer
          format: int64
        suppressedDate:
          type: string
        suppressedBy:
          type: string
    InventoryModel:
      type: object
      properties:
        name:
          maxLength: 255
          minLength: 1
          type: string
          description: name
          example: maven-artifact 3.6.1 (Apache-2.0)
        description:
          type: string
          description: description
          example: 'Sources: scm:git:https://git-wip-us.apache.org/repos/asf/maven.git'
        url:
          pattern: >-
            (@)?(href=')?(HREF=')?(HREF=")?(href=")?(http://)?(https://)?[a-zA-Z_0-9\-]+(\.\w[a-zA-Z_0-9\-\/]+)+(/[@#&!~:\n\-=?\+\%\/\.\w]+)?
          type: string
          description: url
          example: https://repo1.maven.org/maven2/org/apache/maven/maven-artifact
        priority:
          pattern: P1|P2|P3|P4
          type: string
          description: priority
          example: P1 | P2 | P3 | P4
          enum:
            - P1
            - P2
            - P3
            - P4
        disclosed:
          pattern: YES|NO
          type: string
          description: disclosed
          example: YES | NO
          enum:
            - 'YES'
            - 'NO'
        distribution:
          pattern: UNKNOWN|INTERNAL|EXTERNAL|HOSTED_ANY|HOSTED_INTERNAL|HOSTED_EXTERNAL
          type: string
          description: distribution
          example: >-
            UNKNOWN | INTERNAL | EXTERNAL | HOSTED_ANY | HOSTED_INTERNAL |
            HOSTED_EXTERNAL
          enum:
            - UNKNOWN
            - INTERNAL
            - EXTERNAL
            - HOSTED_ANY
            - HOSTED_INTERNAL
            - HOSTED_EXTERNAL
        partOfProduct:
          pattern: UNKNOWN|YES|NO
          type: string
          description: partOfProduct
          example: UNKNOWN | YES | NO
          enum:
            - UNKNOWN
            - 'YES'
            - 'NO'
        linking:
          pattern: UNKNOWN|NOT_LINKED|STATIC|DYNAMIC
          type: string
          description: linking
          example: UNKNOWN | NOT_LINKED | STATIC | DYNAMIC
          enum:
            - UNKNOWN
            - NOT_LINKED
            - STATIC
            - DYNAMIC
        modified:
          pattern: UNKNOWN|YES|NO
          type: string
          description: modified
          example: UNKNOWN | YES | NO
          enum:
            - UNKNOWN
            - 'YES'
            - 'NO'
        encryption:
          pattern: UNKNOWN|YES|NO
          type: string
          description: encryption
          example: UNKNOWN | YES | NO
          enum:
            - UNKNOWN
            - 'YES'
            - 'NO'
        auditorReviewNotes:
          type: string
          description: auditorReviewNotes
        noticeText:
          type: string
          description: noticeText
        usageGuidance:
          type: string
          description: usageGuidance
        remediationNotes:
          type: string
          description: remediationNotes
        confidenceLevel:
          pattern: HIGH|MEDIUM|LOW
          type: string
          description: confidenceLevel
          example: 'HIGH | MEDIUM | LOW default: HIGH'
          enum:
            - HIGH
            - MEDIUM
            - LOW
        inventoryType:
          pattern: COMPONENT|LICENSE|WORK_IN_PROGRESS
          type: string
          description: inventoryType
          example: COMPONENT | LICENSE | WORK_IN_PROGRESS
        component:
          $ref: '#/components/schemas/component'
        licenseId:
          type: string
          description: licenseId
          example: '158'
        rememberLicense:
          pattern: GLOBAL|INVENTORY
          type: string
          description: rememberLicense
          example: 'GLOBAL | INVENTORY default: INVENTORY'
        workflowURL:
          type: string
          description: workflowURL
          example: 'SVM-123 | https://www.example.com | default: None'
        invProvenanceId:
          minimum: 1
          type: integer
          description: invProvenanceId
          format: int32
          example: 1
        customFields:
          type: array
          description: customFields
          items:
            $ref: '#/components/schemas/CustomFieldModel'
        copyrights:
          type: array
          description: copyrights
          items:
            type: string
            description: copyrights
    InventoryWorkflow:
      type: object
      properties:
        key:
          type: string
        value:
          type: string
    JobModel:
      type: object
      properties:
        id:
          type: integer
          format: int32
        jobType:
          type: string
          description: Job type
          enum:
            - Project Branching
            - Project Copy
            - Project Scan
            - Project Re-Scan
            - PDL Update
            - Data Garbage Collection
            - Audit Report
            - Notices Report
            - Project Report
            - Custom Report
        project:
          $ref: '#/components/schemas/Project'
        server:
          $ref: '#/components/schemas/Server'
        status:
          type: string
          description: status of the Job
          enum:
            - NEW
            - ACTIVE
            - CANCELED
            - COMPLETED
            - FAILED
            - SCHEDULED
            - TERMINATED
            - WAITING_ON_UPDATE
        triggeredBy:
          $ref: '#/components/schemas/TriggeredBy'
        queuedOn:
          type: string
          description: queuedOn
          example: '2017-10-24 13:04:26.0'
        activatedOn:
          type: string
          description: activatedOn
          example: '2017-10-24 13:04:26.0'
        completedOn:
          type: string
          description: completedOn
          example: '2017-10-24 13:04:26.0'
        jobDetails:
          type: string
        error:
          type: string
    Project:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
    Server:
      type: object
      properties:
        id:
          type: integer
          format: int32
        aliasName:
          type: string
    TriggeredBy:
      type: object
      properties:
        id:
          type: integer
          format: int32
        user:
          type: string
    LdapPasswordUpdateRequest:
      required:
        - password
      type: object
      properties:
        password:
          type: string
          description: New LDAP password
          example: newSecurePassword123
      description: Request body for updating LDAP password
    LicenseModel:
      type: object
      properties:
        name:
          maxLength: 127
          minLength: 0
          type: string
          description: name
          example: General Public License
        shortName:
          maxLength: 255
          minLength: 0
          type: string
          description: shortName
          example: GPL
        licenseText:
          maxLength: 16777215
          minLength: 0
          type: string
          description: licenseText
          example: License Text
        priority:
          pattern: P1|P2|P3
          type: string
          description: priority
          example: 'E.g. P1 | P2 | P3 | default: P3'
          enum:
            - P1
            - P2
            - P3
        url:
          maxLength: 2400
          minLength: 0
          pattern: >-
            (^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*))
          type: string
          description: url
          example: https://abc.xyz
        description:
          maxLength: 65535
          minLength: 0
          type: string
          description: description
          example: License description
        familyName:
          type: string
          description: familyName
          example: License family
        externalId:
          type: string
          description: externalId
          example: 'External License Id Eg: 156'
    LicenseUpdateModel:
      type: object
      properties:
        externalId:
          type: string
          description: externalId
          example: External License Id Eg:156
    PerforceSCMModel:
      type: object
      properties:
        url:
          maxLength: 2400
          minLength: 0
          type: string
          description: url
        userName:
          maxLength: 255
          minLength: 0
          type: string
          description: userName
          example: abc
        password:
          maxLength: 255
          minLength: 0
          type: string
          description: password
          example: abc
        branchSpec:
          maxLength: 255
          minLength: 0
          type: string
          description: branchSpec
        changeListNum:
          maxLength: 255
          minLength: 0
          type: string
          description: changeListNum
        label:
          maxLength: 255
          minLength: 0
          type: string
          description: label
    CreateProjectModel:
      required:
        - projectName
      type: object
      properties:
        projectName:
          type: string
          description: projectName
          example: eportal
        projectType:
          type: string
          description: projectType
          example: 'INVENTORY_ONLY | default: STANDARD'
          enum:
            - INVENTORY_ONLY
            - STANDARD
        description:
          type: string
          description: description
          example: description
        projectFolderName:
          type: string
          description: projectFolderName
          example: eportal-v1
        policyProfileName:
          type: string
          description: policyProfileName
          example: Default License Policy Profile
        scanProfileName:
          type: string
          description: scanProfileName
          example: 'Basic Scan - Without CL | default: Standard Scan Profile'
          enum:
            - Basic Scan Profile (Without CL)
            - Standard Scan Profile
            - Comprehensive Scan Profile
        ownerLogin:
          type: string
          description: ownerLogin
          example: admin
        risk:
          type: string
          description: risk
          example: 'HIGH | default: MEDIUM'
          enum:
            - HIGH
            - MEDIUM
            - LOW
        privateProject:
          type: string
          description: privateProject
          example: 'false'
        autoPublish:
          type: string
          description: autoPublish
          example: 'true'
        markAssociatedFilesAsReviewed:
          type: string
          description: markAssociatedFilesAsReviewed
          example: 'true'
    Component:
      type: object
      properties:
        name:
          type: string
        id:
          type: integer
          format: int64
        default:
          type: boolean
        displayName:
          type: string
        componentCPEs:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/ComponentCPELib'
        externalId:
          type: string
        componentForge:
          $ref: '#/components/schemas/ComponentForge'
        lastUpdateDate:
          type: string
          format: date-time
        registeredDate:
          type: string
          format: date-time
        encryption:
          type: boolean
        updatedBy:
          type: string
        createdBy:
          type: string
        modified:
          type: boolean
        custom:
          type: boolean
        title:
          type: string
        sortedVersions:
          type: array
          items:
            $ref: '#/components/schemas/ComponentVersion'
        flagMask:
          type: integer
          format: int32
        sourceRepoUrl:
          type: string
        popularity:
          type: integer
          format: int32
        sortedLicenses:
          type: array
          items:
            $ref: '#/components/schemas/License'
        description:
          type: string
        versions:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/ComponentVersion'
        licenses:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/License'
        url:
          type: string
        type:
          type: string
          enum:
            - Component
            - Component Version
            - Website
            - Publication
    ComponentCPEKey:
      type: object
      properties:
        component:
          $ref: '#/components/schemas/ComponentImpl'
        cpeName:
          type: string
    ComponentCPELib:
      type: object
      properties:
        cpeKey:
          $ref: '#/components/schemas/ComponentCPEKey'
        id:
          type: integer
          format: int64
        cpeVendor:
          type: string
        cpeProduct:
          type: string
        deprecated:
          type: boolean
        custom:
          type: boolean
        deleted:
          type: boolean
    ComponentForge:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
        displayName:
          type: string
        url:
          type: string
        deprecated:
          type: boolean
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        data:
          type: string
    ComponentImpl:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        description:
          type: string
        title:
          type: string
        url:
          type: string
        sourceRepoUrl:
          type: string
        encryption:
          type: boolean
        flagMask:
          type: integer
          format: int32
        modified:
          type: boolean
        externalId:
          type: string
        lastUpdateDate:
          type: string
          format: date-time
        popularity:
          type: integer
          format: int32
        registeredDate:
          type: string
          format: date-time
        deprecated:
          type: boolean
        componentForge:
          $ref: '#/components/schemas/ComponentForge'
        createdBy:
          type: string
        libVersions:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/ComponentVersionLib'
        customVersions:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/ComponentVersionCustom'
        licenses:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/License'
        componentCPEs:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/ComponentCPELib'
        suppressedVulnerabilities:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/VulnerabilitySuppressEntity'
        type:
          type: string
          enum:
            - Component
            - Component Version
            - Website
            - Publication
        default:
          type: boolean
        displayName:
          type: string
        updatedBy:
          type: string
        custom:
          type: boolean
        sortedVersions:
          type: array
          items:
            $ref: '#/components/schemas/ComponentVersion'
        sortedLicenses:
          type: array
          items:
            $ref: '#/components/schemas/License'
        versions:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/ComponentVersion'
    ComponentVersion:
      type: object
      properties:
        id:
          type: integer
          format: int64
        type:
          type: string
          enum:
            - Component
            - Component Version
            - Website
            - Publication
        displayName:
          type: string
        deprecated:
          type: boolean
        versionLicenses:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/License'
        vulnerabilities:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Vulnerability'
        purl:
          type: string
        versionName:
          type: string
        sortedLicenses:
          type: array
          items:
            $ref: '#/components/schemas/License'
        customVulnerabilities:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/VulnerabilityCustom'
        custom:
          type: boolean
        displayVersionName:
          type: string
        licenses:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/License'
        component:
          $ref: '#/components/schemas/ComponentImpl'
    ComponentVersionCustom:
      type: object
      properties:
        id:
          type: integer
          format: int64
        versionName:
          type: string
        component:
          $ref: '#/components/schemas/ComponentImpl'
        versionLicenses:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/License'
        purl:
          type: string
        customVulnerabilities:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/VulnerabilityCustom'
        libVulnerabilities:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/VulnerabilityLib'
        type:
          type: string
          enum:
            - Component
            - Component Version
            - Website
            - Publication
        displayName:
          type: string
        deprecated:
          type: boolean
        vulnerabilities:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Vulnerability'
        sortedLicenses:
          type: array
          items:
            $ref: '#/components/schemas/License'
        custom:
          type: boolean
        displayVersionName:
          type: string
        licenses:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/License'
    ComponentVersionLib:
      type: object
      properties:
        id:
          type: integer
          format: int64
        versionName:
          type: string
        flagMask:
          type: integer
          format: int32
        releaseDate:
          type: string
          format: date-time
        modified:
          type: boolean
        custom:
          type: boolean
        externalId:
          type: string
        deprecated:
          type: boolean
        component:
          $ref: '#/components/schemas/ComponentImpl'
        purl:
          type: string
        flavors:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/ComponentVersionMetaData'
        libVulnerabilities:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/VulnerabilityLib'
        libAddVulnerabilities:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/VulnerabilityLib'
        customVulnerabilities:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/VulnerabilityCustom'
        versionLicenses:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/License'
        type:
          type: string
          enum:
            - Component
            - Component Version
            - Website
            - Publication
        default:
          type: boolean
        displayName:
          type: string
        vulnerabilities:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Vulnerability'
        versionLabels:
          type: array
          items:
            type: string
        sortedLicenses:
          type: array
          items:
            $ref: '#/components/schemas/License'
        displayVersionName:
          type: string
        licenses:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/License'
    ComponentVersionMetaData:
      type: object
      properties:
        id:
          type: integer
          format: int64
        componentVersion:
          $ref: '#/components/schemas/ComponentVersion'
        flavor:
          type: string
    InventoryAlert:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/InventoryAlertId'
        inventory:
          $ref: '#/components/schemas/InventoryGroupImpl'
        vulnerabilityAlert:
          $ref: '#/components/schemas/VulnerabilityAlert'
        priority:
          type: string
          format: byte
        closed:
          type: boolean
        closedBy:
          $ref: '#/components/schemas/User'
        closedDate:
          type: string
          format: date-time
        suppressClosed:
          type: boolean
        unsuppressCreated:
          type: boolean
        reason:
          type: string
          enum:
            - SUPPRESSED
            - UNSUPPRESSED
            - MANUAL_UPDATE
    InventoryAlertId:
      type: object
      properties:
        alertId:
          type: integer
          format: int32
        inventoryId:
          type: integer
          format: int32
    InventoryFlexField:
      type: object
      properties:
        id:
          type: integer
          format: int32
        inventoryId:
          type: integer
          format: int32
        flexField1:
          type: string
        flexField2:
          type: string
        flexField3:
          type: string
        flexField4:
          type: string
        flexField5:
          type: string
    InventoryGroup:
      type: object
      properties:
        name:
          type: string
          description: Inventory group name
          example: git
        priority:
          $ref: '#/components/schemas/PicklistValue'
        id:
          type: integer
          description: Inventory group id
          format: int32
          example: 1
        owner:
          type: string
          description: Owner
          example: antlr
        published:
          type: boolean
          description: is published
          example: true
        partOfProduct:
          type: string
          description: part of product
          example: Unknown
          enum:
            - 'No'
            - 'Yes'
            - Unknown
        linking:
          type: string
          description: link type
          example: Unknown
          enum:
            - Unknown
            - Not Linked
            - Statically Linked
            - Dynamically Linked
        inventoryType:
          type: string
          enum:
            - Work in Progress
            - Component
            - Material from Website
            - Material from Publication
            - License Only
        modified:
          type: string
          description: modified
          example: Unknown
          enum:
            - 'No'
            - 'Yes'
            - Unknown
        encrypted:
          type: string
          description: encryption
          example: Unknown
          enum:
            - 'No'
            - 'Yes'
            - Unknown
        usageText:
          type: string
          description: get usage text
          example: usage
        distributed:
          type: string
          description: distribution type
          example: Unknown
          enum:
            - Unknown
            - Internal
            - External
            - Hosted-Any
            - Hosted for Internal Use
            - Hosted for External Use
        repositoryItem:
          $ref: '#/components/schemas/RepositoryItem'
        noticeText:
          type: string
          description: Notices text
          example: Notice text
        disclosed:
          type: boolean
          description: is Disclosed
          example: true
        confidence:
          type: string
          description: Confidence
          example: '1'
          enum:
            - HIGHEST
            - HIGH
            - MEDIUM
            - LOW
        priorityId:
          type: integer
          format: int32
        copyrightText:
          type: string
        projectId:
          type: integer
          description: Project Id
          format: int32
          example: 1
        provenanceId:
          type: integer
          format: int32
        createDate:
          type: string
          description: Create on
          format: date-time
        updateDate:
          type: string
          description: updatedOn
          format: date-time
        links:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/InventoryLink'
        license:
          $ref: '#/components/schemas/License'
        auditorReviewNotes:
          type: string
          description: audit notes
          example: good to go
        remediationNotes:
          type: string
          description: Remediation notes
          example: update this immediately
        workflowURL:
          type: string
        associatedComponentVersion:
          $ref: '#/components/schemas/ComponentVersion'
        associatedComponent:
          $ref: '#/components/schemas/Component'
        skipVulnerabilities:
          type: boolean
          writeOnly: true
        associatedLicense:
          $ref: '#/components/schemas/License'
        closedVulnerabilityAlerts:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/InventoryAlert'
        vulnerabilityAlerts:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/InventoryAlert'
        openVulnerabilityAlerts:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/InventoryAlert'
        autoStatus:
          type: string
          enum:
            - DRAFT
            - PUBLISHED
            - NEEDS_REVIEW
        systemGenerated:
          type: boolean
          description: System generated
          example: true
        statusPolicyId:
          type: integer
          format: int32
        parentGroupId:
          type: integer
          format: int32
        rejectedByUpdate:
          type: boolean
        repoTitle:
          type: string
          writeOnly: true
        publishedDate:
          type: string
          description: publishedOn
          format: date-time
        licenseDetectionMethod:
          type: string
          format: byte
        userUpdatedStatus:
          type: string
        autoDetectionNotes:
          type: string
          description: detection notes
          example: Note
        description:
          type: string
          description: Description
          example: Description
        status:
          type: string
          enum:
            - UNUSED0
            - UNUSED1
            - UNUSED2
            - UNUSED3
            - DRAFT
            - READY_TO_REVIEW
            - APPROVED
            - REJECTED
        asFoundLicenseText:
          type: string
          description: As found license text
          example: Sample from file LICENSE.txt in file ePortal-2.0
        url:
          type: string
          description: Url
          example: http://www.antlr.org
        fileCount:
          type: integer
          description: File count
          format: int32
          example: 2000
        dependencyScope:
          type: string
    InventoryGroupImpl:
      type: object
      properties:
        id:
          type: integer
          description: Inventory group id
          format: int32
          example: 1
        name:
          type: string
          description: Inventory group name
          example: git
        description:
          type: string
          description: Description
          example: Description
        owner:
          type: string
          description: Owner
          example: antlr
        projectId:
          type: integer
          description: Project Id
          format: int32
          example: 1
        systemGenerated:
          type: boolean
          description: System generated
          example: true
        createDate:
          type: string
          description: Create on
          format: date-time
        updateDate:
          type: string
          description: updatedOn
          format: date-time
        publishedDate:
          type: string
          description: publishedOn
          format: date-time
        autoStatus:
          type: string
          enum:
            - DRAFT
            - PUBLISHED
            - NEEDS_REVIEW
        repositoryItem:
          $ref: '#/components/schemas/RepositoryItemImpl'
        license:
          $ref: '#/components/schemas/License'
        auditorReviewNotes:
          type: string
          description: audit notes
          example: good to go
        remediationNotes:
          type: string
          description: Remediation notes
          example: update this immediately
        autoDetectionNotes:
          type: string
          description: detection notes
          example: Note
        url:
          type: string
          description: Url
          example: http://www.antlr.org
        asFoundLicenseText:
          type: string
          description: As found license text
          example: Sample from file LICENSE.txt in file ePortal-2.0
        status:
          type: string
          enum:
            - UNUSED0
            - UNUSED1
            - UNUSED2
            - UNUSED3
            - DRAFT
            - READY_TO_REVIEW
            - APPROVED
            - REJECTED
        statusPolicyId:
          type: integer
          format: int32
        priority:
          $ref: '#/components/schemas/PicklistValue'
        priorityId:
          type: integer
          format: int32
        published:
          type: boolean
          description: is published
          example: true
        disclosed:
          type: boolean
          description: is Disclosed
          example: true
        modified:
          type: string
          description: modified
          example: Unknown
          enum:
            - 'No'
            - 'Yes'
            - Unknown
        usageText:
          type: string
          description: get usage text
          example: usage
        noticeText:
          type: string
          description: Notices text
          example: Notice text
        fileCount:
          type: integer
          description: File count
          format: int32
          example: 2000
        parentGroupId:
          type: integer
          format: int32
        rejectedByUpdate:
          type: boolean
        confidence:
          type: string
          description: Confidence
          example: '1'
          enum:
            - HIGHEST
            - HIGH
            - MEDIUM
            - LOW
        partOfProduct:
          type: string
          description: part of product
          example: Unknown
          enum:
            - 'No'
            - 'Yes'
            - Unknown
        linking:
          type: string
          description: link type
          example: Unknown
          enum:
            - Unknown
            - Not Linked
            - Statically Linked
            - Dynamically Linked
        workflowURL:
          type: string
        provenanceId:
          type: integer
          format: int32
        skipVulnerabilities:
          type: boolean
          writeOnly: true
        links:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/InventoryLink'
        flexFields:
          type: array
          items:
            $ref: '#/components/schemas/InventoryFlexField'
        customFieldModelList:
          type: array
          writeOnly: true
          items:
            $ref: '#/components/schemas/CustomFieldModel'
        dependencyScope:
          type: string
        userUpdatedStatus:
          type: string
        cvvMD5:
          type: string
        licenseDetectionMethod:
          type: string
          format: byte
        copyrightText:
          type: string
        inventoryType:
          type: string
          enum:
            - Work in Progress
            - Component
            - Material from Website
            - Material from Publication
            - License Only
        encrypted:
          type: string
          description: encryption
          example: Unknown
          enum:
            - 'No'
            - 'Yes'
            - Unknown
        distributed:
          type: string
          description: distribution type
          example: Unknown
          enum:
            - Unknown
            - Internal
            - External
            - Hosted-Any
            - Hosted for Internal Use
            - Hosted for External Use
        associatedComponentVersion:
          $ref: '#/components/schemas/ComponentVersion'
        associatedComponent:
          $ref: '#/components/schemas/Component'
        associatedLicense:
          $ref: '#/components/schemas/License'
        closedVulnerabilityAlerts:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/InventoryAlert'
        vulnerabilityAlerts:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/InventoryAlert'
        openVulnerabilityAlerts:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/InventoryAlert'
        repoTitle:
          type: string
          writeOnly: true
    InventoryLink:
      type: object
      properties:
        id:
          type: integer
          format: int32
        linkType:
          type: string
          enum:
            - BUNDLED
            - DEPENDENCY
            - POSSIBLY_RELATED
        parent:
          $ref: '#/components/schemas/InventoryGroupImpl'
        child:
          $ref: '#/components/schemas/InventoryGroupImpl'
    Item:
      type: object
      properties:
        id:
          type: integer
          format: int64
        type:
          type: string
          enum:
            - Component
            - Component Version
            - Website
            - Publication
        displayName:
          type: string
    License:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        shortName:
          type: string
        description:
          type: string
        text:
          type: string
        url:
          type: string
        category:
          type: string
          enum:
            - Category 1
            - Category 2
            - Category 3
            - Category 4
            - Category 5
        notes:
          type: string
        iconUrl:
          type: string
        flagMask:
          type: integer
          format: int32
        modified:
          type: boolean
        custom:
          type: boolean
        externalId:
          type: string
        family:
          type: boolean
        parentId:
          type: integer
          format: int64
        addToPalamidaCL:
          type: boolean
        author:
          type: string
        dfsgCompatible:
          type: boolean
        familyName:
          type: string
        deprecated:
          type: boolean
        noticeAttributionStatements:
          type: string
        noticeCopyrightStatements:
          type: string
        osiLicenseCategory:
          type: string
        osiLicenseName:
          type: string
        patentLicenseGrant:
          type: boolean
        publishedDate:
          type: string
          format: date-time
        publisher:
          type: string
        spdxLicenseIdentifier:
          type: string
        spdxLicenseName:
          type: string
        userUpdated:
          type: boolean
        version:
          type: string
        priority:
          type: integer
          format: int32
        createdBy:
          type: string
        createdOn:
          type: string
          format: date-time
        updatedBy:
          type: string
        updatedOn:
          type: string
          format: date-time
        components:
          uniqueItems: true
          type: array
          items:
            type: object
        componentVersions:
          uniqueItems: true
          type: array
          items:
            type: object
        obligations:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/LicenseObligation'
        obligationDetails:
          $ref: '#/components/schemas/LicenseObligationDetails'
        default:
          type: boolean
        displayName:
          type: string
        abbrevName:
          type: string
        categoryByText:
          type: string
          writeOnly: true
        screenName:
          type: string
        copyleft:
          type: boolean
        gplv3Compatible:
          type: boolean
        osiapproved:
          type: boolean
        gplv2Compatible:
          type: boolean
        screenText:
          type: string
        commercial:
          type: boolean
        spdxNameOrName:
          type: string
        spdxIdentifierOrName:
          type: string
        freeSoftwareLicense:
          type: boolean
      description: License
      example: 1
    LicenseObligation:
      type: object
      properties:
        id:
          type: integer
          format: int32
        instruction:
          type: string
        type:
          $ref: '#/components/schemas/ObligationType'
        required:
          type: boolean
        priority:
          $ref: '#/components/schemas/ObligationPriority'
        organization:
          $ref: '#/components/schemas/ObligationOrganization'
        triggerAction:
          $ref: '#/components/schemas/ObligationTriggerAction'
        licenseTextSection:
          type: string
        licenseTextFragment:
          type: string
    LicenseObligationDetails:
      required:
        - license
      type: object
      properties:
        id:
          type: integer
          format: int64
        canDo:
          type: string
        mustDo:
          type: string
        cannotDo:
          type: string
        license:
          $ref: '#/components/schemas/License'
    ObligationOrganization:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
    ObligationPriority:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
    ObligationTriggerAction:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
    ObligationType:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
    Password:
      type: object
      properties:
        id:
          type: integer
          format: int32
        password:
          type: string
        createDate:
          type: string
          format: date-time
        user:
          $ref: '#/components/schemas/User'
    PicklistValue:
      type: object
      properties:
        id:
          type: integer
          format: int32
        type:
          type: string
          enum:
            - INVENTORY_STATUS
            - INVENTORY_PRIORITY
        name:
          type: string
        description:
          type: string
        isDefault:
          type: boolean
    RepositoryItem:
      type: object
      properties:
        id:
          type: integer
          format: int32
        item:
          $ref: '#/components/schemas/Item'
        createdBy:
          type: string
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        license:
          $ref: '#/components/schemas/License'
        title:
          type: string
        inUse:
          type: boolean
        licenseId:
          type: integer
          format: int64
          writeOnly: true
        componentVersion:
          $ref: '#/components/schemas/ComponentVersion'
        component:
          $ref: '#/components/schemas/Component'
    RepositoryItemImpl:
      type: object
      properties:
        id:
          type: integer
          format: int32
        component:
          $ref: '#/components/schemas/ComponentImpl'
        componentVersion:
          $ref: '#/components/schemas/ComponentVersion'
        license:
          $ref: '#/components/schemas/License'
        licenseId:
          type: integer
          format: int64
        inUse:
          type: boolean
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        createdBy:
          type: string
        title:
          type: string
        url:
          type: string
        autoDetectionNotes:
          type: string
        notes:
          type: string
        description:
          type: string
        item:
          $ref: '#/components/schemas/Item'
    User:
      type: object
      properties:
        id:
          type: integer
          format: int32
        externalId:
          type: string
        login:
          type: string
        password:
          type: string
        firstName:
          type: string
        middleName:
          type: string
        lastName:
          type: string
        email:
          type: string
        jobTitle:
          type: string
        telephone:
          type: string
        fax:
          type: string
        location:
          type: string
        businessUnit:
          type: string
        question:
          type: string
        answer:
          type: string
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        userStatus:
          $ref: '#/components/schemas/UserStatus'
        state:
          type: string
          enum:
            - UNUSED
            - ACTIVE
            - INACTIVE
        passwords:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Password'
        permissions:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/UserPermission'
        lockedPermissions:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/UserPermission'
        userLists:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/UserList'
        userRole:
          $ref: '#/components/schemas/UserRole'
        ldapAuthenicated:
          type: boolean
        displayName:
          type: string
        lastUpdatedDate:
          type: string
          format: date-time
        displayNameWithLogin:
          type: string
    UserList:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
        description:
          type: string
        ldapPopulated:
          type: boolean
        owner:
          $ref: '#/components/schemas/User'
        users:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/User'
        subUserList:
          uniqueItems: true
          type: array
          writeOnly: true
          items:
            $ref: '#/components/schemas/UserList'
        permissions:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/UserPermission'
        allUsers:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/User'
    UserPermission:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
        scope:
          type: string
        description:
          type: string
    UserRole:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
        description:
          type: string
    UserStatus:
      type: object
      properties:
        id:
          type: integer
          format: int32
        code:
          type: integer
          format: int32
        name:
          type: string
    Vulnerability:
      type: object
      properties:
        name:
          type: string
        id:
          type: integer
          format: int64
        children:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Vulnerability'
        severity:
          type: string
        source:
          type: string
        cvssv3Vector:
          type: string
        epssPercentile:
          type: number
        cvssv3Severity:
          type: string
        cvssv2Vector:
          type: string
        epssScore:
          type: number
        cvssv2Severity:
          type: string
        cvssv3Score:
          type: number
        cvssv2Score:
          type: number
        lastRevisedDate:
          type: string
          format: date-time
        score:
          type: number
        shallowCopy:
          $ref: '#/components/schemas/Vulnerability'
        kev:
          type: boolean
        registry:
          $ref: '#/components/schemas/VulnerabilityRegistry'
        severityAsInteger:
          type: integer
          format: int32
        vulnerabilityReferences:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/VulnerabilityReferencesEntity'
        originalReleaseDate:
          type: string
          format: date-time
        vulnerabilityCWE:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/VulnerabilityCweEntity'
        description:
          type: string
        url:
          type: string
    VulnerabilityAlert:
      type: object
      properties:
        id:
          type: integer
          format: int32
        createDate:
          type: string
          format: date-time
        owner:
          $ref: '#/components/schemas/User'
        vulnerability:
          $ref: '#/components/schemas/VulnerabilityLib'
        updateId:
          type: integer
          format: int64
        inventoryAlerts:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/InventoryAlert'
    VulnerabilityCustom:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        description:
          type: string
        cvssv2Score:
          type: number
        cvssv2Severity:
          type: string
        cvssv3Score:
          type: number
        cvssv3Severity:
          type: string
        url:
          type: string
        lastRevisedDate:
          type: string
          format: date-time
        originalReleaseDate:
          type: string
          format: date-time
        source:
          type: string
        registry:
          $ref: '#/components/schemas/VulnerabilityRegistry'
        customComponentVersions:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/ComponentVersionCustom'
        libComponentVersions:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/ComponentVersionLib'
        children:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Vulnerability'
        severity:
          type: string
        cvssv3Vector:
          type: string
        epssPercentile:
          type: number
        cvssv2Vector:
          type: string
        epssScore:
          type: number
        score:
          type: number
        kev:
          type: boolean
        severityAsInteger:
          type: integer
          format: int32
        vulnerabilityReferences:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/VulnerabilityReferencesEntity'
        vulnerabilityCWE:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/VulnerabilityCweEntity'
        shallowCopy:
          $ref: '#/components/schemas/Vulnerability'
    VulnerabilityCweEntity:
      type: object
      properties:
        name:
          type: string
        title:
          type: string
    VulnerabilityLib:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        description:
          type: string
        cvssv2Score:
          type: number
        cvssv2Severity:
          type: string
        cvssv3Score:
          type: number
        cvssv3Severity:
          type: string
        url:
          type: string
        custom:
          type: boolean
        lastRevisedDate:
          type: string
          format: date-time
        originalReleaseDate:
          type: string
          format: date-time
        source:
          type: string
        registry:
          $ref: '#/components/schemas/VulnerabilityRegistry'
        deprecated:
          type: boolean
        customComponentVersions:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/ComponentVersionCustom'
        libComponentVersions:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/ComponentVersionLib'
        children:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Vulnerability'
        cvssv2Vector:
          type: string
        cvssv3Vector:
          type: string
        epssScore:
          type: number
        epssPercentile:
          type: number
        vulnerabilityCWE:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/VulnerabilityCweEntity'
        vulnerabilityReferences:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/VulnerabilityReferencesEntity'
        kev:
          type: boolean
        severity:
          type: string
        score:
          type: number
        severityAsInteger:
          type: integer
          format: int32
        shallowCopy:
          $ref: '#/components/schemas/Vulnerability'
    VulnerabilityReferencesEntity:
      type: object
      properties:
        url:
          type: string
    VulnerabilityRegistry:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
        description:
          type: string
        url:
          type: string
    VulnerabilitySuppressEntity:
      type: object
      properties:
        id:
          type: integer
          format: int64
        componentId:
          type: integer
          format: int64
        componentName:
          type: string
        vulnerabilityId:
          type: integer
          format: int64
        vulnerabilityName:
          type: string
        versionScope:
          type: string
          enum:
            - SPECIFIC_VERSIONS
            - ALL_CURRENT_VERSIONS
        suppressedVersions:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/VulnerabilitySuppressedVersionEntity'
        createdDate:
          type: string
          format: date-time
        updatedDate:
          type: string
          format: date-time
        createdBy:
          type: string
        updatedBy:
          type: string
    VulnerabilitySuppressedVersionEntity:
      type: object
      properties:
        id:
          type: integer
          format: int64
        versionId:
          type: integer
          format: int64
        versionName:
          type: string
        reason:
          type: string
          enum:
            - FALSE_POSITIVE
            - REMEDIATED
            - OTHER
        remarks:
          type: string
        status:
          type: string
          enum:
            - Suppress
            - UnSuppress
        suppressEntity:
          $ref: '#/components/schemas/VulnerabilitySuppressEntity'
        createdDate:
          type: string
          format: date-time
        updatedDate:
          type: string
          format: date-time
        createdBy:
          type: string
        updatedBy:
          type: string
        suppressionScope:
          type: integer
          format: int32
    ReportsModel:
      type: object
      properties:
        otherProjectId:
          type: integer
          description: otherProjectId
          format: int32
          example: 1
        options:
          type: object
          additionalProperties:
            type: string
            description: options
          description: options
    ProjectRoleModel:
      type: object
      properties:
        ownerId:
          type: string
          description: ownerId
          example: admin
        securityContactId:
          type: string
          description: securityContactId
          example: admin
        developerContactId:
          type: string
          description: developerContactId
          example: admin
        legalContactId:
          type: string
          description: legalContactId
          example: admin
        userRoles:
          $ref: '#/components/schemas/usersRole'
        legalContact:
          type: string
          writeOnly: true
    usersRole:
      required:
        - roleId
        - users
      type: object
      properties:
        roleId:
          type: string
          description: roleId
          example: ANALYST
        users:
          type: array
          description: users
          items:
            type: string
            description: users
    ProjectModel:
      required:
        - name
      type: object
      properties:
        name:
          type: string
          description: name
          example: eportal
        description:
          type: string
          description: description
          example: description
        folderName:
          type: string
          description: folderName
          example: Projects
        policyProfileName:
          type: string
          description: policyProfileName
          example: Default License Policy Profile
        scanProfileName:
          type: string
          description: scanProfileName
          example: Basic Scan Profile (Without CL)
        autoPublish:
          type: boolean
          description: autoPublish
          example: true
        markAssociatedFilesAsReviewed:
          type: boolean
          description: markAssociatedFilesAsReviewed
          example: true
        owner:
          type: string
          description: owner
          example: admin
        risk:
          pattern: HIGH|MEDIUM|LOW
          type: string
          description: risk
          example: 'HIGH | default: MEDIUM'
          enum:
            - HIGH
            - MEDIUM
            - LOW
        privateProject:
          type: boolean
          description: privateProject
          example: false
        scanServerAlias:
          type: string
          description: scanServerAlias
          example: 'null'
        deleteEmptyInventory:
          type: boolean
          description: deleteEmptyInventory
          example: false
        doNotPublishInventoryUnknownLicense:
          type: boolean
          description: doNotPublishInventoryUnknownLicense
          example: true
        folderId:
          type: integer
          format: int32
          example: 1
        expandJarArchives:
          type: boolean
          description: expandJarArchives
          example: false
        customFields:
          type: array
          description: customFields
          items:
            $ref: '#/components/schemas/CustomFieldModel'
    ExtendedProjectModel:
      type: object
      properties:
        name:
          type: string
          description: name
          example: eportal
        description:
          type: string
          description: description
          example: description
        folderName:
          type: string
          description: folderName
          example: Projects
        policyProfileName:
          type: string
          description: policyProfileName
          example: Default License Policy Profile
        scanProfileName:
          type: string
          description: scanProfileName
          example: Basic Scan Profile (Without CL)
        autoPublish:
          type: boolean
          description: autoPublish
          example: true
        markAssociatedFilesAsReviewed:
          type: boolean
          description: markAssociatedFilesAsReviewed
          example: true
        owner:
          type: string
          description: owner
          example: admin
        risk:
          pattern: HIGH|MEDIUM|LOW
          type: string
          description: risk
          example: 'HIGH | default: MEDIUM'
          enum:
            - HIGH
            - MEDIUM
            - LOW
        privateProject:
          type: boolean
          description: privateProject
          example: false
        deleteEmptyInventory:
          type: boolean
          description: deleteEmptyInventory
          example: false
        doNotPublishInventoryUnknownLicense:
          type: boolean
          description: doNotPublishInventoryUnknownLicense
          example: true
        folderId:
          type: integer
          format: int32
          example: 1
        expandJarArchives:
          type: boolean
          description: expandJarArchives
          example: false
        customFields:
          type: array
          description: customFields
          items:
            $ref: '#/components/schemas/CustomFieldModel'
    ProjectContact:
      required:
        - contact
      type: object
      properties:
        contact:
          type: string
          description: contact
          example: admin
    FormDataContentDisposition:
      type: object
      properties:
        type:
          type: string
        parameters:
          type: object
          additionalProperties:
            type: string
        fileName:
          type: string
        creationDate:
          type: string
          format: date-time
        modificationDate:
          type: string
          format: date-time
        readDate:
          type: string
          format: date-time
        size:
          type: integer
          format: int64
        name:
          type: string
    ReportCriteriaModel:
      required:
        - description
        - label
        - name
        - order
        - type
      type: object
      properties:
        name:
          type: string
          description: name
          example: Name of the Report Parameter
        label:
          maxLength: 120
          minLength: 0
          type: string
          description: label
          example: Display Name of the Report Parameter
        description:
          maxLength: 300
          minLength: 0
          type: string
          description: description
          example: Description of the Report Parameter
        type:
          type: string
          description: type
          example: Type of the Report Parameter
        defaultValue:
          type: string
          description: defaultValue
          example: Default value of the Report Parameter
        required:
          type: boolean
          description: required
          example: false
        order:
          minimum: 1
          type: integer
          description: order
          format: int32
          example: 4
    ReportModel:
      required:
        - name
        - order
        - path
      type: object
      properties:
        name:
          type: string
          description: name
          example: Name of the report
        path:
          type: string
          description: path
          example: Path of the report
        enabled:
          type: boolean
          description: enabled
          example: true
        order:
          minimum: 1
          type: integer
          description: order
          format: int32
          example: 4
        enableProjectPicker:
          type: boolean
          description: enableProjectPicker
          example: false
        reportOptions:
          type: array
          items:
            $ref: '#/components/schemas/ReportCriteriaModel'
    ExtendedReportModel:
      required:
        - name
        - order
        - path
      type: object
      properties:
        id:
          type: integer
          description: id
          format: int32
          example: 1
        name:
          type: string
          description: name
          example: Name of the report
        path:
          type: string
          description: path
          example: Path of the report
        enabled:
          type: boolean
          description: enabled
          example: true
        order:
          minimum: 1
          type: integer
          description: order
          format: int32
          example: 4
        enableProjectPicker:
          type: boolean
          description: enableProjectPicker
          example: false
        reportOptions:
          type: array
          items:
            $ref: '#/components/schemas/ReportCriteriaModel'
    FileInfo:
      required:
        - md5
        - name
      type: object
      properties:
        name:
          type: string
          description: name
          example: fileName
        md5:
          type: string
          description: md5
          example: md5
      description: fileInfo
    RuleInfo:
      required:
        - detectionCriteria
        - detectionType
      type: object
      properties:
        detectionType:
          type: string
          description: detectionType
          example: filePath
        detectionCriteria:
          type: array
          description: detectionCriteria
          example: '[filepath]'
          items:
            type: string
            description: detectionCriteria
            example: '[filepath]'
      description: ruleInfo
    RuleModel:
      required:
        - componentId
        - licenseId
        - versionId
      type: object
      properties:
        inventoryName:
          type: string
          description: inventoryName
          example: Custom Inventory Name
        componentId:
          minimum: 1
          type: integer
          description: componentId
          format: int64
          example: 1
        versionId:
          minimum: 1
          type: integer
          description: versionId
          format: int64
          example: 1
        licenseId:
          minimum: 1
          type: integer
          description: licenseId
          format: int64
          example: 1
        description:
          type: string
          description: description
          example: description
        url:
          maxLength: 2400
          minLength: 0
          pattern: >-
            (NA|^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*))
          type: string
          description: url
          example: https://www.flexera.com/
        noticesText:
          type: string
          description: noticesText
          example: Sample Notices Text
        auditNotes:
          type: string
          description: auditNotes
          example: Sample Audit Notes
        asFoundLicenseText:
          type: string
          description: asFoundLicenseText
          example: Sample from file LICENSE.txt in file @file in the materials
        fileInfo:
          type: array
          description: fileInfo
          items:
            $ref: '#/components/schemas/FileInfo'
        ruleInfo:
          type: array
          description: ruleInfo
          items:
            $ref: '#/components/schemas/RuleInfo'
    ExtendedRuleModel:
      required:
        - componentId
        - licenseId
        - versionId
      type: object
      properties:
        id:
          type: integer
          description: id
          format: int64
          example: 1
        inventoryName:
          type: string
          description: inventoryName
          example: Custom Inventory Name
        componentId:
          minimum: 1
          type: integer
          description: componentId
          format: int64
          example: 1
        versionId:
          minimum: 1
          type: integer
          description: versionId
          format: int64
          example: 1
        licenseId:
          minimum: 1
          type: integer
          description: licenseId
          format: int64
          example: 1
        description:
          type: string
          description: description
          example: description
        url:
          maxLength: 2400
          minLength: 0
          pattern: >-
            (NA|^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*))
          type: string
          description: url
          example: https://www.flexera.com/
        noticesText:
          type: string
          description: noticesText
          example: Sample Notices Text
        auditNotes:
          type: string
          description: auditNotes
          example: Sample Audit Notes
        asFoundLicenseText:
          type: string
          description: asFoundLicenseText
          example: Sample from file LICENSE.txt in file @file in the materials
        fileInfo:
          type: array
          description: fileInfo
          items:
            $ref: '#/components/schemas/FileInfo'
        ruleInfo:
          type: array
          description: ruleInfo
          items:
            $ref: '#/components/schemas/RuleInfo'
    GITSCMModel:
      required:
        - url
      type: object
      properties:
        url:
          maxLength: 65535
          minLength: 0
          type: string
          description: url
          example: >-
            E.g. https://host.xz/path/to/repo.git or
            https://host.xz/path/to/repo.git~~branch1 or
            user@host:path/repo.git>>cmID123 or
            https://host.xz/path/to/repo.git^^tag1.1 or
            https://host.xz/path/to/repo.git~~branch1**FolderA or
            user@host:path/repo.git>>cmID123**FolderB or
            https://host.xz/path/to/repo.git^^tag1.1**FolderC or
            https://host.xz/path/to/repo.git**FolderD
        userName:
          maxLength: 255
          minLength: 0
          type: string
          description: userName
          example: abc
        password:
          maxLength: 255
          minLength: 0
          type: string
          description: password
          example: abc
        branch:
          maxLength: 255
          minLength: 0
          type: string
          description: branch
          example: master
        commitId:
          maxLength: 255
          minLength: 0
          type: string
          description: commitId
        tag:
          maxLength: 255
          minLength: 0
          type: string
          description: tag
        deleteArchiveAfterExpand:
          type: boolean
          description: deleteArchiveAfterExpand
          example: true
          default: false
        expansionLevel:
          type: integer
          description: expansionLevel
          format: int32
          example: 2
          default: 1
          enum:
            - 1
            - 2
            - 3
        archiveDirSuffix:
          maxLength: 20
          minLength: 0
          type: string
          description: archiveDirSuffix
          example: _Expanded
    SCMModel:
      type: object
      properties:
        propertyList:
          type: array
          items:
            type: object
            additionalProperties:
              type: string
        scmtype:
          type: string
    SubversionSCMModel:
      required:
        - url
      type: object
      properties:
        url:
          maxLength: 2400
          minLength: 0
          type: string
          description: url
        userName:
          maxLength: 255
          minLength: 0
          type: string
          description: userName
          example: abc
        password:
          maxLength: 255
          minLength: 0
          type: string
          description: password
          example: abc
        revisionNumber:
          maxLength: 255
          minLength: 0
          type: string
          description: revisionNumber
    TFSSCMModel:
      required:
        - password
        - url
        - username
      type: object
      properties:
        url:
          maxLength: 2400
          minLength: 0
          type: string
          description: url
        username:
          maxLength: 255
          minLength: 0
          type: string
          description: userName
          example: abc
        password:
          maxLength: 255
          minLength: 0
          type: string
          description: password
          example: abc
        changeSet:
          maxLength: 255
          minLength: 0
          type: string
          description: changeSet
        label:
          maxLength: 255
          minLength: 0
          type: string
          description: label
    AlmIssues:
      required:
        - ids
      type: object
      properties:
        ids:
          type: array
          description: almIssueId
          items:
            type: integer
            description: almIssueId
            format: int32
    WorkflowTaskModel:
      type: object
      properties:
        owner:
          type: string
          description: owner
          example: admin
        summary:
          type: string
          description: summary
          example: Summary for the task
        priority:
          type: string
          description: priority
          example: MEDIUM
          enum:
            - LOW
            - MEDIUM
            - HIGH
        type:
          type: string
          description: type
          example: MISCELLANEOUS
          enum:
            - MISCELLANEOUS
            - MANUAL_INVENTORY_REVIEW
            - REMEDIATE_INVENTORY
        details:
          type: string
          description: details
          example: Details of the task
    ExtendedWorkflowTaskModel:
      type: object
      properties:
        summary:
          type: string
          description: summary
          example: Summary for the task
        priority:
          type: string
          description: priority
          example: MEDIUM
          enum:
            - LOW
            - MEDIUM
            - HIGH
        details:
          type: string
          description: details
          example: Details of the task
    UserModel:
      required:
        - answer
        - email
        - firstName
        - lastName
        - login
        - password
        - question
      type: object
      properties:
        login:
          maxLength: 60
          minLength: 1
          type: string
          description: login
          example: admin
        firstName:
          maxLength: 60
          minLength: 1
          type: string
          description: firstName
          example: John
        lastName:
          maxLength: 60
          minLength: 1
          type: string
          description: lastName
          example: Miller
        email:
          pattern: ^(.+)@(.+)$
          type: string
          description: email
          example: john@yahoomail.com
        password:
          pattern: (?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=\S+$).{8,}
          type: string
          description: password
          example: Password123
        question:
          maxLength: 300
          minLength: 3
          type: string
          description: question
          example: What is your best friend name?
        answer:
          maxLength: 2147483647
          minLength: 3
          type: string
          description: answer
          example: Jim
    PermissionsWrapper:
      required:
        - permissions
      type: object
      properties:
        permissions:
          type: array
          description: permissions
          items:
            type: string
            description: permissions
    SuppressedVulnerabilityModel:
      type: object
      properties:
        itemNumber:
          type: integer
          format: int32
        suppressId:
          type: integer
          format: int64
        suppressionScope:
          type: string
        vulnerabilityId:
          type: integer
          format: int64
        vulnerabilityName:
          type: string
        componentId:
          type: integer
          format: int64
        componentName:
          type: string
        suppressedBy:
          type: string
        suppressedDate:
          type: string
        suppressionDetails:
          type: array
          items:
            $ref: '#/components/schemas/SuppressionDetailsResponseModel'
        componentVersionIds:
          type: array
          items:
            type: integer
            format: int64
    SuppressionDetailsResponseModel:
      type: object
      properties:
        projectId:
          type: integer
          format: int32
        state:
          type: string
        justification:
          type: string
        response:
          type: string
    VersionSuppressModel:
      type: object
      properties:
        suppressId:
          type: integer
          format: int64
        vulnerabilityName:
          type: string
        componentName:
          type: string
        versionId:
          type: integer
          format: int64
        versionName:
          type: string
        suppressedReason:
          type: string
        suppressedRemarks:
          type: string
        suppressedBy:
          type: string
        suppressedDate:
          type: string
    SuppressionDetails:
      required:
        - justification
        - response
        - state
      type: object
      properties:
        projectId:
          type: integer
          description: projectId
          format: int32
          example: 123
        state:
          type: string
          description: state
          example: RESOLVED|RESOLVED_WITH_PEDIGREE|EXPLOITABLE|IN_TRIAGE|FALSE_POSITIVE
        justification:
          type: string
          description: justification
          example: >-
            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
        response:
          type: string
          description: response
          example: CAN_NOT_FIX|WILL_NOT_FIX|UPDATE|ROLLBACK|WORKAROUND_AVAILABLE
      description: suppressionDetails
    VulnerabilitySuppressModel:
      required:
        - componentId
        - reason
        - remarks
        - suppressionScope
        - versionScope
        - vulnerabilityName
      type: object
      properties:
        componentId:
          minimum: 1
          type: integer
          description: componentId
          format: int64
          example: 1
        versionIds:
          uniqueItems: true
          type: array
          description: versionIds
          items:
            type: integer
            description: versionIds
            format: int64
        vulnerabilityName:
          type: string
          description: vulnerabilityName
          example: Vulnerability Name
        reason:
          type: string
          description: reason
          example: FALSE_POSITIVE|REMEDIATED|OTHER
        remarks:
          maxLength: 255
          minLength: 0
          type: string
          description: remarks
          example: Remarks to Suppress Vulnerability
        versionScope:
          pattern: SPECIFIC_VERSIONS|ALL_CURRENT_VERSIONS
          type: string
          description: versionScope
          example: SPECIFIC_VERSIONS|ALL_CURRENT_VERSIONS
        suppressionScope:
          pattern: GLOBAL|PROJECT
          type: string
          description: suppressionScope
          example: GLOBAL|PROJECT
        suppressionDetails:
          $ref: '#/components/schemas/SuppressionDetails'
    VulnerabilityUnsuppressModel:
      required:
        - componentId
        - remarks
        - vulnerabilityName
      type: object
      properties:
        vulnerabilityName:
          type: string
          description: vulnerabilityName
          example: Vulnerability Name
        componentId:
          minimum: 1
          type: integer
          description: componentId
          format: int64
          example: 1
        versionIds:
          uniqueItems: true
          type: array
          description: versionIds
          items:
            type: integer
            description: versionIds
            format: int64
        remarks:
          maxLength: 255
          minLength: 0
          type: string
          description: remarks
          example: Remarks to Unsuppress Vulnerability
        projectId:
          minimum: 1
          type: integer
          description: projectId
          format: int32
          example: 1
    ProjectImportModel:
      required:
        - addFilesToInventory
        - markFilesAsReviewed
      type: object
      properties:
        createEmptyInventory:
          type: boolean
          description: createEmptyInventory
          example: false
        overwriteInventoryNotes:
          type: boolean
          description: overwriteInventoryNotes
          example: true
        addFilesToInventory:
          type: boolean
          description: addFilesToInventory
          example: true
        inventoryFileMatchingCriteria:
          pattern: >-
            COMPLETE_FILEPATH|PARTIAL_FILEPATH|FILENAME|MD5|MD5_AND_FILENAME|MD5_AND_COMPLETE_FILEPATH|MD5_AND_PARTIAL_FILEPATH
          type: string
          description: inventoryFileMatchingCriteria
          example: COMPLETE_FILEPATH
        inventoryDirectoryDepth:
          maximum: 20
          minimum: 1
          type: integer
          description: inventoryDirectoryDepth
          format: int32
        markFilesAsReviewed:
          type: boolean
          description: markFilesAsReviewed
          example: true
        reviewFileMatchingCriteria:
          pattern: >-
            COMPLETE_FILEPATH|PARTIAL_FILEPATH|FILENAME|MD5|MD5_AND_FILENAME|MD5_AND_COMPLETE_FILEPATH|MD5_AND_PARTIAL_FILEPATH
          type: string
          description: reviewFileMatchingCriteria
          example: MD5_AND_COMPLETE_FILEPATH
        reviewDirectoryDepth:
          maximum: 20
          minimum: 1
          type: integer
          description: reviewDirectoryDepth
          format: int32
        resetInventoryUsage:
          type: boolean
          description: resetInventoryUsage
          example: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
