{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://json.schemastore.org/petstore-v1.0.json",
  "$ref": "#/definitions/Welcome9",
  "definitions": {
    "Welcome9": {
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "config": {
          "$ref": "#/definitions/Config"
        },
        "scenarios": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Scenario"
          }
        }
      },
      "title": "Welcome9"
    },
    "Config": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "http": {
          "$ref": "#/definitions/HTTP"
        },
        "tls": {
          "$ref": "#/definitions/TLS"
        },
        "plugins": {
          "$ref": "#/definitions/Plugins"
        },
        "target": {
          "type": "string"
        },
        "phases": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConfigPhase"
          }
        },
        "environments": {
          "$ref": "#/definitions/Environments"
        },
        "processor": {
          "type": "string"
        }
      },
      "required": [
        "environments",
        "http",
        "phases",
        "plugins",
        "processor",
        "target",
        "tls"
      ],
      "title": "Config"
    },
    "Environments": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "dev": {
          "$ref": "#/definitions/Dev"
        },
        "qa": {
          "$ref": "#/definitions/Dev"
        }
      },
      "required": ["dev", "qa"],
      "title": "Environments"
    },
    "Dev": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "target": {
          "type": "string"
        },
        "phases": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DevPhase"
          }
        }
      },
      "required": ["phases", "target"],
      "title": "Dev"
    },
    "DevPhase": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "duration": {
          "type": "integer"
        },
        "arrivalRate": {
          "type": "integer"
        }
      },
      "required": ["arrivalRate", "duration"],
      "title": "DevPhase"
    },
    "HTTP": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "timeout": {
          "type": "integer"
        }
      },
      "required": ["timeout"],
      "title": "HTTP"
    },
    "ConfigPhase": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "duration": {
          "type": "integer"
        },
        "arrivalRate": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        }
      },
      "required": ["arrivalRate", "duration", "name"],
      "title": "ConfigPhase"
    },
    "Plugins": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "expect": {
          "$ref": "#/definitions/PluginsExpect"
        },
        "publish-metrics": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PublishMetric"
          }
        },
        "metrics-by-endpoint": {
          "$ref": "#/definitions/MetricsByEndpoint"
        }
      },
      "required": ["expect", "metrics-by-endpoint", "publish-metrics"],
      "title": "Plugins"
    },
    "PluginsExpect": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "outputFormat": {
          "type": "string"
        }
      },
      "required": ["outputFormat"],
      "title": "PluginsExpect"
    },
    "MetricsByEndpoint": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "useOnlyRequestNames": {
          "type": "boolean"
        }
      },
      "required": ["useOnlyRequestNames"],
      "title": "MetricsByEndpoint"
    },
    "PublishMetric": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": {
          "type": "string"
        },
        "host": {
          "type": "string"
        },
        "port": {
          "type": "string"
        },
        "prefix": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "event": {
          "$ref": "#/definitions/Event"
        }
      },
      "required": ["event", "host", "port", "prefix", "tags", "type"],
      "title": "PublishMetric"
    },
    "Event": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "title": {
          "type": "string"
        },
        "send": {
          "type": "boolean"
        },
        "status": {
          "type": "string"
        },
        "priority": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": ["priority", "send", "status", "tags", "title"],
      "title": "Event"
    },
    "TLS": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "rejectUnauthorized": {
          "type": "boolean"
        }
      },
      "required": ["rejectUnauthorized"],
      "title": "TLS"
    },
    "Scenario": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "flow": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Flow"
          }
        }
      },
      "required": ["flow"],
      "title": "Scenario"
    },
    "Flow": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "post": {
          "$ref": "#/definitions/Post"
        },
        "get": {
          "$ref": "#/definitions/Get"
        },
        "delete": {
          "$ref": "#/definitions/Delete"
        },
        "function": {
          "type": "string"
        }
      },
      "required": [],
      "title": "Flow"
    },
    "Delete": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "headers": {
          "$ref": "#/definitions/DeleteHeaders"
        },
        "expect": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ExpectElement"
          }
        }
      },
      "required": ["expect", "headers", "name", "url"],
      "title": "Delete"
    },
    "ExpectElement": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "statusCode": {
          "type": "integer"
        }
      },
      "required": ["statusCode"],
      "title": "ExpectElement"
    },
    "DeleteHeaders": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "contentType": {
          "type": "string"
        },
        "accept": {
          "type": "string"
        },
        "api_key": {
          "type": "string"
        }
      },
      "required": ["accept", "api_key", "contentType"],
      "title": "DeleteHeaders"
    },
    "Get": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "headers": {
          "$ref": "#/definitions/GetHeaders"
        },
        "expect": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ExpectElement"
          }
        },
        "qs": {
          "$ref": "#/definitions/Qs"
        }
      },
      "required": ["expect", "headers", "name", "url"],
      "title": "Get"
    },
    "GetHeaders": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "contentType": {
          "type": "string"
        },
        "accept": {
          "type": "string"
        }
      },
      "required": ["accept"],
      "title": "GetHeaders"
    },
    "Qs": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      },
      "required": ["password", "username"],
      "title": "Qs"
    },
    "Post": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "headers": {
          "$ref": "#/definitions/PostHeaders"
        },
        "json": {
          "$ref": "#/definitions/JSON"
        },
        "expect": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ExpectElement"
          }
        },
        "capture": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Capture"
          }
        }
      },
      "required": ["expect", "headers", "json", "name", "url"],
      "title": "Post"
    },
    "Capture": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "as": {
          "type": "string"
        },
        "json": {
          "type": "string"
        }
      },
      "required": ["as", "json"],
      "title": "Capture"
    },
    "PostHeaders": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "accept": {
          "type": "string"
        },
        "Content-Type": {
          "type": "string"
        }
      },
      "required": ["Content-Type", "accept"],
      "title": "PostHeaders"
    },
    "JSON": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "photoUrls": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "name": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "category": {
          "$ref": "#/definitions/Category"
        },
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Category"
          }
        },
        "status": {
          "type": "string"
        },
        "username": {
          "type": "string"
        },
        "firstName": {
          "type": "string"
        },
        "lastName": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "password": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        },
        "userStatus": {
          "type": "integer"
        }
      },
      "required": ["id"],
      "title": "JSON"
    },
    "Category": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "name": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        }
      },
      "required": ["id", "name"],
      "title": "Category"
    }
  }
}
