295 lines
6.5 KiB
JSON
295 lines
6.5 KiB
JSON
{
|
|
"type": "object",
|
|
"description": "The schema for vulnerability finding details",
|
|
"additionalProperties": false,
|
|
"patternProperties": {
|
|
"^.*$": {
|
|
"allOf": [
|
|
{ "$ref": "#/definitions/named_field" },
|
|
{ "$ref": "#/definitions/detail_type" }
|
|
]
|
|
}
|
|
},
|
|
"definitions": {
|
|
"detail_type": {
|
|
"oneOf": [
|
|
{ "$ref": "#/definitions/named_list" },
|
|
{ "$ref": "#/definitions/list" },
|
|
{ "$ref": "#/definitions/table" },
|
|
{ "$ref": "#/definitions/text" },
|
|
{ "$ref": "#/definitions/url" },
|
|
{ "$ref": "#/definitions/code" },
|
|
{ "$ref": "#/definitions/value" },
|
|
{ "$ref": "#/definitions/diff" },
|
|
{ "$ref": "#/definitions/markdown" },
|
|
{ "$ref": "#/definitions/commit" },
|
|
{ "$ref": "#/definitions/file_location" },
|
|
{ "$ref": "#/definitions/module_location" }
|
|
]
|
|
},
|
|
"text_value": {
|
|
"type": "string"
|
|
},
|
|
"named_field": {
|
|
"type": "object",
|
|
"required": [
|
|
"name"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"$ref": "#/definitions/text_value",
|
|
"minLength": 1
|
|
},
|
|
"description": {
|
|
"$ref": "#/definitions/text_value"
|
|
}
|
|
}
|
|
},
|
|
"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/detail_type"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"list": {
|
|
"type": "object",
|
|
"description": "A list of typed fields",
|
|
"required": [
|
|
"type",
|
|
"items"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"const": "list"
|
|
},
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/detail_type"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"table": {
|
|
"type": "object",
|
|
"description": "A table of typed fields",
|
|
"required": [
|
|
"type",
|
|
"rows"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"const": "table"
|
|
},
|
|
"header": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/detail_type"
|
|
}
|
|
},
|
|
"rows": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/detail_type"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"text": {
|
|
"type": "object",
|
|
"description": "Raw text",
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"const": "text"
|
|
},
|
|
"value": {
|
|
"$ref": "#/definitions/text_value"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"type": "object",
|
|
"description": "A single URL",
|
|
"required": [
|
|
"type",
|
|
"href"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"const": "url"
|
|
},
|
|
"text": {
|
|
"$ref": "#/definitions/text_value"
|
|
},
|
|
"href": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"examples": ["http://mysite.com"]
|
|
}
|
|
}
|
|
},
|
|
"code": {
|
|
"type": "object",
|
|
"description": "A codeblock",
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"const": "code"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
},
|
|
"lang": {
|
|
"type": "string",
|
|
"description": "A programming language"
|
|
}
|
|
}
|
|
},
|
|
"value": {
|
|
"type": "object",
|
|
"description": "A field that can store a range of types of value",
|
|
"required": ["type", "value"],
|
|
"properties": {
|
|
"type": { "const": "value" },
|
|
"value": {
|
|
"type": ["number", "string", "boolean"]
|
|
}
|
|
}
|
|
},
|
|
"diff": {
|
|
"type": "object",
|
|
"description": "A diff",
|
|
"required": [
|
|
"type",
|
|
"before",
|
|
"after"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"const": "diff"
|
|
},
|
|
"before": {
|
|
"type": "string"
|
|
},
|
|
"after": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"markdown": {
|
|
"type": "object",
|
|
"description": "GitLab flavoured markdown, see https://docs.gitlab.com/ee/user/markdown.html",
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"const": "markdown"
|
|
},
|
|
"value": {
|
|
"$ref": "#/definitions/text_value",
|
|
"examples": ["Here is markdown `inline code` #1 [test](gitlab.com)\n\n![GitLab Logo](https://about.gitlab.com/images/press/logo/preview/gitlab-logo-white-preview.png)"]
|
|
}
|
|
}
|
|
},
|
|
"commit": {
|
|
"type": "object",
|
|
"description": "A commit/tag/branch within the GitLab project",
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"const": "commit"
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"description": "The commit SHA",
|
|
"minLength": 1
|
|
}
|
|
}
|
|
},
|
|
"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",
|
|
"minLength": 1
|
|
},
|
|
"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",
|
|
"minLength": 1,
|
|
"examples": ["compiled_binary"]
|
|
},
|
|
"offset": {
|
|
"type": "integer",
|
|
"examples": [100]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|