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