{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/petstore-v1-0/versions/1.0.json",
  "x-lintel": {
    "source": "https://www.schemastore.org/petstore-v1.0.json",
    "sourceSha256": "6f16f6ab14d1d8db2798403250ac561968820c8b49a6d35c45281b3d22b3e213",
    "fileMatch": [
      "petstore-v1.0.json"
    ],
    "parsers": [
      "json"
    ]
  },
  "$ref": "#/$defs/Welcome9",
  "$defs": {
    "Welcome9": {
      "type": "object",
      "title": "Welcome9",
      "properties": {
        "config": {
          "$ref": "#/$defs/Config"
        },
        "scenarios": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Scenario"
          }
        }
      },
      "additionalProperties": true
    },
    "Config": {
      "type": "object",
      "title": "Config",
      "properties": {
        "http": {
          "$ref": "#/$defs/HTTP"
        },
        "tls": {
          "$ref": "#/$defs/TLS"
        },
        "plugins": {
          "$ref": "#/$defs/Plugins"
        },
        "target": {
          "type": "string"
        },
        "phases": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ConfigPhase"
          }
        },
        "environments": {
          "$ref": "#/$defs/Environments"
        },
        "processor": {
          "type": "string"
        }
      },
      "required": [
        "environments",
        "http",
        "phases",
        "plugins",
        "processor",
        "target",
        "tls"
      ],
      "additionalProperties": false
    },
    "Environments": {
      "type": "object",
      "title": "Environments",
      "properties": {
        "dev": {
          "$ref": "#/$defs/Dev"
        },
        "qa": {
          "$ref": "#/$defs/Dev"
        }
      },
      "required": [
        "dev",
        "qa"
      ],
      "additionalProperties": false
    },
    "Dev": {
      "type": "object",
      "title": "Dev",
      "properties": {
        "target": {
          "type": "string"
        },
        "phases": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/DevPhase"
          }
        }
      },
      "required": [
        "phases",
        "target"
      ],
      "additionalProperties": false
    },
    "DevPhase": {
      "type": "object",
      "title": "DevPhase",
      "properties": {
        "duration": {
          "type": "integer"
        },
        "arrivalRate": {
          "type": "integer"
        }
      },
      "required": [
        "arrivalRate",
        "duration"
      ],
      "additionalProperties": false
    },
    "HTTP": {
      "type": "object",
      "title": "HTTP",
      "properties": {
        "timeout": {
          "type": "integer"
        }
      },
      "required": [
        "timeout"
      ],
      "additionalProperties": false
    },
    "ConfigPhase": {
      "type": "object",
      "title": "ConfigPhase",
      "properties": {
        "duration": {
          "type": "integer"
        },
        "arrivalRate": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        }
      },
      "required": [
        "arrivalRate",
        "duration",
        "name"
      ],
      "additionalProperties": false
    },
    "Plugins": {
      "type": "object",
      "title": "Plugins",
      "properties": {
        "expect": {
          "$ref": "#/$defs/PluginsExpect"
        },
        "publish-metrics": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PublishMetric"
          }
        },
        "metrics-by-endpoint": {
          "$ref": "#/$defs/MetricsByEndpoint"
        }
      },
      "required": [
        "expect",
        "metrics-by-endpoint",
        "publish-metrics"
      ],
      "additionalProperties": false
    },
    "PluginsExpect": {
      "type": "object",
      "title": "PluginsExpect",
      "properties": {
        "outputFormat": {
          "type": "string"
        }
      },
      "required": [
        "outputFormat"
      ],
      "additionalProperties": false
    },
    "MetricsByEndpoint": {
      "type": "object",
      "title": "MetricsByEndpoint",
      "properties": {
        "useOnlyRequestNames": {
          "type": "boolean"
        }
      },
      "required": [
        "useOnlyRequestNames"
      ],
      "additionalProperties": false
    },
    "PublishMetric": {
      "type": "object",
      "title": "PublishMetric",
      "properties": {
        "type": {
          "type": "string"
        },
        "host": {
          "type": "string"
        },
        "port": {
          "type": "string"
        },
        "prefix": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "event": {
          "$ref": "#/$defs/Event"
        }
      },
      "required": [
        "event",
        "host",
        "port",
        "prefix",
        "tags",
        "type"
      ],
      "additionalProperties": false
    },
    "Event": {
      "type": "object",
      "title": "Event",
      "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"
      ],
      "additionalProperties": false
    },
    "TLS": {
      "type": "object",
      "title": "TLS",
      "properties": {
        "rejectUnauthorized": {
          "type": "boolean"
        }
      },
      "required": [
        "rejectUnauthorized"
      ],
      "additionalProperties": false
    },
    "Scenario": {
      "type": "object",
      "title": "Scenario",
      "properties": {
        "flow": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Flow"
          }
        }
      },
      "required": [
        "flow"
      ],
      "additionalProperties": false
    },
    "Flow": {
      "type": "object",
      "title": "Flow",
      "properties": {
        "post": {
          "$ref": "#/$defs/Post"
        },
        "get": {
          "$ref": "#/$defs/Get"
        },
        "delete": {
          "$ref": "#/$defs/Delete"
        },
        "function": {
          "type": "string"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Delete": {
      "type": "object",
      "title": "Delete",
      "properties": {
        "url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "headers": {
          "$ref": "#/$defs/DeleteHeaders"
        },
        "expect": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ExpectElement"
          }
        }
      },
      "required": [
        "expect",
        "headers",
        "name",
        "url"
      ],
      "additionalProperties": false
    },
    "ExpectElement": {
      "type": "object",
      "title": "ExpectElement",
      "properties": {
        "statusCode": {
          "type": "integer"
        }
      },
      "required": [
        "statusCode"
      ],
      "additionalProperties": false
    },
    "DeleteHeaders": {
      "type": "object",
      "title": "DeleteHeaders",
      "properties": {
        "contentType": {
          "type": "string"
        },
        "accept": {
          "type": "string"
        },
        "api_key": {
          "type": "string"
        }
      },
      "required": [
        "accept",
        "api_key",
        "contentType"
      ],
      "additionalProperties": false
    },
    "Get": {
      "type": "object",
      "title": "Get",
      "properties": {
        "url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "headers": {
          "$ref": "#/$defs/GetHeaders"
        },
        "expect": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ExpectElement"
          }
        },
        "qs": {
          "$ref": "#/$defs/Qs"
        }
      },
      "required": [
        "expect",
        "headers",
        "name",
        "url"
      ],
      "additionalProperties": false
    },
    "GetHeaders": {
      "type": "object",
      "title": "GetHeaders",
      "properties": {
        "contentType": {
          "type": "string"
        },
        "accept": {
          "type": "string"
        }
      },
      "required": [
        "accept"
      ],
      "additionalProperties": false
    },
    "Qs": {
      "type": "object",
      "title": "Qs",
      "properties": {
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      },
      "required": [
        "password",
        "username"
      ],
      "additionalProperties": false
    },
    "Post": {
      "type": "object",
      "title": "Post",
      "properties": {
        "url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "headers": {
          "$ref": "#/$defs/PostHeaders"
        },
        "json": {
          "$ref": "#/$defs/JSON"
        },
        "expect": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ExpectElement"
          }
        },
        "capture": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Capture"
          }
        }
      },
      "required": [
        "expect",
        "headers",
        "json",
        "name",
        "url"
      ],
      "additionalProperties": false
    },
    "Capture": {
      "type": "object",
      "title": "Capture",
      "properties": {
        "as": {
          "type": "string"
        },
        "json": {
          "type": "string"
        }
      },
      "required": [
        "as",
        "json"
      ],
      "additionalProperties": false
    },
    "PostHeaders": {
      "type": "object",
      "title": "PostHeaders",
      "properties": {
        "accept": {
          "type": "string"
        },
        "Content-Type": {
          "type": "string"
        }
      },
      "required": [
        "Content-Type",
        "accept"
      ],
      "additionalProperties": false
    },
    "JSON": {
      "type": "object",
      "title": "JSON",
      "properties": {
        "photoUrls": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "name": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "category": {
          "$ref": "#/$defs/Category"
        },
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/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"
      ],
      "additionalProperties": false
    },
    "Category": {
      "type": "object",
      "title": "Category",
      "properties": {
        "name": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "additionalProperties": false
    }
  }
}
