{ "title": "Wappalyzer schema", "definitions": { "non-empty-non-blank-string": { "type": "string", "pattern": "^(?!\\s*$).+" } }, "type": "object", "additionalProperties": false, "required": ["technologies", "categories"], "properties": { "$schema": { "type": "string" }, "categories": { "type": "object", "minProperties": 64, "additionalProperties": false, "patternProperties": { "^[0-9]+$": { "type": "object", "properties": { "priority": { "type": "number" }, "name": { "type": "string" } } } } }, "technologies": { "type": "object", "additionalProperties": { "additionalProperties": false, "required": ["cats","website"], "properties": { "description": { "type": "string", "pattern": "^.{0,500}$" }, "oss": { "type": "boolean" }, "saas": { "type": "boolean" }, "pricing": { "type": "array", "items": { "type": "string", "pattern": "^(low|mid|high|freemium|poa|onetime|recurring)$" } }, "cats": { "type": "array", "items": { "type": "number" }, "minItems": 1 }, "cpe": { "$ref": "#/definitions/non-empty-non-blank-string" }, "cookies": { "type": "object", "additionalProperties": false, "patternProperties": { "^.+$": { }, "additionalProperties": { "type": "string" } } }, "js": { "type": "object", "additionalProperties": false, "patternProperties": { "^.+$": { }, "additionalProperties": { "type": "string" } } }, "dom": { "type": "object", "additionalProperties": false, "patternProperties": { "^.+$": { } } }, "dns": { "type": "object", "additionalProperties": false, "patternProperties": { "^.+$": { } } }, "headers": { "type": "object", "additionalProperties": false, "patternProperties": { "^.+$": { }, "additionalProperties": { "type": "string" } } }, "html": { "oneOf": [ { "type": "array", "items": { "$ref": "#/definitions/non-empty-non-blank-string" } }, { "$ref": "#/definitions/non-empty-non-blank-string" } ] }, "css": { "oneOf": [ { "type": "array", "items": { "$ref": "#/definitions/non-empty-non-blank-string" } }, { "$ref": "#/definitions/non-empty-non-blank-string" } ] }, "robots": { "oneOf": [ { "type": "array", "items": { "$ref": "#/definitions/non-empty-non-blank-string" } }, { "$ref": "#/definitions/non-empty-non-blank-string" } ] }, "certIssuer": { "oneOf": [ { "type": "array", "items": { "$ref": "#/definitions/non-empty-non-blank-string" } }, { "$ref": "#/definitions/non-empty-non-blank-string" } ] }, "excludes": { "oneOf": [ { "type": "array", "items": { "$ref": "#/definitions/non-empty-non-blank-string" } }, { "$ref": "#/definitions/non-empty-non-blank-string" } ] }, "implies": { "oneOf": [ { "type": "array", "items": { "$ref": "#/definitions/non-empty-non-blank-string" } }, { "$ref": "#/definitions/non-empty-non-blank-string" } ] }, "meta": { "type": "object", "additionalProperties": false, "patternProperties": { "^.+$": { }, "additionalProperties": { "type": "string" } } }, "scripts": { "oneOf": [ { "type": "array", "items": { "$ref": "#/definitions/non-empty-non-blank-string" } }, { "$ref": "#/definitions/non-empty-non-blank-string" } ] }, "url": { "$ref": "#/definitions/non-empty-non-blank-string" }, "website": { "$ref": "#/definitions/non-empty-non-blank-string" }, "icon": { "$ref": "#/definitions/non-empty-non-blank-string" } } } } } }