{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/aiproj-json/versions/1.2.json",
  "title": "aiproj",
  "description": "Settings for project analysis by the Application Inspector",
  "x-lintel": {
    "source": "https://www.schemastore.org/aiproj-1.2.json",
    "sourceSha256": "005721d08845d0781d31c8843515dc19cd77e2388c6ff0eb7ebb93657e684c74",
    "fileMatch": [
      ".aiproj.json"
    ],
    "parsers": [
      "json"
    ]
  },
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "Version": {
      "type": "string",
      "enum": [
        "1.0",
        "1.1",
        "1.2"
      ]
    },
    "BlackBoxSettings": {
      "type": [
        "object",
        "null"
      ],
      "title": "Black box and autocheck options",
      "properties": {
        "AdditionalHttpHeaders": {
          "title": "Additional HTTP headers",
          "description": "Dictionary of additional HTTP headers",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "object",
            "properties": {
              "Key": {
                "title": "Header",
                "type": "string"
              },
              "Value": {
                "type": "string",
                "title": "value"
              }
            }
          }
        },
        "WhiteListedAddresses": {
          "type": [
            "array",
            "null"
          ],
          "title": "Whitelisted addresses",
          "description": "Addresses, that was added in white list",
          "items": {
            "type": "object",
            "properties": {
              "Address": {
                "title": "Address",
                "description": "Address value",
                "type": "string"
              },
              "Format": {
                "type": "string",
                "title": "Address format",
                "description": "Type of address",
                "enum": [
                  "Wildcard",
                  "ExactMatch",
                  "RegExp"
                ]
              }
            }
          }
        },
        "BlackListedAddresses": {
          "type": [
            "array",
            "null"
          ],
          "title": "Blacklisted addresses",
          "description": "Addresses, that was added in black list",
          "items": {
            "type": "object",
            "properties": {
              "Address": {
                "title": "Address",
                "description": "Address value",
                "type": "string"
              },
              "Format": {
                "type": "string",
                "title": "Address format",
                "description": "Type of address",
                "enum": [
                  "Wildcard",
                  "ExactMatch",
                  "RegExp"
                ]
              }
            }
          }
        },
        "Authentication": {
          "oneOf": [
            {
              "type": "object",
              "required": [
                "Cookie",
                "Type"
              ],
              "properties": {
                "Type": {
                  "enum": [
                    "RawCookie"
                  ]
                },
                "Cookie": {
                  "type": "object"
                }
              }
            },
            {
              "type": "object",
              "required": [
                "Form",
                "Type"
              ],
              "properties": {
                "Type": {
                  "enum": [
                    "Form"
                  ]
                },
                "Form": {
                  "type": "object"
                }
              }
            },
            {
              "type": "object",
              "required": [
                "Http",
                "Type"
              ],
              "properties": {
                "Type": {
                  "enum": [
                    "Http"
                  ]
                },
                "Http": {
                  "type": "object"
                }
              }
            },
            {
              "type": "object",
              "required": [
                "Type"
              ],
              "properties": {
                "Type": {
                  "enum": [
                    "None"
                  ]
                }
              }
            },
            {
              "type": "null"
            }
          ],
          "type": [
            "object",
            "null"
          ],
          "title": "Authentication options",
          "properties": {
            "Cookie": {
              "type": [
                "object",
                "null"
              ],
              "title": "Cookie options",
              "description": "Cookie authentication options",
              "required": [
                "Cookie",
                "ValidationAddress",
                "ValidationTemplate"
              ],
              "properties": {
                "Cookie": {
                  "title": "Cookie",
                  "type": "string"
                },
                "ValidationAddress": {
                  "title": "Validation address",
                  "description": "Verification address",
                  "type": "string"
                },
                "ValidationTemplate": {
                  "title": "Validation template",
                  "description": "String to search for",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "Form": {
              "type": [
                "object",
                "null"
              ],
              "title": "Form",
              "description": "Form-based authentication options",
              "anyOf": [
                {
                  "properties": {
                    "FormDetection": {
                      "enum": [
                        "Auto"
                      ]
                    },
                    "FormAddress": {
                      "type": [
                        "string"
                      ]
                    },
                    "FormXPath": {
                      "type": [
                        "null",
                        "string"
                      ]
                    },
                    "Login": {
                      "type": "string"
                    },
                    "LoginKey": {
                      "type": [
                        "null",
                        "string"
                      ]
                    },
                    "Password": {
                      "type": "string"
                    },
                    "PasswordKey": {
                      "type": [
                        "null",
                        "string"
                      ]
                    },
                    "ValidationTemplate": {
                      "type": [
                        "string"
                      ]
                    }
                  },
                  "required": [
                    "FormDetection",
                    "Login",
                    "Password",
                    "FormAddress",
                    "ValidationTemplate"
                  ],
                  "type": "object"
                },
                {
                  "properties": {
                    "FormDetection": {
                      "enum": [
                        "Manual"
                      ]
                    },
                    "FormAddress": {
                      "type": [
                        "string"
                      ]
                    },
                    "FormXPath": {
                      "type": [
                        "string"
                      ]
                    },
                    "Login": {
                      "type": "string"
                    },
                    "LoginKey": {
                      "type": [
                        "string"
                      ]
                    },
                    "Password": {
                      "type": "string"
                    },
                    "PasswordKey": {
                      "type": [
                        "string"
                      ]
                    },
                    "ValidationTemplate": {
                      "type": [
                        "string"
                      ]
                    }
                  },
                  "required": [
                    "FormDetection",
                    "Login",
                    "Password",
                    "FormAddress",
                    "ValidationTemplate",
                    "LoginKey",
                    "PasswordKey",
                    "FormXPath"
                  ],
                  "type": "object"
                }
              ],
              "properties": {
                "FormDetection": {
                  "type": "string",
                  "title": "Detection",
                  "description": "Type of form authentication detection",
                  "enum": [
                    "Auto",
                    "Manual"
                  ]
                },
                "FormAddress": {
                  "title": "Sign-in form URL"
                },
                "FormXPath": {
                  "title": "Sign-in form XPath"
                },
                "Login": {
                  "title": "User"
                },
                "LoginKey": {
                  "title": "User identifier"
                },
                "Password": {
                  "title": "Password"
                },
                "PasswordKey": {
                  "title": "Password identifier"
                },
                "ValidationTemplate": {
                  "title": "Validation template",
                  "description": "String to search for"
                }
              },
              "additionalProperties": false
            },
            "Http": {
              "type": [
                "object",
                "null"
              ],
              "title": "Http",
              "description": "HTTP Basic authentication options",
              "properties": {
                "Login": {
                  "title": "User",
                  "type": "string"
                },
                "Password": {
                  "title": "Password",
                  "type": "string"
                },
                "ValidationAddress": {
                  "title": "Validation address",
                  "type": "string"
                }
              },
              "required": [
                "Login",
                "Password",
                "ValidationAddress"
              ],
              "additionalProperties": false
            },
            "Type": {
              "title": "Type of authentication",
              "type": "string",
              "enum": [
                "Form",
                "Http",
                "RawCookie",
                "None"
              ]
            }
          },
          "additionalProperties": false
        },
        "Level": {
          "title": "Search mode",
          "type": "string",
          "enum": [
            "None",
            "Fast",
            "Full",
            "Normal"
          ]
        },
        "ProxySettings": {
          "type": [
            "object",
            "null"
          ],
          "title": "Proxy settings",
          "description": "Proxy server settings",
          "properties": {
            "Enabled": {
              "title": "Enabled",
              "type": "boolean"
            },
            "Host": {
              "title": "Address",
              "type": [
                "null",
                "string"
              ]
            },
            "Login": {
              "title": "User",
              "type": [
                "null",
                "string"
              ]
            },
            "Password": {
              "title": "Password",
              "type": [
                "null",
                "string"
              ]
            },
            "Port": {
              "title": "Port",
              "type": "integer"
            },
            "Type": {
              "title": "Type of proxy",
              "type": "string",
              "enum": [
                "Http",
                "Socks4",
                "Socks5"
              ]
            }
          },
          "additionalProperties": false
        },
        "RunAutocheckAfterScan": {
          "title": "Run autocheck",
          "description": "Autocheck vulnerabilities after scanning",
          "type": "boolean"
        },
        "ScanScope": {
          "title": "Scan scope",
          "type": "string",
          "enum": [
            "Domain",
            "Folder",
            "Path"
          ]
        },
        "Site": {
          "title": "Website address",
          "type": "string"
        },
        "SslCheck": {
          "title": "Check ssl connection",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "CustomParameters": {
      "title": "Custom parameters",
      "description": "Custom kernel startup parameters",
      "type": [
        "null",
        "string"
      ]
    },
    "DotNetSettings": {
      "type": [
        "object",
        "null"
      ],
      "title": ".NET scan options",
      "properties": {
        "ProjectType": {
          "title": "Type of application",
          "type": "string",
          "enum": [
            "None",
            "Solution",
            "WebSite"
          ]
        },
        "SolutionFile": {
          "title": "Solution file",
          "description": "Path to a solution or project",
          "type": [
            "null",
            "string"
          ]
        }
      },
      "additionalProperties": false
    },
    "JavaSettings": {
      "type": [
        "object",
        "null"
      ],
      "title": "Java scan options",
      "properties": {
        "Parameters": {
          "title": "JVM start options",
          "type": [
            "null",
            "string"
          ]
        },
        "UnpackUserPackages": {
          "title": "Unpack custom JAR files",
          "type": "boolean"
        },
        "UserPackagePrefixes": {
          "title": "Prefixes of custom packages",
          "type": [
            "null",
            "string"
          ]
        },
        "Version": {
          "title": "JDK version",
          "type": "string",
          "enum": [
            "8",
            "11",
            "17"
          ]
        }
      },
      "additionalProperties": false
    },
    "MailingProjectSettings": {
      "type": [
        "object",
        "null"
      ],
      "title": "Mail settings",
      "description": "Report mailing options",
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "Enabled": {
              "enum": [
                true
              ]
            },
            "MailProfileName": {
              "type": "string",
              "minLength": 1
            },
            "EmailRecipients": {
              "type": "array",
              "minItems": 1,
              "maxItems": 10
            }
          },
          "required": [
            "Enabled",
            "MailProfileName",
            "EmailRecipients"
          ]
        },
        {
          "properties": {
            "Enabled": {
              "enum": [
                false
              ]
            },
            "MailProfileName": {
              "type": [
                "null",
                "string"
              ]
            },
            "EmailRecipients": {
              "type": "array",
              "minItems": 0,
              "maxItems": 10
            }
          },
          "required": [
            "Enabled"
          ],
          "type": "object"
        }
      ],
      "properties": {
        "Enabled": {
          "title": "Send a report by email after scanning",
          "type": "boolean"
        },
        "MailProfileName": {
          "title": "Email profile name",
          "type": [
            "null",
            "string"
          ]
        },
        "EmailRecipients": {
          "title": "List of recipients",
          "type": "array",
          "items": {
            "type": "string",
            "format": "email"
          }
        }
      },
      "additionalProperties": false
    },
    "ProgrammingLanguage": {
      "title": "Active scanning language",
      "type": "string",
      "enum": [
        "Java",
        "CSharp",
        "VB",
        "Php",
        "JavaScript",
        "Python",
        "ObjectiveC",
        "Swift",
        "CAndCPlusPlus",
        "Go",
        "Kotlin",
        "Sql"
      ]
    },
    "ProjectName": {
      "title": "Project name",
      "type": "string"
    },
    "ScanModules": {
      "title": "Enabled modules",
      "type": "array",
      "uniqueItems": true,
      "items": {
        "type": "string",
        "enum": [
          "Configuration",
          "Components",
          "BlackBox",
          "DataFlowAnalysis",
          "PatternMatching",
          "VulnerableSourceCode"
        ]
      }
    },
    "SkipGitIgnoreFiles": {
      "title": "Skip .gitignore files",
      "description": "Exclude from scanning the files from the .gitignore file",
      "type": "boolean"
    },
    "UsePublicAnalysisMethod": {
      "title": "Use public analysis method",
      "description": "Search from available public and protected methods",
      "type": "boolean"
    },
    "UseSastRules": {
      "title": "Use SAST rules",
      "description": "Enable SAST Analysis rules",
      "type": "boolean"
    },
    "UseCustomPmRules": {
      "title": "Use custom PM rules",
      "description": "Enable custom PM rules",
      "type": "boolean"
    },
    "UseSecurityPolicies": {
      "title": "Use security policies",
      "description": "Check for compliance with the security policy",
      "type": "boolean"
    },
    "DownloadDependencies": {
      "title": "Download dependencies",
      "type": [
        "null",
        "boolean"
      ]
    }
  },
  "required": [
    "ProjectName",
    "ProgrammingLanguage",
    "ScanModules"
  ],
  "additionalProperties": false,
  "id": "https://json.schemastore.org/aiproj-1.2.json"
}
