diff --git a/contracts/viper/openapi.json b/contracts/viper/openapi.json index d695f8c..43ecbf5 100644 --- a/contracts/viper/openapi.json +++ b/contracts/viper/openapi.json @@ -1 +1 @@ -{"openapi":"3.1.0","info":{"title":"PATCH Vulnerability Management API","description":"API for managing assets, vulnerabilities, and remediations in hospital environments","version":"1.0.0"},"servers":[{"url":"https://viper-xi.vercel.app/api/v1"}],"tags":[{"name":"Assets"},{"name":"Vulnerabilities"},{"name":"Remediations"},{"name":"DeviceArtifacts"},{"name":"Artifacts"},{"name":"DeviceGroups"}],"externalDocs":{"url":"https://github.com/PATCH-UPGRADE"},"paths":{"/assets":{"get":{"operationId":"assets-getMany","summary":"List Assets","description":"Get all assets. Any authenticated user can view all assets.","tags":["Assets"],"security":[{"Authorization":[]}],"parameters":[{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ip":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"type":"string"},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"anyOf":[{},{"type":"null"}]},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","ip","deviceGroup","role","upstreamApi","networkSegment","hostname","macAddress","serialNumber","location","status","utilization","userId","createdAt","updatedAt","user"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"post":{"operationId":"assets-create","summary":"Create Asset","description":"Create a new asset. The authenticated user will be recorded as the creator.","tags":["Assets"],"security":[{"Authorization":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ip":{"type":"string","minLength":1},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"cpe":{"anyOf":[{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"},{"type":"null"}]},"role":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"upstreamApi":{"type":"string","format":"uri"},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"type":"object","properties":{"facility":{"type":"string"},"building":{"type":"string"},"floor":{"type":"string"},"room":{"type":"string"}}},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{"type":"array","items":{"type":"object","propertyNames":{"type":"string","pattern":"^(?:[0-9]|1[0-9]|2[0-3])$"},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},{"type":"null"}]}},"required":["ip","upstreamApi"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"ip":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"type":"string"},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"anyOf":[{},{"type":"null"}]},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","ip","deviceGroup","role","upstreamApi","networkSegment","hostname","macAddress","serialNumber","location","status","utilization","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceGroups/{deviceGroupId}/assets":{"get":{"operationId":"assets-getManyByDeviceGroup","summary":"List Assets by Device Group","description":"Get all assets affecting a specific device group. Any authenticated user can view all assets.","tags":["Assets","DeviceGroups"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"deviceGroupId","schema":{"type":"string"},"required":true},{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ip":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"type":"string"},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"anyOf":[{},{"type":"null"}]},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","ip","deviceGroup","role","upstreamApi","networkSegment","hostname","macAddress","serialNumber","location","status","utilization","userId","createdAt","updatedAt","user"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/assets/{id}":{"get":{"operationId":"assets-getOne","summary":"Get Asset","description":"Get a single asset by ID. Any authenticated user can view any asset.","tags":["Assets"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"ip":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"type":"string"},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"anyOf":[{},{"type":"null"}]},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","ip","deviceGroup","role","upstreamApi","networkSegment","hostname","macAddress","serialNumber","location","status","utilization","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"delete":{"operationId":"assets-remove","summary":"Delete Asset","description":"Delete an asset. Only the user who created the asset can delete it.","tags":["Assets"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"ip":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"type":"string"},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"anyOf":[{},{"type":"null"}]},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","ip","deviceGroup","role","upstreamApi","networkSegment","hostname","macAddress","serialNumber","location","status","utilization","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"patch":{"operationId":"assets-update","summary":"Update Asset","description":"Partially update an asset. Only the user who created the asset can update it.","tags":["Assets"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ip":{"type":"string","minLength":1},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"cpe":{"anyOf":[{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"},{"type":"null"}]},"role":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"upstreamApi":{"type":"string","format":"uri"},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"type":"object","properties":{"facility":{"type":"string"},"building":{"type":"string"},"floor":{"type":"string"},"room":{"type":"string"}}},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{"type":"array","items":{"type":"object","propertyNames":{"type":"string","pattern":"^(?:[0-9]|1[0-9]|2[0-3])$"},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},{"type":"null"}]}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"ip":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"type":"string"},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"anyOf":[{},{"type":"null"}]},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","ip","deviceGroup","role","upstreamApi","networkSegment","hostname","macAddress","serialNumber","location","status","utilization","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/assets/bulk":{"post":{"operationId":"assets-createBulk","summary":"Create Bulk Assets","description":"Create one or more new assets from an array. The authenticated user will be recorded as the creator.","tags":["Assets"],"security":[{"Authorization":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assets":{"minItems":1,"type":"array","items":{"type":"object","properties":{"ip":{"type":"string","minLength":1},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"cpe":{"anyOf":[{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"},{"type":"null"}]},"role":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"upstreamApi":{"type":"string","format":"uri"},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"type":"object","properties":{"facility":{"type":"string"},"building":{"type":"string"},"floor":{"type":"string"},"room":{"type":"string"}}},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{"type":"array","items":{"type":"object","propertyNames":{"type":"string","pattern":"^(?:[0-9]|1[0-9]|2[0-3])$"},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},{"type":"null"}]}},"required":["ip","upstreamApi"]}}},"required":["assets"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ip":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"type":"string"},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"anyOf":[{},{"type":"null"}]},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","ip","deviceGroup","role","upstreamApi","networkSegment","hostname","macAddress","serialNumber","location","status","utilization","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/assets/integrationUpload/{token}":{"post":{"operationId":"assets-processIntegrationCreate","summary":"Synchronize assets with integration","description":"Synchronize Assets on VIPER from a partnered platform","tags":["Assets"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"token","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"ip":{"type":"string","minLength":1},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"cpe":{"anyOf":[{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"},{"type":"null"}]},"role":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"upstreamApi":{"type":"string","format":"uri"},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"type":"object","properties":{"facility":{"type":"string"},"building":{"type":"string"},"floor":{"type":"string"},"room":{"type":"string"}}},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{"type":"array","items":{"type":"object","propertyNames":{"type":"string","pattern":"^(?:[0-9]|1[0-9]|2[0-3])$"},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},{"type":"null"}]},"vendorId":{"type":"string"}},"required":["ip","upstreamApi","vendorId"]}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"next":{"anyOf":[{"type":"string"},{"type":"null"}]},"previous":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","page","pageSize","totalCount","totalPages","next","previous"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"createdItemsCount":{"type":"number"},"updatedItemsCount":{"type":"number"},"shouldRetry":{"type":"boolean"},"syncedAt":{"type":"string"}},"required":["message","createdItemsCount","updatedItemsCount","shouldRetry","syncedAt"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/vulnerabilities":{"get":{"operationId":"vulnerabilities-getMany","summary":"List Vulnerabilities","description":"Get all vulnerabilities. Any authenticated user can view all vulnerabilities.","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"affectedDeviceGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","affectedDeviceGroups","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"post":{"operationId":"vulnerabilities-create","summary":"Create Vulnerability","description":"Create a new vulnerability. The authenticated user will be recorded as the creator.","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cpes":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"}},"sarif":{},"cveId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"description":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"impact":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"cvssScore":{"anyOf":[{"type":"number","minimum":0,"maximum":10},{"type":"null"}]},"cvssVector":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"affectedComponents":{"type":"array","items":{"type":"string","minLength":1}},"exploitUri":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"deviceArtifactId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]}},"required":["cpes","sarif"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"affectedDeviceGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","affectedDeviceGroups","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceGroups/{deviceGroupId}/vulnerabilities":{"get":{"operationId":"vulnerabilities-getManyByDeviceGroup","summary":"List Vulnerabilities by Device Group","description":"Get all vulnerabilities affecting a specific device group. Any authenticated user can view all vulnerabilities.","tags":["Vulnerabilities","DeviceGroups"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"deviceGroupId","schema":{"type":"string"},"required":true},{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"affectedDeviceGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","affectedDeviceGroups","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/vulnerabilities/{id}":{"get":{"operationId":"vulnerabilities-getOne","summary":"Get Vulnerability","description":"Get a single vulnerability by ID. Any authenticated user can view any vulnerability.","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"affectedDeviceGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","affectedDeviceGroups","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"delete":{"operationId":"vulnerabilities-remove","summary":"Delete Vulnerability","description":"Delete a vulnerability. Only the user who created the vulnerability can delete it.","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"affectedDeviceGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","affectedDeviceGroups","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"put":{"operationId":"vulnerabilities-update","summary":"Update Vulnerability","description":"Update a vulnerability. Only the user who created the vulnerability can update it.","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"cpes":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"}},"sarif":{},"cveId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"description":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"impact":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"cvssScore":{"anyOf":[{"type":"number","minimum":0,"maximum":10},{"type":"null"}]},"cvssVector":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"affectedComponents":{"type":"array","items":{"type":"string","minLength":1}},"exploitUri":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"deviceArtifactId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]}}}},"required":["data"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"affectedDeviceGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","affectedDeviceGroups","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/vulnerabilities/bulk":{"post":{"operationId":"vulnerabilities-createBulk","summary":"Create Bulk Vulnerabilities","description":"Create one or more new vulnerabilities from an array. The authenticated user will be recorded as the creator.","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vulnerabilities":{"minItems":1,"type":"array","items":{"type":"object","properties":{"cpes":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"}},"sarif":{},"cveId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"description":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"impact":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"cvssScore":{"anyOf":[{"type":"number","minimum":0,"maximum":10},{"type":"null"}]},"cvssVector":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"affectedComponents":{"type":"array","items":{"type":"string","minLength":1}},"exploitUri":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"deviceArtifactId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]}},"required":["cpes","sarif"]}}},"required":["vulnerabilities"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"affectedDeviceGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","affectedDeviceGroups","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/vulnerabilities/integrationUpload/{token}":{"post":{"operationId":"vulnerabilities-processIntegrationCreate","summary":"Synchronize Vulnerabilities with integration","description":"Synchronize Vulnerabilities on VIPER from a partnered platform","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"token","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"cpes":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"}},"sarif":{},"cveId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"description":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"impact":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"cvssScore":{"anyOf":[{"type":"number","minimum":0,"maximum":10},{"type":"null"}]},"cvssVector":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"affectedComponents":{"type":"array","items":{"type":"string","minLength":1}},"exploitUri":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"deviceArtifactId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"vendorId":{"type":"string"}},"required":["cpes","sarif","vendorId"]}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"next":{"anyOf":[{"type":"string"},{"type":"null"}]},"previous":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","page","pageSize","totalCount","totalPages","next","previous"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"createdItemsCount":{"type":"number"},"updatedItemsCount":{"type":"number"},"shouldRetry":{"type":"boolean"},"syncedAt":{"type":"string"}},"required":["message","createdItemsCount","updatedItemsCount","shouldRetry","syncedAt"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/vulnerabilities/{id}/aloha":{"get":{"operationId":"vulnerabilities-getAloha","summary":"Get Vulnerability Aloha","description":"Get aloha status and log for a vulnerability. Any authenticated user can access.","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"vulnerability":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"affectedDeviceGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","affectedDeviceGroups","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false},"aloha":{"type":"object","properties":{"status":{"anyOf":[{"type":"string","enum":["Confirmed","Unsure"]},{"type":"null"}]},"log":{}},"required":["status","log"],"additionalProperties":false}},"required":["vulnerability","aloha"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"put":{"operationId":"vulnerabilities-updateAloha","summary":"Update Vulnerability Aloha","description":"Update aloha status and log for a vulnerability. Any authenticated user can update.","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","enum":["Confirmed","Unsure"]},"log":{}},"required":["status"]}},"required":["data"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"vulnerability":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"affectedDeviceGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","affectedDeviceGroups","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false},"aloha":{"type":"object","properties":{"status":{"anyOf":[{"type":"string","enum":["Confirmed","Unsure"]},{"type":"null"}]},"log":{}},"required":["status","log"],"additionalProperties":false}},"required":["vulnerability","aloha"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/remediations":{"get":{"operationId":"remediations-getMany","summary":"List Remediations","description":"Get all remediations. Any authenticated user can view all remediations.","tags":["Remediations"],"security":[{"Authorization":[]}],"parameters":[{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"affectedDeviceGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"}},"required":["id","cpe"],"additionalProperties":false}},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerability":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","affectedDeviceGroups","user","artifacts","createdAt","updatedAt"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"post":{"operationId":"remediations-create","summary":"Create Remediation","description":"Create a new remediation. The authenticated user will be recorded as the creator. \n **Artifact hosting**\n See docs/upload_artifact.md","tags":["Remediations"],"security":[{"Authorization":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cpes":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"}},"vulnerabilityId":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"artifacts":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["artifactType"]}}},"required":["cpes","artifacts"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"remediation":{"type":"object","properties":{"id":{"type":"string"},"affectedDeviceGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"}},"required":["id","cpe"],"additionalProperties":false}},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerability":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","affectedDeviceGroups","user","artifacts","createdAt","updatedAt"],"additionalProperties":false},"uploadInstructions":{"type":"array","items":{"type":"object","properties":{"artifactName":{"type":"string"},"uploadUrl":{"type":"string","format":"uri"},"requiredHeader":{"type":"string"}},"required":["artifactName","uploadUrl","requiredHeader"],"additionalProperties":false}}},"required":["remediation","uploadInstructions"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/remediations/{id}":{"get":{"operationId":"remediations-getOne","summary":"Get Remediation","description":"Get a single remediation by ID. Any authenticated user can view any remediation.","tags":["Remediations"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"affectedDeviceGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"}},"required":["id","cpe"],"additionalProperties":false}},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerability":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","affectedDeviceGroups","user","artifacts","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"delete":{"operationId":"remediations-remove","summary":"Delete Remediation","description":"Delete a remediation. Only the user who created the remediation can delete it.","tags":["Remediations"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"affectedDeviceGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"}},"required":["id","cpe"],"additionalProperties":false}},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerability":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","affectedDeviceGroups","user","artifacts","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"put":{"operationId":"remediations-update","summary":"Update Remediation","description":"Update a remediation. Only the user who created the remediation can update it. \n \n **Artifact hosting**\n See docs/upload_artifact.md","tags":["Remediations"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cpes":{"type":"array","items":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"}},"vulnerabilityId":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["artifactType"]}}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"remediation":{"type":"object","properties":{"id":{"type":"string"},"affectedDeviceGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"}},"required":["id","cpe"],"additionalProperties":false}},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerability":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","affectedDeviceGroups","user","artifacts","createdAt","updatedAt"],"additionalProperties":false},"uploadInstructions":{"type":"array","items":{"type":"object","properties":{"artifactName":{"type":"string"},"uploadUrl":{"type":"string","format":"uri"},"requiredHeader":{"type":"string"}},"required":["artifactName","uploadUrl","requiredHeader"],"additionalProperties":false}}},"required":["remediation","uploadInstructions"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/remediations/integrationUpload/{token}":{"post":{"operationId":"remediations-processIntegrationCreate","summary":"Synchronize Remediations with integration","description":"Synchronize Remediations on VIPER from a partnered platform","tags":["Remediations"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"token","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"cpes":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"}},"vulnerabilityId":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"artifacts":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["artifactType"]}},"vendorId":{"type":"string"}},"required":["cpes","artifacts","vendorId"]}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"next":{"anyOf":[{"type":"string"},{"type":"null"}]},"previous":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","page","pageSize","totalCount","totalPages","next","previous"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"createdItemsCount":{"type":"number"},"updatedItemsCount":{"type":"number"},"shouldRetry":{"type":"boolean"},"syncedAt":{"type":"string"}},"required":["message","createdItemsCount","updatedItemsCount","shouldRetry","syncedAt"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/remediations/{id}/aloha":{"get":{"operationId":"remediations-getAloha","summary":"Get Remediation Aloha","description":"Get aloha status and log for a remediation. Any authenticated user can access.","tags":["Remediations"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"remediation":{"type":"object","properties":{"id":{"type":"string"},"affectedDeviceGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"}},"required":["id","cpe"],"additionalProperties":false}},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerability":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","affectedDeviceGroups","user","artifacts","createdAt","updatedAt"],"additionalProperties":false},"aloha":{"type":"object","properties":{"status":{"anyOf":[{"type":"string","enum":["Confirmed","Unsure"]},{"type":"null"}]},"log":{}},"required":["status","log"],"additionalProperties":false}},"required":["remediation","aloha"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"put":{"operationId":"remediations-updateAloha","summary":"Update Remediation Aloha","description":"Update aloha status and log for a remediation. Any authenticated user can update.","tags":["Remediations"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","enum":["Confirmed","Unsure"]},"log":{}},"required":["status"]}},"required":["data"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"remediation":{"type":"object","properties":{"id":{"type":"string"},"affectedDeviceGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"}},"required":["id","cpe"],"additionalProperties":false}},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerability":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","affectedDeviceGroups","user","artifacts","createdAt","updatedAt"],"additionalProperties":false},"aloha":{"type":"object","properties":{"status":{"anyOf":[{"type":"string","enum":["Confirmed","Unsure"]},{"type":"null"}]},"log":{}},"required":["status","log"],"additionalProperties":false}},"required":["remediation","aloha"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceArtifacts":{"get":{"operationId":"deviceArtifacts-getMany","summary":"List DeviceArtifacts","description":"Get all deviceArtifacts. Any authenticated user can view all deviceArtifacts.","tags":["DeviceArtifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string"},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}}},"required":["id","role","upstreamApi","description","createdAt","updatedAt","user","deviceGroup","artifacts"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"post":{"operationId":"deviceArtifacts-create","summary":"Create DeviceArtifact","description":"Create a new DeviceArtifact. The authenticated user will be recorded as the creator.\n \n **Artifact hosting**\n See docs/upload_artifact.md","tags":["DeviceArtifacts"],"security":[{"Authorization":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cpe":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"},"role":{"type":"string","minLength":1},"description":{"type":"string","minLength":1},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"artifacts":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["artifactType"]}}},"required":["cpe","role","description","artifacts"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"deviceArtifact":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string"},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}}},"required":["id","role","upstreamApi","description","createdAt","updatedAt","user","deviceGroup","artifacts"],"additionalProperties":false},"uploadInstructions":{"type":"array","items":{"type":"object","properties":{"artifactName":{"type":"string"},"uploadUrl":{"type":"string","format":"uri"},"requiredHeader":{"type":"string"}},"required":["artifactName","uploadUrl","requiredHeader"],"additionalProperties":false}}},"required":["deviceArtifact","uploadInstructions"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceGroups/{deviceGroupId}/deviceArtifacts":{"get":{"operationId":"deviceArtifacts-getManyByDeviceGroup","summary":"List DeviceArtifacts by Device Group","description":"Get all DeviceArtifacts affecting a specific device group. Any authenticated user can view all DeviceArtifacts.","tags":["DeviceArtifacts","DeviceGroups"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"deviceGroupId","schema":{"type":"string"},"required":true},{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string"},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}}},"required":["id","role","upstreamApi","description","createdAt","updatedAt","user","deviceGroup","artifacts"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceArtifacts/{id}":{"get":{"operationId":"deviceArtifacts-getOne","summary":"Get DeviceArtifact","description":"Get a single DeviceArtifact by ID. Any authenticated user can view any DeviceArtifact.","tags":["DeviceArtifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string"},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}}},"required":["id","role","upstreamApi","description","createdAt","updatedAt","user","deviceGroup","artifacts"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"delete":{"operationId":"deviceArtifacts-remove","summary":"Delete DeviceArtifact","description":"Delete a DeviceArtifact. Only the user who created the DeviceArtifact can delete it.","tags":["DeviceArtifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string"},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}}},"required":["id","role","upstreamApi","description","createdAt","updatedAt","user","deviceGroup","artifacts"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"put":{"operationId":"deviceArtifacts-update","summary":"Update DeviceArtifact","description":"Update a DeviceArtifact. Only the user who created the DeviceArtifact can update it.","tags":["DeviceArtifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","minLength":1},"description":{"type":"string"},"upstreamApi":{"type":"string","format":"uri"},"cpe":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string"},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}}},"required":["id","role","upstreamApi","description","createdAt","updatedAt","user","deviceGroup","artifacts"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceArtifacts/integrationUpload/{token}":{"post":{"operationId":"deviceArtifacts-processIntegrationCreate","summary":"Synchronize Device Artifact with integration","description":"Synchronize Device Artifacts on VIPER from a partnered platform","tags":["DeviceArtifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"token","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"cpe":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"},"role":{"type":"string","minLength":1},"description":{"type":"string","minLength":1},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"artifacts":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["artifactType"]}},"vendorId":{"type":"string"}},"required":["cpe","role","description","artifacts","vendorId"]}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"next":{"anyOf":[{"type":"string"},{"type":"null"}]},"previous":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","page","pageSize","totalCount","totalPages","next","previous"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"createdItemsCount":{"type":"number"},"updatedItemsCount":{"type":"number"},"shouldRetry":{"type":"boolean"},"syncedAt":{"type":"string"}},"required":["message","createdItemsCount","updatedItemsCount","shouldRetry","syncedAt"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceGroups":{"get":{"operationId":"deviceGroups-getMany","summary":"List Device Groups","description":"Get all Device Groups. Any authenticated user can view all Device Groups.","tags":["DeviceGroups"],"security":[{"Authorization":[]}],"parameters":[{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"updatedAtStartTime","schema":{"type":"string"}},{"in":"query","name":"updatedAtEndTime","schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"manufacturer":{"anyOf":[{"type":"string"},{"type":"null"}]},"modelName":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"anyOf":[{"type":"string"},{"type":"null"}]},"helmSbomId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt","manufacturer","modelName","version","helmSbomId"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceGroups/{id}":{"get":{"operationId":"deviceGroups-getOne","summary":"Get Device Group","description":"Get a single Device Group by ID. Any authenticated user can view any Device Group.","tags":["DeviceGroups"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"put":{"operationId":"deviceGroups-update","summary":"Update Device Group","description":"Update a device group.","tags":["DeviceGroups"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"manufacturer":{"anyOf":[{"type":"string"},{"type":"null"}]},"modelName":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"manufacturer":{"anyOf":[{"type":"string"},{"type":"null"}]},"modelName":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"anyOf":[{"type":"string"},{"type":"null"}]},"helmSbomId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt","manufacturer","modelName","version","helmSbomId"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceGroups/{helmSbomId}/sbom":{"get":{"operationId":"deviceGroups-getDeviceGroupSbom","summary":"Get Device Group SBOM from Helm","description":"Get a single SBOM via Helm using the helmSbomId. Any authenticated user can pull a Device Group's SBOM.","tags":["DeviceGroups"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"helmSbomId","schema":{"type":"string","minLength":1},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","const":true},"sbom":{"anyOf":[{"$ref":"#/components/schemas/__schema0"},{"type":"null"}]},"product_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"anyOf":[{"type":"string"},{"type":"null"}]},"product_uuid":{"anyOf":[{"type":"string"},{"type":"null"}]},"product_version_uuid":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["success"],"additionalProperties":false},{"type":"object","properties":{"success":{"type":"boolean","const":false},"error_type":{"type":"string"},"message":{"type":"string"}},"required":["success","error_type","message"],"additionalProperties":false}],"type":"object"}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceGroups/{id}/updateHelmId":{"put":{"operationId":"deviceGroups-updateHelmId","summary":"Update Device Group Helm SBOM ID","description":"Update only the helmSbomId field on a given Device Group.","tags":["DeviceGroups"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"helmSbomId":{"type":"string"}},"required":["helmSbomId"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"cpe":{"type":"string"},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"manufacturer":{"anyOf":[{"type":"string"},{"type":"null"}]},"modelName":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"anyOf":[{"type":"string"},{"type":"null"}]},"helmSbomId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","cpe","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt","manufacturer","modelName","version","helmSbomId"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/artifacts/versions/{wrapperId}":{"get":{"operationId":"artifacts-listVersions","summary":"List all versions of an artifact","description":"Get all versions of an artifact, ordered by version number.","tags":["Artifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"wrapperId","schema":{"type":"string"},"required":true},{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"post":{"operationId":"artifacts-createVersion","summary":"Create artifact version","description":"Upload a new artifact version, which becomes the latest artifact. Updates version chain pointers accordingly.","tags":["Artifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"wrapperId","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["artifactType"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/artifacts/{id}":{"get":{"operationId":"artifacts-getOne","summary":"Get artifact","description":"Get a single artifact by ID.","tags":["Artifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"put":{"operationId":"artifacts-update","summary":"Update artifact","description":"Update artifact metadata (name, artifactType, size only). Only the user who created the artifact can update it.","tags":["Artifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"type":"number"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/chat/threads":{"get":{"operationId":"chat-getManyThreads","summary":"[Internal] Fetch Threads","tags":["Chat"],"security":[{"Authorization":[]}],"parameters":[{"in":"query","name":"userId","schema":{"type":"string"}},{"in":"query","name":"channelKey","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100},"required":true},{"in":"query","name":"cursorTimestamp","schema":{"type":"string"}},{"in":"query","name":"cursorId","schema":{"type":"string"}},{"in":"query","name":"offset","schema":{"type":"integer","minimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"threads":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"_count":{"type":"object","properties":{"messages":{"type":"number"}},"required":["messages"],"additionalProperties":false}},"required":["id","userId","title","createdAt","updatedAt","_count"],"additionalProperties":false}},"hasMore":{"type":"boolean"},"total":{"type":"number"}},"required":["threads","hasMore","total"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/chat/threads/{threadId}":{"delete":{"operationId":"chat-deleteThread","summary":"[Internal] Delete a conversation thread","tags":["Chat"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"threadId","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/network/flow":{"get":{"operationId":"network-getFlow","summary":"Get Network Flow Topology","description":"Returns network flow topology data according to schema","tags":["Network"],"security":[{"Authorization":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"schema_version":{"type":"string","const":"0.1.0-minimal"},"snapshot_id":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"}]},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"assets":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"manufacturer":{"anyOf":[{"type":"string"},{"type":"null"}]},"interfaces":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"mac_address":{"anyOf":[{"type":"string","pattern":"^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$"},{"type":"null"}]},"ipv4_address":{"anyOf":[{"type":"string"},{"type":"null"}]},"ipv6_address":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id"],"additionalProperties":false}},"services":{"type":"array","items":{"type":"object","properties":{"port":{"type":"integer","minimum":1,"maximum":65535},"protocol":{"type":"string","enum":["tcp","udp"]}},"required":["port","protocol"],"additionalProperties":false}}},"required":["id","interfaces"],"additionalProperties":false}},"connections":{"type":"array","items":{"type":"object","properties":{"src_asset_id":{"type":"string"},"dst_asset_id":{"type":"string"},"dst_port":{"type":"integer","minimum":1,"maximum":65535},"protocol":{"type":"string","enum":["tcp","udp"]},"direction":{"type":"string","enum":["unidirectional","bidirectional"]}},"required":["src_asset_id","dst_asset_id","dst_port","protocol","direction"],"additionalProperties":false}}},"required":["schema_version","snapshot_id","timestamp","assets"],"additionalProperties":false}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}},"components":{"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Invalid input data"},"code":{"type":"string","description":"The error code","example":"BAD_REQUEST"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information","example":{"code":"BAD_REQUEST","message":"Invalid input data","issues":[]}},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Authorization not provided"},"code":{"type":"string","description":"The error code","example":"UNAUTHORIZED"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information","example":{"code":"UNAUTHORIZED","message":"Authorization not provided","issues":[]}},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Insufficient access"},"code":{"type":"string","description":"The error code","example":"FORBIDDEN"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information","example":{"code":"FORBIDDEN","message":"Insufficient access","issues":[]}},"error.NOT_FOUND":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Not found"},"code":{"type":"string","description":"The error code","example":"NOT_FOUND"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Not found error (404)","description":"The error information","example":{"code":"NOT_FOUND","message":"Not found","issues":[]}},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Internal server error"},"code":{"type":"string","description":"The error code","example":"INTERNAL_SERVER_ERROR"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information","example":{"code":"INTERNAL_SERVER_ERROR","message":"Internal server error","issues":[]}},"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"type":"array","items":{"$ref":"#/components/schemas/__schema0"}},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/__schema0"}}]}},"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}}}} \ No newline at end of file +{"openapi":"3.1.0","info":{"title":"PATCH Vulnerability Management API","description":"API for managing assets, vulnerabilities, and remediations in hospital environments","version":"1.0.0"},"servers":[{"url":"https://viper-xi.vercel.app/api/v1"}],"tags":[{"name":"Assets"},{"name":"Vulnerabilities"},{"name":"Remediations"},{"name":"DeviceArtifacts"},{"name":"Artifacts"},{"name":"DeviceGroups"}],"externalDocs":{"url":"https://github.com/PATCH-UPGRADE"},"paths":{"/assets":{"get":{"operationId":"assets-getMany","summary":"List Assets","description":"Get all assets. Any authenticated user can view all assets.","tags":["Assets"],"security":[{"Authorization":[]}],"parameters":[{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ip":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionStatus":{"type":"string","enum":["UNKNOWN","NOT_APPLICABLE","KNOWN"]},"cpe":{"type":"array","items":{"type":"string"}},"udi":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","vendor","product","version","versionStatus","cpe","udi","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"type":"string"},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"anyOf":[{},{"type":"null"}]},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","ip","deviceGroup","role","upstreamApi","networkSegment","hostname","macAddress","serialNumber","location","status","utilization","userId","createdAt","updatedAt","user"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"post":{"operationId":"assets-create","summary":"Create Asset","description":"Create a new asset. The authenticated user will be recorded as the creator.","tags":["Assets"],"security":[{"Authorization":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ip":{"type":"string","minLength":1},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"cpe":{"anyOf":[{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"},{"type":"null"}]},"role":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"upstreamApi":{"type":"string","format":"uri"},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"type":"object","properties":{"facility":{"type":"string"},"building":{"type":"string"},"floor":{"type":"string"},"room":{"type":"string"}}},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{"type":"array","items":{"type":"object","propertyNames":{"type":"string","pattern":"^(?:[0-9]|1[0-9]|2[0-3])$"},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},{"type":"null"}]}},"required":["ip","upstreamApi"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"ip":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionStatus":{"type":"string","enum":["UNKNOWN","NOT_APPLICABLE","KNOWN"]},"cpe":{"type":"array","items":{"type":"string"}},"udi":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","vendor","product","version","versionStatus","cpe","udi","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"type":"string"},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"anyOf":[{},{"type":"null"}]},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","ip","deviceGroup","role","upstreamApi","networkSegment","hostname","macAddress","serialNumber","location","status","utilization","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceGroups/{deviceGroupId}/assets":{"get":{"operationId":"assets-getManyByDeviceGroup","summary":"List Assets by Device Group","description":"Get all assets affecting a specific device group. Any authenticated user can view all assets.","tags":["Assets","DeviceGroups"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"deviceGroupId","schema":{"type":"string"},"required":true},{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ip":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionStatus":{"type":"string","enum":["UNKNOWN","NOT_APPLICABLE","KNOWN"]},"cpe":{"type":"array","items":{"type":"string"}},"udi":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","vendor","product","version","versionStatus","cpe","udi","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"type":"string"},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"anyOf":[{},{"type":"null"}]},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","ip","deviceGroup","role","upstreamApi","networkSegment","hostname","macAddress","serialNumber","location","status","utilization","userId","createdAt","updatedAt","user"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/assets/{id}":{"get":{"operationId":"assets-getOne","summary":"Get Asset","description":"Get a single asset by ID. Any authenticated user can view any asset.","tags":["Assets"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"ip":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionStatus":{"type":"string","enum":["UNKNOWN","NOT_APPLICABLE","KNOWN"]},"cpe":{"type":"array","items":{"type":"string"}},"udi":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","vendor","product","version","versionStatus","cpe","udi","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"type":"string"},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"anyOf":[{},{"type":"null"}]},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","ip","deviceGroup","role","upstreamApi","networkSegment","hostname","macAddress","serialNumber","location","status","utilization","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"delete":{"operationId":"assets-remove","summary":"Delete Asset","description":"Delete an asset. Only the user who created the asset can delete it.","tags":["Assets"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"ip":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionStatus":{"type":"string","enum":["UNKNOWN","NOT_APPLICABLE","KNOWN"]},"cpe":{"type":"array","items":{"type":"string"}},"udi":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","vendor","product","version","versionStatus","cpe","udi","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"type":"string"},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"anyOf":[{},{"type":"null"}]},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","ip","deviceGroup","role","upstreamApi","networkSegment","hostname","macAddress","serialNumber","location","status","utilization","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"patch":{"operationId":"assets-update","summary":"Update Asset","description":"Partially update an asset. Only the user who created the asset can update it.","tags":["Assets"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ip":{"type":"string","minLength":1},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"cpe":{"anyOf":[{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"},{"type":"null"}]},"role":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"upstreamApi":{"type":"string","format":"uri"},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"type":"object","properties":{"facility":{"type":"string"},"building":{"type":"string"},"floor":{"type":"string"},"room":{"type":"string"}}},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{"type":"array","items":{"type":"object","propertyNames":{"type":"string","pattern":"^(?:[0-9]|1[0-9]|2[0-3])$"},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},{"type":"null"}]}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"ip":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionStatus":{"type":"string","enum":["UNKNOWN","NOT_APPLICABLE","KNOWN"]},"cpe":{"type":"array","items":{"type":"string"}},"udi":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","vendor","product","version","versionStatus","cpe","udi","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"type":"string"},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"anyOf":[{},{"type":"null"}]},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","ip","deviceGroup","role","upstreamApi","networkSegment","hostname","macAddress","serialNumber","location","status","utilization","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/assets/bulk":{"post":{"operationId":"assets-createBulk","summary":"Create Bulk Assets","description":"Create one or more new assets from an array. The authenticated user will be recorded as the creator.","tags":["Assets"],"security":[{"Authorization":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assets":{"minItems":1,"type":"array","items":{"type":"object","properties":{"ip":{"type":"string","minLength":1},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"cpe":{"anyOf":[{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"},{"type":"null"}]},"role":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"upstreamApi":{"type":"string","format":"uri"},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"type":"object","properties":{"facility":{"type":"string"},"building":{"type":"string"},"floor":{"type":"string"},"room":{"type":"string"}}},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{"type":"array","items":{"type":"object","propertyNames":{"type":"string","pattern":"^(?:[0-9]|1[0-9]|2[0-3])$"},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},{"type":"null"}]}},"required":["ip","upstreamApi"]}}},"required":["assets"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ip":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionStatus":{"type":"string","enum":["UNKNOWN","NOT_APPLICABLE","KNOWN"]},"cpe":{"type":"array","items":{"type":"string"}},"udi":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","vendor","product","version","versionStatus","cpe","udi","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"type":"string"},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"anyOf":[{},{"type":"null"}]},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","ip","deviceGroup","role","upstreamApi","networkSegment","hostname","macAddress","serialNumber","location","status","utilization","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/assets/integrationUpload/{token}":{"post":{"operationId":"assets-processIntegrationCreate","summary":"Synchronize assets with integration","description":"Synchronize Assets on VIPER from a partnered platform","tags":["Assets"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"token","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"ip":{"type":"string","minLength":1},"networkSegment":{"anyOf":[{"type":"string"},{"type":"null"}]},"cpe":{"anyOf":[{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"},{"type":"null"}]},"role":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"upstreamApi":{"type":"string","format":"uri"},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"serialNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"type":"object","properties":{"facility":{"type":"string"},"building":{"type":"string"},"floor":{"type":"string"},"room":{"type":"string"}}},"status":{"anyOf":[{"type":"string","enum":["Active","Decommissioned","Maintenance"]},{"type":"null"}]},"utilization":{"anyOf":[{"type":"array","items":{"type":"object","propertyNames":{"type":"string","pattern":"^(?:[0-9]|1[0-9]|2[0-3])$"},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},{"type":"null"}]},"vendorId":{"type":"string"}},"required":["ip","upstreamApi","vendorId"]}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"next":{"anyOf":[{"type":"string"},{"type":"null"}]},"previous":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","page","pageSize","totalCount","totalPages","next","previous"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"createdItemsCount":{"type":"number"},"updatedItemsCount":{"type":"number"},"shouldRetry":{"type":"boolean"},"syncedAt":{"type":"string"}},"required":["message","createdItemsCount","updatedItemsCount","shouldRetry","syncedAt"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/vulnerabilities":{"get":{"operationId":"vulnerabilities-getMany","summary":"List Vulnerabilities","description":"Get all vulnerabilities. Any authenticated user can view all vulnerabilities.","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","deviceGroupMatchings","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"post":{"operationId":"vulnerabilities-create","summary":"Create Vulnerability","description":"Create a new vulnerability. The authenticated user will be recorded as the creator.","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cpes":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"}},"sarif":{},"cveId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"description":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"impact":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"cvssScore":{"anyOf":[{"type":"number","minimum":0,"maximum":10},{"type":"null"}]},"cvssVector":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"affectedComponents":{"type":"array","items":{"type":"string","minLength":1}},"exploitUri":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"deviceArtifactId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]}},"required":["cpes","sarif"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","deviceGroupMatchings","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceGroups/{deviceGroupId}/vulnerabilities":{"get":{"operationId":"vulnerabilities-getManyByDeviceGroup","summary":"List Vulnerabilities by Device Group","description":"Get all vulnerabilities affecting a specific device group. Any authenticated user can view all vulnerabilities.","tags":["Vulnerabilities","DeviceGroups"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"deviceGroupId","schema":{"type":"string"},"required":true},{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","deviceGroupMatchings","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/vulnerabilities/{id}":{"get":{"operationId":"vulnerabilities-getOne","summary":"Get Vulnerability","description":"Get a single vulnerability by ID. Any authenticated user can view any vulnerability.","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","deviceGroupMatchings","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"delete":{"operationId":"vulnerabilities-remove","summary":"Delete Vulnerability","description":"Delete a vulnerability. Only the user who created the vulnerability can delete it.","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","deviceGroupMatchings","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"put":{"operationId":"vulnerabilities-update","summary":"Update Vulnerability","description":"Update a vulnerability. Only the user who created the vulnerability can update it.","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"cpes":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"}},"sarif":{},"cveId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"description":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"impact":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"cvssScore":{"anyOf":[{"type":"number","minimum":0,"maximum":10},{"type":"null"}]},"cvssVector":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"affectedComponents":{"type":"array","items":{"type":"string","minLength":1}},"exploitUri":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"deviceArtifactId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]}}}},"required":["data"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","deviceGroupMatchings","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/vulnerabilities/bulk":{"post":{"operationId":"vulnerabilities-createBulk","summary":"Create Bulk Vulnerabilities","description":"Create one or more new vulnerabilities from an array. The authenticated user will be recorded as the creator.","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vulnerabilities":{"minItems":1,"type":"array","items":{"type":"object","properties":{"cpes":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"}},"sarif":{},"cveId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"description":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"impact":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"cvssScore":{"anyOf":[{"type":"number","minimum":0,"maximum":10},{"type":"null"}]},"cvssVector":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"affectedComponents":{"type":"array","items":{"type":"string","minLength":1}},"exploitUri":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"deviceArtifactId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]}},"required":["cpes","sarif"]}}},"required":["vulnerabilities"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","deviceGroupMatchings","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false}}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/vulnerabilities/integrationUpload/{token}":{"post":{"operationId":"vulnerabilities-processIntegrationCreate","summary":"Synchronize Vulnerabilities with integration","description":"Synchronize Vulnerabilities on VIPER from a partnered platform","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"token","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"cpes":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"}},"sarif":{},"cveId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"description":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"impact":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"cvssScore":{"anyOf":[{"type":"number","minimum":0,"maximum":10},{"type":"null"}]},"cvssVector":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"affectedComponents":{"type":"array","items":{"type":"string","minLength":1}},"exploitUri":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"deviceArtifactId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"vendorId":{"type":"string"}},"required":["cpes","sarif","vendorId"]}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"next":{"anyOf":[{"type":"string"},{"type":"null"}]},"previous":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","page","pageSize","totalCount","totalPages","next","previous"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"createdItemsCount":{"type":"number"},"updatedItemsCount":{"type":"number"},"shouldRetry":{"type":"boolean"},"syncedAt":{"type":"string"}},"required":["message","createdItemsCount","updatedItemsCount","shouldRetry","syncedAt"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/vulnerabilities/{id}/aloha":{"get":{"operationId":"vulnerabilities-getAloha","summary":"Get Vulnerability Aloha","description":"Get aloha status and log for a vulnerability. Any authenticated user can access.","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"vulnerability":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","deviceGroupMatchings","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false},"aloha":{"type":"object","properties":{"status":{"anyOf":[{"type":"string","enum":["Confirmed","Unsure"]},{"type":"null"}]},"log":{}},"required":["status","log"],"additionalProperties":false}},"required":["vulnerability","aloha"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"put":{"operationId":"vulnerabilities-updateAloha","summary":"Update Vulnerability Aloha","description":"Update aloha status and log for a vulnerability. Any authenticated user can update.","tags":["Vulnerabilities"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","enum":["Confirmed","Unsure"]},"log":{}},"required":["status"]}},"required":["data"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"vulnerability":{"type":"object","properties":{"id":{"type":"string"},"sarif":{},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"exploitUri":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact":{"anyOf":[{"type":"string"},{"type":"null"}]},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"affectedComponents":{"type":"array","items":{"type":"string"}},"cvssVector":{"anyOf":[{"type":"string"},{"type":"null"}]},"epss":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedEpss":{"anyOf":[{"type":"string"},{"type":"null"}]},"inKEV":{"type":"boolean"},"updatedInKev":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false}},"required":["id","sarif","deviceGroupMatchings","exploitUri","upstreamApi","description","narrative","impact","cveId","cvssScore","severity","affectedComponents","cvssVector","epss","updatedEpss","inKEV","updatedInKev","userId","createdAt","updatedAt","user"],"additionalProperties":false},"aloha":{"type":"object","properties":{"status":{"anyOf":[{"type":"string","enum":["Confirmed","Unsure"]},{"type":"null"}]},"log":{}},"required":["status","log"],"additionalProperties":false}},"required":["vulnerability","aloha"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/remediations":{"get":{"operationId":"remediations-getMany","summary":"List Remediations","description":"Get all remediations. Any authenticated user can view all remediations.","tags":["Remediations"],"security":[{"Authorization":[]}],"parameters":[{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerability":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","deviceGroupMatchings","user","artifacts","createdAt","updatedAt"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"post":{"operationId":"remediations-create","summary":"Create Remediation","description":"Create a new remediation. The authenticated user will be recorded as the creator. \n **Artifact hosting**\n See docs/upload_artifact.md","tags":["Remediations"],"security":[{"Authorization":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cpes":{"type":"array","items":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"}},"vulnerabilityId":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"artifacts":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["artifactType"]}}},"required":["artifacts"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"remediation":{"type":"object","properties":{"id":{"type":"string"},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerability":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","deviceGroupMatchings","user","artifacts","createdAt","updatedAt"],"additionalProperties":false},"uploadInstructions":{"type":"array","items":{"type":"object","properties":{"artifactName":{"type":"string"},"uploadUrl":{"type":"string","format":"uri"},"requiredHeader":{"type":"string"}},"required":["artifactName","uploadUrl","requiredHeader"],"additionalProperties":false}}},"required":["remediation","uploadInstructions"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/remediations/{id}":{"get":{"operationId":"remediations-getOne","summary":"Get Remediation","description":"Get a single remediation by ID. Any authenticated user can view any remediation.","tags":["Remediations"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerability":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","deviceGroupMatchings","user","artifacts","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"delete":{"operationId":"remediations-remove","summary":"Delete Remediation","description":"Delete a remediation. Only the user who created the remediation can delete it.","tags":["Remediations"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerability":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","deviceGroupMatchings","user","artifacts","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"put":{"operationId":"remediations-update","summary":"Update Remediation","description":"Update a remediation. Only the user who created the remediation can update it. \n \n **Artifact hosting**\n See docs/upload_artifact.md","tags":["Remediations"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cpes":{"type":"array","items":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"}},"vulnerabilityId":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["artifactType"]}}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"remediation":{"type":"object","properties":{"id":{"type":"string"},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerability":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","deviceGroupMatchings","user","artifacts","createdAt","updatedAt"],"additionalProperties":false},"uploadInstructions":{"type":"array","items":{"type":"object","properties":{"artifactName":{"type":"string"},"uploadUrl":{"type":"string","format":"uri"},"requiredHeader":{"type":"string"}},"required":["artifactName","uploadUrl","requiredHeader"],"additionalProperties":false}}},"required":["remediation","uploadInstructions"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/remediations/integrationUpload/{token}":{"post":{"operationId":"remediations-processIntegrationCreate","summary":"Synchronize Remediations with integration","description":"Synchronize Remediations on VIPER from a partnered platform","tags":["Remediations"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"token","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"cpes":{"type":"array","items":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"}},"vulnerabilityId":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"artifacts":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["artifactType"]}},"vendorId":{"type":"string"}},"required":["artifacts","vendorId"]}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"next":{"anyOf":[{"type":"string"},{"type":"null"}]},"previous":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","page","pageSize","totalCount","totalPages","next","previous"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"createdItemsCount":{"type":"number"},"updatedItemsCount":{"type":"number"},"shouldRetry":{"type":"boolean"},"syncedAt":{"type":"string"}},"required":["message","createdItemsCount","updatedItemsCount","shouldRetry","syncedAt"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/remediations/{id}/aloha":{"get":{"operationId":"remediations-getAloha","summary":"Get Remediation Aloha","description":"Get aloha status and log for a remediation. Any authenticated user can access.","tags":["Remediations"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"remediation":{"type":"object","properties":{"id":{"type":"string"},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerability":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","deviceGroupMatchings","user","artifacts","createdAt","updatedAt"],"additionalProperties":false},"aloha":{"type":"object","properties":{"status":{"anyOf":[{"type":"string","enum":["Confirmed","Unsure"]},{"type":"null"}]},"log":{}},"required":["status","log"],"additionalProperties":false}},"required":["remediation","aloha"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"put":{"operationId":"remediations-updateAloha","summary":"Update Remediation Aloha","description":"Update aloha status and log for a remediation. Any authenticated user can update.","tags":["Remediations"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","enum":["Confirmed","Unsure"]},"log":{}},"required":["status"]}},"required":["data"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"remediation":{"type":"object","properties":{"id":{"type":"string"},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"narrative":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerability":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","deviceGroupMatchings","user","artifacts","createdAt","updatedAt"],"additionalProperties":false},"aloha":{"type":"object","properties":{"status":{"anyOf":[{"type":"string","enum":["Confirmed","Unsure"]},{"type":"null"}]},"log":{}},"required":["status","log"],"additionalProperties":false}},"required":["remediation","aloha"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceArtifacts":{"get":{"operationId":"deviceArtifacts-getMany","summary":"List DeviceArtifacts","description":"Get all deviceArtifacts. Any authenticated user can view all deviceArtifacts.","tags":["DeviceArtifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string"},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}}},"required":["id","role","upstreamApi","description","createdAt","updatedAt","user","deviceGroupMatchings","artifacts"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"post":{"operationId":"deviceArtifacts-create","summary":"Create DeviceArtifact","description":"Create a new DeviceArtifact. The authenticated user will be recorded as the creator.\n \n **Artifact hosting**\n See docs/upload_artifact.md","tags":["DeviceArtifacts"],"security":[{"Authorization":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cpe":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"},"role":{"type":"string","minLength":1},"description":{"type":"string","minLength":1},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"artifacts":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["artifactType"]}}},"required":["cpe","role","description","artifacts"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"deviceArtifact":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string"},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}}},"required":["id","role","upstreamApi","description","createdAt","updatedAt","user","deviceGroupMatchings","artifacts"],"additionalProperties":false},"uploadInstructions":{"type":"array","items":{"type":"object","properties":{"artifactName":{"type":"string"},"uploadUrl":{"type":"string","format":"uri"},"requiredHeader":{"type":"string"}},"required":["artifactName","uploadUrl","requiredHeader"],"additionalProperties":false}}},"required":["deviceArtifact","uploadInstructions"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceGroups/{deviceGroupId}/deviceArtifacts":{"get":{"operationId":"deviceArtifacts-getManyByDeviceGroup","summary":"List DeviceArtifacts by Device Group","description":"Get all DeviceArtifacts affecting a specific device group. Any authenticated user can view all DeviceArtifacts.","tags":["DeviceArtifacts","DeviceGroups"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"deviceGroupId","schema":{"type":"string"},"required":true},{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string"},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}}},"required":["id","role","upstreamApi","description","createdAt","updatedAt","user","deviceGroupMatchings","artifacts"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceArtifacts/{id}":{"get":{"operationId":"deviceArtifacts-getOne","summary":"Get DeviceArtifact","description":"Get a single DeviceArtifact by ID. Any authenticated user can view any DeviceArtifact.","tags":["DeviceArtifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string"},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}}},"required":["id","role","upstreamApi","description","createdAt","updatedAt","user","deviceGroupMatchings","artifacts"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"delete":{"operationId":"deviceArtifacts-remove","summary":"Delete DeviceArtifact","description":"Delete a DeviceArtifact. Only the user who created the DeviceArtifact can delete it.","tags":["DeviceArtifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string"},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}}},"required":["id","role","upstreamApi","description","createdAt","updatedAt","user","deviceGroupMatchings","artifacts"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"put":{"operationId":"deviceArtifacts-update","summary":"Update DeviceArtifact","description":"Update a DeviceArtifact. Only the user who created the DeviceArtifact can update it.","tags":["DeviceArtifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","minLength":1},"description":{"type":"string"},"upstreamApi":{"type":"string","format":"uri"},"cpe":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string"},"upstreamApi":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"],"additionalProperties":false},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionRange"],"additionalProperties":false}},"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"versionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allVersionsUrl":{"type":"string"},"latestArtifact":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"required":["id","versionsCount","allVersionsUrl","latestArtifact"],"additionalProperties":false}}},"required":["id","role","upstreamApi","description","createdAt","updatedAt","user","deviceGroupMatchings","artifacts"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceArtifacts/integrationUpload/{token}":{"post":{"operationId":"deviceArtifacts-processIntegrationCreate","summary":"Synchronize Device Artifact with integration","description":"Synchronize Device Artifacts on VIPER from a partnered platform","tags":["DeviceArtifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"token","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"cpe":{"type":"string","pattern":"^cpe:2\\.3:[^:]+:[^:]+:[^:]+"},"role":{"type":"string","minLength":1},"description":{"type":"string","minLength":1},"upstreamApi":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"artifacts":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["artifactType"]}},"vendorId":{"type":"string"}},"required":["cpe","role","description","artifacts","vendorId"]}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"next":{"anyOf":[{"type":"string"},{"type":"null"}]},"previous":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","page","pageSize","totalCount","totalPages","next","previous"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"createdItemsCount":{"type":"number"},"updatedItemsCount":{"type":"number"},"shouldRetry":{"type":"boolean"},"syncedAt":{"type":"string"}},"required":["message","createdItemsCount","updatedItemsCount","shouldRetry","syncedAt"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceGroups":{"get":{"operationId":"deviceGroups-getMany","summary":"List Device Groups","description":"Get all Device Groups. Any authenticated user can view all Device Groups.","tags":["DeviceGroups"],"security":[{"Authorization":[]}],"parameters":[{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"updatedAtStartTime","schema":{"type":"string"}},{"in":"query","name":"updatedAtEndTime","schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionStatus":{"type":"string","enum":["UNKNOWN","NOT_APPLICABLE","KNOWN"]},"cpe":{"type":"array","items":{"type":"string"}},"udi":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"helmSbomId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionStatus","cpe","udi","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt","helmSbomId"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceGroups/{id}":{"get":{"operationId":"deviceGroups-getOne","summary":"Get Device Group","description":"Get a single Device Group by ID. Any authenticated user can view any Device Group.","tags":["DeviceGroups"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionStatus":{"type":"string","enum":["UNKNOWN","NOT_APPLICABLE","KNOWN"]},"cpe":{"type":"array","items":{"type":"string"}},"udi":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","vendor","product","version","versionStatus","cpe","udi","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"put":{"operationId":"deviceGroups-update","summary":"Update Device Group","description":"Update a device group.","tags":["DeviceGroups"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vendor":{"type":"string","minLength":1},"product":{"type":"string","minLength":1},"version":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"versionStatus":{"type":"string","enum":["UNKNOWN","NOT_APPLICABLE","KNOWN"]},"udi":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionStatus":{"type":"string","enum":["UNKNOWN","NOT_APPLICABLE","KNOWN"]},"cpe":{"type":"array","items":{"type":"string"}},"udi":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"helmSbomId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionStatus","cpe","udi","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt","helmSbomId"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceGroups/{helmSbomId}/sbom":{"get":{"operationId":"deviceGroups-getDeviceGroupSbom","summary":"Get Device Group SBOM from Helm","description":"Get a single SBOM via Helm using the helmSbomId. Any authenticated user can pull a Device Group's SBOM.","tags":["DeviceGroups"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"helmSbomId","schema":{"type":"string","minLength":1},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","const":true},"sbom":{"anyOf":[{"$ref":"#/components/schemas/__schema0"},{"type":"null"}]},"product_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"anyOf":[{"type":"string"},{"type":"null"}]},"product_uuid":{"anyOf":[{"type":"string"},{"type":"null"}]},"product_version_uuid":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["success"],"additionalProperties":false},{"type":"object","properties":{"success":{"type":"boolean","const":false},"error_type":{"type":"string"},"message":{"type":"string"}},"required":["success","error_type","message"],"additionalProperties":false}],"type":"object"}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/deviceGroups/{id}/updateHelmId":{"put":{"operationId":"deviceGroups-updateHelmId","summary":"Update Device Group Helm SBOM ID","description":"Update only the helmSbomId field on a given Device Group.","tags":["DeviceGroups"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"helmSbomId":{"type":"string"}},"required":["helmSbomId"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"vendor":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"product":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"},"canonicalDisplayName":{"type":"string"}},"required":["canonicalName","canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"versionStatus":{"type":"string","enum":["UNKNOWN","NOT_APPLICABLE","KNOWN"]},"cpe":{"type":"array","items":{"type":"string"}},"udi":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"type":"string"},"sbomUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"vulnerabilitiesUrl":{"type":"string"},"deviceArtifactsUrl":{"type":"string"},"assetsUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"helmSbomId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","vendor","product","version","versionStatus","cpe","udi","url","sbomUrl","vulnerabilitiesUrl","deviceArtifactsUrl","assetsUrl","createdAt","updatedAt","helmSbomId"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/artifacts/versions/{wrapperId}":{"get":{"operationId":"artifacts-listVersions","summary":"List all versions of an artifact","description":"Get all versions of an artifact, ordered by version number.","tags":["Artifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"wrapperId","schema":{"type":"string"},"required":true},{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"post":{"operationId":"artifacts-createVersion","summary":"Create artifact version","description":"Upload a new artifact version, which becomes the latest artifact. Updates version chain pointers accordingly.","tags":["Artifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"wrapperId","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["artifactType"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/artifacts/{id}":{"get":{"operationId":"artifacts-getOne","summary":"Get artifact","description":"Get a single artifact by ID.","tags":["Artifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"put":{"operationId":"artifacts-update","summary":"Update artifact","description":"Update artifact metadata (name, artifactType, size only). Only the user who created the artifact can update it.","tags":["Artifacts"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"type":"number"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"artifactType":{"type":"string","enum":["Source","Binary","Firmware","Emulator","Documentation","Other"]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"hash":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"anyOf":[{"type":"number"},{"type":"null"}]},"versionNumber":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"prevVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","artifactType","downloadUrl","hash","size","versionNumber","createdAt","updatedAt","url","prevVersionId"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/network/flow":{"get":{"operationId":"network-getFlow","summary":"Get Network Flow Topology","description":"Returns network flow topology data according to schema","tags":["Network"],"security":[{"Authorization":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"schema_version":{"type":"string","const":"0.1.0-minimal"},"snapshot_id":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"}]},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"assets":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"manufacturer":{"anyOf":[{"type":"string"},{"type":"null"}]},"interfaces":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"mac_address":{"anyOf":[{"type":"string","pattern":"^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$"},{"type":"null"}]},"ipv4_address":{"anyOf":[{"type":"string"},{"type":"null"}]},"ipv6_address":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id"],"additionalProperties":false}},"services":{"type":"array","items":{"type":"object","properties":{"port":{"type":"integer","minimum":1,"maximum":65535},"protocol":{"type":"string","enum":["tcp","udp"]}},"required":["port","protocol"],"additionalProperties":false}}},"required":["id","interfaces"],"additionalProperties":false}},"connections":{"type":"array","items":{"type":"object","properties":{"src_asset_id":{"type":"string"},"dst_asset_id":{"type":"string"},"dst_port":{"type":"integer","minimum":1,"maximum":65535},"protocol":{"type":"string","enum":["tcp","udp"]},"direction":{"type":"string","enum":["unidirectional","bidirectional"]}},"required":["src_asset_id","dst_asset_id","dst_port","protocol","direction"],"additionalProperties":false}}},"required":["schema_version","snapshot_id","timestamp","assets"],"additionalProperties":false}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/work-orders/{id}":{"get":{"operationId":"tracking-getOne","summary":"Get a work-order ticket","description":"Fetch a single work-order ticket with linked entities, sub-tickets, and comments.","tags":["Work Orders"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"summary":{"type":"string"},"status":{"type":"string","enum":["TO_DO","IN_PROGRESS","REQUIRES_APPROVAL","DONE"]},"category":{"type":"string","enum":["PATCH","CONFIG_CHANGE","VULN_REMEDIATION","ADVISORY_RESPONSE","CLINICAL_REVIEW","FIRMWARE_UPDATE","NETWORK_REMEDIATION","NEW_ASSET_PROCUREMENT","OTHER"]},"scheduledAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"lastCommentAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"parentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"creatorId":{"type":"string"},"assigneeId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceLabel":{"anyOf":[{"type":"string"},{"type":"null"}]},"body":{"anyOf":[{"type":"string"},{"type":"null"}]},"suggestedAssignee":{"anyOf":[{"type":"string"},{"type":"null"}]},"departments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false}},"descriptions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ticketId":{"type":"string"},"departmentId":{"type":"string"},"body":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"department":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false}},"required":["id","ticketId","departmentId","body","createdAt","updatedAt","department"],"additionalProperties":false}},"assignee":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email"],"additionalProperties":false},{"type":"null"}]},"creator":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email"],"additionalProperties":false},"parent":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"summary":{"type":"string"}},"required":["id","summary"],"additionalProperties":false},{"type":"null"}]},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"summary":{"type":"string"},"status":{"type":"string","enum":["TO_DO","IN_PROGRESS","REQUIRES_APPROVAL","DONE"]},"departments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false}},"_count":{"type":"object","properties":{"comments":{"type":"number"}},"required":["comments"],"additionalProperties":false}},"required":["id","summary","status","departments","_count"],"additionalProperties":false}},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"ip":{"type":"string"},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{},"deviceGroupId":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"vendorId":{"anyOf":[{"type":"string"},{"type":"null"}]},"productId":{"anyOf":[{"type":"string"},{"type":"null"}]},"versionId":{"anyOf":[{"type":"string"},{"type":"null"}]},"vendor":{"anyOf":[{"type":"object","properties":{"canonicalDisplayName":{"type":"string"}},"required":["canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"product":{"anyOf":[{"type":"object","properties":{"canonicalDisplayName":{"type":"string"}},"required":["canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"}},"required":["canonicalName"],"additionalProperties":false},{"type":"null"}]}},"required":["id","vendorId","productId","versionId","vendor","product","version"],"additionalProperties":false}},"required":["id","hostname","ip","role","macAddress","location","deviceGroupId","deviceGroup"],"additionalProperties":false}},"vulnerabilities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","cveId","severity","cvssScore"],"additionalProperties":false}},"advisories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]}},"required":["id","title","severity"],"additionalProperties":false}},"remediations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"vendorId":{"type":"string"},"productId":{"anyOf":[{"type":"string"},{"type":"null"}]},"versionId":{"anyOf":[{"type":"string"},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["vendorId","productId","versionId","versionRange"],"additionalProperties":false}}},"required":["id","description","deviceGroupMatchings"],"additionalProperties":false}},"issues":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","FALSE_POSITIVE","REMEDIATED"]},"assetId":{"type":"string"},"vulnerabilityId":{"type":"string"}},"required":["id","status","assetId","vulnerabilityId"],"additionalProperties":false}},"comments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ticketId":{"type":"string"},"authorId":{"type":"string"},"body":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"department":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false},{"type":"null"}]}},"required":["id","name","email","image","department"],"additionalProperties":false}},"required":["id","ticketId","authorId","body","createdAt","updatedAt","author"],"additionalProperties":false}},"isWatching":{"type":"boolean"},"activities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ticketId":{"type":"string"},"userId":{"type":"string"},"type":{"type":"string","enum":["STATUS_CHANGED","CATEGORY_CHANGED","ASSIGNEE_CHANGED","DEPARTMENTS_CHANGED","SCHEDULED_AT_CHANGED","SUMMARY_CHANGED","DESCRIPTION_CHANGED","CHILD_ATTACHED","CHILD_DETACHED","ASSET_ATTACHED","ASSET_DETACHED"]},"data":{},"createdAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","image"],"additionalProperties":false}},"required":["id","ticketId","userId","type","data","createdAt","user"],"additionalProperties":false}}},"required":["id","summary","status","category","scheduledAt","createdAt","updatedAt","lastCommentAt","parentId","creatorId","assigneeId","sourceLabel","body","suggestedAssignee","departments","descriptions","assignee","creator","parent","children","assets","vulnerabilities","advisories","remediations","issues","comments","isWatching","activities"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"patch":{"operationId":"tracking-update","summary":"Update a work-order ticket","description":"Partially update a work-order ticket. Any omitted field is left untouched. Pass null on nullable fields (assigneeId, scheduledAt) to clear them. Pass an empty array on departmentIds to clear all departments. `descriptions` replaces the per-department description set wholesale; entries with empty bodies are dropped, and removed departments lose their descriptions automatically.","tags":["Work Orders"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"summary":{"type":"string","minLength":1,"maxLength":255},"status":{"type":"string","enum":["TO_DO","IN_PROGRESS","REQUIRES_APPROVAL","DONE"]},"category":{"type":"string","enum":["PATCH","CONFIG_CHANGE","VULN_REMEDIATION","ADVISORY_RESPONSE","CLINICAL_REVIEW","FIRMWARE_UPDATE","NETWORK_REMEDIATION","NEW_ASSET_PROCUREMENT","OTHER"]},"departmentIds":{"type":"array","items":{"type":"string"}},"descriptions":{"type":"array","items":{"type":"object","properties":{"departmentId":{"type":"string"},"body":{"type":"string","maxLength":10000}},"required":["departmentId","body"]}},"assigneeId":{"anyOf":[{"type":"string"},{"type":"null"}]},"scheduledAt":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"summary":{"type":"string"},"status":{"type":"string","enum":["TO_DO","IN_PROGRESS","REQUIRES_APPROVAL","DONE"]},"category":{"type":"string","enum":["PATCH","CONFIG_CHANGE","VULN_REMEDIATION","ADVISORY_RESPONSE","CLINICAL_REVIEW","FIRMWARE_UPDATE","NETWORK_REMEDIATION","NEW_ASSET_PROCUREMENT","OTHER"]},"scheduledAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"lastCommentAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"parentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"creatorId":{"type":"string"},"assigneeId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceLabel":{"anyOf":[{"type":"string"},{"type":"null"}]},"body":{"anyOf":[{"type":"string"},{"type":"null"}]},"suggestedAssignee":{"anyOf":[{"type":"string"},{"type":"null"}]},"departments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false}},"descriptions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ticketId":{"type":"string"},"departmentId":{"type":"string"},"body":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"department":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false}},"required":["id","ticketId","departmentId","body","createdAt","updatedAt","department"],"additionalProperties":false}},"assignee":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email"],"additionalProperties":false},{"type":"null"}]},"creator":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email"],"additionalProperties":false},"parent":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"summary":{"type":"string"}},"required":["id","summary"],"additionalProperties":false},{"type":"null"}]},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"summary":{"type":"string"},"status":{"type":"string","enum":["TO_DO","IN_PROGRESS","REQUIRES_APPROVAL","DONE"]},"departments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false}},"_count":{"type":"object","properties":{"comments":{"type":"number"}},"required":["comments"],"additionalProperties":false}},"required":["id","summary","status","departments","_count"],"additionalProperties":false}},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"ip":{"type":"string"},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{},"deviceGroupId":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"vendorId":{"anyOf":[{"type":"string"},{"type":"null"}]},"productId":{"anyOf":[{"type":"string"},{"type":"null"}]},"versionId":{"anyOf":[{"type":"string"},{"type":"null"}]},"vendor":{"anyOf":[{"type":"object","properties":{"canonicalDisplayName":{"type":"string"}},"required":["canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"product":{"anyOf":[{"type":"object","properties":{"canonicalDisplayName":{"type":"string"}},"required":["canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"}},"required":["canonicalName"],"additionalProperties":false},{"type":"null"}]}},"required":["id","vendorId","productId","versionId","vendor","product","version"],"additionalProperties":false}},"required":["id","hostname","ip","role","macAddress","location","deviceGroupId","deviceGroup"],"additionalProperties":false}},"vulnerabilities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","cveId","severity","cvssScore"],"additionalProperties":false}},"advisories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]}},"required":["id","title","severity"],"additionalProperties":false}},"remediations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"vendorId":{"type":"string"},"productId":{"anyOf":[{"type":"string"},{"type":"null"}]},"versionId":{"anyOf":[{"type":"string"},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["vendorId","productId","versionId","versionRange"],"additionalProperties":false}}},"required":["id","description","deviceGroupMatchings"],"additionalProperties":false}},"issues":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","FALSE_POSITIVE","REMEDIATED"]},"assetId":{"type":"string"},"vulnerabilityId":{"type":"string"}},"required":["id","status","assetId","vulnerabilityId"],"additionalProperties":false}},"comments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ticketId":{"type":"string"},"authorId":{"type":"string"},"body":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"department":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false},{"type":"null"}]}},"required":["id","name","email","image","department"],"additionalProperties":false}},"required":["id","ticketId","authorId","body","createdAt","updatedAt","author"],"additionalProperties":false}},"isWatching":{"type":"boolean"},"activities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ticketId":{"type":"string"},"userId":{"type":"string"},"type":{"type":"string","enum":["STATUS_CHANGED","CATEGORY_CHANGED","ASSIGNEE_CHANGED","DEPARTMENTS_CHANGED","SCHEDULED_AT_CHANGED","SUMMARY_CHANGED","DESCRIPTION_CHANGED","CHILD_ATTACHED","CHILD_DETACHED","ASSET_ATTACHED","ASSET_DETACHED"]},"data":{},"createdAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","image"],"additionalProperties":false}},"required":["id","ticketId","userId","type","data","createdAt","user"],"additionalProperties":false}}},"required":["id","summary","status","category","scheduledAt","createdAt","updatedAt","lastCommentAt","parentId","creatorId","assigneeId","sourceLabel","body","suggestedAssignee","departments","descriptions","assignee","creator","parent","children","assets","vulnerabilities","advisories","remediations","issues","comments","isWatching","activities"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/work-orders":{"get":{"operationId":"tracking-list","summary":"List work-order tickets","description":"Return a paginated set of work-order tickets matching the given filters, with linked entities (assets, vulnerabilities, advisories, remediations) included.","tags":["Work Orders"],"security":[{"Authorization":[]}],"parameters":[{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"search","schema":{"default":"","type":"string"}},{"in":"query","name":"sort","schema":{"default":"","type":"string"}},{"in":"query","name":"lastUpdatedStartTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"lastUpdatedEndTime","schema":{"default":"","anyOf":[{"type":"string","const":""},{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}]}},{"in":"query","name":"departmentIds","schema":{"type":"array","items":{"type":"string"}}},{"in":"query","name":"assigneeIds","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"summary":{"type":"string"},"status":{"type":"string","enum":["TO_DO","IN_PROGRESS","REQUIRES_APPROVAL","DONE"]},"category":{"type":"string","enum":["PATCH","CONFIG_CHANGE","VULN_REMEDIATION","ADVISORY_RESPONSE","CLINICAL_REVIEW","FIRMWARE_UPDATE","NETWORK_REMEDIATION","NEW_ASSET_PROCUREMENT","OTHER"]},"scheduledAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"parentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"creatorId":{"type":"string"},"assigneeId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceLabel":{"anyOf":[{"type":"string"},{"type":"null"}]},"departments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false}},"assignee":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email"],"additionalProperties":false},{"type":"null"}]},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"ip":{"type":"string"},"role":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","hostname","ip","role"],"additionalProperties":false}},"vulnerabilities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","cveId","severity","cvssScore"],"additionalProperties":false}},"advisories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]}},"required":["id","title","severity"],"additionalProperties":false}},"remediations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","description"],"additionalProperties":false}},"isWatching":{"type":"boolean"}},"required":["id","summary","status","category","scheduledAt","createdAt","updatedAt","parentId","creatorId","assigneeId","sourceLabel","departments","assignee","assets","vulnerabilities","advisories","remediations","isWatching"],"additionalProperties":false}},"page":{"type":"number"},"pageSize":{"type":"number"},"totalCount":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["items","page","pageSize","totalCount","totalPages","hasNextPage","hasPreviousPage"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/work-orders/{ticketId}/assets/{assetId}":{"post":{"operationId":"tracking-attachAsset","summary":"Attach an asset to a work-order ticket","description":"Link an existing asset to the given work-order ticket via the many-to-many relation. Returns the updated ticket detail.","tags":["Work Orders"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"ticketId","schema":{"type":"string"},"required":true},{"in":"path","name":"assetId","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"summary":{"type":"string"},"status":{"type":"string","enum":["TO_DO","IN_PROGRESS","REQUIRES_APPROVAL","DONE"]},"category":{"type":"string","enum":["PATCH","CONFIG_CHANGE","VULN_REMEDIATION","ADVISORY_RESPONSE","CLINICAL_REVIEW","FIRMWARE_UPDATE","NETWORK_REMEDIATION","NEW_ASSET_PROCUREMENT","OTHER"]},"scheduledAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"lastCommentAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"parentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"creatorId":{"type":"string"},"assigneeId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceLabel":{"anyOf":[{"type":"string"},{"type":"null"}]},"body":{"anyOf":[{"type":"string"},{"type":"null"}]},"suggestedAssignee":{"anyOf":[{"type":"string"},{"type":"null"}]},"departments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false}},"descriptions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ticketId":{"type":"string"},"departmentId":{"type":"string"},"body":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"department":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false}},"required":["id","ticketId","departmentId","body","createdAt","updatedAt","department"],"additionalProperties":false}},"assignee":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email"],"additionalProperties":false},{"type":"null"}]},"creator":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email"],"additionalProperties":false},"parent":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"summary":{"type":"string"}},"required":["id","summary"],"additionalProperties":false},{"type":"null"}]},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"summary":{"type":"string"},"status":{"type":"string","enum":["TO_DO","IN_PROGRESS","REQUIRES_APPROVAL","DONE"]},"departments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false}},"_count":{"type":"object","properties":{"comments":{"type":"number"}},"required":["comments"],"additionalProperties":false}},"required":["id","summary","status","departments","_count"],"additionalProperties":false}},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"ip":{"type":"string"},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{},"deviceGroupId":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"vendorId":{"anyOf":[{"type":"string"},{"type":"null"}]},"productId":{"anyOf":[{"type":"string"},{"type":"null"}]},"versionId":{"anyOf":[{"type":"string"},{"type":"null"}]},"vendor":{"anyOf":[{"type":"object","properties":{"canonicalDisplayName":{"type":"string"}},"required":["canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"product":{"anyOf":[{"type":"object","properties":{"canonicalDisplayName":{"type":"string"}},"required":["canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"}},"required":["canonicalName"],"additionalProperties":false},{"type":"null"}]}},"required":["id","vendorId","productId","versionId","vendor","product","version"],"additionalProperties":false}},"required":["id","hostname","ip","role","macAddress","location","deviceGroupId","deviceGroup"],"additionalProperties":false}},"vulnerabilities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","cveId","severity","cvssScore"],"additionalProperties":false}},"advisories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]}},"required":["id","title","severity"],"additionalProperties":false}},"remediations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"vendorId":{"type":"string"},"productId":{"anyOf":[{"type":"string"},{"type":"null"}]},"versionId":{"anyOf":[{"type":"string"},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["vendorId","productId","versionId","versionRange"],"additionalProperties":false}}},"required":["id","description","deviceGroupMatchings"],"additionalProperties":false}},"issues":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","FALSE_POSITIVE","REMEDIATED"]},"assetId":{"type":"string"},"vulnerabilityId":{"type":"string"}},"required":["id","status","assetId","vulnerabilityId"],"additionalProperties":false}},"comments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ticketId":{"type":"string"},"authorId":{"type":"string"},"body":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"department":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false},{"type":"null"}]}},"required":["id","name","email","image","department"],"additionalProperties":false}},"required":["id","ticketId","authorId","body","createdAt","updatedAt","author"],"additionalProperties":false}},"isWatching":{"type":"boolean"},"activities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ticketId":{"type":"string"},"userId":{"type":"string"},"type":{"type":"string","enum":["STATUS_CHANGED","CATEGORY_CHANGED","ASSIGNEE_CHANGED","DEPARTMENTS_CHANGED","SCHEDULED_AT_CHANGED","SUMMARY_CHANGED","DESCRIPTION_CHANGED","CHILD_ATTACHED","CHILD_DETACHED","ASSET_ATTACHED","ASSET_DETACHED"]},"data":{},"createdAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","image"],"additionalProperties":false}},"required":["id","ticketId","userId","type","data","createdAt","user"],"additionalProperties":false}}},"required":["id","summary","status","category","scheduledAt","createdAt","updatedAt","lastCommentAt","parentId","creatorId","assigneeId","sourceLabel","body","suggestedAssignee","departments","descriptions","assignee","creator","parent","children","assets","vulnerabilities","advisories","remediations","issues","comments","isWatching","activities"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"delete":{"operationId":"tracking-detachAsset","summary":"Detach an asset from a work-order ticket","description":"Unlink an asset from the given work-order ticket. The asset itself is not deleted. Returns the updated ticket detail.","tags":["Work Orders"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"ticketId","schema":{"type":"string"},"required":true},{"in":"path","name":"assetId","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"summary":{"type":"string"},"status":{"type":"string","enum":["TO_DO","IN_PROGRESS","REQUIRES_APPROVAL","DONE"]},"category":{"type":"string","enum":["PATCH","CONFIG_CHANGE","VULN_REMEDIATION","ADVISORY_RESPONSE","CLINICAL_REVIEW","FIRMWARE_UPDATE","NETWORK_REMEDIATION","NEW_ASSET_PROCUREMENT","OTHER"]},"scheduledAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"lastCommentAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"parentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"creatorId":{"type":"string"},"assigneeId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceLabel":{"anyOf":[{"type":"string"},{"type":"null"}]},"body":{"anyOf":[{"type":"string"},{"type":"null"}]},"suggestedAssignee":{"anyOf":[{"type":"string"},{"type":"null"}]},"departments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false}},"descriptions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ticketId":{"type":"string"},"departmentId":{"type":"string"},"body":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"department":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false}},"required":["id","ticketId","departmentId","body","createdAt","updatedAt","department"],"additionalProperties":false}},"assignee":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email"],"additionalProperties":false},{"type":"null"}]},"creator":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email"],"additionalProperties":false},"parent":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"summary":{"type":"string"}},"required":["id","summary"],"additionalProperties":false},{"type":"null"}]},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"summary":{"type":"string"},"status":{"type":"string","enum":["TO_DO","IN_PROGRESS","REQUIRES_APPROVAL","DONE"]},"departments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false}},"_count":{"type":"object","properties":{"comments":{"type":"number"}},"required":["comments"],"additionalProperties":false}},"required":["id","summary","status","departments","_count"],"additionalProperties":false}},"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"ip":{"type":"string"},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"macAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{},"deviceGroupId":{"type":"string"},"deviceGroup":{"type":"object","properties":{"id":{"type":"string"},"vendorId":{"anyOf":[{"type":"string"},{"type":"null"}]},"productId":{"anyOf":[{"type":"string"},{"type":"null"}]},"versionId":{"anyOf":[{"type":"string"},{"type":"null"}]},"vendor":{"anyOf":[{"type":"object","properties":{"canonicalDisplayName":{"type":"string"}},"required":["canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"product":{"anyOf":[{"type":"object","properties":{"canonicalDisplayName":{"type":"string"}},"required":["canonicalDisplayName"],"additionalProperties":false},{"type":"null"}]},"version":{"anyOf":[{"type":"object","properties":{"canonicalName":{"type":"string"}},"required":["canonicalName"],"additionalProperties":false},{"type":"null"}]}},"required":["id","vendorId","productId","versionId","vendor","product","version"],"additionalProperties":false}},"required":["id","hostname","ip","role","macAddress","location","deviceGroupId","deviceGroup"],"additionalProperties":false}},"vulnerabilities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cveId":{"anyOf":[{"type":"string"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]},"cvssScore":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","cveId","severity","cvssScore"],"additionalProperties":false}},"advisories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"severity":{"type":"string","enum":["Critical","High","Medium","Low"]}},"required":["id","title","severity"],"additionalProperties":false}},"remediations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"deviceGroupMatchings":{"type":"array","items":{"type":"object","properties":{"vendorId":{"type":"string"},"productId":{"anyOf":[{"type":"string"},{"type":"null"}]},"versionId":{"anyOf":[{"type":"string"},{"type":"null"}]},"versionRange":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["vendorId","productId","versionId","versionRange"],"additionalProperties":false}}},"required":["id","description","deviceGroupMatchings"],"additionalProperties":false}},"issues":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","FALSE_POSITIVE","REMEDIATED"]},"assetId":{"type":"string"},"vulnerabilityId":{"type":"string"}},"required":["id","status","assetId","vulnerabilityId"],"additionalProperties":false}},"comments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ticketId":{"type":"string"},"authorId":{"type":"string"},"body":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"department":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false},{"type":"null"}]}},"required":["id","name","email","image","department"],"additionalProperties":false}},"required":["id","ticketId","authorId","body","createdAt","updatedAt","author"],"additionalProperties":false}},"isWatching":{"type":"boolean"},"activities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ticketId":{"type":"string"},"userId":{"type":"string"},"type":{"type":"string","enum":["STATUS_CHANGED","CATEGORY_CHANGED","ASSIGNEE_CHANGED","DEPARTMENTS_CHANGED","SCHEDULED_AT_CHANGED","SUMMARY_CHANGED","DESCRIPTION_CHANGED","CHILD_ATTACHED","CHILD_DETACHED","ASSET_ATTACHED","ASSET_DETACHED"]},"data":{},"createdAt":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","image"],"additionalProperties":false}},"required":["id","ticketId","userId","type","data","createdAt","user"],"additionalProperties":false}}},"required":["id","summary","status","category","scheduledAt","createdAt","updatedAt","lastCommentAt","parentId","creatorId","assigneeId","sourceLabel","body","suggestedAssignee","departments","descriptions","assignee","creator","parent","children","assets","vulnerabilities","advisories","remediations","issues","comments","isWatching","activities"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/work-orders/{ticketId}/comments":{"post":{"operationId":"tracking-addComment","summary":"Add a comment to a work-order ticket","description":"Post a comment authored by the authenticated user. Bumps the ticket's lastCommentAt in the same transaction.","tags":["Work Orders"],"security":[{"Authorization":[]}],"parameters":[{"in":"path","name":"ticketId","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":10000}},"required":["body"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"ticketId":{"type":"string"},"authorId":{"type":"string"},"body":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"department":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"],"additionalProperties":false},{"type":"null"}]}},"required":["id","name","email","image","department"],"additionalProperties":false}},"required":["id","ticketId","authorId","body","createdAt","updatedAt","author"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}},"components":{"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Invalid input data"},"code":{"type":"string","description":"The error code","example":"BAD_REQUEST"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information","example":{"code":"BAD_REQUEST","message":"Invalid input data","issues":[]}},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Authorization not provided"},"code":{"type":"string","description":"The error code","example":"UNAUTHORIZED"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information","example":{"code":"UNAUTHORIZED","message":"Authorization not provided","issues":[]}},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Insufficient access"},"code":{"type":"string","description":"The error code","example":"FORBIDDEN"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information","example":{"code":"FORBIDDEN","message":"Insufficient access","issues":[]}},"error.NOT_FOUND":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Not found"},"code":{"type":"string","description":"The error code","example":"NOT_FOUND"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Not found error (404)","description":"The error information","example":{"code":"NOT_FOUND","message":"Not found","issues":[]}},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Internal server error"},"code":{"type":"string","description":"The error code","example":"INTERNAL_SERVER_ERROR"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information","example":{"code":"INTERNAL_SERVER_ERROR","message":"Internal server error","issues":[]}},"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"type":"array","items":{"$ref":"#/components/schemas/__schema0"}},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/__schema0"}}]}},"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}}}} \ No newline at end of file