#![allow(clippy::large_enum_variant)]
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Default)]
pub struct Spec {
#[serde(rename = "auth")]
pub auth: Option<Auth>,
#[serde(rename = "event")]
pub event: Option<Vec<Event>>,
#[serde(rename = "info")]
pub info: Information,
#[serde(rename = "item")]
pub item: Vec<Items>,
#[serde(rename = "variable")]
pub variable: Option<Vec<Variable>>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct Auth {
#[serde(rename = "apikey")]
pub api_key: Option<Vec<AuthAttribute>>,
#[serde(rename = "awsv4")]
pub awsv4: Option<Vec<AuthAttribute>>,
#[serde(rename = "basic")]
pub basic: Option<Vec<AuthAttribute>>,
#[serde(rename = "bearer")]
pub bearer: Option<Vec<AuthAttribute>>,
#[serde(rename = "digest")]
pub digest: Option<Vec<AuthAttribute>>,
#[serde(rename = "edgegrid")]
pub edgegrid: Option<Vec<AuthAttribute>>,
#[serde(rename = "hawk")]
pub hawk: Option<Vec<AuthAttribute>>,
#[serde(rename = "noauth")]
pub noauth: Option<serde_json::Value>,
#[serde(rename = "ntlm")]
pub ntlm: Option<Vec<AuthAttribute>>,
#[serde(rename = "oauth1")]
pub oauth1: Option<Vec<AuthAttribute>>,
#[serde(rename = "oauth2")]
pub oauth2: Option<Vec<AuthAttribute>>,
#[serde(rename = "type")]
pub auth_type: AuthType,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct AuthAttribute {
#[serde(rename = "key")]
pub key: String,
#[serde(rename = "type")]
pub auth_type: Option<String>,
#[serde(rename = "value")]
pub value: Option<serde_json::Value>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct Event {
#[serde(rename = "disabled")]
pub disabled: Option<bool>,
#[serde(rename = "id")]
pub id: Option<String>,
#[serde(rename = "listen")]
pub listen: String,
#[serde(rename = "script")]
pub script: Option<Script>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct Script {
#[serde(rename = "exec")]
pub exec: Option<Host>,
#[serde(rename = "id")]
pub id: Option<String>,
#[serde(rename = "name")]
pub name: Option<String>,
#[serde(rename = "src")]
pub src: Option<Url>,
#[serde(rename = "type")]
pub script_type: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct UrlClass {
#[serde(rename = "hash")]
pub hash: Option<String>,
#[serde(rename = "host")]
pub host: Option<Host>,
#[serde(rename = "path")]
pub path: Option<UrlPath>,
#[serde(rename = "port")]
pub port: Option<String>,
#[serde(rename = "protocol")]
pub protocol: Option<String>,
#[serde(rename = "query")]
pub query: Option<Vec<QueryParam>>,
#[serde(rename = "raw")]
pub raw: Option<String>,
#[serde(rename = "variable")]
pub variable: Option<Vec<Variable>>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct PathClass {
#[serde(rename = "type")]
pub path_type: Option<String>,
#[serde(rename = "value")]
pub value: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct QueryParam {
#[serde(rename = "description")]
pub description: Option<DescriptionUnion>,
#[serde(rename = "disabled")]
pub disabled: Option<bool>,
#[serde(rename = "key")]
pub key: Option<String>,
#[serde(rename = "value")]
pub value: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct Description {
#[serde(rename = "content")]
pub content: Option<String>,
#[serde(rename = "type")]
pub description_type: Option<String>,
#[serde(rename = "version")]
pub version: Option<serde_json::Value>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct Variable {
#[serde(rename = "description")]
pub description: Option<DescriptionUnion>,
#[serde(rename = "disabled")]
pub disabled: Option<bool>,
#[serde(rename = "id")]
pub id: Option<String>,
#[serde(rename = "key")]
pub key: Option<String>,
#[serde(rename = "name")]
pub name: Option<String>,
#[serde(rename = "system")]
pub system: Option<bool>,
#[serde(rename = "type")]
pub variable_type: Option<VariableType>,
#[serde(rename = "value")]
pub value: Option<serde_json::Value>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Default)]
pub struct Information {
#[serde(rename = "_postman_id")]
pub postman_id: Option<String>,
#[serde(rename = "description")]
pub description: Option<DescriptionUnion>,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "schema")]
pub schema: String,
#[serde(rename = "version")]
pub version: Option<CollectionVersion>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct CollectionVersionClass {
#[serde(rename = "identifier")]
pub identifier: Option<String>,
#[serde(rename = "major")]
pub major: i64,
#[serde(rename = "meta")]
pub meta: Option<serde_json::Value>,
#[serde(rename = "minor")]
pub minor: i64,
#[serde(rename = "patch")]
pub patch: i64,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
#[serde(untagged)]
pub enum Items {
Item(Item),
ItemGroup(ItemGroup),
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct Item {
#[serde(rename = "description")]
pub description: Option<DescriptionUnion>,
#[serde(rename = "event")]
pub event: Option<Vec<Event>>,
#[serde(rename = "id")]
pub id: Option<String>,
#[serde(rename = "name")]
pub name: Option<String>,
#[serde(rename = "protocolProfileBehavior")]
pub protocol_profile_behavior: Option<ProtocolProfileBehavior>,
#[serde(rename = "request")]
pub request: RequestUnion,
#[serde(rename = "response")]
pub response: Option<Vec<ResponseClass>>,
#[serde(rename = "variable")]
pub variable: Option<Vec<Variable>>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct ItemGroup {
#[serde(rename = "auth")]
pub auth: Option<Auth>,
#[serde(rename = "description")]
pub description: Option<DescriptionUnion>,
#[serde(rename = "event")]
pub event: Option<Vec<Event>>,
#[serde(rename = "item")]
pub item: Vec<Items>,
#[serde(rename = "name")]
pub name: Option<String>,
#[serde(rename = "variable")]
pub variable: Option<Vec<Variable>>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct ProtocolProfileBehavior {
#[serde(rename = "disableBodyPruning")]
pub disable_body_pruning: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct RequestClass {
#[serde(rename = "auth")]
pub auth: Option<Auth>,
#[serde(rename = "body")]
pub body: Option<Body>,
#[serde(rename = "certificate")]
pub certificate: Option<Certificate>,
#[serde(rename = "description")]
pub description: Option<DescriptionUnion>,
#[serde(rename = "header")]
pub header: Option<HeaderUnion>,
#[serde(rename = "method")]
pub method: Option<String>,
#[serde(rename = "proxy")]
pub proxy: Option<ProxyConfig>,
#[serde(rename = "url")]
pub url: Option<Url>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct Body {
#[serde(rename = "disabled")]
pub disabled: Option<bool>,
#[serde(rename = "file")]
pub file: Option<File>,
#[serde(rename = "formdata")]
pub formdata: Option<Vec<FormParameter>>,
#[serde(rename = "graphql")]
pub graphql: Option<serde_json::Value>,
#[serde(rename = "mode")]
pub mode: Option<Mode>,
#[serde(rename = "options")]
pub options: Option<serde_json::Value>,
#[serde(rename = "raw")]
pub raw: Option<String>,
#[serde(rename = "urlencoded")]
pub urlencoded: Option<Vec<UrlEncodedParameter>>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct File {
#[serde(rename = "content")]
pub content: Option<String>,
#[serde(rename = "src")]
pub src: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct FormParameter {
#[serde(rename = "contentType")]
pub content_type: Option<String>,
#[serde(rename = "description")]
pub description: Option<DescriptionUnion>,
#[serde(rename = "disabled")]
pub disabled: Option<bool>,
#[serde(rename = "key")]
pub key: String,
#[serde(rename = "type")]
pub form_parameter_type: Option<String>,
#[serde(rename = "value")]
pub value: Option<String>,
#[serde(rename = "src")]
pub src: Option<FormParameterSrcUnion>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
#[serde(untagged)]
pub enum FormParameterSrcUnion {
File(String),
Files(Vec<String>),
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct UrlEncodedParameter {
#[serde(rename = "description")]
pub description: Option<DescriptionUnion>,
#[serde(rename = "disabled")]
pub disabled: Option<bool>,
#[serde(rename = "key")]
pub key: String,
#[serde(rename = "type")]
pub parameter_type: Option<String>,
#[serde(rename = "value")]
pub value: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct Certificate {
#[serde(rename = "cert")]
pub cert: Option<Cert>,
#[serde(rename = "key")]
pub key: Option<Key>,
#[serde(rename = "matches")]
pub matches: Option<Vec<Option<serde_json::Value>>>,
#[serde(rename = "name")]
pub name: Option<String>,
#[serde(rename = "passphrase")]
pub passphrase: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct Cert {
#[serde(rename = "src")]
pub src: Option<serde_json::Value>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct Key {
#[serde(rename = "src")]
pub src: Option<serde_json::Value>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct Header {
#[serde(rename = "description")]
pub description: Option<DescriptionUnion>,
#[serde(rename = "disabled")]
pub disabled: Option<bool>,
#[serde(rename = "key")]
pub key: String,
#[serde(rename = "value")]
pub value: String,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct ProxyConfig {
#[serde(rename = "disabled")]
pub disabled: Option<bool>,
#[serde(rename = "host")]
pub host: Option<String>,
#[serde(rename = "match")]
pub proxy_config_match: Option<String>,
#[serde(rename = "port")]
pub port: Option<i64>,
#[serde(rename = "tunnel")]
pub tunnel: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct ResponseClass {
#[serde(rename = "body")]
pub body: Option<String>,
#[serde(rename = "code")]
pub code: Option<i64>,
#[serde(rename = "cookie")]
pub cookie: Option<Vec<Cookie>>,
#[serde(rename = "header")]
pub header: Option<Headers>,
#[serde(rename = "id")]
pub id: Option<String>,
#[serde(rename = "name")]
pub name: Option<String>,
#[serde(rename = "originalRequest")]
pub original_request: Option<RequestUnion>,
#[serde(rename = "responseTime")]
pub response_time: Option<ResponseTime>,
#[serde(rename = "timings")]
pub timings: Option<serde_json::Value>,
#[serde(rename = "status")]
pub status: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct Cookie {
#[serde(rename = "domain")]
pub domain: String,
#[serde(rename = "expires")]
pub expires: Option<String>,
#[serde(rename = "extensions")]
pub extensions: Option<Vec<Option<serde_json::Value>>>,
#[serde(rename = "hostOnly")]
pub host_only: Option<bool>,
#[serde(rename = "httpOnly")]
pub http_only: Option<bool>,
#[serde(rename = "maxAge")]
pub max_age: Option<String>,
#[serde(rename = "name")]
pub name: Option<String>,
#[serde(rename = "path")]
pub path: String,
#[serde(rename = "secure")]
pub secure: Option<bool>,
#[serde(rename = "session")]
pub session: Option<bool>,
#[serde(rename = "value")]
pub value: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
#[serde(untagged)]
pub enum Host {
String(String),
StringArray(Vec<String>),
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
#[serde(untagged)]
pub enum Url {
String(String),
UrlClass(UrlClass),
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
#[serde(untagged)]
pub enum UrlPath {
String(String),
UnionArray(Vec<PathElement>),
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
#[serde(untagged)]
pub enum PathElement {
PathClass(PathClass),
String(String),
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
#[serde(untagged)]
pub enum DescriptionUnion {
Description(Description),
String(String),
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
#[serde(untagged)]
pub enum CollectionVersion {
CollectionVersionClass(CollectionVersionClass),
String(String),
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
#[serde(untagged)]
pub enum RequestUnion {
RequestClass(RequestClass),
String(String),
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
#[serde(untagged)]
pub enum HeaderUnion {
HeaderArray(Vec<Header>),
String(String),
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
#[serde(untagged)]
pub enum Response {
AnythingArray(Vec<Option<serde_json::Value>>),
Bool(bool),
Double(f64),
Integer(i64),
ResponseClass(ResponseClass),
String(String),
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
#[serde(untagged)]
pub enum Headers {
String(String),
UnionArray(Vec<HeaderElement>),
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
#[serde(untagged)]
pub enum HeaderElement {
Header(Header),
String(String),
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
#[serde(untagged)]
pub enum ResponseTime {
Integer(i64),
Double(f64),
String(String),
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub enum AuthType {
#[serde(rename = "apikey")]
Apikey,
#[serde(rename = "awsv4")]
Awsv4,
#[serde(rename = "basic")]
Basic,
#[serde(rename = "bearer")]
Bearer,
#[serde(rename = "digest")]
Digest,
#[serde(rename = "edgegrid")]
Edgegrid,
#[serde(rename = "hawk")]
Hawk,
#[serde(rename = "noauth")]
Noauth,
#[serde(rename = "ntlm")]
Ntlm,
#[serde(rename = "oauth1")]
Oauth1,
#[serde(rename = "oauth2")]
Oauth2,
}
impl Default for AuthType {
fn default() -> AuthType {
AuthType::Noauth
}
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub enum VariableType {
#[serde(rename = "any")]
Any,
#[serde(rename = "boolean")]
Boolean,
#[serde(rename = "number")]
Number,
#[serde(rename = "string")]
String,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub enum Mode {
#[serde(rename = "file")]
File,
#[serde(rename = "formdata")]
Formdata,
#[serde(rename = "graphql")]
Graphql,
#[serde(rename = "raw")]
Raw,
#[serde(rename = "urlencoded")]
Urlencoded,
}