{
  "swagger" : "2.0",
  "info" : {
    "version" : "4.5.0",
    "title" : "Dependency-Track API"
  },
  "basePath" : "/api",
  "tags" : [ {
    "name" : "version"
  }, {
    "name" : "acl"
  }, {
    "name" : "analysis"
  }, {
    "name" : "badge"
  }, {
    "name" : "bom"
  }, {
    "name" : "calculator"
  }, {
    "name" : "component"
  }, {
    "name" : "configProperty"
  }, {
    "name" : "cwe"
  }, {
    "name" : "finding"
  }, {
    "name" : "ldap"
  }, {
    "name" : "licenseGroup"
  }, {
    "name" : "license"
  }, {
    "name" : "metrics"
  }, {
    "name" : "oidc"
  }, {
    "name" : "permission"
  }, {
    "name" : "policyCondition"
  }, {
    "name" : "policy"
  }, {
    "name" : "violation"
  }, {
    "name" : "projectProperty"
  }, {
    "name" : "project"
  }, {
    "name" : "repository"
  }, {
    "name" : "search"
  }, {
    "name" : "service"
  }, {
    "name" : "team"
  }, {
    "name" : "user"
  }, {
    "name" : "vex"
  }, {
    "name" : "violationanalysis"
  }, {
    "name" : "vulnerability"
  } ],
  "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",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/About"
            }
          }
        }
      }
    },
    "/v1/acl/mapping" : {
      "put" : {
        "tags" : [ "acl" ],
        "summary" : "Adds an ACL mapping",
        "description" : "",
        "operationId" : "addMapping",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/AclMappingRequest"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/AclMappingRequest"
            }
          },
          "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"
          }
        }
      }
    },
    "/v1/acl/mapping/team/{teamUuid}/project/{projectUuid}" : {
      "delete" : {
        "tags" : [ "acl" ],
        "summary" : "Removes an ACL mapping",
        "description" : "",
        "operationId" : "deleteMapping",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "teamUuid",
          "in" : "path",
          "description" : "The UUID of the team to delete the mapping for",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "projectUuid",
          "in" : "path",
          "description" : "The UUID of the project to delete the mapping for",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the team or project could not be found"
          }
        }
      }
    },
    "/v1/acl/team/{uuid}" : {
      "get" : {
        "tags" : [ "acl" ],
        "summary" : "Returns the projects assigned to the specified team",
        "description" : "",
        "operationId" : "retrieveProjects",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the team to retrieve mappings for",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "excludeInactive",
          "in" : "query",
          "description" : "Optionally excludes inactive projects from being returned",
          "required" : false,
          "type" : "boolean"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "type" : "string"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the team could not be found"
          }
        }
      }
    },
    "/v1/analysis" : {
      "get" : {
        "tags" : [ "analysis" ],
        "summary" : "Retrieves an analysis trail",
        "description" : "",
        "operationId" : "retrieveAnalysis",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "project",
          "in" : "query",
          "description" : "The UUID of the project",
          "required" : false,
          "type" : "string"
        }, {
          "name" : "component",
          "in" : "query",
          "description" : "The UUID of the component",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "vulnerability",
          "in" : "query",
          "description" : "The UUID of the vulnerability",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Analysis"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The project, component, or vulnerability could not be found"
          }
        }
      },
      "put" : {
        "tags" : [ "analysis" ],
        "summary" : "Records an analysis decision",
        "description" : "",
        "operationId" : "updateAnalysis",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/AnalysisRequest"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Analysis"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The project, component, or vulnerability could not be found"
          }
        }
      }
    },
    "/v1/badge/vulns/project/{name}/{version}" : {
      "get" : {
        "tags" : [ "badge" ],
        "summary" : "Returns current metrics for a specific project",
        "description" : "",
        "operationId" : "getProjectVulnerabilitiesBadge",
        "produces" : [ "image/svg+xml" ],
        "parameters" : [ {
          "name" : "name",
          "in" : "path",
          "description" : "The name of the project to query on",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "version",
          "in" : "path",
          "description" : "The version of the project to query on",
          "required" : true,
          "type" : "string"
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/ProjectMetrics"
            }
          },
          "204" : {
            "description" : "Badge support is disabled. No content will be returned."
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      }
    },
    "/v1/badge/vulns/project/{uuid}" : {
      "get" : {
        "tags" : [ "badge" ],
        "summary" : "Returns current metrics for a specific project",
        "description" : "",
        "operationId" : "getProjectVulnerabilitiesBadge_1",
        "produces" : [ "image/svg+xml" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the project to retrieve metrics for",
          "required" : true,
          "type" : "string"
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/ProjectMetrics"
            }
          },
          "204" : {
            "description" : "Badge support is disabled. No content will be returned."
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      }
    },
    "/v1/bom/cyclonedx/project/{uuid}" : {
      "get" : {
        "tags" : [ "bom" ],
        "summary" : "Returns dependency metadata for a project in CycloneDX format",
        "description" : "",
        "operationId" : "exportProjectAsCycloneDx",
        "produces" : [ "application/vnd.cyclonedx+xml", "application/vnd.cyclonedx+json", "application/octet-stream" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the project to export",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "format",
          "in" : "query",
          "description" : "The format to output (defaults to JSON)",
          "required" : false,
          "type" : "string"
        }, {
          "name" : "variant",
          "in" : "query",
          "description" : "Specifies the CycloneDX variant to export. Value options are 'inventory' and 'withVulnerabilities'. (defaults to 'inventory')",
          "required" : false,
          "type" : "string"
        }, {
          "name" : "download",
          "in" : "query",
          "description" : "Force the resulting BOM to be downloaded as a file (defaults to 'false')",
          "required" : false,
          "type" : "boolean"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "string"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      }
    },
    "/v1/bom/cyclonedx/component/{uuid}" : {
      "get" : {
        "tags" : [ "bom" ],
        "summary" : "Returns dependency metadata for a specific component in CycloneDX format",
        "description" : "",
        "operationId" : "exportComponentAsCycloneDx",
        "produces" : [ "application/vnd.cyclonedx+xml" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the component to export",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "format",
          "in" : "query",
          "description" : "The format to output (defaults to JSON)",
          "required" : false,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "string"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified component is forbidden"
          },
          "404" : {
            "description" : "The component could not be found"
          }
        }
      }
    },
    "/v1/bom" : {
      "post" : {
        "tags" : [ "bom" ],
        "summary" : "Upload a supported bill of material format document",
        "description" : "Expects CycloneDX along and a valid project UUID. If a UUID is not specified, then the projectName and projectVersion must be specified. Optionally, if autoCreate is specified and 'true' and the project does not exist, the project will be created. In this scenario, the principal making the request will additionally need the PORTFOLIO_MANAGEMENT or PROJECT_CREATION_UPLOAD permission.",
        "operationId" : "uploadBom",
        "consumes" : [ "multipart/form-data" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "project",
          "in" : "formData",
          "required" : false,
          "type" : "string"
        }, {
          "name" : "autoCreate",
          "in" : "formData",
          "required" : false,
          "type" : "boolean",
          "default" : false
        }, {
          "name" : "projectName",
          "in" : "formData",
          "required" : false,
          "type" : "string"
        }, {
          "name" : "projectVersion",
          "in" : "formData",
          "required" : false,
          "type" : "string"
        }, {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/FormDataMultiPart"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      },
      "put" : {
        "tags" : [ "bom" ],
        "summary" : "Upload a supported bill of material format document",
        "description" : "Expects CycloneDX along and a valid project UUID. If a UUID is not specified, then the projectName and projectVersion must be specified. Optionally, if autoCreate is specified and 'true' and the project does not exist, the project will be created. In this scenario, the principal making the request will additionally need the PORTFOLIO_MANAGEMENT or PROJECT_CREATION_UPLOAD permission.",
        "operationId" : "uploadBom_1",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/BomSubmitRequest"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      }
    },
    "/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" : "This endpoint is intended to be used in conjunction with uploading a supported BOM document. Upon upload, a token will be returned. The token can then be queried using this endpoint to determine if any tasks (such as vulnerability analysis) is being performed on the BOM. A value of true indicates processing is occurring. A value of false indicates that no processing is occurring for the specified token. However, a value of false also does not confirm the token is valid, only that no processing is associated with the specified token.",
        "operationId" : "isTokenBeingProcessed",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the token to query",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/calculator/cvss" : {
      "get" : {
        "tags" : [ "calculator" ],
        "summary" : "Returns the CVSS base score, impact sub-score and exploitability sub-score",
        "description" : "",
        "operationId" : "getCvssScores",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "vector",
          "in" : "query",
          "description" : "A valid CVSSv2 or CVSSv3 vector",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Score"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/component/project/{uuid}" : {
      "get" : {
        "tags" : [ "component" ],
        "summary" : "Returns a list of all components for a given project",
        "description" : "",
        "operationId" : "getAllComponents",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of components"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Component"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      },
      "put" : {
        "tags" : [ "component" ],
        "summary" : "Creates a new component",
        "description" : "",
        "operationId" : "createComponent",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "required" : true,
          "type" : "string"
        }, {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/Component"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "201" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Component"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      }
    },
    "/v1/component/hash/{hash}" : {
      "get" : {
        "tags" : [ "component" ],
        "summary" : "Returns a list of components that have the specified hash value",
        "description" : "",
        "operationId" : "getComponentByHash",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "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,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Component"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/component" : {
      "post" : {
        "tags" : [ "component" ],
        "summary" : "Updates a component",
        "description" : "",
        "operationId" : "updateComponent",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/Component"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Component"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified component is forbidden"
          },
          "404" : {
            "description" : "The UUID of the component could not be found"
          }
        }
      }
    },
    "/v1/component/{uuid}" : {
      "get" : {
        "tags" : [ "component" ],
        "summary" : "Returns a specific component",
        "description" : "",
        "operationId" : "getComponentByUuid",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the component to retrieve",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Component"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified component is forbidden"
          },
          "404" : {
            "description" : "The component could not be found"
          }
        }
      },
      "delete" : {
        "tags" : [ "component" ],
        "summary" : "Deletes a component",
        "description" : "",
        "operationId" : "deleteComponent",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the component to delete",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified component is forbidden"
          },
          "404" : {
            "description" : "The UUID of the component could not be found"
          }
        }
      }
    },
    "/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" : "",
        "operationId" : "getComponentByIdentity",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "group",
          "in" : "query",
          "description" : "The group of the component",
          "required" : false,
          "type" : "string"
        }, {
          "name" : "name",
          "in" : "query",
          "description" : "The name of the component",
          "required" : false,
          "type" : "string"
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "The version of the component",
          "required" : false,
          "type" : "string"
        }, {
          "name" : "purl",
          "in" : "query",
          "description" : "The purl of the component",
          "required" : false,
          "type" : "string"
        }, {
          "name" : "cpe",
          "in" : "query",
          "description" : "The cpe of the component",
          "required" : false,
          "type" : "string"
        }, {
          "name" : "swidTagId",
          "in" : "query",
          "description" : "The swidTagId of the component",
          "required" : false,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Component"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/component/internal/identify" : {
      "get" : {
        "tags" : [ "component" ],
        "summary" : "Requests the identification of internal components in the portfolio",
        "description" : "",
        "operationId" : "identifyInternalComponents",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/configProperty" : {
      "get" : {
        "tags" : [ "configProperty" ],
        "summary" : "Returns a list of all ConfigProperties for the specified groupName",
        "description" : "",
        "operationId" : "getConfigProperties",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/ConfigProperty"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      },
      "post" : {
        "tags" : [ "configProperty" ],
        "summary" : "Updates a config property",
        "description" : "",
        "operationId" : "updateConfigProperty",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/ConfigProperty"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/ConfigProperty"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The config property could not be found"
          }
        }
      }
    },
    "/v1/configProperty/aggregate" : {
      "post" : {
        "tags" : [ "configProperty" ],
        "summary" : "Updates an array of config properties",
        "description" : "",
        "operationId" : "updateConfigProperty_1",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/definitions/ConfigProperty"
            }
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/ConfigProperty"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "One or more config properties could not be found"
          }
        }
      }
    },
    "/v1/cwe" : {
      "get" : {
        "tags" : [ "cwe" ],
        "summary" : "Returns a list of all CWEs",
        "description" : "",
        "operationId" : "getCwes",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of CWEs"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Cwe"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/cwe/{cweId}" : {
      "get" : {
        "tags" : [ "cwe" ],
        "summary" : "Returns a specific CWE",
        "description" : "",
        "operationId" : "getCwe",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "cweId",
          "in" : "path",
          "description" : "The CWE ID of the CWE to retrieve",
          "required" : true,
          "type" : "integer",
          "format" : "int32"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Cwe"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The CWE could not be found"
          }
        }
      }
    },
    "/v1/finding/project/{uuid}" : {
      "get" : {
        "tags" : [ "finding" ],
        "summary" : "Returns a list of all findings for a specific project",
        "description" : "",
        "operationId" : "getFindingsByProject",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "suppressed",
          "in" : "query",
          "description" : "Optionally includes suppressed findings",
          "required" : false,
          "type" : "boolean"
        }, {
          "name" : "source",
          "in" : "query",
          "description" : "Optionally limit findings to specific sources of vulnerability intelligence",
          "required" : false,
          "type" : "string",
          "enum" : [ "NVD", "NPM", "GITHUB", "VULNDB", "OSSINDEX", "RETIREJS", "INTERNAL" ]
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of findings"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Finding"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      }
    },
    "/v1/finding/project/{uuid}/export" : {
      "get" : {
        "tags" : [ "finding" ],
        "summary" : "Returns the findings for the specified project as FPF",
        "description" : "",
        "operationId" : "exportFindingsByProject",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      }
    },
    "/v1/ldap/mapping" : {
      "put" : {
        "tags" : [ "ldap" ],
        "summary" : "Adds a mapping",
        "description" : "",
        "operationId" : "addMapping_1",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/MappedLdapGroupRequest"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/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"
          }
        }
      }
    },
    "/v1/ldap/mapping/{uuid}" : {
      "delete" : {
        "tags" : [ "ldap" ],
        "summary" : "Removes a mapping",
        "description" : "",
        "operationId" : "deleteMapping_1",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the mapping to delete",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/MappedLdapGroup"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the mapping could not be found"
          }
        }
      }
    },
    "/v1/ldap/groups" : {
      "get" : {
        "tags" : [ "ldap" ],
        "summary" : "Returns the DNs of all accessible groups within the directory",
        "description" : "This API performs a pass-thru query to the configured LDAP server. Search criteria results are cached using default Alpine CacheManager policy",
        "operationId" : "retrieveLdapGroups",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of ldap groups that match the specified search criteria"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "type" : "string"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/ldap/team/{uuid}" : {
      "get" : {
        "tags" : [ "ldap" ],
        "summary" : "Returns the DNs of all groups mapped to the specified team",
        "description" : "",
        "operationId" : "retrieveLdapGroups_1",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the team to retrieve mappings for",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "type" : "string"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the team could not be found"
          }
        }
      }
    },
    "/v1/licenseGroup" : {
      "get" : {
        "tags" : [ "licenseGroup" ],
        "summary" : "Returns a list of all license groups",
        "description" : "",
        "operationId" : "getLicenseGroups",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of license groups"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/LicenseGroup"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      },
      "post" : {
        "tags" : [ "licenseGroup" ],
        "summary" : "Updates a license group",
        "description" : "",
        "operationId" : "updateLicenseGroup",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/LicenseGroup"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/LicenseGroup"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The license group could not be found"
          }
        }
      },
      "put" : {
        "tags" : [ "licenseGroup" ],
        "summary" : "Creates a new license group",
        "description" : "",
        "operationId" : "createLicenseGroup",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/LicenseGroup"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "201" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/LicenseGroup"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "409" : {
            "description" : "A license group with the specified name already exists"
          }
        }
      }
    },
    "/v1/licenseGroup/{uuid}" : {
      "get" : {
        "tags" : [ "licenseGroup" ],
        "summary" : "Returns a specific license group",
        "description" : "",
        "operationId" : "getLicenseGroup",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the license group to retrieve",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/License"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The license group could not be found"
          }
        }
      },
      "delete" : {
        "tags" : [ "licenseGroup" ],
        "summary" : "Deletes a license group",
        "description" : "",
        "operationId" : "deleteLicenseGroup",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the license group to delete",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the license group could not be found"
          }
        }
      }
    },
    "/v1/licenseGroup/{uuid}/license/{licenseUuid}" : {
      "post" : {
        "tags" : [ "licenseGroup" ],
        "summary" : "Adds the license to the specified license group.",
        "description" : "",
        "operationId" : "addLicenseToLicenseGroup",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "A valid license group",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "licenseUuid",
          "in" : "path",
          "description" : "A valid license",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/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"
          }
        }
      },
      "delete" : {
        "tags" : [ "licenseGroup" ],
        "summary" : "Removes the license from the license group.",
        "description" : "",
        "operationId" : "removeLicenseFromLicenseGroup",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "A valid license group",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "licenseUuid",
          "in" : "path",
          "description" : "A valid license",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/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"
          }
        }
      }
    },
    "/v1/license" : {
      "get" : {
        "tags" : [ "license" ],
        "summary" : "Returns a list of all licenses with complete metadata for each license",
        "description" : "",
        "operationId" : "getLicenses",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of licenses"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/License"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/license/{licenseId}" : {
      "get" : {
        "tags" : [ "license" ],
        "summary" : "Returns a specific license",
        "description" : "",
        "operationId" : "getLicense",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "licenseId",
          "in" : "path",
          "description" : "The SPDX License ID of the license to retrieve",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/License"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The license could not be found"
          }
        }
      }
    },
    "/v1/license/concise" : {
      "get" : {
        "tags" : [ "license" ],
        "summary" : "Returns a concise listing of all licenses",
        "description" : "",
        "operationId" : "getLicenseListing",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/License"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/metrics/vulnerability" : {
      "get" : {
        "tags" : [ "metrics" ],
        "summary" : "Returns the sum of all vulnerabilities in the database by year and month",
        "description" : "",
        "operationId" : "getVulnerabilityMetrics",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/VulnerabilityMetrics"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/metrics/portfolio/since/{date}" : {
      "get" : {
        "tags" : [ "metrics" ],
        "summary" : "Returns historical metrics for the entire portfolio from a specific date",
        "description" : "Date format must be YYYYMMDD",
        "operationId" : "getPortfolioMetricsSince",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "date",
          "in" : "path",
          "description" : "The start date to retrieve metrics for",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/PortfolioMetrics"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/metrics/project/{uuid}/since/{date}" : {
      "get" : {
        "tags" : [ "metrics" ],
        "summary" : "Returns historical metrics for a specific project from a specific date",
        "description" : "Date format must be YYYYMMDD",
        "operationId" : "getProjectMetricsSince",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the project to retrieve metrics for",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "date",
          "in" : "path",
          "description" : "The start date to retrieve metrics for",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/ProjectMetrics"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      }
    },
    "/v1/metrics/portfolio/current" : {
      "get" : {
        "tags" : [ "metrics" ],
        "summary" : "Returns current metrics for the entire portfolio",
        "description" : "",
        "operationId" : "getPortfolioCurrentMetrics",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/PortfolioMetrics"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/metrics/portfolio/{days}/days" : {
      "get" : {
        "tags" : [ "metrics" ],
        "summary" : "Returns X days of historical metrics for the entire portfolio",
        "description" : "",
        "operationId" : "getPortfolioMetricsXDays",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "days",
          "in" : "path",
          "description" : "The number of days back to retrieve metrics for",
          "required" : true,
          "type" : "integer",
          "format" : "int32"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/PortfolioMetrics"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/metrics/portfolio/refresh" : {
      "get" : {
        "tags" : [ "metrics" ],
        "summary" : "Requests a refresh of the portfolio metrics",
        "description" : "",
        "operationId" : "RefreshPortfolioMetrics",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/PortfolioMetrics"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/metrics/project/{uuid}/current" : {
      "get" : {
        "tags" : [ "metrics" ],
        "summary" : "Returns current metrics for a specific project",
        "description" : "",
        "operationId" : "getProjectCurrentMetrics",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the project to retrieve metrics for",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/ProjectMetrics"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      }
    },
    "/v1/metrics/project/{uuid}/days/{days}" : {
      "get" : {
        "tags" : [ "metrics" ],
        "summary" : "Returns X days of historical metrics for a specific project",
        "description" : "",
        "operationId" : "getProjectMetricsXDays",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the project to retrieve metrics for",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "days",
          "in" : "path",
          "description" : "The number of days back to retrieve metrics for",
          "required" : true,
          "type" : "integer",
          "format" : "int32"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/ProjectMetrics"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      }
    },
    "/v1/metrics/project/{uuid}/refresh" : {
      "get" : {
        "tags" : [ "metrics" ],
        "summary" : "Requests a refresh of a specific projects metrics",
        "description" : "",
        "operationId" : "RefreshProjectMetrics",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the project to refresh metrics on",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      }
    },
    "/v1/metrics/component/{uuid}/current" : {
      "get" : {
        "tags" : [ "metrics" ],
        "summary" : "Returns current metrics for a specific component",
        "description" : "",
        "operationId" : "getComponentCurrentMetrics",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the component to retrieve metrics for",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/DependencyMetrics"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified component is forbidden"
          },
          "404" : {
            "description" : "The component could not be found"
          }
        }
      }
    },
    "/v1/metrics/component/{uuid}/since/{date}" : {
      "get" : {
        "tags" : [ "metrics" ],
        "summary" : "Returns historical metrics for a specific component from a specific date",
        "description" : "Date format must be YYYYMMDD",
        "operationId" : "getComponentMetricsSince",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the component to retrieve metrics for",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "date",
          "in" : "path",
          "description" : "The start date to retrieve metrics for",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/DependencyMetrics"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified component is forbidden"
          },
          "404" : {
            "description" : "The component could not be found"
          }
        }
      }
    },
    "/v1/metrics/component/{uuid}/days/{days}" : {
      "get" : {
        "tags" : [ "metrics" ],
        "summary" : "Returns X days of historical metrics for a specific component",
        "description" : "",
        "operationId" : "getComponentMetricsXDays",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the component to retrieve metrics for",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "days",
          "in" : "path",
          "description" : "The number of days back to retrieve metrics for",
          "required" : true,
          "type" : "integer",
          "format" : "int32"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/DependencyMetrics"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified component is forbidden"
          },
          "404" : {
            "description" : "The component could not be found"
          }
        }
      }
    },
    "/v1/metrics/component/{uuid}/refresh" : {
      "get" : {
        "tags" : [ "metrics" ],
        "summary" : "Requests a refresh of a specific components metrics",
        "description" : "",
        "operationId" : "RefreshComponentMetrics",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the component to refresh metrics on",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified component is forbidden"
          },
          "404" : {
            "description" : "The component could not be found"
          }
        }
      }
    },
    "/v1/notification/publisher" : {
      "get" : {
        "summary" : "Returns a list of all notification publishers",
        "description" : "",
        "operationId" : "getAllNotificationPublishers",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/NotificationPublisher"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/notification/publisher/test/smtp" : {
      "post" : {
        "summary" : "Dispatches a SMTP notification test",
        "description" : "",
        "operationId" : "testSmtpPublisherConfig",
        "consumes" : [ "application/x-www-form-urlencoded" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "destination",
          "in" : "formData",
          "required" : false,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/notification/rule" : {
      "get" : {
        "summary" : "Returns a list of all notification rules",
        "description" : "",
        "operationId" : "getAllNotificationRules",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of notification rules"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/NotificationRule"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      },
      "post" : {
        "summary" : "Updates a notification rule",
        "description" : "",
        "operationId" : "updateNotificationRule",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/NotificationRule"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/NotificationRule"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the notification rule could not be found"
          }
        }
      },
      "put" : {
        "summary" : "Creates a new notification rule",
        "description" : "",
        "operationId" : "createNotificationRule",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/NotificationRule"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "201" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/NotificationRule"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the notification publisher could not be found"
          }
        }
      },
      "delete" : {
        "summary" : "Deletes a notification rule",
        "description" : "",
        "operationId" : "deleteNotificationRule",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/NotificationRule"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the notification rule could not be found"
          }
        }
      }
    },
    "/v1/notification/rule/{ruleUuid}/project/{projectUuid}" : {
      "post" : {
        "summary" : "Adds a project to a notification rule",
        "description" : "",
        "operationId" : "addProjectToRule",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "ruleUuid",
          "in" : "path",
          "description" : "The UUID of the rule to add a project to",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "projectUuid",
          "in" : "path",
          "description" : "The UUID of the project to add to the rule",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/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"
          }
        }
      },
      "delete" : {
        "summary" : "Removes a project from a notification rule",
        "description" : "",
        "operationId" : "removeProjectFromRule",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "ruleUuid",
          "in" : "path",
          "description" : "The UUID of the rule to remove the project from",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "projectUuid",
          "in" : "path",
          "description" : "The UUID of the project to remove from the rule",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/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"
          }
        }
      }
    },
    "/v1/oidc/mapping" : {
      "put" : {
        "tags" : [ "oidc" ],
        "summary" : "Adds a mapping",
        "description" : "",
        "operationId" : "addMapping_2",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/MappedOidcGroupRequest"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/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"
          }
        }
      }
    },
    "/v1/oidc/group" : {
      "get" : {
        "tags" : [ "oidc" ],
        "summary" : "Returns a list of all groups",
        "description" : "",
        "operationId" : "retrieveGroups",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/OidcGroup"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      },
      "post" : {
        "tags" : [ "oidc" ],
        "summary" : "Updates group",
        "description" : "",
        "operationId" : "updateGroup",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/OidcGroup"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/OidcGroup"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      },
      "put" : {
        "tags" : [ "oidc" ],
        "summary" : "Creates group",
        "description" : "",
        "operationId" : "createGroup",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/OidcGroup"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "201" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/OidcGroup"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/oidc/available" : {
      "get" : {
        "tags" : [ "oidc" ],
        "summary" : "Indicates if OpenID Connect is available for this application",
        "description" : "",
        "operationId" : "isAvailable",
        "produces" : [ "text/plain" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "boolean"
            }
          }
        }
      }
    },
    "/v1/oidc/group/{uuid}" : {
      "delete" : {
        "tags" : [ "oidc" ],
        "summary" : "Deletes a group",
        "description" : "",
        "operationId" : "deleteGroup",
        "consumes" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the group to delete",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The group could not be found"
          }
        }
      }
    },
    "/v1/oidc/group/{uuid}/team" : {
      "get" : {
        "tags" : [ "oidc" ],
        "summary" : "Returns a list of teams associated with the specified group",
        "description" : "",
        "operationId" : "retrieveTeamsMappedToGroup",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the mapping to retrieve the team for",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Team"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the mapping could not be found"
          }
        }
      }
    },
    "/v1/oidc/mapping/{uuid}" : {
      "delete" : {
        "tags" : [ "oidc" ],
        "summary" : "Deletes a mapping",
        "description" : "",
        "operationId" : "deleteMappingByUuid",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the mapping to delete",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the mapping could not be found"
          }
        }
      }
    },
    "/v1/oidc/group/{groupUuid}/team/{teamUuid}/mapping" : {
      "delete" : {
        "tags" : [ "oidc" ],
        "summary" : "Deletes a mapping",
        "description" : "",
        "operationId" : "deleteMapping_2",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "groupUuid",
          "in" : "path",
          "description" : "The UUID of the group to delete a mapping for",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "teamUuid",
          "in" : "path",
          "description" : "The UUID of the team to delete a mapping for",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the mapping could not be found"
          }
        }
      }
    },
    "/v1/permission" : {
      "get" : {
        "tags" : [ "permission" ],
        "summary" : "Returns a list of all permissions",
        "description" : "",
        "operationId" : "getAllPermissions",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Permission"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/permission/{permission}/user/{username}" : {
      "post" : {
        "tags" : [ "permission" ],
        "summary" : "Adds the permission to the specified username.",
        "description" : "",
        "operationId" : "addPermissionToUser",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "username",
          "in" : "path",
          "description" : "A valid username",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "permission",
          "in" : "path",
          "description" : "A valid permission",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/UserPrincipal"
            }
          },
          "304" : {
            "description" : "The user already has the specified permission assigned"
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The user could not be found"
          }
        }
      },
      "delete" : {
        "tags" : [ "permission" ],
        "summary" : "Removes the permission from the user.",
        "description" : "",
        "operationId" : "removePermissionFromUser",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "username",
          "in" : "path",
          "description" : "A valid username",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "permission",
          "in" : "path",
          "description" : "A valid permission",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/UserPrincipal"
            }
          },
          "304" : {
            "description" : "The user already has the specified permission assigned"
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The user could not be found"
          }
        }
      }
    },
    "/v1/permission/{permission}/team/{uuid}" : {
      "post" : {
        "tags" : [ "permission" ],
        "summary" : "Adds the permission to the specified team.",
        "description" : "Requires 'manage users' permission.",
        "operationId" : "addPermissionToTeam",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "A valid team uuid",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "permission",
          "in" : "path",
          "description" : "A valid permission",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Team"
            }
          },
          "304" : {
            "description" : "The team already has the specified permission assigned"
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The team could not be found"
          }
        }
      },
      "delete" : {
        "tags" : [ "permission" ],
        "summary" : "Removes the permission from the team.",
        "description" : "",
        "operationId" : "removePermissionFromTeam",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "A valid team uuid",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "permission",
          "in" : "path",
          "description" : "A valid permission",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Team"
            }
          },
          "304" : {
            "description" : "The team already has the specified permission assigned"
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The team could not be found"
          }
        }
      }
    },
    "/v1/policy/condition/{uuid}" : {
      "delete" : {
        "tags" : [ "policyCondition" ],
        "summary" : "Deletes a policy condition",
        "description" : "",
        "operationId" : "deletePolicyCondition",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the policy condition to delete",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the policy condition could not be found"
          }
        }
      }
    },
    "/v1/policy/{uuid}/condition" : {
      "put" : {
        "tags" : [ "policyCondition" ],
        "summary" : "Creates a new policy condition",
        "description" : "",
        "operationId" : "createPolicyCondition",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the policy",
          "required" : true,
          "type" : "string"
        }, {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/PolicyCondition"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "201" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/PolicyCondition"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the policy could not be found"
          }
        }
      }
    },
    "/v1/policy/condition" : {
      "post" : {
        "tags" : [ "policyCondition" ],
        "summary" : "Updates a policy condition",
        "description" : "",
        "operationId" : "updatePolicyCondition",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/PolicyCondition"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/PolicyCondition"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the policy condition could not be found"
          }
        }
      }
    },
    "/v1/policy/{uuid}" : {
      "get" : {
        "tags" : [ "policy" ],
        "summary" : "Returns a specific policy",
        "description" : "",
        "operationId" : "getPolicy",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the policy to retrieve",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Policy"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The policy could not be found"
          }
        }
      },
      "delete" : {
        "tags" : [ "policy" ],
        "summary" : "Deletes a policy",
        "description" : "",
        "operationId" : "deletePolicy",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the policy to delete",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the policy could not be found"
          }
        }
      }
    },
    "/v1/policy" : {
      "get" : {
        "tags" : [ "policy" ],
        "summary" : "Returns a list of all policies",
        "description" : "",
        "operationId" : "getPolicies",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of policies"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Policy"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      },
      "post" : {
        "tags" : [ "policy" ],
        "summary" : "Updates a policy",
        "description" : "",
        "operationId" : "updatePolicy",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/Policy"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Policy"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The policy could not be found"
          }
        }
      },
      "put" : {
        "tags" : [ "policy" ],
        "summary" : "Creates a new policy",
        "description" : "",
        "operationId" : "createPolicy",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/Policy"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "201" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Policy"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "409" : {
            "description" : "A policy with the specified name already exists"
          }
        }
      }
    },
    "/v1/policy/{policyUuid}/project/{projectUuid}" : {
      "post" : {
        "tags" : [ "policy" ],
        "summary" : "Adds a project to a policy",
        "description" : "",
        "operationId" : "addProjectToPolicy",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "policyUuid",
          "in" : "path",
          "description" : "The UUID of the policy to add a project to",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "projectUuid",
          "in" : "path",
          "description" : "The UUID of the project to add to the rule",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Policy"
            }
          },
          "304" : {
            "description" : "The policy already has the specified project assigned"
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The policy or project could not be found"
          }
        }
      },
      "delete" : {
        "tags" : [ "policy" ],
        "summary" : "Removes a project from a policy",
        "description" : "",
        "operationId" : "removeProjectFromPolicy",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "policyUuid",
          "in" : "path",
          "description" : "The UUID of the policy to remove the project from",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "projectUuid",
          "in" : "path",
          "description" : "The UUID of the project to remove from the policy",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/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"
          }
        }
      }
    },
    "/v1/violation" : {
      "get" : {
        "tags" : [ "violation" ],
        "summary" : "Returns a list of all policy violations for the entire portfolio",
        "description" : "",
        "operationId" : "getViolations",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "suppressed",
          "in" : "query",
          "description" : "Optionally includes suppressed violations",
          "required" : false,
          "type" : "boolean"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of policy violations"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/PolicyViolation"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/violation/project/{uuid}" : {
      "get" : {
        "tags" : [ "violation" ],
        "summary" : "Returns a list of all policy violations for a specific project",
        "description" : "",
        "operationId" : "getViolationsByProject",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "suppressed",
          "in" : "query",
          "description" : "Optionally includes suppressed violations",
          "required" : false,
          "type" : "boolean"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of policy violations"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/PolicyViolation"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      }
    },
    "/v1/violation/component/{uuid}" : {
      "get" : {
        "tags" : [ "violation" ],
        "summary" : "Returns a list of all policy violations for a specific component",
        "description" : "",
        "operationId" : "getViolationsByComponent",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "suppressed",
          "in" : "query",
          "description" : "Optionally includes suppressed violations",
          "required" : false,
          "type" : "boolean"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of policy violations"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/PolicyViolation"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified component is forbidden"
          },
          "404" : {
            "description" : "The component could not be found"
          }
        }
      }
    },
    "/v1/project/{uuid}/property" : {
      "get" : {
        "tags" : [ "projectProperty" ],
        "summary" : "Returns a list of all ProjectProperties for the specified project",
        "description" : "",
        "operationId" : "getProperties",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the project to retrieve properties for",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/ProjectProperty"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      },
      "post" : {
        "tags" : [ "projectProperty" ],
        "summary" : "Updates a project property",
        "description" : "",
        "operationId" : "updateProperty",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the project to create a property for",
          "required" : true,
          "type" : "string"
        }, {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/ProjectProperty"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/ProjectProperty"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      },
      "put" : {
        "tags" : [ "projectProperty" ],
        "summary" : "Creates a new project property",
        "description" : "",
        "operationId" : "createProperty",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the project to create a property for",
          "required" : true,
          "type" : "string"
        }, {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/ProjectProperty"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "201" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/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"
          }
        }
      },
      "delete" : {
        "tags" : [ "projectProperty" ],
        "summary" : "Deletes a config property",
        "description" : "",
        "operationId" : "deleteProperty",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the project to delete a property from",
          "required" : true,
          "type" : "string"
        }, {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/ProjectProperty"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/ProjectProperty"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project or project property could not be found"
          }
        }
      }
    },
    "/v1/project" : {
      "get" : {
        "tags" : [ "project" ],
        "summary" : "Returns a list of all projects",
        "description" : "",
        "operationId" : "getProjects",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "name",
          "in" : "query",
          "description" : "The optional name of the project to query on",
          "required" : false,
          "type" : "string"
        }, {
          "name" : "excludeInactive",
          "in" : "query",
          "description" : "Optionally excludes inactive projects from being returned",
          "required" : false,
          "type" : "boolean"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of projects"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Project"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      },
      "post" : {
        "tags" : [ "project" ],
        "summary" : "Updates a project",
        "description" : "",
        "operationId" : "updateProject",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/Project"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Project"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the project could not be found"
          },
          "409" : {
            "description" : "A project with the specified name already exists"
          }
        }
      },
      "put" : {
        "tags" : [ "project" ],
        "summary" : "Creates a new project",
        "description" : "If a parent project exists, the UUID of the parent project is required ",
        "operationId" : "createProject",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/Project"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "201" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Project"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "409" : {
            "description" : "A project with the specified name already exists"
          }
        }
      }
    },
    "/v1/project/{uuid}" : {
      "get" : {
        "tags" : [ "project" ],
        "summary" : "Returns a specific project",
        "description" : "",
        "operationId" : "getProject",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the project to retrieve",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Project"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      },
      "delete" : {
        "tags" : [ "project" ],
        "summary" : "Deletes a project",
        "description" : "",
        "operationId" : "deleteProject",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the project to delete",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The UUID of the project could not be found"
          }
        }
      },
      "patch" : {
        "tags" : [ "project" ],
        "summary" : "Partially updates a project",
        "description" : "",
        "operationId" : "patchProject",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the project to modify",
          "required" : true,
          "type" : "string"
        }, {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/Project"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Project"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the project could not be found"
          },
          "409" : {
            "description" : "A project with the specified name already exists"
          }
        }
      }
    },
    "/v1/project/lookup" : {
      "get" : {
        "tags" : [ "project" ],
        "summary" : "Returns a specific project by its name and version",
        "description" : "",
        "operationId" : "getProject_1",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "name",
          "in" : "query",
          "description" : "The name of the project to query on",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "The version of the project to query on",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Project"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      }
    },
    "/v1/project/tag/{tag}" : {
      "get" : {
        "tags" : [ "project" ],
        "summary" : "Returns a list of all projects by tag",
        "description" : "",
        "operationId" : "getProjectsByTag",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "tag",
          "in" : "path",
          "description" : "The tag to query on",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "excludeInactive",
          "in" : "query",
          "description" : "Optionally excludes inactive projects from being returned",
          "required" : false,
          "type" : "boolean"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of projects with the tag"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Project"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/project/classifier/{classifier}" : {
      "get" : {
        "tags" : [ "project" ],
        "summary" : "Returns a list of all projects by classifier",
        "description" : "",
        "operationId" : "getProjectsByClassifier",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "classifier",
          "in" : "path",
          "description" : "The classifier to query on",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "excludeInactive",
          "in" : "query",
          "description" : "Optionally excludes inactive projects from being returned",
          "required" : false,
          "type" : "boolean"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of projects of the specified classifier"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Project"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/project/clone" : {
      "put" : {
        "tags" : [ "project" ],
        "summary" : "Clones a project",
        "description" : "",
        "operationId" : "cloneProject",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/CloneProjectRequest"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Project"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the project could not be found"
          }
        }
      }
    },
    "/v1/repository" : {
      "get" : {
        "tags" : [ "repository" ],
        "summary" : "Returns a list of all repositories",
        "description" : "",
        "operationId" : "getRepositories",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of repositories"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Repository"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      },
      "post" : {
        "tags" : [ "repository" ],
        "summary" : "Updates a repository",
        "description" : "",
        "operationId" : "updateRepository",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/Repository"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Repository"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the repository could not be found"
          }
        }
      },
      "put" : {
        "tags" : [ "repository" ],
        "summary" : "Creates a new repository",
        "description" : "",
        "operationId" : "createRepository",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/Repository"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "201" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Repository"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "409" : {
            "description" : "A repository with the specified identifier already exists"
          }
        }
      }
    },
    "/v1/repository/latest" : {
      "get" : {
        "tags" : [ "repository" ],
        "summary" : "Attempts to resolve the latest version of the component available in the configured repositories",
        "description" : "",
        "operationId" : "getRepositoryMetaComponent",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "purl",
          "in" : "query",
          "description" : "The Package URL for the component to query",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/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"
          }
        }
      }
    },
    "/v1/repository/{type}" : {
      "get" : {
        "tags" : [ "repository" ],
        "summary" : "Returns repositories that support the specific type",
        "description" : "",
        "operationId" : "getRepositoriesByType",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "type",
          "in" : "path",
          "description" : "The type of repositories to retrieve",
          "required" : true,
          "type" : "string",
          "enum" : [ "MAVEN", "NPM", "GEM", "PYPI", "NUGET", "HEX", "COMPOSER", "CARGO", "GO_MODULES", "UNSUPPORTED" ]
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of repositories"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Repository"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/repository/{uuid}" : {
      "delete" : {
        "tags" : [ "repository" ],
        "summary" : "Deletes a repository",
        "description" : "",
        "operationId" : "deleteRepository",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the repository to delete",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The UUID of the repository could not be found"
          }
        }
      }
    },
    "/v1/search" : {
      "get" : {
        "tags" : [ "search" ],
        "summary" : "Processes and returns search results",
        "description" : "",
        "operationId" : "aggregateSearch",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "query",
          "in" : "query",
          "required" : false,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/SearchResult"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/search/project" : {
      "get" : {
        "tags" : [ "search" ],
        "summary" : "Processes and returns search results",
        "description" : "Preferred search endpoint",
        "operationId" : "projectSearch",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "query",
          "in" : "query",
          "required" : false,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/SearchResult"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/search/component" : {
      "get" : {
        "tags" : [ "search" ],
        "summary" : "Processes and returns search results",
        "description" : "Preferred search endpoint",
        "operationId" : "componentSearch",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "query",
          "in" : "query",
          "required" : false,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/SearchResult"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/search/service" : {
      "get" : {
        "tags" : [ "search" ],
        "summary" : "Processes and returns search results",
        "description" : "Preferred search endpoint",
        "operationId" : "serviceSearch",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "query",
          "in" : "query",
          "required" : false,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/SearchResult"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/search/license" : {
      "get" : {
        "tags" : [ "search" ],
        "summary" : "Processes and returns search results",
        "description" : "Preferred search endpoint",
        "operationId" : "licenseSearch",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "query",
          "in" : "query",
          "required" : false,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/SearchResult"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/search/vulnerability" : {
      "get" : {
        "tags" : [ "search" ],
        "summary" : "Processes and returns search results",
        "description" : "Preferred search endpoint",
        "operationId" : "vulnerabilitySearch",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "query",
          "in" : "query",
          "required" : false,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/SearchResult"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/service/project/{uuid}" : {
      "get" : {
        "tags" : [ "service" ],
        "summary" : "Returns a list of all services for a given project",
        "description" : "",
        "operationId" : "getAllServices",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of services"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/ServiceComponent"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      },
      "put" : {
        "tags" : [ "service" ],
        "summary" : "Creates a new service",
        "description" : "",
        "operationId" : "createService",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "required" : true,
          "type" : "string"
        }, {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/ServiceComponent"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "201" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/ServiceComponent"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      }
    },
    "/v1/service/{uuid}" : {
      "get" : {
        "tags" : [ "service" ],
        "summary" : "Returns a specific service",
        "description" : "",
        "operationId" : "getServiceByUuid",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the service to retrieve",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/ServiceComponent"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified service is forbidden"
          },
          "404" : {
            "description" : "The service could not be found"
          }
        }
      },
      "delete" : {
        "tags" : [ "service" ],
        "summary" : "Deletes a service",
        "description" : "",
        "operationId" : "deleteService",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the service to delete",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified service is forbidden"
          },
          "404" : {
            "description" : "The UUID of the service could not be found"
          }
        }
      }
    },
    "/v1/service" : {
      "post" : {
        "tags" : [ "service" ],
        "summary" : "Updates a service",
        "description" : "",
        "operationId" : "updateService",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/ServiceComponent"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/ServiceComponent"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified service is forbidden"
          },
          "404" : {
            "description" : "The UUID of the service could not be found"
          }
        }
      }
    },
    "/v1/team/key/{apikey}" : {
      "post" : {
        "tags" : [ "team" ],
        "summary" : "Regenerates an API key by removing the specified key, generating a new one and returning its value",
        "description" : "",
        "operationId" : "regenerateApiKey",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "apikey",
          "in" : "path",
          "description" : "The API key to regenerate",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/ApiKey"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The API key could not be found"
          }
        }
      },
      "delete" : {
        "tags" : [ "team" ],
        "summary" : "Deletes the specified API key",
        "description" : "",
        "operationId" : "deleteApiKey",
        "parameters" : [ {
          "name" : "apikey",
          "in" : "path",
          "description" : "The API key to delete",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The API key could not be found"
          }
        }
      }
    },
    "/v1/team" : {
      "get" : {
        "tags" : [ "team" ],
        "summary" : "Returns a list of all teams",
        "description" : "",
        "operationId" : "getTeams",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of teams"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Team"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      },
      "post" : {
        "tags" : [ "team" ],
        "summary" : "Updates a team's fields including",
        "description" : "",
        "operationId" : "updateTeam",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/Team"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Team"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The team could not be found"
          }
        }
      },
      "put" : {
        "tags" : [ "team" ],
        "summary" : "Creates a new team along with an associated API key",
        "description" : "",
        "operationId" : "createTeam",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/Team"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "201" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Team"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      },
      "delete" : {
        "tags" : [ "team" ],
        "summary" : "Deletes a team",
        "description" : "",
        "operationId" : "deleteTeam",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/Team"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The team could not be found"
          }
        }
      }
    },
    "/v1/team/{uuid}" : {
      "get" : {
        "tags" : [ "team" ],
        "summary" : "Returns a specific team",
        "description" : "",
        "operationId" : "getTeam",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the team to retrieve",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Team"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The team could not be found"
          }
        }
      }
    },
    "/v1/team/self" : {
      "get" : {
        "tags" : [ "team" ],
        "summary" : "Returns information about the current team.",
        "description" : "",
        "operationId" : "getSelf",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/TeamSelfResponse"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "400" : {
            "description" : "Invalid API key supplied"
          },
          "404" : {
            "description" : "No Team for the given API key found"
          }
        }
      }
    },
    "/v1/team/{uuid}/key" : {
      "put" : {
        "tags" : [ "team" ],
        "summary" : "Generates an API key and returns its value",
        "description" : "",
        "operationId" : "generateApiKey",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the team to generate a key for",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "201" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/ApiKey"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The team could not be found"
          }
        }
      }
    },
    "/v1/user/oidc" : {
      "get" : {
        "tags" : [ "user" ],
        "summary" : "Returns a list of all OIDC users",
        "description" : "",
        "operationId" : "getOidcUsers",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of OIDC users"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/OidcUser"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      },
      "put" : {
        "tags" : [ "user" ],
        "summary" : "Creates a new user that references an existing OpenID Connect user.",
        "description" : "",
        "operationId" : "createOidcUser",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/OidcUser"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "201" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/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"
          }
        }
      },
      "delete" : {
        "tags" : [ "user" ],
        "summary" : "Deletes an OpenID Connect user.",
        "description" : "",
        "operationId" : "deleteOidcUser",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/OidcUser"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The user could not be found"
          }
        }
      }
    },
    "/v1/user/ldap" : {
      "get" : {
        "tags" : [ "user" ],
        "summary" : "Returns a list of all LDAP users",
        "description" : "",
        "operationId" : "getLdapUsers",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of LDAP users"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/LdapUser"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      },
      "put" : {
        "tags" : [ "user" ],
        "summary" : "Creates a new user that references an existing LDAP object.",
        "description" : "",
        "operationId" : "createLdapUser",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/LdapUser"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "201" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/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"
          }
        }
      },
      "delete" : {
        "tags" : [ "user" ],
        "summary" : "Deletes a user.",
        "description" : "",
        "operationId" : "deleteLdapUser",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/LdapUser"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The user could not be found"
          }
        }
      }
    },
    "/v1/user/managed" : {
      "get" : {
        "tags" : [ "user" ],
        "summary" : "Returns a list of all managed users",
        "description" : "",
        "operationId" : "getManagedUsers",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of managed users"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/ManagedUser"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      },
      "post" : {
        "tags" : [ "user" ],
        "summary" : "Updates a managed user.",
        "description" : "",
        "operationId" : "updateManagedUser",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/ManagedUser"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/ManagedUser"
            }
          },
          "400" : {
            "description" : "Missing required field"
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The user could not be found"
          }
        }
      },
      "put" : {
        "tags" : [ "user" ],
        "summary" : "Creates a new user.",
        "description" : "",
        "operationId" : "createManagedUser",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/ManagedUser"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "201" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/ManagedUser"
            }
          },
          "400" : {
            "description" : "Missing required field"
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "409" : {
            "description" : "A user with the same username already exists. Cannot create new user"
          }
        }
      },
      "delete" : {
        "tags" : [ "user" ],
        "summary" : "Deletes a user.",
        "description" : "",
        "operationId" : "deleteManagedUser",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/ManagedUser"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The user could not be found"
          }
        }
      }
    },
    "/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",
        "consumes" : [ "application/x-www-form-urlencoded" ],
        "produces" : [ "text/plain" ],
        "parameters" : [ {
          "name" : "username",
          "in" : "formData",
          "required" : false,
          "type" : "string"
        }, {
          "name" : "password",
          "in" : "formData",
          "required" : false,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "string"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Forbidden"
          }
        }
      }
    },
    "/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",
        "consumes" : [ "application/x-www-form-urlencoded" ],
        "produces" : [ "text/plain" ],
        "parameters" : [ {
          "name" : "idToken",
          "in" : "formData",
          "description" : "An OAuth2 access token",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "accessToken",
          "in" : "formData",
          "required" : false,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "string"
            }
          },
          "204" : {
            "description" : "No Content"
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Forbidden"
          }
        }
      }
    },
    "/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",
        "consumes" : [ "application/x-www-form-urlencoded" ],
        "produces" : [ "text/plain" ],
        "parameters" : [ {
          "name" : "username",
          "in" : "formData",
          "required" : false,
          "type" : "string"
        }, {
          "name" : "password",
          "in" : "formData",
          "required" : false,
          "type" : "string"
        }, {
          "name" : "newPassword",
          "in" : "formData",
          "required" : false,
          "type" : "string"
        }, {
          "name" : "confirmPassword",
          "in" : "formData",
          "required" : false,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "string"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Forbidden"
          }
        }
      }
    },
    "/v1/user/self" : {
      "get" : {
        "tags" : [ "user" ],
        "summary" : "Returns information about the current logged in user.",
        "description" : "",
        "operationId" : "getSelf_1",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/UserPrincipal"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      },
      "post" : {
        "tags" : [ "user" ],
        "summary" : "Updates information about the current logged in user.",
        "description" : "",
        "operationId" : "updateSelf",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/ManagedUser"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/UserPrincipal"
            }
          },
          "400" : {
            "description" : "An invalid payload was submitted or the user is not a managed user."
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/user/{username}/membership" : {
      "post" : {
        "tags" : [ "user" ],
        "summary" : "Adds the username to the specified team.",
        "description" : "",
        "operationId" : "addTeamToUser",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "username",
          "in" : "path",
          "description" : "A valid username",
          "required" : true,
          "type" : "string"
        }, {
          "in" : "body",
          "name" : "body",
          "description" : "The UUID of the team to associate username with",
          "required" : true,
          "schema" : {
            "$ref" : "#/definitions/IdentifiableObject"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/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"
          }
        }
      },
      "delete" : {
        "tags" : [ "user" ],
        "summary" : "Removes the username from the specified team.",
        "description" : "",
        "operationId" : "removeTeamFromUser",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "username",
          "in" : "path",
          "description" : "A valid username",
          "required" : true,
          "type" : "string"
        }, {
          "in" : "body",
          "name" : "body",
          "description" : "The UUID of the team to un-associate username from",
          "required" : true,
          "schema" : {
            "$ref" : "#/definitions/IdentifiableObject"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/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"
          }
        }
      }
    },
    "/v1/vex" : {
      "post" : {
        "tags" : [ "vex" ],
        "summary" : "Upload a supported VEX document",
        "description" : "Expects CycloneDX along and a valid project UUID. If a UUID is not specified, than the projectName and projectVersion must be specified.",
        "operationId" : "uploadVex",
        "consumes" : [ "multipart/form-data" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "project",
          "in" : "formData",
          "required" : false,
          "type" : "string"
        }, {
          "name" : "projectName",
          "in" : "formData",
          "required" : false,
          "type" : "string"
        }, {
          "name" : "projectVersion",
          "in" : "formData",
          "required" : false,
          "type" : "string"
        }, {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/FormDataMultiPart"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      },
      "put" : {
        "tags" : [ "vex" ],
        "summary" : "Upload a supported VEX document",
        "description" : "Expects CycloneDX along and a valid project UUID. If a UUID is not specified then the projectName and projectVersion must be specified.",
        "operationId" : "uploadVex_1",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/VexSubmitRequest"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      }
    },
    "/v1/vex/cyclonedx/project/{uuid}" : {
      "get" : {
        "tags" : [ "vex" ],
        "summary" : "Returns a VEX for a project in CycloneDX format",
        "description" : "",
        "operationId" : "exportProjectAsCycloneDx_1",
        "produces" : [ "application/vnd.cyclonedx+json", "application/octet-stream" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the project to export",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "download",
          "in" : "query",
          "description" : "Force the resulting VEX to be downloaded as a file (defaults to 'false')",
          "required" : false,
          "type" : "boolean"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "string"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      }
    },
    "/v1/violation/analysis" : {
      "get" : {
        "tags" : [ "violationanalysis" ],
        "summary" : "Retrieves a violation analysis trail",
        "description" : "",
        "operationId" : "retrieveAnalysis_1",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "component",
          "in" : "query",
          "description" : "The UUID of the component",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "policyViolation",
          "in" : "query",
          "description" : "The UUID of the policy violation",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/ViolationAnalysis"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The component or policy violation could not be found"
          }
        }
      },
      "put" : {
        "tags" : [ "violationanalysis" ],
        "summary" : "Records a violation analysis decision",
        "description" : "",
        "operationId" : "updateAnalysis_1",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/ViolationAnalysisRequest"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/ViolationAnalysis"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The component or policy violation could not be found"
          }
        }
      }
    },
    "/v1/vulnerability" : {
      "get" : {
        "tags" : [ "vulnerability" ],
        "summary" : "Returns a list of all vulnerabilities",
        "description" : "",
        "operationId" : "getAllVulnerabilities",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of vulnerabilities"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Vulnerability"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      },
      "post" : {
        "tags" : [ "vulnerability" ],
        "summary" : "Updates an internal vulnerability",
        "description" : "",
        "operationId" : "updateVulnerability",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/Vulnerability"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Project"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The vulnerability could not be found"
          },
          "406" : {
            "description" : "The vulnId may not be changed"
          }
        }
      },
      "put" : {
        "tags" : [ "vulnerability" ],
        "summary" : "Creates a new vulnerability",
        "description" : "",
        "operationId" : "createVulnerability",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "in" : "body",
          "name" : "body",
          "required" : false,
          "schema" : {
            "$ref" : "#/definitions/Vulnerability"
          }
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "201" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Vulnerability"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "409" : {
            "description" : "A vulnerability with the specified vulnId already exists"
          }
        }
      }
    },
    "/v1/vulnerability/source/{source}/vuln/{vuln}" : {
      "get" : {
        "tags" : [ "vulnerability" ],
        "summary" : "Returns a specific vulnerability",
        "description" : "",
        "operationId" : "getVulnerabilityByVulnId",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "source",
          "in" : "path",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "vuln",
          "in" : "path",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Vulnerability"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The vulnerability could not be found"
          }
        }
      }
    },
    "/v1/vulnerability/component/{uuid}" : {
      "get" : {
        "tags" : [ "vulnerability" ],
        "summary" : "Returns a list of all vulnerabilities for a specific component",
        "description" : "",
        "operationId" : "getVulnerabilitiesByComponent",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "suppressed",
          "in" : "query",
          "description" : "Optionally includes suppressed vulnerabilities",
          "required" : false,
          "type" : "boolean"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of vulnerabilities"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Vulnerability"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified component is forbidden"
          },
          "404" : {
            "description" : "The component could not be found"
          }
        }
      }
    },
    "/v1/vulnerability/project/{uuid}" : {
      "get" : {
        "tags" : [ "vulnerability" ],
        "summary" : "Returns a list of all vulnerabilities for a specific project",
        "description" : "",
        "operationId" : "getVulnerabilitiesByProject",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "suppressed",
          "in" : "query",
          "description" : "Optionally includes suppressed vulnerabilities",
          "required" : false,
          "type" : "boolean"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of vulnerabilities"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Vulnerability"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified project is forbidden"
          },
          "404" : {
            "description" : "The project could not be found"
          }
        }
      }
    },
    "/v1/vulnerability/{uuid}" : {
      "get" : {
        "tags" : [ "vulnerability" ],
        "summary" : "Returns a specific vulnerability",
        "description" : "",
        "operationId" : "getVulnerabilityByUuid",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the vulnerability",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/Vulnerability"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The vulnerability could not be found"
          }
        }
      },
      "delete" : {
        "tags" : [ "vulnerability" ],
        "summary" : "Deletes a vulnerability",
        "description" : "",
        "operationId" : "deleteVulnerability",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the vulnerability to delete",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "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."
          }
        }
      }
    },
    "/v1/vulnerability/source/{source}/vuln/{vuln}/projects" : {
      "get" : {
        "tags" : [ "vulnerability" ],
        "summary" : "Returns a list of all projects affected by a specific vulnerability",
        "description" : "",
        "operationId" : "getAffectedProject",
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "source",
          "in" : "path",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "vuln",
          "in" : "path",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "headers" : {
              "X-Total-Count" : {
                "type" : "integer",
                "format" : "int64",
                "description" : "The total number of projects"
              }
            },
            "schema" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/definitions/Project"
              }
            }
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "404" : {
            "description" : "The vulnerability could not be found"
          }
        }
      }
    },
    "/v1/vulnerability/vulnId" : {
      "get" : {
        "tags" : [ "vulnerability" ],
        "summary" : "Generates an internal vulnerability identifier",
        "description" : "",
        "operationId" : "generateInternalVulnerabilityIdentifier",
        "produces" : [ "application/json" ],
        "parameters" : [ ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "type" : "string"
            }
          },
          "401" : {
            "description" : "Unauthorized"
          }
        }
      }
    },
    "/v1/vulnerability/source/{source}/vuln/{vulnId}/component/{component}" : {
      "post" : {
        "tags" : [ "vulnerability" ],
        "summary" : "Assigns a vulnerability to a component",
        "description" : "",
        "operationId" : "assignVulnerability",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "source",
          "in" : "path",
          "description" : "The vulnerability source",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "vulnId",
          "in" : "path",
          "description" : "The vulnId",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "component",
          "in" : "path",
          "description" : "The UUID of the component",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified component is forbidden"
          },
          "404" : {
            "description" : "The vulnerability or component could not be found"
          }
        }
      },
      "delete" : {
        "tags" : [ "vulnerability" ],
        "summary" : "Removes assignment of a vulnerability from a component",
        "description" : "",
        "operationId" : "unassignVulnerability",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "source",
          "in" : "path",
          "description" : "The vulnerability source",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "vulnId",
          "in" : "path",
          "description" : "The vulnId",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "component",
          "in" : "path",
          "description" : "The UUID of the component",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified component is forbidden"
          },
          "404" : {
            "description" : "The vulnerability or component could not be found"
          }
        }
      }
    },
    "/v1/vulnerability/{uuid}/component/{component}" : {
      "post" : {
        "tags" : [ "vulnerability" ],
        "summary" : "Assigns a vulnerability to a component",
        "description" : "",
        "operationId" : "assignVulnerability_1",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the vulnerability",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "component",
          "in" : "path",
          "description" : "The UUID of the component",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified component is forbidden"
          },
          "404" : {
            "description" : "The vulnerability or component could not be found"
          }
        }
      },
      "delete" : {
        "tags" : [ "vulnerability" ],
        "summary" : "Removes assignment of a vulnerability from a component",
        "description" : "",
        "operationId" : "unassignVulnerability_1",
        "consumes" : [ "application/json" ],
        "produces" : [ "application/json" ],
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "The UUID of the vulnerability",
          "required" : true,
          "type" : "string"
        }, {
          "name" : "component",
          "in" : "path",
          "description" : "The UUID of the component",
          "required" : true,
          "type" : "string"
        } ],
        "security" : [ {
          "X-Api-Key" : [ ]
        } ],
        "responses" : {
          "401" : {
            "description" : "Unauthorized"
          },
          "403" : {
            "description" : "Access to the specified component is forbidden"
          },
          "404" : {
            "description" : "The vulnerability or component could not be found"
          }
        }
      }
    }
  },
  "securityDefinitions" : {
    "X-Api-Key" : {
      "type" : "apiKey",
      "name" : "X-Api-Key",
      "in" : "header"
    }
  },
  "definitions" : {
    "About" : {
      "type" : "object",
      "properties" : {
        "version" : {
          "type" : "string"
        },
        "timestamp" : {
          "type" : "string"
        },
        "systemUuid" : {
          "type" : "string"
        },
        "uuid" : {
          "type" : "string"
        },
        "application" : {
          "type" : "string"
        },
        "framework" : {
          "$ref" : "#/definitions/Framework"
        }
      }
    },
    "Framework" : {
      "type" : "object",
      "properties" : {
        "version" : {
          "type" : "string"
        },
        "timestamp" : {
          "type" : "string"
        },
        "uuid" : {
          "type" : "string"
        },
        "name" : {
          "type" : "string"
        }
      }
    },
    "AclMappingRequest" : {
      "type" : "object",
      "required" : [ "project", "team" ],
      "properties" : {
        "team" : {
          "type" : "string",
          "pattern" : "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        },
        "project" : {
          "type" : "string",
          "pattern" : "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        }
      }
    },
    "Analysis" : {
      "type" : "object",
      "required" : [ "analysisDetails", "analysisJustification", "analysisResponse", "analysisState" ],
      "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" : "#/definitions/AnalysisComment"
          }
        },
        "isSuppressed" : {
          "type" : "boolean"
        }
      }
    },
    "AnalysisComment" : {
      "type" : "object",
      "required" : [ "comment", "timestamp" ],
      "properties" : {
        "timestamp" : {
          "type" : "string",
          "format" : "date-time"
        },
        "comment" : {
          "type" : "string"
        },
        "commenter" : {
          "type" : "string"
        }
      }
    },
    "AnalysisRequest" : {
      "type" : "object",
      "required" : [ "component", "vulnerability" ],
      "properties" : {
        "project" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        },
        "component" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        },
        "vulnerability" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        },
        "analysisState" : {
          "type" : "string",
          "readOnly" : true,
          "enum" : [ "EXPLOITABLE", "IN_TRIAGE", "FALSE_POSITIVE", "NOT_AFFECTED", "RESOLVED", "NOT_SET" ]
        },
        "analysisJustification" : {
          "type" : "string",
          "readOnly" : true,
          "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",
          "readOnly" : true,
          "enum" : [ "CAN_NOT_FIX", "WILL_NOT_FIX", "UPDATE", "ROLLBACK", "WORKAROUND_AVAILABLE", "NOT_SET" ]
        },
        "analysisDetails" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        },
        "comment" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        },
        "suppressed" : {
          "type" : "boolean"
        }
      }
    },
    "PackageURL" : {
      "type" : "object",
      "properties" : {
        "scheme" : {
          "type" : "string"
        },
        "type" : {
          "type" : "string"
        },
        "namespace" : {
          "type" : "string"
        },
        "name" : {
          "type" : "string"
        },
        "version" : {
          "type" : "string"
        },
        "qualifiers" : {
          "type" : "object",
          "additionalProperties" : {
            "type" : "string"
          }
        },
        "subpath" : {
          "type" : "string"
        },
        "coordinates" : {
          "type" : "string"
        }
      }
    },
    "Project" : {
      "type" : "object",
      "required" : [ "uuid" ],
      "properties" : {
        "author" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "publisher" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "group" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "name" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "description" : {
          "type" : "string",
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "version" : {
          "type" : "string",
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "classifier" : {
          "type" : "string",
          "enum" : [ "APPLICATION", "FRAMEWORK", "LIBRARY", "CONTAINER", "OPERATING_SYSTEM", "DEVICE", "FIRMWARE", "FILE" ]
        },
        "cpe" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "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})"
        },
        "purl" : {
          "$ref" : "#/definitions/PackageURL"
        },
        "swidTagId" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "directDependencies" : {
          "type" : "string"
        },
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        },
        "parent" : {
          "$ref" : "#/definitions/Project"
        },
        "children" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Project"
          }
        },
        "properties" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/ProjectProperty"
          }
        },
        "tags" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Tag"
          }
        },
        "lastBomImport" : {
          "type" : "string",
          "format" : "date-time"
        },
        "lastBomImportFormat" : {
          "type" : "string"
        },
        "lastInheritedRiskScore" : {
          "type" : "number",
          "format" : "double"
        },
        "active" : {
          "type" : "boolean"
        },
        "metrics" : {
          "$ref" : "#/definitions/ProjectMetrics"
        }
      }
    },
    "ProjectMetrics" : {
      "type" : "object",
      "required" : [ "firstOccurrence", "lastOccurrence", "project" ],
      "properties" : {
        "project" : {
          "$ref" : "#/definitions/Project"
        },
        "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"
        },
        "firstOccurrence" : {
          "type" : "string",
          "format" : "date-time"
        },
        "lastOccurrence" : {
          "type" : "string",
          "format" : "date-time"
        }
      }
    },
    "ProjectProperty" : {
      "type" : "object",
      "required" : [ "propertyType" ],
      "properties" : {
        "project" : {
          "$ref" : "#/definitions/Project"
        },
        "groupName" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        },
        "propertyName" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        },
        "propertyValue" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 1024,
          "pattern" : "[\\P{Cc}]+"
        },
        "propertyType" : {
          "type" : "string",
          "enum" : [ "BOOLEAN", "INTEGER", "NUMBER", "STRING", "ENCRYPTEDSTRING", "TIMESTAMP", "URL", "UUID" ]
        },
        "description" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        }
      }
    },
    "Tag" : {
      "type" : "object",
      "properties" : {
        "name" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "projects" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Project"
          }
        }
      }
    },
    "BodyPart" : {
      "type" : "object",
      "properties" : {
        "contentDisposition" : {
          "$ref" : "#/definitions/ContentDisposition"
        },
        "entity" : {
          "type" : "object"
        },
        "headers" : {
          "type" : "object",
          "additionalProperties" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        },
        "mediaType" : {
          "$ref" : "#/definitions/MediaType"
        },
        "messageBodyWorkers" : {
          "$ref" : "#/definitions/MessageBodyWorkers"
        },
        "parent" : {
          "$ref" : "#/definitions/MultiPart"
        },
        "providers" : {
          "$ref" : "#/definitions/Providers"
        },
        "parameterizedHeaders" : {
          "type" : "object",
          "additionalProperties" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/definitions/ParameterizedHeader"
            }
          }
        }
      }
    },
    "ContentDisposition" : {
      "type" : "object",
      "properties" : {
        "type" : {
          "type" : "string"
        },
        "parameters" : {
          "type" : "object",
          "additionalProperties" : {
            "type" : "string"
          }
        },
        "fileName" : {
          "type" : "string"
        },
        "creationDate" : {
          "type" : "string",
          "format" : "date-time"
        },
        "modificationDate" : {
          "type" : "string",
          "format" : "date-time"
        },
        "readDate" : {
          "type" : "string",
          "format" : "date-time"
        },
        "size" : {
          "type" : "integer",
          "format" : "int64"
        }
      }
    },
    "FormDataBodyPart" : {
      "type" : "object",
      "properties" : {
        "contentDisposition" : {
          "$ref" : "#/definitions/ContentDisposition"
        },
        "entity" : {
          "type" : "object"
        },
        "headers" : {
          "type" : "object",
          "additionalProperties" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        },
        "mediaType" : {
          "$ref" : "#/definitions/MediaType"
        },
        "messageBodyWorkers" : {
          "$ref" : "#/definitions/MessageBodyWorkers"
        },
        "parent" : {
          "$ref" : "#/definitions/MultiPart"
        },
        "providers" : {
          "$ref" : "#/definitions/Providers"
        },
        "formDataContentDisposition" : {
          "$ref" : "#/definitions/FormDataContentDisposition"
        },
        "simple" : {
          "type" : "boolean"
        },
        "name" : {
          "type" : "string"
        },
        "value" : {
          "type" : "string"
        },
        "parameterizedHeaders" : {
          "type" : "object",
          "additionalProperties" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/definitions/ParameterizedHeader"
            }
          }
        }
      }
    },
    "FormDataContentDisposition" : {
      "type" : "object",
      "properties" : {
        "type" : {
          "type" : "string"
        },
        "parameters" : {
          "type" : "object",
          "additionalProperties" : {
            "type" : "string"
          }
        },
        "fileName" : {
          "type" : "string"
        },
        "creationDate" : {
          "type" : "string",
          "format" : "date-time"
        },
        "modificationDate" : {
          "type" : "string",
          "format" : "date-time"
        },
        "readDate" : {
          "type" : "string",
          "format" : "date-time"
        },
        "size" : {
          "type" : "integer",
          "format" : "int64"
        },
        "name" : {
          "type" : "string"
        }
      }
    },
    "FormDataMultiPart" : {
      "type" : "object",
      "properties" : {
        "contentDisposition" : {
          "$ref" : "#/definitions/ContentDisposition"
        },
        "entity" : {
          "type" : "object"
        },
        "headers" : {
          "type" : "object",
          "additionalProperties" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        },
        "mediaType" : {
          "$ref" : "#/definitions/MediaType"
        },
        "messageBodyWorkers" : {
          "$ref" : "#/definitions/MessageBodyWorkers"
        },
        "parent" : {
          "$ref" : "#/definitions/MultiPart"
        },
        "providers" : {
          "$ref" : "#/definitions/Providers"
        },
        "bodyParts" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/BodyPart"
          }
        },
        "fields" : {
          "type" : "object",
          "additionalProperties" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/definitions/FormDataBodyPart"
            }
          }
        },
        "parameterizedHeaders" : {
          "type" : "object",
          "additionalProperties" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/definitions/ParameterizedHeader"
            }
          }
        }
      }
    },
    "MediaType" : {
      "type" : "object",
      "properties" : {
        "type" : {
          "type" : "string"
        },
        "subtype" : {
          "type" : "string"
        },
        "parameters" : {
          "type" : "object",
          "additionalProperties" : {
            "type" : "string"
          }
        },
        "wildcardType" : {
          "type" : "boolean"
        },
        "wildcardSubtype" : {
          "type" : "boolean"
        }
      }
    },
    "MessageBodyWorkers" : {
      "type" : "object"
    },
    "MultiPart" : {
      "type" : "object",
      "properties" : {
        "contentDisposition" : {
          "$ref" : "#/definitions/ContentDisposition"
        },
        "entity" : {
          "type" : "object"
        },
        "headers" : {
          "type" : "object",
          "additionalProperties" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        },
        "mediaType" : {
          "$ref" : "#/definitions/MediaType"
        },
        "messageBodyWorkers" : {
          "$ref" : "#/definitions/MessageBodyWorkers"
        },
        "parent" : {
          "$ref" : "#/definitions/MultiPart"
        },
        "providers" : {
          "$ref" : "#/definitions/Providers"
        },
        "bodyParts" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/BodyPart"
          }
        },
        "parameterizedHeaders" : {
          "type" : "object",
          "additionalProperties" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/definitions/ParameterizedHeader"
            }
          }
        }
      }
    },
    "ParameterizedHeader" : {
      "type" : "object",
      "properties" : {
        "value" : {
          "type" : "string"
        },
        "parameters" : {
          "type" : "object",
          "additionalProperties" : {
            "type" : "string"
          }
        }
      }
    },
    "Providers" : {
      "type" : "object"
    },
    "BomSubmitRequest" : {
      "type" : "object",
      "required" : [ "bom", "project" ],
      "properties" : {
        "project" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        },
        "projectName" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "projectVersion" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "autoCreate" : {
          "type" : "boolean",
          "readOnly" : true
        },
        "bom" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
        }
      }
    },
    "Score" : {
      "type" : "object",
      "properties" : {
        "baseScore" : {
          "type" : "number",
          "format" : "double"
        },
        "impactSubScore" : {
          "type" : "number",
          "format" : "double"
        },
        "exploitabilitySubScore" : {
          "type" : "number",
          "format" : "double"
        },
        "temporalScore" : {
          "type" : "number",
          "format" : "double"
        },
        "environmentalScore" : {
          "type" : "number",
          "format" : "double"
        },
        "modifiedImpactSubScore" : {
          "type" : "number",
          "format" : "double"
        }
      }
    },
    "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"
        }
      }
    },
    "Component" : {
      "type" : "object",
      "required" : [ "project", "uuid" ],
      "properties" : {
        "author" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "publisher" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "group" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "name" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "version" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "classifier" : {
          "type" : "string",
          "enum" : [ "APPLICATION", "FRAMEWORK", "LIBRARY", "CONTAINER", "OPERATING_SYSTEM", "DEVICE", "FIRMWARE", "FILE" ]
        },
        "filename" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "^[\\p{Alnum}:/\\\\!@#$%^&{}\\[\\]()_+\\-=,.~'` ]{1,255}$"
        },
        "extension" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "^[\\p{Alnum}!@#$%^&{}\\[\\]()_+\\-=,.~'` ]{1,255}$"
        },
        "md5" : {
          "type" : "string",
          "pattern" : "^[0-9a-f]{32}$"
        },
        "sha1" : {
          "type" : "string",
          "pattern" : "^[0-9a-f]{40}$"
        },
        "sha256" : {
          "type" : "string",
          "pattern" : "^[0-9a-f]{64}$"
        },
        "sha384" : {
          "type" : "string",
          "pattern" : "^[0-9a-f]{96}$"
        },
        "sha512" : {
          "type" : "string",
          "pattern" : "^[0-9a-f]{128}$"
        },
        "sha3_256" : {
          "type" : "string",
          "pattern" : "^[0-9a-f]{64}$"
        },
        "sha3_384" : {
          "type" : "string",
          "pattern" : "^[0-9a-f]{96}$"
        },
        "sha3_512" : {
          "type" : "string",
          "pattern" : "^[0-9a-f]{128}$"
        },
        "blake2b_256" : {
          "type" : "string",
          "pattern" : "^[0-9a-f]{64}$"
        },
        "blake2b_384" : {
          "type" : "string",
          "pattern" : "^[0-9a-f]{96}$"
        },
        "blake2b_512" : {
          "type" : "string",
          "pattern" : "^[0-9a-f]{128}$"
        },
        "blake3" : {
          "type" : "string",
          "pattern" : "^[A-Fa-f0-9]*$"
        },
        "cpe" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "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})"
        },
        "purl" : {
          "$ref" : "#/definitions/PackageURL"
        },
        "purlCoordinates" : {
          "$ref" : "#/definitions/PackageURL"
        },
        "swidTagId" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "description" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 1024,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "copyright" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 1024,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "license" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "resolvedLicense" : {
          "$ref" : "#/definitions/License"
        },
        "directDependencies" : {
          "type" : "string"
        },
        "externalReferences" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/ExternalReference"
          }
        },
        "parent" : {
          "$ref" : "#/definitions/Component"
        },
        "children" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Component"
          }
        },
        "vulnerabilities" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Vulnerability"
          }
        },
        "project" : {
          "$ref" : "#/definitions/Project"
        },
        "lastInheritedRiskScore" : {
          "type" : "number",
          "format" : "double"
        },
        "notes" : {
          "type" : "string"
        },
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        },
        "bomRef" : {
          "type" : "string"
        },
        "metrics" : {
          "$ref" : "#/definitions/DependencyMetrics"
        },
        "repositoryMeta" : {
          "$ref" : "#/definitions/RepositoryMetaComponent"
        },
        "usedBy" : {
          "type" : "integer",
          "format" : "int32"
        },
        "isInternal" : {
          "type" : "boolean"
        }
      }
    },
    "Cwe" : {
      "type" : "object",
      "required" : [ "name" ],
      "properties" : {
        "cweId" : {
          "type" : "integer",
          "format" : "int32"
        },
        "name" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        }
      }
    },
    "DataClassification" : {
      "type" : "object",
      "properties" : {
        "direction" : {
          "type" : "string",
          "enum" : [ "INBOUND", "OUTBOUND", "BI_DIRECTIONAL", "UNKNOWN" ]
        },
        "name" : {
          "type" : "string"
        }
      }
    },
    "DependencyMetrics" : {
      "type" : "object",
      "required" : [ "component", "firstOccurrence", "lastOccurrence", "project" ],
      "properties" : {
        "project" : {
          "$ref" : "#/definitions/Project"
        },
        "component" : {
          "$ref" : "#/definitions/Component"
        },
        "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" : "string",
          "format" : "date-time"
        },
        "lastOccurrence" : {
          "type" : "string",
          "format" : "date-time"
        }
      }
    },
    "ExternalReference" : {
      "type" : "object",
      "properties" : {
        "type" : {
          "type" : "string",
          "enum" : [ "vcs", "issue-tracker", "website", "advisories", "bom", "mailing-list", "social", "chat", "documentation", "support", "distribution", "license", "build-meta", "build-system", "release-notes", "other" ]
        },
        "url" : {
          "type" : "string"
        },
        "comment" : {
          "type" : "string",
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        }
      }
    },
    "FindingAttribution" : {
      "type" : "object",
      "required" : [ "attributedOn", "component", "uuid", "vulnerability" ],
      "properties" : {
        "attributedOn" : {
          "type" : "string",
          "format" : "date-time"
        },
        "analyzerIdentity" : {
          "type" : "string",
          "enum" : [ "INTERNAL_ANALYZER", "OSSINDEX_ANALYZER", "NPM_AUDIT_ANALYZER", "VULNDB_ANALYZER", "NONE" ]
        },
        "component" : {
          "$ref" : "#/definitions/Component"
        },
        "vulnerability" : {
          "$ref" : "#/definitions/Vulnerability"
        },
        "alternateIdentifier" : {
          "type" : "string"
        },
        "referenceUrl" : {
          "type" : "string"
        },
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        }
      }
    },
    "License" : {
      "type" : "object",
      "required" : [ "uuid" ],
      "properties" : {
        "licenseGroups" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/LicenseGroup"
          }
        },
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        },
        "name" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "licenseText" : {
          "type" : "string"
        },
        "standardLicenseTemplate" : {
          "type" : "string"
        },
        "standardLicenseHeader" : {
          "type" : "string"
        },
        "licenseComments" : {
          "type" : "string"
        },
        "licenseId" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[a-zA-Z0-9_.\\-+]*$"
        },
        "isOsiApproved" : {
          "type" : "boolean"
        },
        "isFsfLibre" : {
          "type" : "boolean"
        },
        "isDeprecatedLicenseId" : {
          "type" : "boolean"
        },
        "seeAlso" : {
          "type" : "array",
          "items" : {
            "type" : "string"
          }
        }
      }
    },
    "LicenseGroup" : {
      "type" : "object",
      "required" : [ "uuid" ],
      "properties" : {
        "name" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "licenses" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/License"
          }
        },
        "riskWeight" : {
          "type" : "integer",
          "format" : "int32"
        },
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        }
      }
    },
    "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" : "#/definitions/OrganizationalContact"
          }
        }
      }
    },
    "RepositoryMetaComponent" : {
      "type" : "object",
      "required" : [ "lastCheck", "latestVersion", "name", "repositoryType" ],
      "properties" : {
        "repositoryType" : {
          "type" : "string",
          "enum" : [ "MAVEN", "NPM", "GEM", "PYPI", "NUGET", "HEX", "COMPOSER", "CARGO", "GO_MODULES", "UNSUPPORTED" ]
        },
        "namespace" : {
          "type" : "string"
        },
        "name" : {
          "type" : "string"
        },
        "latestVersion" : {
          "type" : "string"
        },
        "published" : {
          "type" : "string",
          "format" : "date-time"
        },
        "lastCheck" : {
          "type" : "string",
          "format" : "date-time"
        }
      }
    },
    "ServiceComponent" : {
      "type" : "object",
      "required" : [ "project", "uuid" ],
      "properties" : {
        "provider" : {
          "$ref" : "#/definitions/OrganizationalEntity"
        },
        "group" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "name" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "version" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "description" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 1024,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "endpoints" : {
          "type" : "array",
          "items" : {
            "type" : "string"
          }
        },
        "authenticated" : {
          "type" : "boolean"
        },
        "crossesTrustBoundary" : {
          "type" : "boolean"
        },
        "data" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/DataClassification"
          }
        },
        "externalReferences" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/ExternalReference"
          }
        },
        "parent" : {
          "$ref" : "#/definitions/ServiceComponent"
        },
        "children" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/ServiceComponent"
          }
        },
        "vulnerabilities" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Vulnerability"
          }
        },
        "project" : {
          "$ref" : "#/definitions/Project"
        },
        "lastInheritedRiskScore" : {
          "type" : "number",
          "format" : "double"
        },
        "notes" : {
          "type" : "string"
        },
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        },
        "bomRef" : {
          "type" : "string"
        }
      }
    },
    "Vulnerability" : {
      "type" : "object",
      "required" : [ "uuid" ],
      "properties" : {
        "vulnId" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "source" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        },
        "friendlyVulnId" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "title" : {
          "type" : "string",
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        },
        "subTitle" : {
          "type" : "string",
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        },
        "description" : {
          "type" : "string",
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        },
        "detail" : {
          "type" : "string",
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        },
        "recommendation" : {
          "type" : "string",
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        },
        "references" : {
          "type" : "string",
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        },
        "credits" : {
          "type" : "string",
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        },
        "created" : {
          "type" : "string",
          "format" : "date-time"
        },
        "published" : {
          "type" : "string",
          "format" : "date-time"
        },
        "updated" : {
          "type" : "string",
          "format" : "date-time"
        },
        "cwes" : {
          "type" : "array",
          "items" : {
            "type" : "integer",
            "format" : "int32"
          }
        },
        "cvssV2BaseScore" : {
          "type" : "number"
        },
        "cvssV2ImpactSubScore" : {
          "type" : "number"
        },
        "cvssV2ExploitabilitySubScore" : {
          "type" : "number"
        },
        "cvssV2Vector" : {
          "type" : "string",
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        },
        "cvssV3BaseScore" : {
          "type" : "number"
        },
        "cvssV3ImpactSubScore" : {
          "type" : "number"
        },
        "cvssV3ExploitabilitySubScore" : {
          "type" : "number"
        },
        "cvssV3Vector" : {
          "type" : "string",
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        },
        "severity" : {
          "type" : "string",
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$",
          "enum" : [ "CRITICAL", "HIGH", "MEDIUM", "LOW", "INFO", "UNASSIGNED" ]
        },
        "vulnerableVersions" : {
          "type" : "string",
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        },
        "patchedVersions" : {
          "type" : "string",
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        },
        "epssScore" : {
          "type" : "number"
        },
        "epssPercentile" : {
          "type" : "number"
        },
        "components" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Component"
          }
        },
        "serviceComponents" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/ServiceComponent"
          }
        },
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        },
        "affectedProjectCount" : {
          "type" : "integer",
          "format" : "int32"
        },
        "findingAttribution" : {
          "$ref" : "#/definitions/FindingAttribution"
        },
        "affectedComponents" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/AffectedComponent"
          }
        },
        "cwe" : {
          "$ref" : "#/definitions/Cwe"
        }
      }
    },
    "ConfigProperty" : {
      "type" : "object",
      "required" : [ "propertyType" ],
      "properties" : {
        "groupName" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        },
        "propertyName" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        },
        "propertyValue" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 1024,
          "pattern" : "[\\P{Cc}]+"
        },
        "propertyType" : {
          "type" : "string",
          "enum" : [ "BOOLEAN", "INTEGER", "NUMBER", "STRING", "ENCRYPTEDSTRING", "TIMESTAMP", "URL", "UUID" ]
        },
        "description" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        }
      }
    },
    "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"
        }
      }
    },
    "MappedLdapGroup" : {
      "type" : "object",
      "required" : [ "uuid" ],
      "properties" : {
        "dn" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        },
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        }
      }
    },
    "MappedLdapGroupRequest" : {
      "type" : "object",
      "required" : [ "dn", "team" ],
      "properties" : {
        "team" : {
          "type" : "string",
          "pattern" : "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        },
        "dn" : {
          "type" : "string",
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        }
      }
    },
    "VulnerabilityMetrics" : {
      "type" : "object",
      "required" : [ "measuredAt" ],
      "properties" : {
        "year" : {
          "type" : "integer",
          "format" : "int32"
        },
        "month" : {
          "type" : "integer",
          "format" : "int32"
        },
        "count" : {
          "type" : "integer",
          "format" : "int32"
        },
        "measuredAt" : {
          "type" : "string",
          "format" : "date-time"
        }
      }
    },
    "PortfolioMetrics" : {
      "type" : "object",
      "required" : [ "firstOccurrence", "lastOccurrence" ],
      "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" : "string",
          "format" : "date-time"
        },
        "lastOccurrence" : {
          "type" : "string",
          "format" : "date-time"
        }
      }
    },
    "NotificationPublisher" : {
      "type" : "object",
      "required" : [ "name", "publisherClass", "templateMimeType", "uuid" ],
      "properties" : {
        "name" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255
        },
        "description" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 1024
        },
        "publisherClass" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 1024
        },
        "template" : {
          "type" : "string"
        },
        "templateMimeType" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255
        },
        "defaultPublisher" : {
          "type" : "boolean"
        },
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        }
      }
    },
    "NotificationRule" : {
      "type" : "object",
      "required" : [ "name", "scope", "uuid" ],
      "properties" : {
        "name" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "enabled" : {
          "type" : "boolean"
        },
        "scope" : {
          "type" : "string",
          "enum" : [ "SYSTEM", "PORTFOLIO" ]
        },
        "notificationLevel" : {
          "type" : "string",
          "enum" : [ "INFORMATIONAL", "WARNING", "ERROR" ]
        },
        "projects" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Project"
          }
        },
        "notifyOn" : {
          "type" : "array",
          "uniqueItems" : true,
          "items" : {
            "type" : "string",
            "enum" : [ "CONFIGURATION", "DATASOURCE_MIRRORING", "REPOSITORY", "INTEGRATION", "INDEXING_SERVICE", "FILE_SYSTEM", "ANALYZER", "NEW_VULNERABILITY", "NEW_VULNERABLE_DEPENDENCY", "PROJECT_AUDIT_CHANGE", "BOM_CONSUMED", "BOM_PROCESSED", "VEX_CONSUMED", "VEX_PROCESSED", "POLICY_VIOLATION" ]
          }
        },
        "message" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 1024,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "publisher" : {
          "$ref" : "#/definitions/NotificationPublisher"
        },
        "publisherConfig" : {
          "type" : "string"
        },
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        }
      }
    },
    "MappedOidcGroup" : {
      "type" : "object",
      "required" : [ "uuid" ],
      "properties" : {
        "group" : {
          "$ref" : "#/definitions/OidcGroup"
        },
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        }
      }
    },
    "OidcGroup" : {
      "type" : "object",
      "required" : [ "uuid" ],
      "properties" : {
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        },
        "name" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        }
      }
    },
    "MappedOidcGroupRequest" : {
      "type" : "object",
      "required" : [ "group", "team" ],
      "properties" : {
        "team" : {
          "type" : "string",
          "pattern" : "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        },
        "group" : {
          "type" : "string",
          "pattern" : "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        }
      }
    },
    "ApiKey" : {
      "type" : "object",
      "required" : [ "key" ],
      "properties" : {
        "key" : {
          "type" : "string",
          "minLength" : 32,
          "maxLength" : 255,
          "pattern" : "^\\p{Alnum}*$"
        }
      }
    },
    "LdapUser" : {
      "type" : "object",
      "properties" : {
        "username" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        },
        "dn" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        },
        "teams" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Team"
          }
        },
        "email" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        },
        "permissions" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Permission"
          }
        }
      }
    },
    "ManagedUser" : {
      "type" : "object",
      "required" : [ "lastPasswordChange" ],
      "properties" : {
        "username" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        },
        "newPassword" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        },
        "confirmPassword" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        },
        "lastPasswordChange" : {
          "type" : "string",
          "format" : "date-time"
        },
        "fullname" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        },
        "email" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        },
        "suspended" : {
          "type" : "boolean"
        },
        "forcePasswordChange" : {
          "type" : "boolean"
        },
        "nonExpiryPassword" : {
          "type" : "boolean"
        },
        "teams" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Team"
          }
        },
        "permissions" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Permission"
          }
        }
      }
    },
    "OidcUser" : {
      "type" : "object",
      "properties" : {
        "username" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        },
        "subjectIdentifier" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        },
        "email" : {
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        },
        "teams" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Team"
          }
        },
        "permissions" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Permission"
          }
        }
      }
    },
    "Permission" : {
      "type" : "object",
      "properties" : {
        "name" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[a-zA-Z_0-9]*$"
        },
        "description" : {
          "type" : "string"
        }
      }
    },
    "Team" : {
      "type" : "object",
      "required" : [ "uuid" ],
      "properties" : {
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        },
        "name" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "[\\P{Cc}]+"
        },
        "apiKeys" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/ApiKey"
          }
        },
        "ldapUsers" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/LdapUser"
          }
        },
        "managedUsers" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/ManagedUser"
          }
        },
        "oidcUsers" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/OidcUser"
          }
        },
        "mappedLdapGroups" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/MappedLdapGroup"
          }
        },
        "mappedOidcGroups" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/MappedOidcGroup"
          }
        },
        "permissions" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Permission"
          }
        }
      }
    },
    "UserPrincipal" : {
      "type" : "object",
      "properties" : {
        "permissions" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Permission"
          }
        },
        "teams" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Team"
          }
        },
        "username" : {
          "type" : "string"
        },
        "email" : {
          "type" : "string"
        },
        "id" : {
          "type" : "integer",
          "format" : "int64"
        },
        "name" : {
          "type" : "string"
        }
      }
    },
    "Policy" : {
      "type" : "object",
      "required" : [ "uuid" ],
      "properties" : {
        "name" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "operator" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$",
          "enum" : [ "ALL", "ANY" ]
        },
        "violationState" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$",
          "enum" : [ "INFO", "WARN", "FAIL" ]
        },
        "policyConditions" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/PolicyCondition"
          }
        },
        "projects" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Project"
          }
        },
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        },
        "global" : {
          "type" : "boolean"
        }
      }
    },
    "PolicyCondition" : {
      "type" : "object",
      "required" : [ "uuid" ],
      "properties" : {
        "policy" : {
          "$ref" : "#/definitions/Policy"
        },
        "operator" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$",
          "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" ]
        },
        "subject" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$",
          "enum" : [ "COORDINATES", "CPE", "LICENSE", "LICENSE_GROUP", "PACKAGE_URL", "SEVERITY", "SWID_TAGID", "VERSION" ]
        },
        "value" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        }
      }
    },
    "PolicyViolation" : {
      "type" : "object",
      "required" : [ "uuid" ],
      "properties" : {
        "type" : {
          "type" : "string",
          "enum" : [ "LICENSE", "SECURITY", "OPERATIONAL" ]
        },
        "project" : {
          "$ref" : "#/definitions/Project"
        },
        "component" : {
          "$ref" : "#/definitions/Component"
        },
        "policyCondition" : {
          "$ref" : "#/definitions/PolicyCondition"
        },
        "timestamp" : {
          "type" : "string",
          "format" : "date-time"
        },
        "text" : {
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 255,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "analysis" : {
          "$ref" : "#/definitions/ViolationAnalysis"
        },
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        }
      }
    },
    "ViolationAnalysis" : {
      "type" : "object",
      "required" : [ "analysisState" ],
      "properties" : {
        "analysisState" : {
          "type" : "string",
          "enum" : [ "APPROVED", "REJECTED", "NOT_SET" ]
        },
        "analysisComments" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/ViolationAnalysisComment"
          }
        },
        "isSuppressed" : {
          "type" : "boolean"
        }
      }
    },
    "ViolationAnalysisComment" : {
      "type" : "object",
      "required" : [ "comment", "timestamp" ],
      "properties" : {
        "timestamp" : {
          "type" : "string",
          "format" : "date-time"
        },
        "comment" : {
          "type" : "string"
        },
        "commenter" : {
          "type" : "string"
        }
      }
    },
    "CloneProjectRequest" : {
      "type" : "object",
      "required" : [ "project", "version" ],
      "properties" : {
        "project" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        },
        "version" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        }
      }
    },
    "Repository" : {
      "type" : "object",
      "required" : [ "enabled", "internal", "resolutionOrder", "type", "uuid" ],
      "properties" : {
        "type" : {
          "type" : "string",
          "enum" : [ "MAVEN", "NPM", "GEM", "PYPI", "NUGET", "HEX", "COMPOSER", "CARGO", "GO_MODULES", "UNSUPPORTED" ]
        },
        "identifier" : {
          "type" : "string"
        },
        "url" : {
          "type" : "string"
        },
        "resolutionOrder" : {
          "type" : "integer",
          "format" : "int32"
        },
        "enabled" : {
          "type" : "boolean"
        },
        "internal" : {
          "type" : "boolean"
        },
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        }
      }
    },
    "SearchResult" : {
      "type" : "object",
      "properties" : {
        "results" : {
          "type" : "object",
          "additionalProperties" : {
            "type" : "array",
            "items" : {
              "type" : "object",
              "additionalProperties" : {
                "type" : "string"
              }
            }
          }
        }
      }
    },
    "TeamSelfResponse" : {
      "type" : "object",
      "properties" : {
        "uuid" : {
          "type" : "string",
          "format" : "uuid"
        },
        "name" : {
          "type" : "string"
        },
        "permissions" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Permission"
          }
        }
      }
    },
    "IdentifiableObject" : {
      "type" : "object",
      "properties" : {
        "uuid" : {
          "type" : "string"
        }
      }
    },
    "VexSubmitRequest" : {
      "type" : "object",
      "required" : [ "project", "vex" ],
      "properties" : {
        "project" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        },
        "projectName" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "projectVersion" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]*$"
        },
        "vex" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
        }
      }
    },
    "ViolationAnalysisRequest" : {
      "type" : "object",
      "required" : [ "component", "policyViolation" ],
      "properties" : {
        "component" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        },
        "policyViolation" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        },
        "analysisState" : {
          "type" : "string",
          "readOnly" : true,
          "enum" : [ "APPROVED", "REJECTED", "NOT_SET" ]
        },
        "comment" : {
          "type" : "string",
          "readOnly" : true,
          "pattern" : "^[\\p{IsWhite_Space}\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\n\\r\\t]*$"
        },
        "suppressed" : {
          "type" : "boolean"
        }
      }
    }
  }
}