150 lines
4.3 KiB
JSON
150 lines
4.3 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"title": "Sherlock Target Manifest",
|
|
"description": "Social media targets to probe for the existence of known usernames",
|
|
"type": "object",
|
|
"properties": {
|
|
"$schema": { "type": "string" }
|
|
},
|
|
"patternProperties": {
|
|
"^(?!\\$).*?$": {
|
|
"type": "object",
|
|
"description": "Target name and associated information (key should be human readable name)",
|
|
"required": ["url", "urlMain", "errorType", "username_claimed"],
|
|
"properties": {
|
|
"url": { "type": "string" },
|
|
"urlMain": { "type": "string" },
|
|
"urlProbe": { "type": "string" },
|
|
"username_claimed": { "type": "string" },
|
|
"regexCheck": { "type": "string" },
|
|
"isNSFW": { "type": "boolean" },
|
|
"headers": { "type": "object" },
|
|
"request_payload": { "type": "object" },
|
|
"__comment__": {
|
|
"type": "string",
|
|
"description": "Used to clarify important target information if (and only if) a commit message would not suffice.\nThis key should not be parsed anywhere within Sherlock."
|
|
},
|
|
"tags": {
|
|
"oneOf": [
|
|
{ "$ref": "#/$defs/tag" },
|
|
{ "type": "array", "items": { "$ref": "#/$defs/tag" } }
|
|
]
|
|
},
|
|
"request_method": {
|
|
"type": "string",
|
|
"enum": ["GET", "POST", "HEAD", "PUT"]
|
|
},
|
|
"errorType": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"enum": ["message", "response_url", "status_code"]
|
|
},
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": ["message", "response_url", "status_code"]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"errorMsg": {
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{ "type": "array", "items": { "type": "string" } }
|
|
]
|
|
},
|
|
"errorCode": {
|
|
"oneOf": [
|
|
{ "type": "integer" },
|
|
{ "type": "array", "items": { "type": "integer" } }
|
|
]
|
|
},
|
|
"errorUrl": { "type": "string" },
|
|
"response_url": { "type": "string" }
|
|
},
|
|
"dependencies": {
|
|
"errorMsg": {
|
|
"oneOf": [
|
|
{ "properties": { "errorType": { "const": "message" } } },
|
|
{
|
|
"properties": {
|
|
"errorType": {
|
|
"type": "array",
|
|
"contains": { "const": "message" }
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"errorUrl": {
|
|
"oneOf": [
|
|
{ "properties": { "errorType": { "const": "response_url" } } },
|
|
{
|
|
"properties": {
|
|
"errorType": {
|
|
"type": "array",
|
|
"contains": { "const": "response_url" }
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"errorCode": {
|
|
"oneOf": [
|
|
{ "properties": { "errorType": { "const": "status_code" } } },
|
|
{
|
|
"properties": {
|
|
"errorType": {
|
|
"type": "array",
|
|
"contains": { "const": "status_code" }
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"anyOf": [
|
|
{ "properties": { "errorType": { "const": "message" } } },
|
|
{
|
|
"properties": {
|
|
"errorType": {
|
|
"type": "array",
|
|
"contains": { "const": "message" }
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"then": { "required": ["errorMsg"] }
|
|
},
|
|
{
|
|
"if": {
|
|
"anyOf": [
|
|
{ "properties": { "errorType": { "const": "response_url" } } },
|
|
{
|
|
"properties": {
|
|
"errorType": {
|
|
"type": "array",
|
|
"contains": { "const": "response_url" }
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"then": { "required": ["errorUrl"] }
|
|
}
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"$defs": {
|
|
"tag": { "type": "string", "enum": ["adult", "gaming"] }
|
|
}
|
|
}
|