Created
November 6, 2023 09:18
-
-
Save stefangalescu/44325d240d15219ffaef4500e8bf61da to your computer and use it in GitHub Desktop.
OpenAPI Schema
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "components": { | |
| "responses": { | |
| "UnauthorizedError": { | |
| "description": "API key is missing or invalid", | |
| "content": { | |
| "application/json": { | |
| "schema": { "$ref": "#/components/schemas/ErrorResponse" } | |
| } | |
| } | |
| }, | |
| "TooManyRequestsError": { | |
| "description": "Too many requests made in a short period of time", | |
| "content": { | |
| "application/json": { | |
| "schema": { "$ref": "#/components/schemas/ErrorResponse" } | |
| } | |
| } | |
| }, | |
| "ForbiddenError": { | |
| "description": "You can\"t perform this action.", | |
| "content": { | |
| "application/json": { | |
| "schema": { "$ref": "#/components/schemas/ErrorResponse" } | |
| } | |
| } | |
| }, | |
| "ObjectNotFoundError": { | |
| "description": "The object with the given ID was not found", | |
| "content": { | |
| "application/json": { | |
| "schema": { "$ref": "#/components/schemas/ErrorResponse" } | |
| } | |
| } | |
| } | |
| }, | |
| "schemas": { | |
| "HttpLoggerData": { | |
| "type": "object", | |
| "properties": { | |
| "id": { | |
| "description": "the unique identifier of the data entry", | |
| "example": 321443, | |
| "type": "integer" | |
| }, | |
| "ip_address": { | |
| "description": "The source IP of the request", | |
| "example": "212.65.54.23", | |
| "format": "ip_address", | |
| "type": "string" | |
| }, | |
| "request_method": { | |
| "description": "The HTTP method used to make the request. [Here](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods) is a list of possible values", | |
| "type": ["string", "null"] | |
| }, | |
| "url_params": { | |
| "description": "The parameters used in the request", | |
| "example": "username=jamesbond", | |
| "type": "string" | |
| }, | |
| "user_agent": { | |
| "description": "The user agent used in the request", | |
| "example": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36 Edg/91.0.864.48", | |
| "type": "string" | |
| }, | |
| "os": { | |
| "description": "The OS of the user who did the request", | |
| "example": "Windows 10 x64", | |
| "type": "string" | |
| }, | |
| "http_headers": { | |
| "description": "The list of HTTP headers used in the request", | |
| "items": { "type": "string" }, | |
| "type": "array" | |
| }, | |
| "request_body_type": { | |
| "description": "The type of data held in the request body. This is `null` for empty bodies", | |
| "enum": ["binary", "text", null], | |
| "type": ["string", "null"] | |
| }, | |
| "request_body_base64": { | |
| "description": "The body of the request, base64 encoded. This is an empty string for empty bodies", | |
| "format": "base64", | |
| "type": "string" | |
| }, | |
| "request_date": { | |
| "example": "2021-06-14 15:40:52", | |
| "format": "Y-m-d H:i:s", | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "HttpLogger": { | |
| "type": "object", | |
| "properties": { | |
| "id": { | |
| "description": "the ID of the HTTP request logger", | |
| "readOnly": true, | |
| "type": "integer" | |
| }, | |
| "label": { | |
| "description": "A unique label for the HTTP request logger", | |
| "example": "mypentest", | |
| "type": "string" | |
| }, | |
| "handler_url": { | |
| "description": "The URL used to populate the data for the HTTP request logger", | |
| "example": "https://pentest-tools.com/logger/55iIAkDkGn", | |
| "format": "url", | |
| "readOnly": true, | |
| "type": "string" | |
| }, | |
| "active_days": { | |
| "description": "The number of days left before the HTTP request logger becomes read only", | |
| "example": 42, | |
| "format": "integer", | |
| "minimum": 0, | |
| "readOnly": true, | |
| "type": "number" | |
| }, | |
| "num_requests": { | |
| "description": "The number of requests made for the logger", | |
| "example": 32, | |
| "format": "integer", | |
| "minimum": 0, | |
| "readOnly": true, | |
| "type": "number" | |
| }, | |
| "request_left": { | |
| "description": "The number of requests left before the logger becomes read only", | |
| "example": 68, | |
| "format": "integer", | |
| "minimum": 0, | |
| "readOnly": true, | |
| "type": "number" | |
| } | |
| } | |
| }, | |
| "Table": { | |
| "type": "object", | |
| "properties": { | |
| "headers": { "items": { "type": "string" }, "type": "array" }, | |
| "rows": { "items": { "type": "array" }, "type": "array" } | |
| } | |
| }, | |
| "Finding": { | |
| "type": "object", | |
| "properties": { | |
| "id": { | |
| "description": "the ID of the finding. This is `null` if the scan is still running", | |
| "example": 420233, | |
| "type": ["integer", "null"] | |
| }, | |
| "name": { | |
| "description": "A short description of the finding", | |
| "example": "Vulnerabilities found for Apache Httpd 2.4.10", | |
| "type": "string" | |
| }, | |
| "test_description": { | |
| "description": "A short description of what the test does", | |
| "example": "Checking for SQL Injection...", | |
| "type": "string" | |
| }, | |
| "test_finished": { | |
| "description": "this is set to `true` when the test ends. If `false`, it indicates the failed test", | |
| "example": true, | |
| "type": "boolean" | |
| }, | |
| "confirmed": { | |
| "description": "this is set to `true` if the finding has a high certainty of not being a false positive", | |
| "type": "boolean" | |
| }, | |
| "cve": { | |
| "example": ["CVE-2017-3167", "CVE-2019-0217"], | |
| "items": { "type": "string" }, | |
| "type": "array" | |
| }, | |
| "cvss": { "format": "float", "type": ["number", "null"] }, | |
| "vuln_description": { | |
| "description": "A short description of the vulnerability", | |
| "example": "Vulnerabilities found for Apache Httpd 2.4.25 (port 80/tcp)", | |
| "type": "string" | |
| }, | |
| "vuln_evidence": { | |
| "description": "the evidence for the data. Depending on the type, the data type changes. This is only human friendly and its format and data might change in the future", | |
| "type": "object", | |
| "properties": { | |
| "type": { | |
| "enum": ["text", "table", "list", "unsuported"], | |
| "type": "string" | |
| }, | |
| "data": { "type": ["object", "null"] } | |
| } | |
| }, | |
| "risk_description": { | |
| "description": "The risk posed by the vulnerability. This is only human friendly and its format and data might change in the future", | |
| "type": "string" | |
| }, | |
| "risk_level": { | |
| "description": "Risk level:\n * `0` - Informational\n * `1` - Low\n * `2` - Medium\n * `3` - High\n", | |
| "enum": [0, 1, 2, 3], | |
| "type": "integer" | |
| }, | |
| "status": { | |
| "description": "The status of the finding. By default this is `open`. It is `null` if the scan is still running", | |
| "enum": [ | |
| "open", | |
| "false_positive", | |
| "ignored", | |
| "fixed", | |
| "accepted", | |
| null | |
| ], | |
| "type": ["string", "null"] | |
| }, | |
| "recommendation": { | |
| "description": "a recommendation for mitigating the vulnerability. This is only human friendly and its format and data might change in the future", | |
| "type": "string" | |
| }, | |
| "verified": { | |
| "description": "This is set to `true` if a finding was manually verified. It is `null` for running scans, since this is an attribute of the findings generated after a scan finished", | |
| "type": ["boolean", "null"] | |
| }, | |
| "vuln_id": { | |
| "description": "A unique vulnerability identifier", | |
| "example": "NETSCAN-SNIPER-CVE-2021-42013-RCE", | |
| "type": ["string", "null"] | |
| }, | |
| "port": { | |
| "description": "The port where this was found on the target", | |
| "maximum": 65535, | |
| "minimum": 0, | |
| "type": ["integer", "null"] | |
| }, | |
| "protocol": { | |
| "description": "The transport layer protocol associated with the finding", | |
| "enum": ["TCP", "UDP", "DCCP", "SCTP"], | |
| "type": ["string", "null"] | |
| }, | |
| "service": { | |
| "description": "The application layer service associated with the finding", | |
| "enum": [ | |
| "AMQP", | |
| "Docker", | |
| "FTP", | |
| "HTTP", | |
| "HTTPS", | |
| "MQTT", | |
| "MSSQL", | |
| "MySQL", | |
| "PostgreSQL", | |
| "RDP", | |
| "Redis", | |
| "SMB", | |
| "SSH", | |
| "STOMP", | |
| "Telnet", | |
| "VNC", | |
| "WinRM" | |
| ], | |
| "type": ["string", "null"] | |
| } | |
| } | |
| }, | |
| "FindingTemplate": { | |
| "type": "object", | |
| "properties": { | |
| "name": { | |
| "description": "The name of the vulnerability", | |
| "example": "OS Command Injection", | |
| "type": "string" | |
| }, | |
| "software_type": { | |
| "description": "The type of software affected by the vulnerability", | |
| "example": "Web Server", | |
| "type": ["string", "null"] | |
| }, | |
| "vendor": { | |
| "description": "The vendor of the vulnerable software", | |
| "example": "Microsoft", | |
| "type": ["string", "null"] | |
| }, | |
| "product": { | |
| "description": "The product affected by the vulnerability", | |
| "example": "Laravel", | |
| "type": ["string", "null"] | |
| }, | |
| "date": { | |
| "description": "The date of the vulnerability", | |
| "example": "2020-12-25T00:00:00.000Z", | |
| "format": "Y-m-d", | |
| "type": ["string", "null"] | |
| }, | |
| "codename": { | |
| "description": "The codename of the vulnerability", | |
| "example": "OMIGOD", | |
| "type": ["string", "null"] | |
| }, | |
| "vuln_description": { | |
| "description": "The description of the vulnerability", | |
| "example": "We found that the target F5 BIG-IP server is vulnerable to CVE-2020-5902, a Remote Code Execution vulnerability, affecting the Traffic Management User Interface (TMUI) component, which is publicly accessible.\\nThe root cause of this vulnerability consists in a broken parser logic in the Tomcat endpoint. This allows an unauthenticated malicious attacker to access any file stored on the server.\\nWe have detected this by sending a HTTP GET request to the tmui endpoint, containing the /etc/passwd file, and looking for the output of the file in the response.", | |
| "type": ["string", "null"] | |
| }, | |
| "public_vuln_description": { | |
| "description": "The public description of the vulnerability", | |
| "example": "F5 BIG-IP server is affected by a Remote Code Execution vulnerability, located in the Traffic Management User Interface (TMUI) component, which is publicly accessible.\\nThe root cause of this vulnerability consists in a broken parser logic in the Tomcat endpoint.\\nThis allows an unauthenticated malicious attacker to access any file stored on the server or to execute arbitrary commands on the server.", | |
| "type": ["string", "null"] | |
| }, | |
| "risk_description": { | |
| "description": "The risk description of the vulnerability", | |
| "example": "The risk exists that a remote unauthenticated attacker can fully compromise the F5 BIG-IP server in order to steal confidential information, install ransomware or pivot to the internal network.", | |
| "type": ["string", "null"] | |
| }, | |
| "recommendation": { | |
| "description": "The recommendation of the vulnerability", | |
| "example": "We recommend upgrading your F5 BIG-IP server to the latest version.", | |
| "type": ["string", "null"] | |
| }, | |
| "public_recommendation": { | |
| "description": "The public recommendation of the vulnerability", | |
| "example": "Upgrade F5 BIG-IP server to the latest version or to a non-vulnerable version listed in K52145254.", | |
| "type": ["string", "null"] | |
| }, | |
| "references": { | |
| "description": "The references for the vulnerability", | |
| "example": "<a href=\"https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-5902\" target=\"_blank\">https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-5902</a><br><a href=\"https://pentest-tools.com/blog/big-ip-tmui-rce/\" target=\"_blank\">https://pentest-tools.com/blog/big-ip-tmui-rce/</a><br><a href=\"https://www.ptsecurity.com/ww-en/about/news/f5-fixes-critical-vulnerability-discovered-by-positive-technologies-in-big-ip-application-delivery-controller/\" target=\"_blank\">https://www.ptsecurity.com/ww-en/about/news/f5-fixes-critical-vulnerability-discovered-by-positive-technologies-in-big-ip-application-delivery-controller/</a><br><a href=\"https://research.nccgroup.com/2020/07/12/understanding-the-root-cause-of-f5-networks-k52145254-tmui-rce-vulnerability-cve-2020-5902/\" target=\"_blank\">https://research.nccgroup.com/2020/07/12/understanding-the-root-cause-of-f5-networks-k52145254-tmui-rce-vulnerability-cve-2020-5902/</a>", | |
| "type": ["string", "null"] | |
| }, | |
| "vuln_cvssv3": { "format": "float", "type": ["number", "null"] }, | |
| "cve": { | |
| "example": ["CVE-2021-26855", "CVE-2021-27065"], | |
| "items": { "type": "string" }, | |
| "type": "array" | |
| }, | |
| "ptt_exploit_capabilities": { | |
| "example": ["RCE", "File Read"], | |
| "items": { "type": "string" }, | |
| "type": "array" | |
| }, | |
| "vuln_id": { | |
| "description": "A unique vulnerability identifier", | |
| "example": "NETSCAN-SNIPER-CVE-2021-42013-RCE", | |
| "type": ["string", "null"] | |
| }, | |
| "in_cisa_catalog": { | |
| "description": "Indicated whether the CVEs are part of the CISA Known Exploited Vulnerabilities Catalog", | |
| "example": true, | |
| "type": "boolean" | |
| }, | |
| "published": { | |
| "description": "The published date of module", | |
| "example": "2021-08-04T00:00:00.000Z", | |
| "type": ["string", "null"] | |
| }, | |
| "updated": { | |
| "description": "The updated date when module was modified", | |
| "example": "2022-05-25T00:00:00.000Z", | |
| "type": ["string", "null"] | |
| } | |
| } | |
| }, | |
| "ScanOutput": { | |
| "discriminator": { | |
| "propertyName": "output_type", | |
| "mapping": { | |
| "subdomain_list": "#/components/schemas/FindSubdomainsOutput", | |
| "domain_list": "#/components/schemas/FindDomainsOutput", | |
| "vhost_list": "#/components/schemas/FindVHostsOutput", | |
| "fuzzing_results": "#/components/schemas/UrlFuzzerOutput", | |
| "port_scanner": "#/components/schemas/PortScanOutput", | |
| "finding_list": "#/components/schemas/VulnScannerOutput", | |
| "sniper_output": "#/components/schemas/SniperOutput" | |
| } | |
| }, | |
| "required": ["output_type", "output_data"], | |
| "type": "object", | |
| "properties": { | |
| "output_type": { | |
| "description": "The type of output returned by the scan", | |
| "type": "string" | |
| }, | |
| "output_data": { | |
| "description": "The output of the scan", | |
| "type": "object" | |
| } | |
| } | |
| }, | |
| "FindSubdomainsOutput": { | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/ScanOutput" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "output_data": { | |
| "type": "object", | |
| "properties": { | |
| "subdomains": { | |
| "description": "List of subdomains found by the scanner", | |
| "items": { "type": "object" }, | |
| "type": "array" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "FindDomainsOutput": { | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/ScanOutput" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "output_data": { | |
| "type": "object", | |
| "properties": { | |
| "domains": { | |
| "description": "List of domains found by the scanner", | |
| "items": { "type": "object" }, | |
| "type": "array" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "FindVHostsOutput": { | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/ScanOutput" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "output_data": { | |
| "type": "object", | |
| "properties": { | |
| "virtual_hosts": { | |
| "description": "List of virtual hosts found by the scanner", | |
| "items": { "type": "object" }, | |
| "type": "array" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "VulnScannerOutput": { | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/ScanOutput" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "output_data": { | |
| "type": "object", | |
| "properties": { | |
| "findings": { | |
| "description": "List of findings found by the vulnerability scanner", | |
| "items": { "$ref": "#/components/schemas/Finding" }, | |
| "type": "array" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "PortScanOutput": { | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/ScanOutput" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "output_data": { | |
| "type": "object", | |
| "properties": { | |
| "status": { "enum": ["up", "down"], "type": "string" }, | |
| "traceroute": { | |
| "type": "object", | |
| "properties": { | |
| "detected": { | |
| "enum": ["True", "False"], | |
| "type": "string" | |
| }, | |
| "nodes": { | |
| "items": { "type": "object" }, | |
| "type": "array" | |
| } | |
| } | |
| }, | |
| "os": { | |
| "type": "object", | |
| "properties": { | |
| "vendor": { "example": "Linux", "type": "string" }, | |
| "name": { "example": "Linux 2.6.32", "type": "string" }, | |
| "family": { "example": "Linux", "type": "string" }, | |
| "generation": { "example": "2.6.X", "type": "string" }, | |
| "cpe": { | |
| "example": "cpe:/o:linux:linux_kernel:2.6.32", | |
| "type": "string" | |
| }, | |
| "detected": { | |
| "enum": ["True", "False"], | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "hostnames": { | |
| "example": ["example.com", "com.example.reverse_dns"], | |
| "items": { "type": "string" }, | |
| "type": "array" | |
| }, | |
| "ip_address": { | |
| "example": "8.8.8.8", | |
| "format": "ip_address", | |
| "type": "string" | |
| }, | |
| "ports": { "items": { "type": "object" }, "type": "array" } | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "SniperOutput": { | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/ScanOutput" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "output_data": { | |
| "type": "object", | |
| "properties": { | |
| "ports": { "items": { "type": "object" }, "type": "array" } | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "UrlFuzzerOutput": { | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/ScanOutput" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "output_data": { | |
| "type": "object", | |
| "properties": { | |
| "fuzzing_results": { | |
| "description": "List of fuzzing results according to the response filters set", | |
| "items": { "type": "object" }, | |
| "type": "array" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "Target": { | |
| "additionalProperties": false, | |
| "required": ["name"], | |
| "type": "object", | |
| "properties": { | |
| "id": { "format": "integer", "readOnly": true, "type": "integer" }, | |
| "name": { "example": "example.org", "type": "string" }, | |
| "type": { | |
| "enum": ["hostname", "ip_address", "url"], | |
| "example": "hostname", | |
| "readOnly": true, | |
| "type": "string" | |
| }, | |
| "description": { "type": "string" }, | |
| "workspace_id": { "format": "integer", "type": "integer" } | |
| } | |
| }, | |
| "Wordlists": { | |
| "additionalProperties": false, | |
| "type": "object", | |
| "properties": { | |
| "id": { | |
| "example": 1, | |
| "format": "integer", | |
| "readOnly": true, | |
| "type": "integer" | |
| }, | |
| "name": { "example": "URL Fuzzer (default)", "type": "string" }, | |
| "description": { | |
| "example": "This is the standard wordlist used by URL Fuzzer", | |
| "type": "string" | |
| }, | |
| "num_words": { "example": 254, "type": "integer" }, | |
| "predefined": { "example": true, "type": "boolean" } | |
| } | |
| }, | |
| "WordlistsContents": { | |
| "example": "root\ncisco\nadmin\ntest", | |
| "type": "string" | |
| }, | |
| "Workspace": { | |
| "additionalProperties": false, | |
| "required": ["name"], | |
| "type": "object", | |
| "properties": { | |
| "id": { "example": 7534842, "readOnly": true, "type": "integer" }, | |
| "name": { "example": "My Workspace", "type": "string" }, | |
| "description": { | |
| "example": "My Workspace description", | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "Scan": { | |
| "additionalProperties": false, | |
| "discriminator": { | |
| "propertyName": "tool_id", | |
| "mapping": { | |
| "20": "#/components/schemas/SubdomainFinderStarter", | |
| "70": "#/components/schemas/TcpPortScanStarter", | |
| "80": "#/components/schemas/UdpPortScanStarter", | |
| "90": "#/components/schemas/UrlFuzzerStarter", | |
| "160": "#/components/schemas/FindVhostsStarter", | |
| "170": "#/components/schemas/WebsiteScannerStarter", | |
| "260": "#/components/schemas/SharePointScannerStarter", | |
| "270": "#/components/schemas/WordpressScannerStarter", | |
| "280": "#/components/schemas/DrupalScannerStarter", | |
| "310": "#/components/schemas/WebsiteReconStarter", | |
| "350": "#/components/schemas/NetworkScannerStarter", | |
| "390": "#/components/schemas/DomainFinderStarter", | |
| "400": "#/components/schemas/PasswordAuditorStarter", | |
| "450": "#/components/schemas/SslScannerStarter", | |
| "490": "#/components/schemas/SniperStarter", | |
| "520": "#/components/schemas/CloudScannerStarter" | |
| } | |
| }, | |
| "required": ["tool_id"], | |
| "type": "object", | |
| "properties": { | |
| "id": { "readOnly": true, "type": "integer" }, | |
| "tool_id": { | |
| "enum": [20, 70, 80, 90, 160, 170, 400, 450], | |
| "type": "integer" | |
| }, | |
| "target_id": { | |
| "description": "only one of `target_id` and `target_name` should be used", | |
| "type": ["integer", "null"] | |
| }, | |
| "target_name": { | |
| "description": "only one of `target_id` and `target_name` should be used", | |
| "type": ["string", "null"], | |
| "writeOnly": true | |
| }, | |
| "workspace_id": { | |
| "description": "Workspace where the scan is started. It has to match the workspace ID of the target", | |
| "type": ["integer", "null"] | |
| }, | |
| "status_name": { | |
| "enum": [ | |
| "running", | |
| "finished", | |
| "failed to start", | |
| "stopped", | |
| "timed out", | |
| "waiting", | |
| "aborted", | |
| "not started", | |
| "VPN connection error", | |
| "auth failed", | |
| "connection error" | |
| ], | |
| "readOnly": true, | |
| "type": "string" | |
| }, | |
| "vpn_scan": { "readOnly": true, "type": "boolean" }, | |
| "max_scan_time": { | |
| "description": "Maximum number of minutes that the scan should run. Not supported by: Sniper, tools with short scan duration (like Website Recon or ICMP Ping).", | |
| "maximum": 1440, | |
| "minimum": 5, | |
| "type": "integer", | |
| "writeOnly": true | |
| }, | |
| "report_callback": { | |
| "description": "Send the report in a specific format to this URL when the scan finishes", | |
| "required": ["url"], | |
| "type": "object", | |
| "writeOnly": true, | |
| "properties": { | |
| "url": { | |
| "description": "Send the report to this URL when the scan finishes", | |
| "format": "url", | |
| "type": "string" | |
| }, | |
| "format": { | |
| "default": "raw_status", | |
| "description": "Send the report in a specific format", | |
| "enum": ["raw_json", "raw_status", "pdf_report"], | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "progress": { | |
| "description": "Current progress of the scan", | |
| "maximum": 100, | |
| "minimum": 0, | |
| "readOnly": true, | |
| "type": "integer" | |
| }, | |
| "result_summary": { | |
| "readOnly": true, | |
| "type": "object", | |
| "properties": { | |
| "text": { | |
| "description": "A text description of the summary. Present for discovery scanners", | |
| "type": "string" | |
| }, | |
| "high": { | |
| "description": "Number of high risk vulnerabilities. `null` for discovery scanners", | |
| "type": ["integer", "null"] | |
| }, | |
| "medium": { | |
| "description": "Number of medium risk vulnerabilities. `null` for discovery scanners", | |
| "type": ["integer", "null"] | |
| }, | |
| "low": { | |
| "description": "Number of low risk vulnerabilities. `null` for discovery scanners", | |
| "type": ["integer", "null"] | |
| }, | |
| "info": { | |
| "description": "Number of informational findings. `null` for discovery scanners", | |
| "type": ["integer", "null"] | |
| } | |
| } | |
| }, | |
| "start_time": { | |
| "description": "Start time of the scan in \"YYYY-MM-DD HH-mm-ss\" format (e.g. \"2021-02-27 17:03:02\")", | |
| "readOnly": true, | |
| "type": "string" | |
| }, | |
| "end_time": { | |
| "description": "Start time of the scan in \"YYYY-MM-DD HH-mm-ss\" format (e.g. \"2021-02-27 18:14:32\"). `null` if the scan is not finished", | |
| "readOnly": true, | |
| "type": ["string", "null"] | |
| }, | |
| "duration": { | |
| "description": "Duration of the scan in seconds", | |
| "readOnly": true, | |
| "type": "integer" | |
| }, | |
| "num_tests": { | |
| "description": "Number of tests run by the scanner. Always `1` for discovery scanners", | |
| "readOnly": true, | |
| "type": "integer" | |
| }, | |
| "num_finished_tests": { | |
| "description": "Number of currently finished tests. This should be equal to `num_tests` for successfully finished scans", | |
| "readOnly": true, | |
| "type": "integer" | |
| }, | |
| "scan_original_url": { | |
| "default": false, | |
| "description": "If `true`, the original URL is passed to the scanner, even if it redirects. If `false`, the redirected URL will be scanned instead.\n", | |
| "type": "boolean" | |
| }, | |
| "redirect_level": { | |
| "default": "same_domain", | |
| "description": "Possible values:\n * `none` - the target is passed directly to the scanner\n * `check_accessibility` - the target is checked for accessibility and an error is thrown on any redirect\n * `same_host` - only redirects within the same host are allowed\n * `same_domain` - redirects to subdomains are allowed\n * `allow_all` - any redirects are allowed\n", | |
| "enum": [ | |
| "none", | |
| "check_accessibility", | |
| "same_host", | |
| "same_domain", | |
| "allow_all" | |
| ], | |
| "type": "string", | |
| "writeOnly": true | |
| } | |
| } | |
| }, | |
| "BaseScannerStarter": { | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/Scan" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "tool_params": { | |
| "description": "The tool has no custom parameters", | |
| "type": "object", | |
| "writeOnly": true | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "FindVhostsStarter": { | |
| "$ref": "#/components/schemas/BaseScannerStarter" | |
| }, | |
| "SharePointScannerStarter": { | |
| "$ref": "#/components/schemas/BaseScannerStarter" | |
| }, | |
| "DrupalScannerStarter": { | |
| "$ref": "#/components/schemas/BaseScannerStarter" | |
| }, | |
| "WebsiteReconStarter": { | |
| "$ref": "#/components/schemas/BaseScannerStarter" | |
| }, | |
| "SubdomainFinderStarter": { | |
| "title": "Subdomain Finder", | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/Scan" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "tool_params": { | |
| "$ref": "#/components/schemas/FindSubdomainsParams" | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "SniperStarter": { | |
| "title": "Sniper", | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/Scan" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "tool_params": { "$ref": "#/components/schemas/SniperParams" } | |
| } | |
| } | |
| ] | |
| }, | |
| "TcpPortScanStarter": { | |
| "title": "TCP Port Scanner", | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/Scan" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "tool_params": { | |
| "$ref": "#/components/schemas/TcpPortScanParams" | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "UdpPortScanStarter": { | |
| "title": "UDP Port Scanner", | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/Scan" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "tool_params": { | |
| "$ref": "#/components/schemas/UdpPortScanParams" | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "UrlFuzzerStarter": { | |
| "title": "URL Fuzzer", | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/Scan" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "tool_params": { "$ref": "#/components/schemas/UrlFuzzerParams" } | |
| } | |
| } | |
| ] | |
| }, | |
| "WebsiteScannerStarter": { | |
| "title": "Website Scanner", | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/Scan" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "tool_params": { | |
| "$ref": "#/components/schemas/WebsiteScannerParams" | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "WordpressScannerStarter": { | |
| "title": "Wordpress Scanner", | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/Scan" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "tool_params": { | |
| "$ref": "#/components/schemas/WordpressScannerParams" | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "NetworkScannerStarter": { | |
| "title": "Network Scanner", | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/Scan" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "tool_params": { | |
| "$ref": "#/components/schemas/NetworkScannerParams" | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "CloudScannerStarter": { | |
| "title": "Cloud Scanner", | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/Scan" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "tool_params": { | |
| "$ref": "#/components/schemas/CloudScannerParams" | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "DomainFinderStarter": { | |
| "title": "Domain Finder", | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/Scan" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "tool_params": { | |
| "$ref": "#/components/schemas/FindDomainsParams" | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "PasswordAuditorStarter": { | |
| "title": "Password Auditor", | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/Scan" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "tool_params": { | |
| "$ref": "#/components/schemas/PasswordAuditorParams" | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "SslScannerStarter": { | |
| "title": "SSL Scanner", | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/Scan" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "tool_params": { "$ref": "#/components/schemas/SslTlsScanParams" } | |
| } | |
| } | |
| ] | |
| }, | |
| "FindDomainsParams": { | |
| "type": "object", | |
| "properties": { | |
| "scan_type": { | |
| "default": "deep", | |
| "enum": ["light", "deep", "custom"], | |
| "type": "string" | |
| }, | |
| "ssl_search": { "default": true, "type": "boolean" }, | |
| "builtwith": { "default": false, "type": "boolean" }, | |
| "reverse_whois": { "default": false, "type": "boolean" }, | |
| "minimum_weight": { "default": 30, "type": "integer" } | |
| } | |
| }, | |
| "FindSubdomainsParams": { | |
| "additionalProperties": false, | |
| "type": "object", | |
| "properties": { | |
| "scan_type": { | |
| "default": "deep", | |
| "enum": ["light", "deep", "custom"], | |
| "type": "string" | |
| }, | |
| "web_details": { | |
| "default": true, | |
| "description": "Extract web server information for web server subdomains. Enabling this results in a longer scan", | |
| "type": "boolean" | |
| }, | |
| "whois": { | |
| "default": false, | |
| "description": "Extract whois information for the subdomain", | |
| "type": "boolean" | |
| }, | |
| "unresolved_results": { | |
| "default": false, | |
| "description": "Unresolved subdomains found by the tool are kept in the result list, but without an IP address", | |
| "type": "boolean" | |
| }, | |
| "search_methods": { | |
| "description": "methods to be used for discovery. By default, all are used", | |
| "type": "object", | |
| "properties": { | |
| "passive_detection": { | |
| "default": true, | |
| "description": "Search historical subdomains", | |
| "type": "boolean" | |
| }, | |
| "dns_records": { | |
| "default": true, | |
| "description": "Zone transfer", | |
| "type": "boolean" | |
| }, | |
| "dns_enumeration": { | |
| "description": "DNS bruteforcing using a wordlist", | |
| "type": "object", | |
| "properties": { | |
| "enabled": { "default": true, "type": "boolean" }, | |
| "wordlist_id": { "default": 5, "type": "integer" } | |
| } | |
| }, | |
| "ctr_search": { | |
| "default": true, | |
| "description": "Certificate Transparency Logs", | |
| "type": "boolean" | |
| }, | |
| "external_api_search": { | |
| "default": true, | |
| "description": "Subdomains from external APIs", | |
| "type": "boolean" | |
| }, | |
| "bing_search": { | |
| "default": true, | |
| "description": "Bing search", | |
| "type": "boolean" | |
| }, | |
| "google_search": { | |
| "default": true, | |
| "description": "Google search", | |
| "type": "boolean" | |
| }, | |
| "html_search": { | |
| "default": true, | |
| "description": "Subdomains extracted from HTML links and HTTP headers", | |
| "type": "boolean" | |
| }, | |
| "ssl_search": { | |
| "default": true, | |
| "description": "Extract from SSL certificates", | |
| "type": "boolean" | |
| }, | |
| "revdns_search": { | |
| "default": true, | |
| "description": "Reverse DNS on target IP ranges", | |
| "type": "boolean" | |
| }, | |
| "alteration_search": { | |
| "default": true, | |
| "description": "Generates permutations and alterations of the subdomain names found so far in the scan - disabling this option should speed up scans when there is a large number of subdomains, but might reduce the number of results", | |
| "type": "boolean" | |
| }, | |
| "cname_search": { | |
| "default": true, | |
| "description": "Extract from CNAMEs", | |
| "type": "boolean" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "SniperAuth": { | |
| "discriminator": { | |
| "propertyName": "protocol", | |
| "mapping": { | |
| "ssh": "#/components/schemas/SniperSshAuth", | |
| "winrm": "#/components/schemas/SniperWinrmAuth", | |
| "smb": "#/components/schemas/SniperSmbAuth", | |
| "mysql": "#/components/schemas/SniperMysqlAuth" | |
| } | |
| }, | |
| "required": ["protocol", "port", "params"], | |
| "type": "object", | |
| "properties": { | |
| "protocol": { | |
| "enum": ["ssh", "smb", "winrm", "mysql"], | |
| "type": "string" | |
| }, | |
| "port": { | |
| "description": "The port to use authentication on. This overrides other port selections.", | |
| "maximum": 65535, | |
| "minimum": 1, | |
| "type": "integer" | |
| }, | |
| "params": { | |
| "required": ["username"], | |
| "type": "object", | |
| "properties": { | |
| "username": { "type": "string" }, | |
| "password": { "type": "string" } | |
| } | |
| } | |
| } | |
| }, | |
| "SniperSshAuth": { | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/SniperAuth" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "params": { | |
| "type": "object", | |
| "properties": { "private_key": { "type": "string" } } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "SniperWinrmAuth": { | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/SniperAuth" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "params": { | |
| "required": ["password", "type"], | |
| "type": "object", | |
| "properties": { | |
| "winrm_auth_type": { | |
| "enum": ["ntlm", "basic"], | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "SniperSmbAuth": { | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/SniperAuth" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "params": { | |
| "required": ["password"], | |
| "type": "object", | |
| "properties": { | |
| "domain": { | |
| "description": "If not specified, local authentication will be used", | |
| "type": ["string", "null"] | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "SniperMysqlAuth": { | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/SniperAuth" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "params": { | |
| "required": ["password", "database"], | |
| "type": "object", | |
| "properties": { "database": { "type": "string" } } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "SniperParams": { | |
| "additionalProperties": false, | |
| "type": "object", | |
| "properties": { | |
| "port_range": { | |
| "example": { "start_port": 0, "end_port": 443 }, | |
| "type": "object", | |
| "properties": { | |
| "start_port": { "type": "integer" }, | |
| "end_port": { "type": "integer" } | |
| } | |
| }, | |
| "port_top": { | |
| "enum": ["100", "1000", "5000", "all"], | |
| "type": "string" | |
| }, | |
| "port_list": { "items": { "type": "integer" }, "type": "array" }, | |
| "check_alive": { "type": "boolean" }, | |
| "safe_exploits_only": { "type": "boolean" }, | |
| "extensive_modules": { "type": "boolean" }, | |
| "extractors": { | |
| "description": "Extractors to use.\n If not set, the defaults will be used: basic_system_information, interesting_files, secrets.\n If it is an empty list, no extractor will be used", | |
| "items": { | |
| "type": "string", | |
| "enum": [ | |
| "basic_system_information", | |
| "basic_network_information", | |
| "local_users", | |
| "processes", | |
| "screenshot", | |
| "filesystem", | |
| "network_data", | |
| "interesting_files", | |
| "secrets" | |
| ] | |
| }, | |
| "type": "array" | |
| }, | |
| "auth": { "$ref": "#/components/schemas/SniperAuth" } | |
| } | |
| }, | |
| "PortScanParams": { | |
| "additionalProperties": false, | |
| "type": "object", | |
| "properties": { | |
| "scan_type": { | |
| "default": "deep", | |
| "enum": ["light", "deep", "custom"], | |
| "type": "string" | |
| }, | |
| "check_alive": { "default": false, "type": "boolean" }, | |
| "os_detection": { "default": false, "type": "boolean" }, | |
| "scan_technique": { | |
| "default": "sS", | |
| "enum": [ | |
| "sS", | |
| "sT", | |
| "sA", | |
| "sW", | |
| "sM", | |
| "sN", | |
| "sF", | |
| "sX", | |
| "sY", | |
| "sZ", | |
| "sO" | |
| ], | |
| "example": "sS", | |
| "type": "string" | |
| }, | |
| "service_detection": { "default": true, "type": "boolean" }, | |
| "port_range": { | |
| "example": { "start_port": 0, "end_port": 443 }, | |
| "type": "object", | |
| "properties": { | |
| "start_port": { "type": "integer" }, | |
| "end_port": { "type": "integer" } | |
| } | |
| }, | |
| "port_top": { "enum": [10, 100, 1000, 5000], "type": "integer" }, | |
| "port_list": { "items": { "type": "integer" }, "type": "array" } | |
| } | |
| }, | |
| "TcpPortScanParams": { | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/PortScanParams" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "traceroute": { "default": false, "type": "boolean" } | |
| } | |
| } | |
| ] | |
| }, | |
| "UdpPortScanParams": { "$ref": "#/components/schemas/PortScanParams" }, | |
| "NetworkScannerParams": { | |
| "additionalProperties": false, | |
| "type": "object", | |
| "properties": { | |
| "preset": { | |
| "default": "deep", | |
| "description": "Determines the Network Scanner scan type that will be used. `light` uses the `version_based` scanning engine on top 100 ports. `deep` uses the `version_based`, `sniper` and `nuclei` scanning engines on top 5000 ports (TCP) or top 1000 ports (UDP). `custom` allows you to use custom configurations of scanning engines and ports.\n", | |
| "enum": ["light", "deep", "custom"], | |
| "type": "string" | |
| }, | |
| "scanning_engines": { | |
| "description": "Scanning engines that will be loaded for a scan. Can be set only if `custom` preset was selected. It must contain at least one engine.", | |
| "example": ["version_based", "sniper", "nuclei", "openvas"], | |
| "items": { | |
| "type": "string", | |
| "enum": ["version_based", "sniper", "nuclei", "openvas"] | |
| }, | |
| "type": "array" | |
| }, | |
| "check_alive": { "default": true, "type": "boolean" }, | |
| "extensive_modules": { "default": false, "type": "boolean" }, | |
| "protocol_type": { | |
| "default": "tcp", | |
| "enum": ["tcp", "udp"], | |
| "type": "string" | |
| }, | |
| "port_range": { | |
| "example": { "start_port": 0, "end_port": 443 }, | |
| "type": "object", | |
| "properties": { | |
| "start_port": { "type": "integer" }, | |
| "end_port": { "type": "integer" } | |
| } | |
| }, | |
| "port_top": { | |
| "enum": ["OpenVAS default", "10", "100", "1000", "5000"], | |
| "type": "string" | |
| }, | |
| "port_list": { "items": { "type": "integer" }, "type": "array" } | |
| } | |
| }, | |
| "UrlFuzzerParams": { | |
| "additionalProperties": false, | |
| "type": "object", | |
| "properties": { | |
| "request_options": { | |
| "type": "object", | |
| "properties": { | |
| "method": { | |
| "default": "GET", | |
| "description": "The method used for making HTTP requests.", | |
| "enum": ["GET", "POST"], | |
| "type": "string" | |
| }, | |
| "post_data": { | |
| "description": "POST data to be sent with every request. Valid only if the POST method is selected. Can be used as the fuzzing location if it contains a FUZZ marker.", | |
| "example": "username=admin&pass=FUZZ", | |
| "type": "string" | |
| }, | |
| "headers": { | |
| "description": "Custom headers to be sent with every request. Cannot be used as the fuzzing location. If not set, at least a default User Agent will be set.", | |
| "example": [ | |
| "Cookie: PHPSESSID=298zf09h", | |
| "User-Agent: Mozilla/5.0" | |
| ], | |
| "items": { "type": "string" }, | |
| "type": "array" | |
| }, | |
| "max_retries": { | |
| "default": 3, | |
| "description": "Maximum number of retries for an HTTP request in case of an error.", | |
| "maximum": 10, | |
| "minimum": 0, | |
| "type": "integer" | |
| }, | |
| "retry_delay_factor": { | |
| "default": 1, | |
| "description": "The delay between retries increases exponentially. If the factor to multiply the delay is 1 (default), the first retry is sent immediately (after 0s), the second one after 1s, then 2s, 4s and so on. If the factor is 0.1, the sleeps between the retries are':' 0s, 0.1s, 0.2s, 0.4s and so on.", | |
| "format": "float", | |
| "maximum": 120, | |
| "minimum": 0, | |
| "type": "number" | |
| }, | |
| "force_retry_http_codes": { | |
| "description": "By default, the retry policy is applied only on connection errors. With this option, you can enforce retrying on responses with these status codes.", | |
| "example": "429,500-505", | |
| "type": "string" | |
| }, | |
| "thread_count": { | |
| "default": 7, | |
| "description": "Number of parallel requests (threads) for the scan.", | |
| "maximum": 10, | |
| "minimum": 1, | |
| "type": "integer" | |
| }, | |
| "requests_delay": { | |
| "default": 0, | |
| "description": "The delay between two consecutive requests, in seconds. Requires `thread_count` to be set to 1.", | |
| "format": "float", | |
| "maximum": 3600, | |
| "minimum": 0, | |
| "type": "number" | |
| }, | |
| "request_timeout": { | |
| "default": 4, | |
| "description": "Timeout for an HTTP request, in seconds.", | |
| "format": "float", | |
| "maximum": 43200, | |
| "type": "number" | |
| } | |
| } | |
| }, | |
| "payload_options": { | |
| "type": "object", | |
| "properties": { | |
| "type": { | |
| "default": "wordlist", | |
| "description": "The type of the input wordlist. If `wordlist` is selected, the payloads that replace the 'FUZZ' marker will be taken from an input wordlist (custom or default). If `sequence` is selected, a sequence of numbers will be generated as input wordlist, with a given start, end and step.", | |
| "enum": ["wordlist", "sequence"], | |
| "type": "string" | |
| }, | |
| "wordlist_id": { | |
| "default": "URL Fuzzer (default)", | |
| "description": "The ID of the wordlist to be used for fuzzing. Can only be used with the `wordlist` payload type. Available wordlists IDs can be retrieved using the `/wordlists` endpoint.", | |
| "type": "integer" | |
| }, | |
| "dynamic_wordlist": { | |
| "default": false, | |
| "description": "Extend the input wordlist with relevant words from the HTML page located at the input target URL. Can only be used with the `wordlist` payload type.", | |
| "type": "boolean" | |
| }, | |
| "sequence": { | |
| "description": "Describes the parameters of the sequence to be generated. Can only be used with the `sequence` payload type.", | |
| "type": "object", | |
| "properties": { | |
| "from": { | |
| "default": 0, | |
| "description": "The number to start the sequence from.", | |
| "type": "integer" | |
| }, | |
| "to": { | |
| "default": 100, | |
| "description": "The ending number of the sequence.", | |
| "type": "integer" | |
| }, | |
| "step": { | |
| "default": 1, | |
| "description": "The step to increment the sequence by. Can not be 0.", | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "extension_categories": { | |
| "items": { | |
| "type": "string", | |
| "enum": [ | |
| "no_ext", | |
| "configs", | |
| "sources", | |
| "archives", | |
| "databases", | |
| "logs", | |
| "backups", | |
| "docs", | |
| "web" | |
| ] | |
| }, | |
| "type": "array" | |
| }, | |
| "custom_extensions": { | |
| "items": { "type": "string" }, | |
| "type": "array" | |
| }, | |
| "max_recursion_depth": { | |
| "default": 0, | |
| "description": "If greater than 0, the fuzzing will be done recursively - for each found directory in the URL path, a new search with the initial wordlist will be started, up to the maximum depth specified.", | |
| "maximum": 3, | |
| "minimum": 0, | |
| "type": "integer" | |
| }, | |
| "mutate": { | |
| "default": false, | |
| "description": "Apply various mutations to the identified files in order to find other resources (e.g. `config.php`, `config2.php`, `config_old.php`, `config-dev.php`).", | |
| "type": "boolean" | |
| } | |
| } | |
| }, | |
| "filter_results": { | |
| "description": "Options to filter the results.", | |
| "type": "object", | |
| "properties": { | |
| "type": { | |
| "default": "auto", | |
| "description": "If the response filter is `auto`, responses with the 404 status code are discarded and (only for the GET method) filtered using a soft-404 detection algorithm. If the response_filter is set to `manual`, results will be filtered according to the specified `match` and `ignore` conditions.", | |
| "enum": ["auto", "manual"], | |
| "type": "string" | |
| }, | |
| "match": { | |
| "$ref": "#/components/schemas/UrlFuzzerResponseFilter" | |
| }, | |
| "ignore": { | |
| "$ref": "#/components/schemas/UrlFuzzerResponseFilter" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "UrlFuzzerResponseFilter": { | |
| "type": "object", | |
| "properties": { | |
| "http_codes": { | |
| "description": "Match the responses with these HTTP codes.", | |
| "example": "200-205,301", | |
| "type": "string" | |
| }, | |
| "response_size": { | |
| "description": "Match the responses with the size respecting this condition. The limit is expressed in KB.", | |
| "type": "object", | |
| "properties": { | |
| "operator": { | |
| "enum": ["=", "<", ">", "<=", ">="], | |
| "type": "string" | |
| }, | |
| "limit": { | |
| "format": "float", | |
| "maximum": 10240, | |
| "minimum": 0, | |
| "type": "number" | |
| } | |
| } | |
| }, | |
| "content": { | |
| "description": "String to match in the response text.", | |
| "example": "error", | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "CloudScannerParams": { | |
| "additionalProperties": false, | |
| "type": "object", | |
| "properties": { | |
| "detect_cloud_provider": { | |
| "default": true, | |
| "description": "Enables a test for detecting the cloud provider of the target.", | |
| "type": "boolean" | |
| }, | |
| "detect_cloud_vulnerabilities": { | |
| "default": true, | |
| "description": "Enables a test for cloud vulnerabilities and misconfigurations on the target, based on the detected cloud provider. If detect_cloud_provider is set to False, security tests for all currently integrated cloud providers will be performed. Setting detect_cloud_provider to False can be useful if you believe the tool is not properly detecting your target\"s cloud provider.", | |
| "type": "boolean" | |
| } | |
| } | |
| }, | |
| "PasswordAuditorParams": { | |
| "additionalProperties": false, | |
| "type": "object", | |
| "properties": { | |
| "attack_type": { | |
| "default": "dictionary", | |
| "enum": ["dictionary", "password_spray"], | |
| "type": "string" | |
| }, | |
| "custom_port_list": { | |
| "description": "List of custom ports. `port_type` must be set to `custom`.", | |
| "items": { "type": "integer" }, | |
| "type": "array" | |
| }, | |
| "port_type": { | |
| "default": "top_ports", | |
| "description": "Ports to be scanned. By default, the top 100 common ports will be scanned. If set to `custom`, the `custom_port_list` parameter is required. If set to `from_url`, the given target must be an URL.", | |
| "enum": ["top_ports", "custom", "from_url"], | |
| "type": "string" | |
| }, | |
| "services": { | |
| "description": "When set, only the methods in the list will run. If not set or `null`, the default methods will be used.", | |
| "items": { | |
| "type": "string", | |
| "enum": [ | |
| "amqp", | |
| "docker", | |
| "ftp", | |
| "http", | |
| "mqtt", | |
| "mssql", | |
| "mysql", | |
| "postgresql", | |
| "rdp", | |
| "redis", | |
| "smb", | |
| "ssh", | |
| "stomp", | |
| "telnet", | |
| "winrm", | |
| "vnc" | |
| ] | |
| }, | |
| "type": "array" | |
| }, | |
| "usernames_wordlist_id": { | |
| "description": "The available wordlists can be retrieved using the `/wordlists` endpoint. If not set, the default worldist will be used.", | |
| "type": "integer" | |
| }, | |
| "passwords_wordlist_id": { | |
| "description": "The available wordlists can be retrieved using the `/wordlists` endpoint. If not set, the default worldist will be used.", | |
| "type": "integer" | |
| }, | |
| "attempt_delay": { | |
| "default": 0, | |
| "description": "Time delay (in seconds) between two consecutive authentication attempts.", | |
| "maximum": 600, | |
| "minimum": 0, | |
| "type": "integer" | |
| }, | |
| "lockout_period": { | |
| "default": 5, | |
| "description": "Minutes to wait before the next attempt. Available only for `password_spray` attack_type.", | |
| "maximum": 720, | |
| "minimum": 1, | |
| "type": "integer" | |
| }, | |
| "attempts_per_period": { | |
| "default": 2, | |
| "description": "Number of attempts before waiting `lockout_period`. Available only for `password_spray` attack_type.", | |
| "maximum": 50000, | |
| "minimum": 1, | |
| "type": "integer" | |
| }, | |
| "check_default_credentials": { "default": true, "type": "boolean" } | |
| } | |
| }, | |
| "WebsiteScannerAuth": { | |
| "default": "null", | |
| "description": "Scan the target web application as an authenticated user or behind protected resources. If it is not set, the scan will be performed as an unauthenticated user.", | |
| "discriminator": { | |
| "propertyName": "type", | |
| "mapping": { | |
| "automatic_login_form": "#/components/schemas/WebsiteScannerAutomaticAuth", | |
| "cookies": "#/components/schemas/WebsiteScannerCookiesAuth", | |
| "headers": "#/components/schemas/WebsiteScannerHeadersAuth" | |
| } | |
| }, | |
| "type": ["object", "null"], | |
| "properties": { | |
| "type": { | |
| "default": "null", | |
| "description": "Authentication type to be used.", | |
| "enum": ["automatic_login_form", "cookies", "headers"], | |
| "type": ["string", "null"] | |
| } | |
| } | |
| }, | |
| "WebsiteScannerAutomaticAuth": { | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/WebsiteScannerAuth" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "params": { | |
| "type": "object", | |
| "properties": { | |
| "login_url": { | |
| "default": "null", | |
| "description": "URL of the login page.", | |
| "type": ["string", "null"] | |
| }, | |
| "username": { | |
| "default": "null", | |
| "description": "Username to be used for authentication.", | |
| "type": ["string", "null"] | |
| }, | |
| "password": { | |
| "default": "null", | |
| "description": "Password to be used for authentication.", | |
| "type": ["string", "null"] | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "WebsiteScannerCookiesAuth": { | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/WebsiteScannerAuth" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "params": { | |
| "type": "object", | |
| "properties": { | |
| "cookie_header": { | |
| "default": "null", | |
| "description": "Cookies to be used for authentication.", | |
| "type": ["string", "null"] | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "WebsiteScannerHeadersAuth": { | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/WebsiteScannerAuth" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "params": { | |
| "type": "object", | |
| "properties": { | |
| "headers": { | |
| "default": "null", | |
| "description": "Headers to be used for authentication.", | |
| "type": ["string", "null"] | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "WebsiteScannerParams": { | |
| "additionalProperties": false, | |
| "type": "object", | |
| "properties": { | |
| "scan_type": { | |
| "default": "light", | |
| "enum": ["light", "deep"], | |
| "type": "string" | |
| }, | |
| "authentication": { | |
| "$ref": "#/components/schemas/WebsiteScannerAuth" | |
| }, | |
| "attack_active": { | |
| "description": "When set, only the methods in the list will run. If not set or `null`, will run all methods. if the list will be empty `[]` no one of those methods will run", | |
| "items": { | |
| "type": "string", | |
| "enum": [ | |
| "xss", | |
| "sqli", | |
| "lfi", | |
| "oscmdi", | |
| "ssrf", | |
| "open_redirect", | |
| "broken_authentication", | |
| "php_code_injection", | |
| "js_code_injection", | |
| "ruby_code_injection", | |
| "python_code_injection", | |
| "perl_code_injection", | |
| "log4j_rce", | |
| "ssti", | |
| "xxe", | |
| "viewstate_rce", | |
| "prototype_pollution", | |
| "backup_files", | |
| "request_url_override", | |
| "http_request_smuggling" | |
| ] | |
| }, | |
| "type": "array" | |
| }, | |
| "attack_passive": { | |
| "description": "When set, only the methods in the list will run. If not set or `null`, will run all methods. if the list will be empty `[]` no one of those methods will run", | |
| "items": { | |
| "type": "string", | |
| "enum": [ | |
| "security_headers", | |
| "cookie_security", | |
| "directory_listing", | |
| "secure_communication", | |
| "weak_password_submission", | |
| "error_debug_messages", | |
| "password_cleartext", | |
| "cross_domain_source", | |
| "mixed_content", | |
| "sensitive_data", | |
| "login_interfaces" | |
| ] | |
| }, | |
| "type": "array" | |
| }, | |
| "discovery": { | |
| "description": "When set, only the methods in the list will run. If not set or `null`, will run all methods. if the list will be empty `[]` no one of those methods will run", | |
| "items": { | |
| "type": "string", | |
| "enum": [ | |
| "fingerprint", | |
| "software_vulnerabilities", | |
| "check_robots", | |
| "outdated_js", | |
| "untrusted_certificates", | |
| "client_access_policies", | |
| "http_debug_methods", | |
| "security_txt", | |
| "cors_misconfiguration", | |
| "resource_discovery", | |
| "sensitive_files", | |
| "admin_consoles", | |
| "interesting_files", | |
| "server_info_disc", | |
| "server_software" | |
| ] | |
| }, | |
| "type": "array" | |
| }, | |
| "spider": { | |
| "type": "object", | |
| "properties": { | |
| "approach": { | |
| "default": "classic", | |
| "enum": ["classic", "spa"], | |
| "type": "string" | |
| }, | |
| "depth": { "default": 10, "type": "integer" }, | |
| "exclude_urls": { | |
| "example": [ | |
| "http://www.target.com/exclude_me", | |
| "http://www.target.com/exclude_me_too" | |
| ], | |
| "items": { "type": "string" }, | |
| "type": "array" | |
| }, | |
| "include_urls": { | |
| "example": [ | |
| "http://www.target.com/include_me", | |
| "http://www.target.com/include_me_too" | |
| ], | |
| "items": { "type": "string" }, | |
| "type": "array" | |
| } | |
| } | |
| }, | |
| "requests_per_second": { | |
| "default": 10000, | |
| "maximum": 10000, | |
| "minimum": 1, | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "WordpressScannerParams": { | |
| "additionalProperties": false, | |
| "type": "object", | |
| "properties": { | |
| "scan_type": { | |
| "default": "custom", | |
| "enum": ["light", "deep", "custom"], | |
| "type": "string" | |
| }, | |
| "detection_mode": { | |
| "default": "aggressive", | |
| "enum": ["passive", "aggressive"], | |
| "type": "string" | |
| }, | |
| "enumerate": { | |
| "description": "When set, only the methods in the list will run. If not set or `null`, will run all methods", | |
| "items": { | |
| "type": "string", | |
| "enum": [ | |
| "users", | |
| "vulnerable_themes", | |
| "vulnerable_plugins", | |
| "config_backups", | |
| "database_exports", | |
| "timthumbs" | |
| ] | |
| }, | |
| "type": ["array", "null"] | |
| } | |
| } | |
| }, | |
| "SslTlsScanParams": { | |
| "additionalProperties": false, | |
| "type": "object", | |
| "properties": { | |
| "preset": { | |
| "default": "deep", | |
| "description": "Scanning presets that define the complexity of a scan. Light scans only on port 443. Deep scans on top 1000 most common ports. Custom allows engine selection and personalized port selection.\n", | |
| "enum": ["light", "deep", "custom"], | |
| "type": "string" | |
| }, | |
| "scanning_engines": { | |
| "default": ["certificate", "vulnerability"], | |
| "description": "Scanning engines that will be loaded for a scan. Can be set only if `custom` preset was selected. It must contain at least one engine.", | |
| "example": ["certificate", "vulnerability"], | |
| "items": { | |
| "type": "string", | |
| "enum": ["certificate", "vulnerability"] | |
| }, | |
| "type": "array" | |
| }, | |
| "port_range": { | |
| "description": "Input type for port scanning. Port ranges are user provided port intervals that are passed to the port discovery engine. Only one port input type is allowed.", | |
| "example": { "start_port": 1, "end_port": 443 }, | |
| "type": "object", | |
| "properties": { | |
| "start_port": { "type": "integer" }, | |
| "end_port": { "type": "integer" } | |
| } | |
| }, | |
| "port_top": { | |
| "description": "Input type for port scanning. Port tops are predefined port lists containing various commonly used port numbers that are passed to the port discovery engine. Only one port input type is allowed.", | |
| "enum": ["10", "100", "1000", "5000", "all"], | |
| "type": "string" | |
| }, | |
| "port_list": { | |
| "description": "Input type for port scanning. Port lists are user provided port lists that are passed to the port discovery engine. Only one port input type is allowed.", | |
| "items": { "type": "integer" }, | |
| "type": "array" | |
| } | |
| } | |
| }, | |
| "ErrorResponse": { | |
| "additionalProperties": false, | |
| "type": "object", | |
| "properties": { | |
| "status": { "example": 401, "type": "integer" }, | |
| "message": { "example": "No API key specified", "type": "string" } | |
| } | |
| }, | |
| "CreatedResourceResponse": { | |
| "type": "object", | |
| "properties": { "created_id": { "example": 420323, "type": "integer" } } | |
| } | |
| }, | |
| "securitySchemes": { | |
| "bearerAuth": { | |
| "description": "Use the \"API key\" from the [profile page](https://app.pentest-tools.com/account#api) as the token", | |
| "scheme": "bearer", | |
| "type": "http" | |
| } | |
| } | |
| }, | |
| "info": { "title": "pentest-tools.com REST API", "version": "1.0.0.0" }, | |
| "openapi": "3.1.0", | |
| "paths": { | |
| "/targets": { | |
| "get": { | |
| "operationId": "get_targets", | |
| "summary": "Get all targets", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "items": { "$ref": "#/components/schemas/Target" }, | |
| "type": "array" | |
| } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" } | |
| }, | |
| "tags": ["targets"], | |
| "parameters": [ | |
| { | |
| "name": "workspace_id", | |
| "description": "ID of the workspace to show targets from", | |
| "in": "query", | |
| "required": false, | |
| "schema": { "type": "integer", "format": "integer" } | |
| }, | |
| { | |
| "name": "type", | |
| "description": "the type of target", | |
| "in": "query", | |
| "required": false, | |
| "schema": { "type": "string", "format": "string" } | |
| } | |
| ] | |
| }, | |
| "post": { | |
| "operationId": "add_target", | |
| "summary": "Create a target", | |
| "responses": { | |
| "201": { | |
| "description": "Created", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "$ref": "#/components/schemas/CreatedResourceResponse" | |
| } | |
| } | |
| }, | |
| "headers": { | |
| "location": { | |
| "description": "The path to the newly created target", | |
| "schema": { "type": "string" } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "403": { | |
| "description": "Can't create target because it is blacklisted, the user has too many targets or the license is invalid" | |
| }, | |
| "404": { "description": "Workspace ID is not valid" }, | |
| "409": { "description": "Target already exists" }, | |
| "422": { "description": "Target is in a wrong format" } | |
| }, | |
| "tags": ["targets"], | |
| "requestBody": { | |
| "content": { | |
| "application/x-www-form-urlencoded": { | |
| "schema": { "$ref": "#/components/schemas/Target" } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/targets/{id}": { | |
| "get": { | |
| "operationId": "get_target", | |
| "summary": "Get target by ID", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "content": { | |
| "application/json": { | |
| "schema": { "$ref": "#/components/schemas/Target" } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "404": { "$ref": "#/components/responses/ObjectNotFoundError" } | |
| }, | |
| "tags": ["targets"] | |
| }, | |
| "parameters": [ | |
| { | |
| "name": "id", | |
| "description": "id of target to get", | |
| "in": "path", | |
| "required": true, | |
| "schema": { "type": "integer", "format": "integer" } | |
| } | |
| ] | |
| }, | |
| "/workspaces": { | |
| "get": { | |
| "operationId": "get_workspaces", | |
| "summary": "Get all workspaces", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "items": { "$ref": "#/components/schemas/Workspace" }, | |
| "type": "array" | |
| } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" } | |
| }, | |
| "tags": ["workspaces"] | |
| }, | |
| "post": { | |
| "operationId": "add_workspace", | |
| "summary": "Create a workspace", | |
| "responses": { | |
| "201": { | |
| "description": "Created", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "$ref": "#/components/schemas/CreatedResourceResponse" | |
| } | |
| } | |
| }, | |
| "headers": { | |
| "location": { | |
| "description": "The path to the newly created workspace", | |
| "schema": { "type": "string" } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "409": { "description": "Workspace already exists" } | |
| }, | |
| "tags": ["workspaces"], | |
| "requestBody": { | |
| "content": { | |
| "application/x-www-form-urlencoded": { | |
| "schema": { "$ref": "#/components/schemas/Workspace" } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/workspaces/{id}": { | |
| "get": { | |
| "operationId": "get_workspace", | |
| "summary": "Get workspace by ID", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "content": { | |
| "application/json": { | |
| "schema": { "$ref": "#/components/schemas/Workspace" } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "404": { "$ref": "#/components/responses/ObjectNotFoundError" } | |
| }, | |
| "tags": ["workspaces"] | |
| }, | |
| "put": { | |
| "operationId": "edit_workspace", | |
| "summary": "Edit workspace", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "content": { | |
| "application/json": { | |
| "schema": { "$ref": "#/components/schemas/Workspace" } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "404": { "$ref": "#/components/responses/ObjectNotFoundError" } | |
| }, | |
| "tags": ["workspaces"], | |
| "requestBody": { | |
| "content": { | |
| "application/json": { | |
| "schema": { "$ref": "#/components/schemas/Workspace" } | |
| } | |
| } | |
| } | |
| }, | |
| "delete": { | |
| "operationId": "delete_workspace", | |
| "summary": "Delete workspace", | |
| "description": "Deletes a workspace and all of its assets.", | |
| "responses": { | |
| "204": { "description": "Deleted successfully" }, | |
| "400": { "description": "Invalid parameters" }, | |
| "403": { "$ref": "#/components/responses/ForbiddenError" }, | |
| "409": { "description": "Cannot delete current workspace" }, | |
| "500": { "description": "Internal server error" } | |
| }, | |
| "tags": ["workspaces"] | |
| }, | |
| "parameters": [ | |
| { | |
| "name": "id", | |
| "description": "id of workspace to get", | |
| "in": "path", | |
| "required": true, | |
| "schema": { "type": "integer", "format": "integer" } | |
| } | |
| ] | |
| }, | |
| "/scans": { | |
| "get": { | |
| "operationId": "get_scans", | |
| "summary": "Get all scans", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "items": { "$ref": "#/components/schemas/Scan" }, | |
| "type": "array" | |
| } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" } | |
| }, | |
| "tags": ["scans"], | |
| "parameters": [ | |
| { | |
| "name": "workspace_id", | |
| "description": "ID of the workspace to show scans from. If not set, the scans from the active workspace (set in the web interface) will be returneed.", | |
| "in": "query", | |
| "required": false, | |
| "schema": { "type": "integer", "format": "integer" } | |
| }, | |
| { | |
| "name": "target_id", | |
| "description": "ID of the target to show scans from", | |
| "in": "query", | |
| "required": false, | |
| "schema": { "type": "integer", "format": "integer" } | |
| } | |
| ] | |
| }, | |
| "post": { | |
| "operationId": "start_scan", | |
| "summary": "Start a scan", | |
| "responses": { | |
| "201": { | |
| "description": "Created", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "allOf": [ | |
| { "$ref": "#/components/schemas/CreatedResourceResponse" }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "target_id": { | |
| "description": "the target_id of the target this scan is being run against", | |
| "example": 5426912, | |
| "type": "integer" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| "headers": { | |
| "location": { | |
| "description": "The path to the newly created scan", | |
| "schema": { "type": "string" } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "404": { "$ref": "#/components/responses/ObjectNotFoundError" }, | |
| "409": { | |
| "description": "Specified workspace ID does not match target workspace ID" | |
| } | |
| }, | |
| "tags": ["scans"], | |
| "requestBody": { | |
| "content": { | |
| "application/json": { | |
| "schema": { "$ref": "#/components/schemas/Scan" } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/scans/{id}": { | |
| "get": { | |
| "operationId": "get_scan_status", | |
| "summary": "Get scan information by ID", | |
| "description": "Get scan information by ID. For the output, see `/scans/{id}/output`", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "content": { | |
| "application/json": { | |
| "schema": { "$ref": "#/components/schemas/Scan" } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "404": { "$ref": "#/components/responses/ObjectNotFoundError" } | |
| }, | |
| "tags": ["scans"] | |
| }, | |
| "delete": { | |
| "operationId": "delete_scan", | |
| "summary": "Delete a scan", | |
| "description": "Delete a scan.", | |
| "responses": { | |
| "204": { "description": "Deleted successfully" }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "409": { "description": "Task not finished" } | |
| }, | |
| "tags": ["scans"] | |
| }, | |
| "parameters": [ | |
| { | |
| "name": "id", | |
| "description": "id of scan", | |
| "in": "path", | |
| "required": true, | |
| "schema": { "type": "integer", "format": "integer" } | |
| } | |
| ] | |
| }, | |
| "/scans/{id}/output": { | |
| "get": { | |
| "operationId": "get_scan_output", | |
| "summary": "Get scan output by ID", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "content": { | |
| "application/json": { | |
| "schema": { "$ref": "#/components/schemas/ScanOutput" } | |
| }, | |
| "application/pdf": { | |
| "schema": { "format": "binary", "type": "string" } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" } | |
| }, | |
| "tags": ["scans"] | |
| }, | |
| "parameters": [ | |
| { | |
| "name": "id", | |
| "description": "id of scan", | |
| "in": "path", | |
| "required": true, | |
| "schema": { "type": "integer", "format": "integer" } | |
| } | |
| ] | |
| }, | |
| "/scans/{id}/stop": { | |
| "post": { | |
| "operationId": "stop_scan", | |
| "summary": "Stop an active scan", | |
| "responses": { | |
| "204": { "description": "No Content" }, | |
| "404": { "$ref": "#/components/responses/ObjectNotFoundError" }, | |
| "500": { "description": "Internal server error" } | |
| }, | |
| "tags": ["scans"] | |
| }, | |
| "parameters": [ | |
| { | |
| "name": "id", | |
| "description": "id of the scan", | |
| "in": "path", | |
| "required": true, | |
| "schema": { "type": "integer", "format": "integer" } | |
| } | |
| ] | |
| }, | |
| "/http_loggers": { | |
| "get": { | |
| "operationId": "get_loggers", | |
| "summary": "Get all HTTP loggers", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "items": { "$ref": "#/components/schemas/HttpLogger" }, | |
| "type": "array" | |
| } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "404": { "$ref": "#/components/responses/ObjectNotFoundError" } | |
| }, | |
| "tags": ["http_loggers"] | |
| }, | |
| "post": { | |
| "operationId": "create_logger", | |
| "summary": "Create a HTTP logger", | |
| "responses": { | |
| "201": { | |
| "description": "Created", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "$ref": "#/components/schemas/CreatedResourceResponse" | |
| } | |
| } | |
| }, | |
| "headers": { | |
| "location": { | |
| "description": "The path to the newly created logger", | |
| "schema": { "type": "string" } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "409": { | |
| "description": "A logger with the same label already exists" | |
| } | |
| }, | |
| "tags": ["http_loggers"], | |
| "requestBody": { | |
| "content": { | |
| "application/x-www-form-urlencoded": { | |
| "schema": { "$ref": "#/components/schemas/HttpLogger" } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/http_loggers/{id}": { | |
| "get": { | |
| "operationId": "get_logger", | |
| "summary": "Get logger information by ID", | |
| "description": "Get logger information by ID. To see the requests made to the logger, see `/http_loggers/{id}/data`", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "content": { | |
| "application/json": { | |
| "schema": { "$ref": "#/components/schemas/HttpLogger" } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "404": { "$ref": "#/components/responses/ObjectNotFoundError" } | |
| }, | |
| "tags": ["http_loggers"] | |
| }, | |
| "delete": { | |
| "operationId": "delete_logger", | |
| "summary": "Delete a logger", | |
| "responses": { | |
| "204": { "description": "Deleted successfully" }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "404": { "$ref": "#/components/responses/ObjectNotFoundError" } | |
| }, | |
| "tags": ["http_loggers"] | |
| }, | |
| "parameters": [ | |
| { | |
| "name": "id", | |
| "description": "id of the logger", | |
| "in": "path", | |
| "required": true, | |
| "schema": { "type": "integer", "format": "integer" } | |
| } | |
| ] | |
| }, | |
| "/http_loggers/{id}/data": { | |
| "get": { | |
| "operationId": "get_logger_data", | |
| "summary": "Get the data for a logger", | |
| "description": "Get a list of requests made to the logger", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "type": "object", | |
| "properties": { | |
| "requests": { | |
| "items": { | |
| "$ref": "#/components/schemas/HttpLoggerData" | |
| }, | |
| "type": "array" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "404": { "$ref": "#/components/responses/ObjectNotFoundError" } | |
| }, | |
| "tags": ["http_loggers"] | |
| }, | |
| "delete": { | |
| "operationId": "clear_logger", | |
| "summary": "Clear the data for a logger", | |
| "description": "Delete all the requests made to the HTTP logger.", | |
| "responses": { | |
| "204": { "description": "Deleted successfully" }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "404": { "$ref": "#/components/responses/ObjectNotFoundError" } | |
| }, | |
| "tags": ["http_loggers"] | |
| }, | |
| "parameters": [ | |
| { | |
| "name": "id", | |
| "description": "id of the logger", | |
| "in": "path", | |
| "required": true, | |
| "schema": { "type": "integer", "format": "integer" } | |
| } | |
| ] | |
| }, | |
| "/finding_templates": { | |
| "get": { | |
| "operationId": "get_finding_templates", | |
| "summary": "Get all finding templates", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "items": { "$ref": "#/components/schemas/FindingTemplate" }, | |
| "type": "array" | |
| } | |
| } | |
| }, | |
| "headers": { | |
| "X-Matched-Count": { | |
| "description": "The number of templates that matched the query (excluding limits)", | |
| "schema": { "type": "integer" } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "429": { "$ref": "#/components/responses/TooManyRequestsError" } | |
| }, | |
| "tags": ["finding_templates"], | |
| "parameters": [ | |
| { | |
| "name": "vuln_id_type", | |
| "description": "The vuln_id type of the vulnerability (e.g. \"NETSCAN\", \"WEBSCAN\")", | |
| "in": "query", | |
| "required": false, | |
| "schema": { "type": "string", "example": "NETSCAN" } | |
| }, | |
| { | |
| "name": "has_ptt_exploit", | |
| "description": "Only show vulnerabilities which have/don\"t have exploit capabilities. Setting this to `false` will only show vulnerabilities without any capabilities.", | |
| "in": "query", | |
| "required": false, | |
| "schema": { "type": "boolean", "example": true } | |
| }, | |
| { | |
| "name": "limit", | |
| "description": "the maximum number of templates to return", | |
| "in": "query", | |
| "required": false, | |
| "schema": { "type": "integer", "format": "integer", "example": 100 } | |
| }, | |
| { | |
| "name": "offset", | |
| "description": "the offset to start returning templates from. This does not work without the `limit` parameter", | |
| "in": "query", | |
| "required": false, | |
| "schema": { "type": "integer", "format": "integer", "example": 100 } | |
| } | |
| ] | |
| } | |
| }, | |
| "/wordlists": { | |
| "get": { | |
| "operationId": "get_wordlists", | |
| "summary": "Get all wordlists", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "items": { "$ref": "#/components/schemas/Wordlists" }, | |
| "type": "array" | |
| } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" } | |
| }, | |
| "tags": ["wordlists"] | |
| } | |
| }, | |
| "/wordlists/{id}": { | |
| "get": { | |
| "operationId": "get_wordlist", | |
| "summary": "Get wordlist information by ID", | |
| "description": "Get the details of a wordlist. For contents, use `/wordlists/{id}/contents`", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "content": { | |
| "application/json": { "schema": { "type": "object" } } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "404": { "$ref": "#/components/responses/ObjectNotFoundError" } | |
| }, | |
| "tags": ["wordlists"], | |
| "parameters": [ | |
| { | |
| "name": "id", | |
| "description": "id of wordlist to get", | |
| "in": "path", | |
| "required": true, | |
| "schema": { "type": "integer", "format": "integer" } | |
| } | |
| ] | |
| }, | |
| "delete": { | |
| "operationId": "delete_wordlist", | |
| "summary": "Delete a wordlist", | |
| "responses": { | |
| "204": { "description": "OK" }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "403": { "$ref": "#/components/responses/ForbiddenError" }, | |
| "404": { "$ref": "#/components/responses/ObjectNotFoundError" } | |
| }, | |
| "tags": ["wordlists"], | |
| "parameters": [ | |
| { | |
| "name": "id", | |
| "description": "id of wordlist to get", | |
| "in": "path", | |
| "required": true, | |
| "schema": { "type": "integer", "format": "integer" } | |
| } | |
| ] | |
| } | |
| }, | |
| "/wordlists/{id}/contents": { | |
| "get": { | |
| "operationId": "get_wordlist_contents", | |
| "summary": "Get wordlist contents by ID", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "content": { | |
| "text/plain": { | |
| "schema": { "$ref": "#/components/schemas/WordlistsContents" } | |
| } | |
| } | |
| }, | |
| "401": { "$ref": "#/components/responses/UnauthorizedError" }, | |
| "404": { "$ref": "#/components/responses/ObjectNotFoundError" } | |
| }, | |
| "tags": ["wordlists"], | |
| "parameters": [ | |
| { | |
| "name": "id", | |
| "description": "id of wordlist to get", | |
| "in": "path", | |
| "required": true, | |
| "schema": { "type": "integer", "format": "integer" } | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| "security": [{ "bearerAuth": [] }], | |
| "servers": [{ "url": "https://app.pentest-tools.com/api/v2" }], | |
| "tags": [ | |
| { | |
| "name": "targets", | |
| "description": "Operations done on Targets", | |
| "x-displayName": "Targets" | |
| }, | |
| { | |
| "name": "scans", | |
| "description": "Operations done on Scans", | |
| "x-displayName": "Scans" | |
| }, | |
| { | |
| "name": "workspaces", | |
| "description": "Operations done on Workspaces", | |
| "x-displayName": "Workspaces" | |
| }, | |
| { | |
| "name": "http_loggers", | |
| "description": "Operations done on HTTP Loggers", | |
| "x-displayName": "HTTP Loggers" | |
| }, | |
| { | |
| "name": "wordlists", | |
| "description": "Operations done on Wordlists", | |
| "x-displayName": "Wordlists" | |
| }, | |
| { | |
| "name": "finding_templates", | |
| "description": "Operations done on Finding Templates", | |
| "x-displayName": "Finding Templates" | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment