1#![allow(clippy::large_enum_variant)]
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Default)]
6pub struct Spec {
7 #[serde(rename = "auth")]
8 pub auth: Option<Auth>,
9
10 #[serde(rename = "event")]
11 pub event: Option<Vec<Event>>,
12
13 #[serde(rename = "info")]
14 pub info: Information,
15
16 #[serde(rename = "item")]
20 pub item: Vec<Items>,
21
22 #[serde(rename = "variable")]
23 pub variable: Option<Vec<Variable>>,
24}
25
26#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
28pub struct Auth {
29 #[serde(rename = "apikey")]
31 pub api_key: Option<Vec<AuthAttribute>>,
32
33 #[serde(rename = "awsv4")]
36 pub awsv4: Option<Vec<AuthAttribute>>,
37
38 #[serde(rename = "basic")]
41 pub basic: Option<Vec<AuthAttribute>>,
42
43 #[serde(rename = "bearer")]
46 pub bearer: Option<Vec<AuthAttribute>>,
47
48 #[serde(rename = "digest")]
51 pub digest: Option<Vec<AuthAttribute>>,
52
53 #[serde(rename = "edgegrid")]
55 pub edgegrid: Option<Vec<AuthAttribute>>,
56
57 #[serde(rename = "hawk")]
59 pub hawk: Option<Vec<AuthAttribute>>,
60
61 #[serde(rename = "noauth")]
62 pub noauth: Option<serde_json::Value>,
63
64 #[serde(rename = "ntlm")]
67 pub ntlm: Option<Vec<AuthAttribute>>,
68
69 #[serde(rename = "oauth1")]
71 pub oauth1: Option<Vec<AuthAttribute>>,
72
73 #[serde(rename = "oauth2")]
75 pub oauth2: Option<Vec<AuthAttribute>>,
76
77 #[serde(rename = "type")]
78 pub auth_type: AuthType,
79}
80
81#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
84pub struct AuthAttribute {
85 #[serde(rename = "key")]
86 pub key: String,
87
88 #[serde(rename = "type")]
89 pub auth_type: Option<String>,
90
91 #[serde(rename = "value")]
92 pub value: Option<serde_json::Value>,
93}
94
95#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
100pub struct Event {
101 #[serde(rename = "disabled")]
103 pub disabled: Option<bool>,
104
105 #[serde(rename = "id")]
107 pub id: Option<String>,
108
109 #[serde(rename = "listen")]
111 pub listen: String,
112
113 #[serde(rename = "script")]
114 pub script: Option<Script>,
115}
116
117#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
120pub struct Script {
121 #[serde(rename = "exec")]
122 pub exec: Option<Host>,
123
124 #[serde(rename = "id")]
126 pub id: Option<String>,
127
128 #[serde(rename = "name")]
130 pub name: Option<String>,
131
132 #[serde(rename = "src")]
133 pub src: Option<Url>,
134
135 #[serde(rename = "type")]
137 pub script_type: Option<String>,
138}
139
140#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
141pub struct UrlClass {
142 #[serde(rename = "hash")]
145 pub hash: Option<String>,
146
147 #[serde(rename = "host")]
150 pub host: Option<Host>,
151
152 #[serde(rename = "path")]
153 pub path: Option<UrlPath>,
154
155 #[serde(rename = "port")]
158 pub port: Option<String>,
159
160 #[serde(rename = "protocol")]
162 pub protocol: Option<String>,
163
164 #[serde(rename = "query")]
167 pub query: Option<Vec<QueryParam>>,
168
169 #[serde(rename = "raw")]
172 pub raw: Option<String>,
173
174 #[serde(rename = "variable")]
177 pub variable: Option<Vec<Variable>>,
178}
179
180#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
181pub struct PathClass {
182 #[serde(rename = "type")]
183 pub path_type: Option<String>,
184
185 #[serde(rename = "value")]
186 pub value: Option<String>,
187}
188
189#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
190pub struct QueryParam {
191 #[serde(rename = "description")]
192 pub description: Option<DescriptionUnion>,
193
194 #[serde(rename = "disabled")]
196 pub disabled: Option<bool>,
197
198 #[serde(rename = "key")]
199 pub key: Option<String>,
200
201 #[serde(rename = "value")]
202 pub value: Option<String>,
203}
204
205#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
206pub struct Description {
207 #[serde(rename = "content")]
209 pub content: Option<String>,
210
211 #[serde(rename = "type")]
215 pub description_type: Option<String>,
216
217 #[serde(rename = "version")]
219 pub version: Option<serde_json::Value>,
220}
221
222#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
230pub struct Variable {
231 #[serde(rename = "description")]
232 pub description: Option<DescriptionUnion>,
233
234 #[serde(rename = "disabled")]
235 pub disabled: Option<bool>,
236
237 #[serde(rename = "id")]
240 pub id: Option<String>,
241
242 #[serde(rename = "key")]
245 pub key: Option<String>,
246
247 #[serde(rename = "name")]
249 pub name: Option<String>,
250
251 #[serde(rename = "system")]
253 pub system: Option<bool>,
254
255 #[serde(rename = "type")]
257 pub variable_type: Option<VariableType>,
258
259 #[serde(rename = "value")]
262 pub value: Option<serde_json::Value>,
263}
264
265#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Default)]
267pub struct Information {
268 #[serde(rename = "_postman_id")]
274 pub postman_id: Option<String>,
275
276 #[serde(rename = "description")]
277 pub description: Option<DescriptionUnion>,
278
279 #[serde(rename = "name")]
283 pub name: String,
284
285 #[serde(rename = "schema")]
288 pub schema: String,
289
290 #[serde(rename = "version")]
291 pub version: Option<CollectionVersion>,
292}
293
294#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
295pub struct CollectionVersionClass {
296 #[serde(rename = "identifier")]
298 pub identifier: Option<String>,
299
300 #[serde(rename = "major")]
303 pub major: i64,
304
305 #[serde(rename = "meta")]
306 pub meta: Option<serde_json::Value>,
307
308 #[serde(rename = "minor")]
311 pub minor: i64,
312
313 #[serde(rename = "patch")]
315 pub patch: i64,
316}
317
318#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
319#[serde(untagged)]
320pub enum Items {
321 Item(Item),
322
323 ItemGroup(ItemGroup),
324}
325
326#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
329pub struct Item {
330 #[serde(rename = "description")]
331 pub description: Option<DescriptionUnion>,
332
333 #[serde(rename = "event")]
334 pub event: Option<Vec<Event>>,
335
336 #[serde(rename = "id")]
338 pub id: Option<String>,
339
340 #[serde(rename = "name")]
345 pub name: Option<String>,
346
347 #[serde(rename = "protocolProfileBehavior")]
349 pub protocol_profile_behavior: Option<ProtocolProfileBehavior>,
350
351 #[serde(rename = "request")]
352 pub request: RequestUnion,
353
354 #[serde(rename = "response")]
355 pub response: Option<Vec<ResponseClass>>,
356
357 #[serde(rename = "variable")]
358 pub variable: Option<Vec<Variable>>,
359}
360
361#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
365pub struct ItemGroup {
366 #[serde(rename = "auth")]
367 pub auth: Option<Auth>,
368
369 #[serde(rename = "description")]
370 pub description: Option<DescriptionUnion>,
371
372 #[serde(rename = "event")]
373 pub event: Option<Vec<Event>>,
374
375 #[serde(rename = "item")]
378 pub item: Vec<Items>,
379
380 #[serde(rename = "name")]
383 pub name: Option<String>,
384
385 #[serde(rename = "variable")]
386 pub variable: Option<Vec<Variable>>,
387}
388
389#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
391pub struct ProtocolProfileBehavior {
392 #[serde(rename = "disableBodyPruning")]
394 pub disable_body_pruning: Option<bool>,
395}
396
397#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
398pub struct RequestClass {
399 #[serde(rename = "auth")]
400 pub auth: Option<Auth>,
401
402 #[serde(rename = "body")]
403 pub body: Option<Body>,
404
405 #[serde(rename = "certificate")]
406 pub certificate: Option<Certificate>,
407
408 #[serde(rename = "description")]
409 pub description: Option<DescriptionUnion>,
410
411 #[serde(rename = "header")]
412 pub header: Option<HeaderUnion>,
413
414 #[serde(rename = "method")]
415 pub method: Option<String>,
416
417 #[serde(rename = "proxy")]
418 pub proxy: Option<ProxyConfig>,
419
420 #[serde(rename = "url")]
421 pub url: Option<Url>,
422}
423
424#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
426pub struct Body {
427 #[serde(rename = "disabled")]
429 pub disabled: Option<bool>,
430
431 #[serde(rename = "file")]
432 pub file: Option<File>,
433
434 #[serde(rename = "formdata")]
435 pub formdata: Option<Vec<FormParameter>>,
436
437 #[serde(rename = "graphql")]
439 pub graphql: Option<serde_json::Value>,
440
441 #[serde(rename = "mode")]
443 pub mode: Option<Mode>,
444
445 #[serde(rename = "options")]
447 pub options: Option<serde_json::Value>,
448
449 #[serde(rename = "raw")]
450 pub raw: Option<String>,
451
452 #[serde(rename = "urlencoded")]
453 pub urlencoded: Option<Vec<UrlEncodedParameter>>,
454}
455
456#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
457pub struct File {
458 #[serde(rename = "content")]
459 pub content: Option<String>,
460
461 #[serde(rename = "src")]
462 pub src: Option<String>,
463}
464
465#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
466pub struct FormParameter {
467 #[serde(rename = "contentType")]
469 pub content_type: Option<String>,
470
471 #[serde(rename = "description")]
472 pub description: Option<DescriptionUnion>,
473
474 #[serde(rename = "disabled")]
476 pub disabled: Option<bool>,
477
478 #[serde(rename = "key")]
479 pub key: String,
480
481 #[serde(rename = "type")]
482 pub form_parameter_type: Option<String>,
483
484 #[serde(rename = "value")]
485 pub value: Option<String>,
486
487 #[serde(rename = "src")]
488 pub src: Option<FormParameterSrcUnion>,
489}
490
491#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
492#[serde(untagged)]
493pub enum FormParameterSrcUnion {
494 File(String),
495
496 Files(Vec<String>),
497}
498
499#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
500pub struct UrlEncodedParameter {
501 #[serde(rename = "description")]
502 pub description: Option<DescriptionUnion>,
503
504 #[serde(rename = "disabled")]
505 pub disabled: Option<bool>,
506
507 #[serde(rename = "key")]
508 pub key: String,
509
510 #[serde(rename = "type")]
511 pub parameter_type: Option<String>,
512
513 #[serde(rename = "value")]
514 pub value: Option<String>,
515}
516
517#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
519pub struct Certificate {
520 #[serde(rename = "cert")]
522 pub cert: Option<Cert>,
523
524 #[serde(rename = "key")]
526 pub key: Option<Key>,
527
528 #[serde(rename = "matches")]
530 pub matches: Option<Vec<Option<serde_json::Value>>>,
531
532 #[serde(rename = "name")]
534 pub name: Option<String>,
535
536 #[serde(rename = "passphrase")]
538 pub passphrase: Option<String>,
539}
540
541#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
543pub struct Cert {
544 #[serde(rename = "src")]
546 pub src: Option<serde_json::Value>,
547}
548
549#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
551pub struct Key {
552 #[serde(rename = "src")]
554 pub src: Option<serde_json::Value>,
555}
556
557#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
561pub struct Header {
562 #[serde(rename = "description")]
563 pub description: Option<DescriptionUnion>,
564
565 #[serde(rename = "disabled")]
567 pub disabled: Option<bool>,
568
569 #[serde(rename = "key")]
571 pub key: String,
572
573 #[serde(rename = "value")]
575 pub value: String,
576}
577
578#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
581pub struct ProxyConfig {
582 #[serde(rename = "disabled")]
584 pub disabled: Option<bool>,
585
586 #[serde(rename = "host")]
588 pub host: Option<String>,
589
590 #[serde(rename = "match")]
592 pub proxy_config_match: Option<String>,
593
594 #[serde(rename = "port")]
596 pub port: Option<i64>,
597
598 #[serde(rename = "tunnel")]
600 pub tunnel: Option<bool>,
601}
602
603#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
604pub struct ResponseClass {
605 #[serde(rename = "body")]
607 pub body: Option<String>,
608
609 #[serde(rename = "code")]
611 pub code: Option<i64>,
612
613 #[serde(rename = "cookie")]
614 pub cookie: Option<Vec<Cookie>>,
615
616 #[serde(rename = "header")]
617 pub header: Option<Headers>,
618
619 #[serde(rename = "id")]
622 pub id: Option<String>,
623
624 #[serde(rename = "name")]
626 pub name: Option<String>,
627
628 #[serde(rename = "originalRequest")]
629 pub original_request: Option<RequestUnion>,
630
631 #[serde(rename = "responseTime")]
634 pub response_time: Option<ResponseTime>,
635
636 #[serde(rename = "timings")]
638 pub timings: Option<serde_json::Value>,
639
640 #[serde(rename = "status")]
642 pub status: Option<String>,
643}
644
645#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
648pub struct Cookie {
649 #[serde(rename = "domain")]
651 pub domain: String,
652
653 #[serde(rename = "expires")]
655 pub expires: Option<String>,
656
657 #[serde(rename = "extensions")]
660 pub extensions: Option<Vec<Option<serde_json::Value>>>,
661
662 #[serde(rename = "hostOnly")]
665 pub host_only: Option<bool>,
666
667 #[serde(rename = "httpOnly")]
670 pub http_only: Option<bool>,
671
672 #[serde(rename = "maxAge")]
673 pub max_age: Option<String>,
674
675 #[serde(rename = "name")]
677 pub name: Option<String>,
678
679 #[serde(rename = "path")]
681 pub path: String,
682
683 #[serde(rename = "secure")]
686 pub secure: Option<bool>,
687
688 #[serde(rename = "session")]
690 pub session: Option<bool>,
691
692 #[serde(rename = "value")]
694 pub value: Option<String>,
695}
696
697#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
700#[serde(untagged)]
701pub enum Host {
702 String(String),
703
704 StringArray(Vec<String>),
705}
706
707#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
710#[serde(untagged)]
711pub enum Url {
712 String(String),
713
714 UrlClass(UrlClass),
715}
716
717#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
718#[serde(untagged)]
719pub enum UrlPath {
720 String(String),
721
722 UnionArray(Vec<PathElement>),
723}
724
725#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
728#[serde(untagged)]
729pub enum PathElement {
730 PathClass(PathClass),
731
732 String(String),
733}
734
735#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
738#[serde(untagged)]
739pub enum DescriptionUnion {
740 Description(Description),
741
742 String(String),
743}
744
745#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
749#[serde(untagged)]
750pub enum CollectionVersion {
751 CollectionVersionClass(CollectionVersionClass),
752
753 String(String),
754}
755
756#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
759#[serde(untagged)]
760pub enum RequestUnion {
761 RequestClass(RequestClass),
762
763 String(String),
764}
765
766#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
767#[serde(untagged)]
768pub enum HeaderUnion {
769 HeaderArray(Vec<Header>),
770
771 String(String),
772}
773
774#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
776#[serde(untagged)]
777pub enum Response {
778 AnythingArray(Vec<Option<serde_json::Value>>),
779
780 Bool(bool),
781
782 Double(f64),
783
784 Integer(i64),
785
786 ResponseClass(ResponseClass),
787
788 String(String),
789}
790
791#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
792#[serde(untagged)]
793pub enum Headers {
794 String(String),
795
796 UnionArray(Vec<HeaderElement>),
797}
798
799#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
802#[serde(untagged)]
803pub enum HeaderElement {
804 Header(Header),
805
806 String(String),
807}
808
809#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
812#[serde(untagged)]
813pub enum ResponseTime {
814 Integer(i64),
815
816 Double(f64),
817
818 String(String),
819}
820
821#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
822pub enum AuthType {
823 #[serde(rename = "apikey")]
824 Apikey,
825
826 #[serde(rename = "awsv4")]
827 Awsv4,
828
829 #[serde(rename = "basic")]
830 Basic,
831
832 #[serde(rename = "bearer")]
833 Bearer,
834
835 #[serde(rename = "digest")]
836 Digest,
837
838 #[serde(rename = "edgegrid")]
839 Edgegrid,
840
841 #[serde(rename = "hawk")]
842 Hawk,
843
844 #[serde(rename = "noauth")]
845 Noauth,
846
847 #[serde(rename = "ntlm")]
848 Ntlm,
849
850 #[serde(rename = "oauth1")]
851 Oauth1,
852
853 #[serde(rename = "oauth2")]
854 Oauth2,
855}
856
857impl Default for AuthType {
859 fn default() -> AuthType {
860 AuthType::Noauth
861 }
862}
863
864#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
866pub enum VariableType {
867 #[serde(rename = "any")]
868 Any,
869
870 #[serde(rename = "boolean")]
871 Boolean,
872
873 #[serde(rename = "number")]
874 Number,
875
876 #[serde(rename = "string")]
877 String,
878}
879
880#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
882pub enum Mode {
883 #[serde(rename = "file")]
884 File,
885
886 #[serde(rename = "formdata")]
887 Formdata,
888
889 #[serde(rename = "graphql")]
890 Graphql,
891
892 #[serde(rename = "raw")]
893 Raw,
894
895 #[serde(rename = "urlencoded")]
896 Urlencoded,
897}