scorpio 0.6.4 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +6 -1
  3. data/CHANGELOG.md +10 -2
  4. data/LICENSE.md +2 -4
  5. data/README.md +81 -67
  6. data/documents/{github.com/OAI/OpenAPI-Specification/blob/oas3-schema/schemas/v3.0 → spec.openapis.org/oas/3.0}/schema.yaml +164 -628
  7. data/documents/spec.openapis.org/oas/3.1/dialect/base.schema.yaml +22 -0
  8. data/documents/spec.openapis.org/oas/3.1/meta/base.schema.yaml +71 -0
  9. data/documents/spec.openapis.org/oas/3.1/schema-base.yaml +21 -0
  10. data/documents/spec.openapis.org/oas/3.1/schema.yaml +980 -0
  11. data/documents/swagger.io/v2/schema.json +1 -1
  12. data/documents/www.googleapis.com/discovery/v1/apis/discovery/v1/rest.yml +44 -4
  13. data/lib/scorpio/google_api_document.rb +121 -193
  14. data/lib/scorpio/openapi/document.rb +63 -31
  15. data/lib/scorpio/openapi/operation.rb +114 -96
  16. data/lib/scorpio/openapi/operations_scope.rb +35 -19
  17. data/lib/scorpio/openapi/reference.rb +88 -23
  18. data/lib/scorpio/openapi/schema_elements/type_nullable.rb +38 -0
  19. data/lib/scorpio/openapi/schema_elements.rb +7 -0
  20. data/lib/scorpio/openapi/server.rb +34 -0
  21. data/lib/scorpio/openapi/tag.rb +19 -3
  22. data/lib/scorpio/openapi/v2/dialect.rb +66 -0
  23. data/lib/scorpio/openapi/v2.rb +124 -0
  24. data/lib/scorpio/openapi/v3_0/dialect.rb +76 -0
  25. data/lib/scorpio/openapi/v3_0.rb +130 -0
  26. data/lib/scorpio/openapi/v3_1.rb +243 -0
  27. data/lib/scorpio/openapi.rb +23 -203
  28. data/lib/scorpio/request.rb +67 -61
  29. data/lib/scorpio/resource_base.rb +57 -49
  30. data/lib/scorpio/response.rb +28 -10
  31. data/lib/scorpio/ur.rb +7 -3
  32. data/lib/scorpio/version.rb +1 -1
  33. data/lib/scorpio.rb +12 -6
  34. data/pages/Request_Configuration.md +69 -0
  35. data/pages/Security.md +50 -0
  36. data/scorpio.gemspec +6 -5
  37. metadata +28 -15
  38. data/documents/www.googleapis.com/discovery/v1/apis/discovery/v1/rest +0 -684
  39. data/lib/scorpio/openapi/v3/server.rb +0 -44
@@ -1,3 +1,6 @@
1
+ id: https://spec.openapis.org/oas/3.0/schema/2021-09-28
2
+ $schema: http://json-schema.org/draft-04/schema#
3
+ description: The description of OpenAPI v3.0.x documents, as defined by https://spec.openapis.org/oas/v3.0.3
1
4
  type: object
2
5
  required:
3
6
  - openapi
@@ -85,7 +88,7 @@ definitions:
85
88
  format: email
86
89
  patternProperties:
87
90
  '^x-': {}
88
- additionalProperties: false
91
+ additionalProperties: false
89
92
 
90
93
  License:
91
94
  type: object
@@ -143,8 +146,8 @@ definitions:
143
146
  patternProperties:
144
147
  '^[a-zA-Z0-9\.\-_]+$':
145
148
  oneOf:
146
- - $ref: '#/definitions/SchemaReference'
147
149
  - $ref: '#/definitions/Schema'
150
+ - $ref: '#/definitions/SchemaReference'
148
151
  responses:
149
152
  type: object
150
153
  patternProperties:
@@ -335,8 +338,8 @@ definitions:
335
338
  $ref: '#/definitions/XML'
336
339
  patternProperties:
337
340
  '^x-': {}
338
- additionalProperties: false
339
-
341
+ additionalProperties: false
342
+
340
343
  Discriminator:
341
344
  type: object
342
345
  required:
@@ -397,11 +400,6 @@ definitions:
397
400
  additionalProperties: false
398
401
 
399
402
  MediaType:
400
- oneOf:
401
- - $ref: '#/definitions/MediaTypeWithExample'
402
- - $ref: '#/definitions/MediaTypeWithExamples'
403
-
404
- MediaTypeWithExample:
405
403
  type: object
406
404
  properties:
407
405
  schema:
@@ -409,23 +407,6 @@ definitions:
409
407
  - $ref: '#/definitions/Schema'
410
408
  - $ref: '#/definitions/SchemaReference'
411
409
  example: {}
412
- encoding:
413
- type: object
414
- additionalProperties:
415
- $ref: '#/definitions/Encoding'
416
- patternProperties:
417
- '^x-': {}
418
- additionalProperties: false
419
-
420
- MediaTypeWithExamples:
421
- type: object
422
- required:
423
- - examples
424
- properties:
425
- schema:
426
- oneOf:
427
- - $ref: '#/definitions/Schema'
428
- - $ref: '#/definitions/SchemaReference'
429
410
  examples:
430
411
  type: object
431
412
  additionalProperties:
@@ -438,7 +419,9 @@ definitions:
438
419
  $ref: '#/definitions/Encoding'
439
420
  patternProperties:
440
421
  '^x-': {}
441
- additionalProperties: false
422
+ additionalProperties: false
423
+ allOf:
424
+ - $ref: '#/definitions/ExampleXORExamples'
442
425
 
443
426
  Example:
444
427
  type: object
@@ -456,19 +439,7 @@ definitions:
456
439
  additionalProperties: false
457
440
 
458
441
  Header:
459
- oneOf:
460
- - $ref: '#/definitions/HeaderWithSchema'
461
- - $ref: '#/definitions/HeaderWithContent'
462
-
463
- HeaderWithSchema:
464
- oneOf:
465
- - $ref: '#/definitions/HeaderWithSchemaWithExample'
466
- - $ref: '#/definitions/HeaderWithSchemaWithExamples'
467
-
468
- HeaderWithSchemaWithExample:
469
442
  type: object
470
- required:
471
- - schema
472
443
  properties:
473
444
  description:
474
445
  type: string
@@ -495,42 +466,13 @@ definitions:
495
466
  oneOf:
496
467
  - $ref: '#/definitions/Schema'
497
468
  - $ref: '#/definitions/SchemaReference'
469
+ content:
470
+ type: object
471
+ additionalProperties:
472
+ $ref: '#/definitions/MediaType'
473
+ minProperties: 1
474
+ maxProperties: 1
498
475
  example: {}
499
- patternProperties:
500
- '^x-': {}
501
- additionalProperties: false
502
-
503
- HeaderWithSchemaWithExamples:
504
- type: object
505
- required:
506
- - schema
507
- - examples
508
- properties:
509
- description:
510
- type: string
511
- required:
512
- type: boolean
513
- default: false
514
- deprecated:
515
- type: boolean
516
- default: false
517
- allowEmptyValue:
518
- type: boolean
519
- default: false
520
- style:
521
- type: string
522
- enum:
523
- - simple
524
- default: simple
525
- explode:
526
- type: boolean
527
- allowReserved:
528
- type: boolean
529
- default: false
530
- schema:
531
- oneOf:
532
- - $ref: '#/definitions/Schema'
533
- - $ref: '#/definitions/SchemaReference'
534
476
  examples:
535
477
  type: object
536
478
  additionalProperties:
@@ -540,37 +482,14 @@ definitions:
540
482
  patternProperties:
541
483
  '^x-': {}
542
484
  additionalProperties: false
543
-
544
- HeaderWithContent:
545
- type: object
546
- required:
547
- - content
548
- properties:
549
- description:
550
- type: string
551
- required:
552
- type: boolean
553
- default: false
554
- deprecated:
555
- type: boolean
556
- default: false
557
- allowEmptyValue:
558
- type: boolean
559
- default: false
560
- content:
561
- type: object
562
- additionalProperties:
563
- $ref: '#/definitions/MediaType'
564
- minProperties: 1
565
- maxProperties: 1
566
- patternProperties:
567
- '^x-': {}
568
- additionalProperties: false
485
+ allOf:
486
+ - $ref: '#/definitions/ExampleXORExamples'
487
+ - $ref: '#/definitions/SchemaXORContent'
569
488
 
570
489
  Paths:
571
490
  type: object
572
491
  patternProperties:
573
- '^\/':
492
+ '^\/':
574
493
  $ref: '#/definitions/PathItem'
575
494
  '^x-': {}
576
495
  additionalProperties: false
@@ -681,7 +600,7 @@ definitions:
681
600
  '^x-': {}
682
601
  minProperties: 1
683
602
  additionalProperties: false
684
-
603
+
685
604
 
686
605
  SecurityRequirement:
687
606
  type: object
@@ -719,43 +638,43 @@ definitions:
719
638
  '^x-': {}
720
639
  additionalProperties: false
721
640
 
722
- Parameter:
723
- oneOf:
724
- - $ref: '#/definitions/ParameterWithSchema'
725
- - $ref: '#/definitions/ParameterWithContent'
726
-
727
- ParameterWithSchema:
728
- oneOf:
729
- - $ref: '#/definitions/ParameterWithSchemaWithExample'
730
- - $ref: '#/definitions/ParameterWithSchemaWithExamples'
641
+ ExampleXORExamples:
642
+ description: Example and examples are mutually exclusive
643
+ not:
644
+ required: [example, examples]
731
645
 
732
- ParameterWithSchemaWithExample:
646
+ SchemaXORContent:
647
+ description: Schema and content are mutually exclusive, at least one is required
648
+ not:
649
+ required: [schema, content]
733
650
  oneOf:
734
- - $ref: '#/definitions/ParameterWithSchemaWithExampleInPath'
735
- - $ref: '#/definitions/ParameterWithSchemaWithExampleInQuery'
736
- - $ref: '#/definitions/ParameterWithSchemaWithExampleInHeader'
737
- - $ref: '#/definitions/ParameterWithSchemaWithExampleInCookie'
651
+ - required: [schema]
652
+ - required: [content]
653
+ description: Some properties are not allowed if content is present
654
+ allOf:
655
+ - not:
656
+ required: [style]
657
+ - not:
658
+ required: [explode]
659
+ - not:
660
+ required: [allowReserved]
661
+ - not:
662
+ required: [example]
663
+ - not:
664
+ required: [examples]
738
665
 
739
- ParameterWithSchemaWithExampleInPath:
666
+ Parameter:
740
667
  type: object
741
- required:
742
- - name
743
- - in
744
- - schema
745
- - required
746
668
  properties:
747
669
  name:
748
670
  type: string
749
671
  in:
750
672
  type: string
751
- enum:
752
- - path
753
673
  description:
754
674
  type: string
755
675
  required:
756
676
  type: boolean
757
- enum:
758
- - true
677
+ default: false
759
678
  deprecated:
760
679
  type: boolean
761
680
  default: false
@@ -764,11 +683,6 @@ definitions:
764
683
  default: false
765
684
  style:
766
685
  type: string
767
- enum:
768
- - matrix
769
- - label
770
- - simple
771
- default: simple
772
686
  explode:
773
687
  type: boolean
774
688
  allowReserved:
@@ -778,526 +692,158 @@ definitions:
778
692
  oneOf:
779
693
  - $ref: '#/definitions/Schema'
780
694
  - $ref: '#/definitions/SchemaReference'
695
+ content:
696
+ type: object
697
+ additionalProperties:
698
+ $ref: '#/definitions/MediaType'
699
+ minProperties: 1
700
+ maxProperties: 1
781
701
  example: {}
702
+ examples:
703
+ type: object
704
+ additionalProperties:
705
+ oneOf:
706
+ - $ref: '#/definitions/Example'
707
+ - $ref: '#/definitions/Reference'
782
708
  patternProperties:
783
709
  '^x-': {}
784
710
  additionalProperties: false
785
-
786
- ParameterWithSchemaWithExampleInQuery:
787
- type: object
788
711
  required:
789
712
  - name
790
713
  - in
791
- - schema
714
+ allOf:
715
+ - $ref: '#/definitions/ExampleXORExamples'
716
+ - $ref: '#/definitions/SchemaXORContent'
717
+ oneOf:
718
+ - $ref: '#/definitions/PathParameter'
719
+ - $ref: '#/definitions/QueryParameter'
720
+ - $ref: '#/definitions/HeaderParameter'
721
+ - $ref: '#/definitions/CookieParameter'
722
+
723
+ PathParameter:
724
+ description: Parameter in path
725
+ required:
726
+ - required
792
727
  properties:
793
- name:
794
- type: string
795
728
  in:
796
- type: string
797
- enum:
798
- - query
799
- description:
800
- type: string
729
+ enum: [path]
730
+ style:
731
+ enum: [matrix, label, simple]
732
+ default: simple
801
733
  required:
802
- type: boolean
803
- default: false
804
- deprecated:
805
- type: boolean
806
- default: false
807
- allowEmptyValue:
808
- type: boolean
809
- default: false
734
+ enum: [true]
735
+
736
+ QueryParameter:
737
+ description: Parameter in query
738
+ properties:
739
+ in:
740
+ enum: [query]
810
741
  style:
811
- type: string
812
- enum:
813
- - form
814
- - spaceDelimited
815
- - pipeDelimited
816
- - deepObject
742
+ enum: [form, spaceDelimited, pipeDelimited, deepObject]
817
743
  default: form
818
- explode:
819
- type: boolean
820
- allowReserved:
744
+
745
+ HeaderParameter:
746
+ description: Parameter in header
747
+ properties:
748
+ in:
749
+ enum: [header]
750
+ style:
751
+ enum: [simple]
752
+ default: simple
753
+
754
+ CookieParameter:
755
+ description: Parameter in cookie
756
+ properties:
757
+ in:
758
+ enum: [cookie]
759
+ style:
760
+ enum: [form]
761
+ default: form
762
+
763
+ RequestBody:
764
+ type: object
765
+ required:
766
+ - content
767
+ properties:
768
+ description:
769
+ type: string
770
+ content:
771
+ type: object
772
+ additionalProperties:
773
+ $ref: '#/definitions/MediaType'
774
+ required:
821
775
  type: boolean
822
776
  default: false
823
- schema:
824
- oneOf:
825
- - $ref: '#/definitions/Schema'
826
- - $ref: '#/definitions/SchemaReference'
827
- example: {}
828
777
  patternProperties:
829
778
  '^x-': {}
830
- additionalProperties: false
779
+ additionalProperties: false
780
+
781
+ SecurityScheme:
782
+ oneOf:
783
+ - $ref: '#/definitions/APIKeySecurityScheme'
784
+ - $ref: '#/definitions/HTTPSecurityScheme'
785
+ - $ref: '#/definitions/OAuth2SecurityScheme'
786
+ - $ref: '#/definitions/OpenIdConnectSecurityScheme'
831
787
 
832
- ParameterWithSchemaWithExampleInHeader:
788
+ APIKeySecurityScheme:
833
789
  type: object
834
790
  required:
791
+ - type
835
792
  - name
836
793
  - in
837
- - schema
838
794
  properties:
795
+ type:
796
+ type: string
797
+ enum:
798
+ - apiKey
839
799
  name:
840
800
  type: string
841
801
  in:
842
802
  type: string
843
803
  enum:
844
804
  - header
805
+ - query
806
+ - cookie
845
807
  description:
846
808
  type: string
847
- required:
848
- type: boolean
849
- default: false
850
- deprecated:
851
- type: boolean
852
- default: false
853
- allowEmptyValue:
854
- type: boolean
855
- default: false
856
- style:
857
- type: string
858
- enum:
859
- - simple
860
- default: simple
861
- explode:
862
- type: boolean
863
- allowReserved:
864
- type: boolean
865
- default: false
866
- schema:
867
- oneOf:
868
- - $ref: '#/definitions/Schema'
869
- - $ref: '#/definitions/SchemaReference'
870
- example: {}
871
809
  patternProperties:
872
810
  '^x-': {}
873
- additionalProperties: false
811
+ additionalProperties: false
874
812
 
875
- ParameterWithSchemaWithExampleInCookie:
813
+ HTTPSecurityScheme:
876
814
  type: object
877
815
  required:
878
- - name
879
- - in
880
- - schema
816
+ - scheme
817
+ - type
881
818
  properties:
882
- name:
819
+ scheme:
883
820
  type: string
884
- in:
821
+ bearerFormat:
885
822
  type: string
886
- enum:
887
- - cookie
888
823
  description:
889
824
  type: string
890
- required:
891
- type: boolean
892
- default: false
893
- deprecated:
894
- type: boolean
895
- default: false
896
- allowEmptyValue:
897
- type: boolean
898
- default: false
899
- style:
825
+ type:
900
826
  type: string
901
827
  enum:
902
- - form
903
- default: form
904
- explode:
905
- type: boolean
906
- allowReserved:
907
- type: boolean
908
- default: false
909
- schema:
910
- oneOf:
911
- - $ref: '#/definitions/Schema'
912
- - $ref: '#/definitions/SchemaReference'
913
- example: {}
828
+ - http
914
829
  patternProperties:
915
830
  '^x-': {}
916
- additionalProperties: false
917
-
918
- ParameterWithSchemaWithExamples:
831
+ additionalProperties: false
919
832
  oneOf:
920
- - $ref: '#/definitions/ParameterWithSchemaWithExamplesInPath'
921
- - $ref: '#/definitions/ParameterWithSchemaWithExamplesInQuery'
922
- - $ref: '#/definitions/ParameterWithSchemaWithExamplesInHeader'
923
- - $ref: '#/definitions/ParameterWithSchemaWithExamplesInCookie'
833
+ - description: Bearer
834
+ properties:
835
+ scheme:
836
+ type: string
837
+ pattern: ^[Bb][Ee][Aa][Rr][Ee][Rr]$
924
838
 
925
- ParameterWithSchemaWithExamplesInPath:
926
- type: object
927
- required:
928
- - name
929
- - in
930
- - schema
931
- - required
932
- - examples
933
- properties:
934
- name:
935
- type: string
936
- in:
937
- type: string
938
- enum:
939
- - path
940
- description:
941
- type: string
942
- required:
943
- type: boolean
944
- enum:
945
- - true
946
- deprecated:
947
- type: boolean
948
- default: false
949
- allowEmptyValue:
950
- type: boolean
951
- default: false
952
- style:
953
- type: string
954
- enum:
955
- - matrix
956
- - label
957
- - simple
958
- default: simple
959
- explode:
960
- type: boolean
961
- allowReserved:
962
- type: boolean
963
- default: false
964
- schema:
965
- oneOf:
966
- - $ref: '#/definitions/Schema'
967
- - $ref: '#/definitions/SchemaReference'
968
- examples:
969
- type: object
970
- additionalProperties:
971
- oneOf:
972
- - $ref: '#/definitions/Example'
973
- - $ref: '#/definitions/SchemaReference'
974
- patternProperties:
975
- '^x-': {}
976
- additionalProperties: false
977
-
978
- ParameterWithSchemaWithExamplesInQuery:
979
- type: object
980
- required:
981
- - name
982
- - in
983
- - schema
984
- - examples
985
- properties:
986
- name:
987
- type: string
988
- in:
989
- type: string
990
- enum:
991
- - query
992
- description:
993
- type: string
994
- required:
995
- type: boolean
996
- default: false
997
- deprecated:
998
- type: boolean
999
- default: false
1000
- allowEmptyValue:
1001
- type: boolean
1002
- default: false
1003
- style:
1004
- type: string
1005
- enum:
1006
- - form
1007
- - spaceDelimited
1008
- - pipeDelimited
1009
- - deepObject
1010
- default: form
1011
- explode:
1012
- type: boolean
1013
- allowReserved:
1014
- type: boolean
1015
- default: false
1016
- schema:
1017
- oneOf:
1018
- - $ref: '#/definitions/Schema'
1019
- - $ref: '#/definitions/SchemaReference'
1020
- examples:
1021
- type: object
1022
- additionalProperties:
1023
- oneOf:
1024
- - $ref: '#/definitions/Example'
1025
- - $ref: '#/definitions/SchemaReference'
1026
- patternProperties:
1027
- '^x-': {}
1028
- additionalProperties: false
1029
-
1030
- ParameterWithSchemaWithExamplesInHeader:
1031
- type: object
1032
- required:
1033
- - name
1034
- - in
1035
- - schema
1036
- - examples
1037
- properties:
1038
- name:
1039
- type: string
1040
- in:
1041
- type: string
1042
- enum:
1043
- - header
1044
- description:
1045
- type: string
1046
- required:
1047
- type: boolean
1048
- default: false
1049
- deprecated:
1050
- type: boolean
1051
- default: false
1052
- allowEmptyValue:
1053
- type: boolean
1054
- default: false
1055
- style:
1056
- type: string
1057
- enum:
1058
- - simple
1059
- default: simple
1060
- explode:
1061
- type: boolean
1062
- allowReserved:
1063
- type: boolean
1064
- default: false
1065
- schema:
1066
- oneOf:
1067
- - $ref: '#/definitions/Schema'
1068
- - $ref: '#/definitions/SchemaReference'
1069
- examples:
1070
- type: object
1071
- additionalProperties:
1072
- oneOf:
1073
- - $ref: '#/definitions/Example'
1074
- - $ref: '#/definitions/Reference'
1075
- patternProperties:
1076
- '^x-': {}
1077
- additionalProperties: false
1078
-
1079
- ParameterWithSchemaWithExamplesInCookie:
1080
- type: object
1081
- required:
1082
- - name
1083
- - in
1084
- - schema
1085
- - examples
1086
- properties:
1087
- name:
1088
- type: string
1089
- in:
1090
- type: string
1091
- enum:
1092
- - cookie
1093
- description:
1094
- type: string
1095
- required:
1096
- type: boolean
1097
- default: false
1098
- deprecated:
1099
- type: boolean
1100
- default: false
1101
- allowEmptyValue:
1102
- type: boolean
1103
- default: false
1104
- style:
1105
- type: string
1106
- enum:
1107
- - form
1108
- default: form
1109
- explode:
1110
- type: boolean
1111
- allowReserved:
1112
- type: boolean
1113
- default: false
1114
- schema:
1115
- oneOf:
1116
- - $ref: '#/definitions/Schema'
1117
- - $ref: '#/definitions/SchemaReference'
1118
- examples:
1119
- type: object
1120
- additionalProperties:
1121
- oneOf:
1122
- - $ref: '#/definitions/Example'
1123
- - $ref: '#/definitions/Reference'
1124
- patternProperties:
1125
- '^x-': {}
1126
- additionalProperties: false
1127
-
1128
- ParameterWithContent:
1129
- oneOf:
1130
- - $ref: '#/definitions/ParameterWithContentInPath'
1131
- - $ref: '#/definitions/ParameterWithContentNotInPath'
1132
-
1133
- ParameterWithContentInPath:
1134
- type: object
1135
- required:
1136
- - name
1137
- - in
1138
- - content
1139
- properties:
1140
- name:
1141
- type: string
1142
- in:
1143
- type: string
1144
- enum:
1145
- - path
1146
- description:
1147
- type: string
1148
- required:
1149
- type: boolean
1150
- enum:
1151
- - true
1152
- deprecated:
1153
- type: boolean
1154
- default: false
1155
- allowEmptyValue:
1156
- type: boolean
1157
- default: false
1158
- content:
1159
- type: object
1160
- additionalProperties:
1161
- $ref: '#/definitions/MediaType'
1162
- minProperties: 1
1163
- maxProperties: 1
1164
- patternProperties:
1165
- '^x-': {}
1166
- additionalProperties: false
1167
-
1168
- ParameterWithContentNotInPath:
1169
- type: object
1170
- required:
1171
- - name
1172
- - in
1173
- - content
1174
- properties:
1175
- name:
1176
- type: string
1177
- in:
1178
- type: string
1179
- enum:
1180
- - query
1181
- - header
1182
- - cookie
1183
- description:
1184
- type: string
1185
- required:
1186
- type: boolean
1187
- default: false
1188
- deprecated:
1189
- type: boolean
1190
- default: false
1191
- allowEmptyValue:
1192
- type: boolean
1193
- default: false
1194
- content:
1195
- type: object
1196
- additionalProperties:
1197
- $ref: '#/definitions/MediaType'
1198
- minProperties: 1
1199
- maxProperties: 1
1200
- patternProperties:
1201
- '^x-': {}
1202
- additionalProperties: false
1203
-
1204
- RequestBody:
1205
- type: object
1206
- required:
1207
- - content
1208
- properties:
1209
- description:
1210
- type: string
1211
- content:
1212
- type: object
1213
- additionalProperties:
1214
- $ref: '#/definitions/MediaType'
1215
- required:
1216
- type: boolean
1217
- default: false
1218
- patternProperties:
1219
- '^x-': {}
1220
- additionalProperties: false
1221
-
1222
- SecurityScheme:
1223
- oneOf:
1224
- - $ref: '#/definitions/APIKeySecurityScheme'
1225
- - $ref: '#/definitions/HTTPSecurityScheme'
1226
- - $ref: '#/definitions/OAuth2SecurityScheme'
1227
- - $ref: '#/definitions/OpenIdConnectSecurityScheme'
1228
-
1229
- APIKeySecurityScheme:
1230
- type: object
1231
- required:
1232
- - type
1233
- - name
1234
- - in
1235
- properties:
1236
- type:
1237
- type: string
1238
- enum:
1239
- - apiKey
1240
- name:
1241
- type: string
1242
- in:
1243
- type: string
1244
- enum:
1245
- - header
1246
- - query
1247
- - cookie
1248
- description:
1249
- type: string
1250
- patternProperties:
1251
- '^x-': {}
1252
- additionalProperties: false
1253
-
1254
- HTTPSecurityScheme:
1255
- oneOf:
1256
- - $ref: '#/definitions/NonBearerHTTPSecurityScheme'
1257
- - $ref: '#/definitions/BearerHTTPSecurityScheme'
1258
-
1259
- NonBearerHTTPSecurityScheme:
1260
- type: object
1261
- required:
1262
- - scheme
1263
- - type
1264
- properties:
1265
- scheme:
1266
- type: string
839
+ - description: Non Bearer
1267
840
  not:
1268
- enum:
1269
- - bearer
1270
- description:
1271
- type: string
1272
- type:
1273
- type: string
1274
- enum:
1275
- - http
1276
- patternProperties:
1277
- '^x-': {}
1278
- additionalProperties: false
1279
-
1280
- BearerHTTPSecurityScheme:
1281
- type: object
1282
- required:
1283
- - type
1284
- - scheme
1285
- properties:
1286
- scheme:
1287
- type: string
1288
- enum:
1289
- - bearer
1290
- bearerFormat:
1291
- type: string
1292
- type:
1293
- type: string
1294
- enum:
1295
- - http
1296
- description:
1297
- type: string
1298
- patternProperties:
1299
- '^x-': {}
1300
- additionalProperties: false
841
+ required: [bearerFormat]
842
+ properties:
843
+ scheme:
844
+ not:
845
+ type: string
846
+ pattern: ^[Bb][Ee][Aa][Rr][Ee][Rr]$
1301
847
 
1302
848
  OAuth2SecurityScheme:
1303
849
  type: object
@@ -1326,7 +872,7 @@ definitions:
1326
872
  type:
1327
873
  type: string
1328
874
  enum:
1329
- - openIdConnect
875
+ - openIdConnect
1330
876
  openIdConnectUrl:
1331
877
  type: string
1332
878
  format: uri-reference
@@ -1375,6 +921,7 @@ definitions:
1375
921
  type: object
1376
922
  required:
1377
923
  - tokenUrl
924
+ - scopes
1378
925
  properties:
1379
926
  tokenUrl:
1380
927
  type: string
@@ -1394,6 +941,7 @@ definitions:
1394
941
  type: object
1395
942
  required:
1396
943
  - tokenUrl
944
+ - scopes
1397
945
  properties:
1398
946
  tokenUrl:
1399
947
  type: string
@@ -1414,6 +962,7 @@ definitions:
1414
962
  required:
1415
963
  - authorizationUrl
1416
964
  - tokenUrl
965
+ - scopes
1417
966
  properties:
1418
967
  authorizationUrl:
1419
968
  type: string
@@ -1433,13 +982,10 @@ definitions:
1433
982
  additionalProperties: false
1434
983
 
1435
984
  Link:
1436
- oneOf:
1437
- - $ref: '#/definitions/LinkWithOperationRef'
1438
- - $ref: '#/definitions/LinkWithOperationId'
1439
-
1440
- LinkWithOperationRef:
1441
985
  type: object
1442
986
  properties:
987
+ operationId:
988
+ type: string
1443
989
  operationRef:
1444
990
  type: string
1445
991
  format: uri-reference
@@ -1454,23 +1000,9 @@ definitions:
1454
1000
  patternProperties:
1455
1001
  '^x-': {}
1456
1002
  additionalProperties: false
1457
-
1458
- LinkWithOperationId:
1459
- type: object
1460
- properties:
1461
- operationId:
1462
- type: string
1463
- parameters:
1464
- type: object
1465
- additionalProperties: {}
1466
- requestBody: {}
1467
- description:
1468
- type: string
1469
- server:
1470
- $ref: '#/definitions/Server'
1471
- patternProperties:
1472
- '^x-': {}
1473
- additionalProperties: false
1003
+ not:
1004
+ description: Operation Id and Operation Ref are mutually exclusive
1005
+ required: [operationId, operationRef]
1474
1006
 
1475
1007
  Callback:
1476
1008
  type: object
@@ -1487,7 +1019,9 @@ definitions:
1487
1019
  headers:
1488
1020
  type: object
1489
1021
  additionalProperties:
1490
- $ref: '#/definitions/Header'
1022
+ oneOf:
1023
+ - $ref: '#/definitions/Header'
1024
+ - $ref: '#/definitions/Reference'
1491
1025
  style:
1492
1026
  type: string
1493
1027
  enum:
@@ -1500,4 +1034,6 @@ definitions:
1500
1034
  allowReserved:
1501
1035
  type: boolean
1502
1036
  default: false
1037
+ patternProperties:
1038
+ '^x-': {}
1503
1039
  additionalProperties: false