182 lines
4.9 KiB
JSON
182 lines
4.9 KiB
JSON
{
|
|
"type": "object",
|
|
"description": "The schema for vulnerability finding details",
|
|
"additionalProperties": false,
|
|
"patternProperties": {
|
|
"^.*$": {
|
|
"allOf": [
|
|
{ "$ref": "#/definitions/named_field" },
|
|
{ "$ref": "#/definitions/type_list" }
|
|
]
|
|
}
|
|
},
|
|
"definitions": {
|
|
"type_list": {
|
|
"oneOf": [
|
|
{ "$ref": "#/definitions/named_list" },
|
|
{ "$ref": "#/definitions/list" },
|
|
{ "$ref": "#/definitions/table" },
|
|
|
|
{ "$ref": "#/definitions/text" },
|
|
{ "$ref": "#/definitions/url" },
|
|
{ "$ref": "#/definitions/code" },
|
|
{ "$ref": "#/definitions/int" },
|
|
|
|
{ "$ref": "#/definitions/commit" },
|
|
{ "$ref": "#/definitions/file_location" },
|
|
{ "$ref": "#/definitions/module_location" }
|
|
]
|
|
},
|
|
"lang_text": {
|
|
"type": "object",
|
|
"required": [ "value", "lang" ],
|
|
"properties": {
|
|
"lang": { "type": "string" },
|
|
"value": { "type": "string" }
|
|
}
|
|
},
|
|
"lang_text_list": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/definitions/lang_text" }
|
|
},
|
|
"named_field": {
|
|
"type": "object",
|
|
"required": [ "name" ],
|
|
"properties": {
|
|
"name": { "$ref": "#/definitions/lang_text_list" },
|
|
"description": { "$ref": "#/definitions/lang_text_list" }
|
|
}
|
|
},
|
|
"named_list": {
|
|
"type": "object",
|
|
"description": "An object with named and typed fields",
|
|
"required": [ "type", "items" ],
|
|
"properties": {
|
|
"type": { "const": "named-list" },
|
|
"items": {
|
|
"type": "object",
|
|
"patternProperties": {
|
|
"^.*$": {
|
|
"allOf": [
|
|
{ "$ref": "#/definitions/named_field" },
|
|
{ "$ref": "#/definitions/type_list" }
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"list": {
|
|
"type": "object",
|
|
"description": "A list of typed fields",
|
|
"required": [ "type", "items" ],
|
|
"properties": {
|
|
"type": { "const": "list" },
|
|
"items": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/definitions/type_list" }
|
|
}
|
|
}
|
|
},
|
|
"table": {
|
|
"type": "object",
|
|
"description": "A table of typed fields",
|
|
"required": [],
|
|
"properties": {
|
|
"type": { "const": "table" },
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"header": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/type_list"
|
|
}
|
|
},
|
|
"rows": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/type_list"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"text": {
|
|
"type": "object",
|
|
"description": "Raw text",
|
|
"required": [ "type", "value" ],
|
|
"properties": {
|
|
"type": { "const": "text" },
|
|
"value": { "$ref": "#/definitions/lang_text_list" }
|
|
}
|
|
},
|
|
"url": {
|
|
"type": "object",
|
|
"description": "A single URL",
|
|
"required": [ "type", "href" ],
|
|
"properties": {
|
|
"type": { "const": "url" },
|
|
"text": { "$ref": "#/definitions/lang_text_list" },
|
|
"href": { "type": "string" }
|
|
}
|
|
},
|
|
"code": {
|
|
"type": "object",
|
|
"description": "A codeblock",
|
|
"required": [ "type", "value" ],
|
|
"properties": {
|
|
"type": { "const": "code" },
|
|
"value": { "type": "string" },
|
|
"lang": { "type": "string" }
|
|
}
|
|
},
|
|
"int": {
|
|
"type": "object",
|
|
"description": "An integer",
|
|
"required": [ "type", "value" ],
|
|
"properties": {
|
|
"type": { "const": "int" },
|
|
"value": { "type": "integer" },
|
|
"format": {
|
|
"type": "string",
|
|
"enum": [ "default", "hex" ]
|
|
}
|
|
}
|
|
},
|
|
"commit": {
|
|
"type": "object",
|
|
"description": "A specific commit within the project",
|
|
"required": [ "type", "value" ],
|
|
"properties": {
|
|
"type": { "const": "commit" },
|
|
"value": { "type": "string", "description": "The commit SHA" }
|
|
}
|
|
},
|
|
"file_location": {
|
|
"type": "object",
|
|
"description": "A location within a file in the project",
|
|
"required": [ "type", "file_name", "line_start" ],
|
|
"properties": {
|
|
"type": { "const": "file-location" },
|
|
"file_name": { "type": "string" },
|
|
"line_start": { "type": "integer" },
|
|
"line_end": { "type": "integer" }
|
|
}
|
|
},
|
|
"module_location": {
|
|
"type": "object",
|
|
"description": "A location within a binary module of the form module+relative_offset",
|
|
"required": [ "type", "module_name", "offset" ],
|
|
"properties": {
|
|
"type": { "const": "module-location" },
|
|
"module_name": { "type": "string" },
|
|
"offset": { "type": "integer" }
|
|
}
|
|
}
|
|
}
|
|
}
|