{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/mboats/versions/0.1.json",
  "x-lintel": {
    "source": "https://www.schemastore.org/mboats-config-0.1.json",
    "sourceSha256": "8fb0ea0058c0275140afb5a7716e85bf227469ac15ee590da23307ee3d77c0cf",
    "fileMatch": [
      "*.mboats.yaml",
      "*.mboats.yml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "$ref": "#/$defs/Main",
  "$defs": {
    "Main": {
      "type": "object",
      "title": "Properties",
      "properties": {
        "mboats": {
          "$ref": "#/$defs/MBOATS"
        },
        "app": {
          "$ref": "#/$defs/Application"
        }
      },
      "required": [
        "mboats",
        "app"
      ],
      "additionalProperties": true
    },
    "Application": {
      "type": "object",
      "title": "Application Properties",
      "properties": {
        "appId": {
          "type": "string",
          "default": "MBOAPPL"
        },
        "appName": {
          "type": "string",
          "default": "MBO Application"
        }
      },
      "required": [
        "appId",
        "appName"
      ],
      "additionalProperties": true
    },
    "MBOATS": {
      "type": "object",
      "$defs": {
        "AWSEC2": {
          "type": "object",
          "title": "AWS EC2 Configuration",
          "properties": {
            "publicName": {
              "type": "string"
            },
            "serverPort": {
              "type": "integer"
            }
          },
          "required": [
            "publicName",
            "serverPort"
          ],
          "additionalProperties": false
        },
        "AWSS3": {
          "type": "object",
          "title": "AWS S3 Configuration",
          "properties": {
            "enabled": {
              "type": "boolean"
            },
            "accessKeyId": {
              "type": "string"
            },
            "secretAccessKey": {
              "type": "string"
            },
            "region": {
              "type": "string"
            },
            "bucket": {
              "type": "string"
            },
            "identityPoolId": {
              "type": "string"
            }
          },
          "required": [
            "accessKeyId",
            "bucket",
            "enabled",
            "identityPoolId",
            "region",
            "secretAccessKey"
          ],
          "additionalProperties": false
        },
        "CucumberOptions": {
          "type": "object",
          "title": "CucumberOptions",
          "properties": {
            "featuresPath": {
              "type": "string"
            },
            "stepdefsPackage": {
              "type": "string"
            },
            "tagExpression": {
              "type": "string"
            }
          },
          "required": [
            "featuresPath",
            "stepdefsPackage",
            "tagExpression"
          ],
          "additionalProperties": false
        },
        "Email": {
          "type": "object",
          "$defs": {
            "Auth": {
              "type": "object",
              "title": "Auth",
              "properties": {
                "$clientId": {
                  "type": "string"
                },
                "$clientSecret": {
                  "type": "string"
                },
                "$refreshToken": {
                  "type": "string"
                },
                "$refreshUrl": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "required": [
                "$clientId",
                "$clientSecret",
                "$refreshToken",
                "$refreshUrl"
              ],
              "additionalProperties": false
            }
          },
          "properties": {
            "auth": {
              "$ref": "#/$defs/MBOATS/$defs/Email/$defs/Auth"
            },
            "invitationLinkRegex": {
              "type": "string"
            },
            "oktaTokenRegex": {
              "type": "string"
            }
          },
          "required": [
            "auth",
            "invitationLinkRegex",
            "oktaTokenRegex"
          ],
          "title": "Email Configuration",
          "additionalProperties": false
        },
        "MongoDB": {
          "type": "object",
          "$defs": {
            "Collection": {
              "type": "object",
              "title": "Collection",
              "properties": {
                "report": {
                  "type": "string"
                }
              },
              "required": [
                "report"
              ],
              "additionalProperties": false
            }
          },
          "properties": {
            "enabled": {
              "type": "boolean"
            },
            "username": {
              "type": "string"
            },
            "password": {
              "type": "string"
            },
            "connectionString": {
              "type": "string"
            },
            "database": {
              "type": "string"
            },
            "collection": {
              "$ref": "#/$defs/MBOATS/$defs/MongoDB/$defs/Collection"
            }
          },
          "required": [
            "collection",
            "connectionString",
            "database",
            "enabled",
            "password",
            "username"
          ],
          "title": "MongoDB Configuration",
          "additionalProperties": false
        },
        "NetworkLogs": {
          "type": "object",
          "$defs": {
            "Request": {
              "type": "object",
              "title": "Request",
              "properties": {
                "headers": {
                  "type": "boolean"
                },
                "cookies": {
                  "type": "boolean"
                },
                "body": {
                  "type": "boolean"
                }
              },
              "required": [
                "body",
                "cookies",
                "headers"
              ],
              "additionalProperties": false
            }
          },
          "properties": {
            "enabled": {
              "type": "boolean"
            },
            "request": {
              "$ref": "#/$defs/MBOATS/$defs/NetworkLogs/$defs/Request"
            },
            "response": {
              "$ref": "#/$defs/MBOATS/$defs/NetworkLogs/$defs/Request"
            }
          },
          "required": [
            "enabled",
            "request",
            "response"
          ],
          "title": "NetworkLogs",
          "additionalProperties": false
        },
        "Threadbare": {
          "type": "object",
          "title": "Threadbare Configuration",
          "properties": {
            "server": {
              "type": "null"
            }
          },
          "required": [
            "server"
          ],
          "additionalProperties": false
        },
        "Video": {
          "type": "object",
          "title": "Video",
          "properties": {
            "enabled": {
              "type": "boolean"
            },
            "location": {
              "type": "string"
            },
            "format": {
              "type": "string"
            },
            "prefix": {
              "type": "string"
            }
          },
          "required": [
            "enabled",
            "format",
            "location",
            "prefix"
          ],
          "additionalProperties": false
        }
      },
      "properties": {
        "pageLoadTimeout": {
          "type": "integer",
          "default": 60,
          "minimum": 30,
          "maximum": 120
        },
        "elementFindTimeout": {
          "type": "integer",
          "default": 8,
          "minimum": 3,
          "maximum": 15
        },
        "soundfx": {
          "type": "boolean",
          "default": false
        },
        "headless": {
          "type": "boolean",
          "default": false
        },
        "invocationCount": {
          "type": "integer",
          "default": 1,
          "minimum": 1,
          "maximum": 5
        },
        "mode": {
          "type": "string",
          "default": "local",
          "enum": [
            "local",
            "remote"
          ]
        },
        "runnerParallelism": {
          "type": "string",
          "default": "feature",
          "enum": [
            "feature",
            "scenario"
          ]
        },
        "threadCount": {
          "type": "integer",
          "default": 1,
          "minimum": 1,
          "maximum": 5
        },
        "clients": {
          "type": "string",
          "default": "chrome",
          "enum": [
            "chrome",
            "firefox",
            "edge"
          ]
        },
        "clientParallelism": {
          "type": "string",
          "default": "stacked",
          "enum": [
            "stacked",
            "interleaved"
          ]
        },
        "video": {
          "$ref": "#/$defs/MBOATS/$defs/Video"
        },
        "networkLogs": {
          "$ref": "#/$defs/MBOATS/$defs/NetworkLogs"
        },
        "email": {
          "$ref": "#/$defs/MBOATS/$defs/Email"
        },
        "mongodb": {
          "$ref": "#/$defs/MBOATS/$defs/MongoDB"
        },
        "awss3": {
          "$ref": "#/$defs/MBOATS/$defs/AWSS3"
        },
        "awsec2": {
          "$ref": "#/$defs/MBOATS/$defs/AWSEC2"
        },
        "threadbare": {
          "$ref": "#/$defs/MBOATS/$defs/Threadbare"
        }
      },
      "required": [],
      "title": "MBOATS Properties",
      "additionalProperties": false
    }
  }
}
