{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "additionalProperties": false,
  "description": "Settings for project analysis by the Application Inspector",
  "id": "https://json.schemastore.org/aiproj-1.0.json",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "BlackBoxSettings": {
      "title": "black box options",
      "type": ["object", "null"],
      "description": "Black box and autocheck options",
      "additionalProperties": false,
      "properties": {
        "AdditionalHttpHeaders": {
          "title": "HTTP headers",
          "description": "Dictionary of additional HTTP headers",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "Authentication": {
          "title": "authentication options",
          "oneOf": [
            {
              "type": "object",
              "properties": {
                "Type": {
                  "enum": ["RawCookie"]
                },
                "Cookie": {
                  "type": "object"
                }
              },
              "required": ["Cookie", "Type"]
            },
            {
              "type": "object",
              "properties": {
                "Type": {
                  "enum": ["Form"]
                },
                "Form": {
                  "type": "object"
                }
              },
              "required": ["Form", "Type"]
            },
            {
              "type": "object",
              "properties": {
                "Type": {
                  "enum": ["Http"]
                },
                "Http": {
                  "type": "object"
                }
              },
              "required": ["Http", "Type"]
            },
            {
              "type": "object",
              "properties": {
                "Type": {
                  "enum": ["None"]
                }
              },
              "required": ["Type"]
            },
            {
              "type": "null"
            }
          ],
          "type": ["object", "null"],
          "description": "Authentication options",
          "additionalProperties": false,
          "properties": {
            "Cookie": {
              "title": "cookie authentication options",
              "type": ["object", "null"],
              "description": "Cookie authentication options",
              "required": ["Cookie", "ValidationAddress", "ValidationTemplate"],
              "additionalProperties": false,
              "properties": {
                "Cookie": {
                  "description": "Cookie",
                  "type": "string"
                },
                "ValidationAddress": {
                  "description": "Verification address",
                  "type": "string"
                },
                "ValidationTemplate": {
                  "description": "String to search for",
                  "type": "string"
                }
              }
            },
            "Form": {
              "title": "form authentication options",
              "type": ["object", "null"],
              "description": "Form-based authentication options",
              "required": [
                "FormAddress",
                "FormXPath",
                "Login",
                "LoginKey",
                "Password",
                "PasswordKey",
                "ValidationTemplate"
              ],
              "additionalProperties": false,
              "properties": {
                "FormAddress": {
                  "description": "Sign-in form URL",
                  "type": "string"
                },
                "FormXPath": {
                  "description": "Sign-in form XPath",
                  "type": "string"
                },
                "Login": {
                  "description": "User",
                  "type": "string"
                },
                "LoginKey": {
                  "description": "User identifier",
                  "type": "string"
                },
                "Password": {
                  "description": "Password",
                  "type": "string"
                },
                "PasswordKey": {
                  "description": "Password identifier",
                  "type": "string"
                },
                "ValidationTemplate": {
                  "description": "String to search for",
                  "type": "string"
                }
              }
            },
            "Http": {
              "title": "HTTP authentication options",
              "type": ["object", "null"],
              "description": "HTTP Basic authentication options",
              "required": ["Login", "Password", "ValidationAddress"],
              "additionalProperties": false,
              "properties": {
                "Login": {
                  "description": "User",
                  "type": "string"
                },
                "Password": {
                  "description": "Password",
                  "type": "string"
                },
                "ValidationAddress": {
                  "description": "Verification address",
                  "type": "string"
                }
              }
            },
            "Type": {
              "description": "Type of authentication",
              "type": "string",
              "enum": ["Form", "Http", "RawCookie", "None"]
            }
          }
        },
        "Level": {
          "description": "Search mode",
          "type": "string",
          "enum": ["None", "Fast", "Full", "Normal"]
        },
        "ProxySettings": {
          "title": "proxy options",
          "type": ["object", "null"],
          "description": "Proxy server settings",
          "additionalProperties": false,
          "properties": {
            "Enabled": {
              "description": "Enabled",
              "type": "boolean"
            },
            "Host": {
              "description": "Address",
              "type": ["string", "null"]
            },
            "Login": {
              "description": "User",
              "type": ["string", "null"]
            },
            "Password": {
              "description": "Password",
              "type": ["string", "null"]
            },
            "Port": {
              "description": "Port",
              "type": "integer"
            },
            "Type": {
              "description": "Type of proxy",
              "type": "string",
              "enum": ["Http", "Socks4", "Socks5"]
            }
          }
        },
        "RunAutocheckAfterScan": {
          "description": "Autocheck vulnerabilities after scanning",
          "type": "boolean"
        },
        "ScanScope": {
          "description": "Scan scope",
          "type": "string",
          "enum": ["Domain", "Folder", "Path"]
        },
        "Site": {
          "description": "Website address",
          "type": "string"
        }
      }
    },
    "ComponentsSettings": {
      "title": "component settings",
      "type": ["object", "null"],
      "description": "Vulnerable components scan options",
      "additionalProperties": false,
      "properties": {
        "UseCustomYaraRules": {
          "description": "Use custom yara rules",
          "type": "boolean"
        }
      }
    },
    "CustomParameters": {
      "description": "Custom kernel startup parameters",
      "type": ["string", "null"]
    },
    "DotNetSettings": {
      "title": ".NET options",
      "type": ["object", "null"],
      "description": ".NET scan options",
      "additionalProperties": false,
      "properties": {
        "ProjectType": {
          "description": "Type of application",
          "type": "string",
          "enum": ["None", "Solution", "WebSite"]
        },
        "SolutionFile": {
          "description": "Path to a solution or project",
          "type": ["string", "null"]
        }
      }
    },
    "DownloadDependencies": {
      "description": "Download dependencies",
      "type": "boolean"
    },
    "JavaSettings": {
      "title": "Java options",
      "type": ["object", "null"],
      "description": "Java scan options",
      "additionalProperties": false,
      "properties": {
        "Parameters": {
          "description": "JVM start options",
          "type": ["string", "null"]
        },
        "UnpackUserPackages": {
          "description": "Unpack custom JAR files",
          "type": "boolean"
        },
        "UserPackagePrefixes": {
          "description": "Prefixes of custom packages",
          "type": ["string", "null"]
        },
        "Version": {
          "description": "JDK version",
          "type": "string",
          "enum": ["v1_8", "v1_11"]
        }
      }
    },
    "ProgrammingLanguage": {
      "description": "Active scanning language",
      "type": "string",
      "enum": [
        "Java",
        "CSharp",
        "VB",
        "Php",
        "JavaScript",
        "Python",
        "ObjectiveC",
        "Swift",
        "CAndCPlusPlus",
        "Go",
        "Kotlin",
        "Sql"
      ]
    },
    "ProjectName": {
      "description": "Project name",
      "type": "string"
    },
    "ScanModules": {
      "description": "Enabled modules",
      "type": "array",
      "uniqueItems": true,
      "items": {
        "type": "string",
        "enum": [
          "Configuration",
          "Components",
          "BlackBox",
          "DataFlowAnalysis",
          "PatternMatching",
          "VulnerableSourceCode"
        ]
      }
    },
    "SkipGitIgnoreFiles": {
      "description": "Exclude from scanning the files from the .gitignore file",
      "type": "boolean"
    },
    "UsePublicAnalysisMethod": {
      "description": "Search from available public and protected methods",
      "type": "boolean"
    },
    "UseSastRules": {
      "description": "Enable SAST Analysis rules",
      "type": "boolean"
    },
    "UseSecurityPolicies": {
      "description": "Check for compliance with the security policy",
      "type": "boolean"
    }
  },
  "title": "aiproj",
  "type": "object"
}
