1{ 2 "$id": "https://spec.openapis.org/oas/3.1/schema/2022-10-07", 3 "$schema": "https://json-schema.org/draft/2020-12/schema", 4 "description": "The description of OpenAPI v3.1.x documents without schema validation, as defined by https://spec.openapis.org/oas/v3.1.0", 5 "type": "object", 6 "properties": { 7 "openapi": { 8 "type": "string", 9 "pattern": "^3\\.1\\.\\d+(-.+)?$" 10 }, 11 "info": { 12 "$ref": "#/$defs/info" 13 }, 14 "jsonSchemaDialect": { 15 "type": "string", 16 "format": "uri", 17 "default": "https://spec.openapis.org/oas/3.1/dialect/base" 18 }, 19 "servers": { 20 "type": "array", 21 "items": { 22 "$ref": "#/$defs/server" 23 }, 24 "default": [ 25 { 26 "url": "/" 27 } 28 ] 29 }, 30 "paths": { 31 "$ref": "#/$defs/paths" 32 }, 33 "webhooks": { 34 "type": "object", 35 "additionalProperties": { 36 "$ref": "#/$defs/path-item-or-reference" 37 } 38 }, 39 "components": { 40 "$ref": "#/$defs/components" 41 }, 42 "security": { 43 "type": "array", 44 "items": { 45 "$ref": "#/$defs/security-requirement" 46 } 47 }, 48 "tags": { 49 "type": "array", 50 "items": { 51 "$ref": "#/$defs/tag" 52 } 53 }, 54 "externalDocs": { 55 "$ref": "#/$defs/external-documentation" 56 } 57 }, 58 "required": [ 59 "openapi", 60 "info" 61 ], 62 "anyOf": [ 63 { 64 "required": [ 65 "paths" 66 ] 67 }, 68 { 69 "required": [ 70 "components" 71 ] 72 }, 73 { 74 "required": [ 75 "webhooks" 76 ] 77 } 78 ], 79 "$ref": "#/$defs/specification-extensions", 80 "unevaluatedProperties": false, 81 "$defs": { 82 "info": { 83 "$comment": "https://spec.openapis.org/oas/v3.1.0#info-object", 84 "type": "object", 85 "properties": { 86 "title": { 87 "type": "string" 88 }, 89 "summary": { 90 "type": "string" 91 }, 92 "description": { 93 "type": "string" 94 }, 95 "termsOfService": { 96 "type": "string", 97 "format": "uri" 98 }, 99 "contact": { 100 "$ref": "#/$defs/contact" 101 }, 102 "license": { 103 "$ref": "#/$defs/license" 104 }, 105 "version": { 106 "type": "string" 107 } 108 }, 109 "required": [ 110 "title", 111 "version" 112 ], 113 "$ref": "#/$defs/specification-extensions", 114 "unevaluatedProperties": false 115 }, 116 "contact": { 117 "$comment": "https://spec.openapis.org/oas/v3.1.0#contact-object", 118 "type": "object", 119 "properties": { 120 "name": { 121 "type": "string" 122 }, 123 "url": { 124 "type": "string", 125 "format": "uri" 126 }, 127 "email": { 128 "type": "string", 129 "format": "email" 130 } 131 }, 132 "$ref": "#/$defs/specification-extensions", 133 "unevaluatedProperties": false 134 }, 135 "license": { 136 "$comment": "https://spec.openapis.org/oas/v3.1.0#license-object", 137 "type": "object", 138 "properties": { 139 "name": { 140 "type": "string" 141 }, 142 "identifier": { 143 "type": "string" 144 }, 145 "url": { 146 "type": "string", 147 "format": "uri" 148 } 149 }, 150 "required": [ 151 "name" 152 ], 153 "dependentSchemas": { 154 "identifier": { 155 "not": { 156 "required": [ 157 "url" 158 ] 159 } 160 } 161 }, 162 "$ref": "#/$defs/specification-extensions", 163 "unevaluatedProperties": false 164 }, 165 "server": { 166 "$comment": "https://spec.openapis.org/oas/v3.1.0#server-object", 167 "type": "object", 168 "properties": { 169 "url": { 170 "type": "string", 171 "format": "uri-reference" 172 }, 173 "description": { 174 "type": "string" 175 }, 176 "variables": { 177 "type": "object", 178 "additionalProperties": { 179 "$ref": "#/$defs/server-variable" 180 } 181 } 182 }, 183 "required": [ 184 "url" 185 ], 186 "$ref": "#/$defs/specification-extensions", 187 "unevaluatedProperties": false 188 }, 189 "server-variable": { 190 "$comment": "https://spec.openapis.org/oas/v3.1.0#server-variable-object", 191 "type": "object", 192 "properties": { 193 "enum": { 194 "type": "array", 195 "items": { 196 "type": "string" 197 }, 198 "minItems": 1 199 }, 200 "default": { 201 "type": "string" 202 }, 203 "description": { 204 "type": "string" 205 } 206 }, 207 "required": [ 208 "default" 209 ], 210 "$ref": "#/$defs/specification-extensions", 211 "unevaluatedProperties": false 212 }, 213 "components": { 214 "$comment": "https://spec.openapis.org/oas/v3.1.0#components-object", 215 "type": "object", 216 "properties": { 217 "schemas": { 218 "type": "object", 219 "additionalProperties": { 220 "$dynamicRef": "#meta" 221 } 222 }, 223 "responses": { 224 "type": "object", 225 "additionalProperties": { 226 "$ref": "#/$defs/response-or-reference" 227 } 228 }, 229 "parameters": { 230 "type": "object", 231 "additionalProperties": { 232 "$ref": "#/$defs/parameter-or-reference" 233 } 234 }, 235 "examples": { 236 "type": "object", 237 "additionalProperties": { 238 "$ref": "#/$defs/example-or-reference" 239 } 240 }, 241 "requestBodies": { 242 "type": "object", 243 "additionalProperties": { 244 "$ref": "#/$defs/request-body-or-reference" 245 } 246 }, 247 "headers": { 248 "type": "object", 249 "additionalProperties": { 250 "$ref": "#/$defs/header-or-reference" 251 } 252 }, 253 "securitySchemes": { 254 "type": "object", 255 "additionalProperties": { 256 "$ref": "#/$defs/security-scheme-or-reference" 257 } 258 }, 259 "links": { 260 "type": "object", 261 "additionalProperties": { 262 "$ref": "#/$defs/link-or-reference" 263 } 264 }, 265 "callbacks": { 266 "type": "object", 267 "additionalProperties": { 268 "$ref": "#/$defs/callbacks-or-reference" 269 } 270 }, 271 "pathItems": { 272 "type": "object", 273 "additionalProperties": { 274 "$ref": "#/$defs/path-item-or-reference" 275 } 276 } 277 }, 278 "patternProperties": { 279 "^(schemas|responses|parameters|examples|requestBodies|headers|securitySchemes|links|callbacks|pathItems)$": { 280 "$comment": "Enumerating all of the property names in the regex above is necessary for unevaluatedProperties to work as expected", 281 "propertyNames": { 282 "pattern": "^[a-zA-Z0-9._-]+$" 283 } 284 } 285 }, 286 "$ref": "#/$defs/specification-extensions", 287 "unevaluatedProperties": false 288 }, 289 "paths": { 290 "$comment": "https://spec.openapis.org/oas/v3.1.0#paths-object", 291 "type": "object", 292 "patternProperties": { 293 "^/": { 294 "$ref": "#/$defs/path-item" 295 } 296 }, 297 "$ref": "#/$defs/specification-extensions", 298 "unevaluatedProperties": false 299 }, 300 "path-item": { 301 "$comment": "https://spec.openapis.org/oas/v3.1.0#path-item-object", 302 "type": "object", 303 "properties": { 304 "summary": { 305 "type": "string" 306 }, 307 "description": { 308 "type": "string" 309 }, 310 "servers": { 311 "type": "array", 312 "items": { 313 "$ref": "#/$defs/server" 314 } 315 }, 316 "parameters": { 317 "type": "array", 318 "items": { 319 "$ref": "#/$defs/parameter-or-reference" 320 } 321 }, 322 "get": { 323 "$ref": "#/$defs/operation" 324 }, 325 "put": { 326 "$ref": "#/$defs/operation" 327 }, 328 "post": { 329 "$ref": "#/$defs/operation" 330 }, 331 "delete": { 332 "$ref": "#/$defs/operation" 333 }, 334 "options": { 335 "$ref": "#/$defs/operation" 336 }, 337 "head": { 338 "$ref": "#/$defs/operation" 339 }, 340 "patch": { 341 "$ref": "#/$defs/operation" 342 }, 343 "trace": { 344 "$ref": "#/$defs/operation" 345 } 346 }, 347 "$ref": "#/$defs/specification-extensions", 348 "unevaluatedProperties": false 349 }, 350 "path-item-or-reference": { 351 "if": { 352 "type": "object", 353 "required": [ 354 "$ref" 355 ] 356 }, 357 "then": { 358 "$ref": "#/$defs/reference" 359 }, 360 "else": { 361 "$ref": "#/$defs/path-item" 362 } 363 }, 364 "operation": { 365 "$comment": "https://spec.openapis.org/oas/v3.1.0#operation-object", 366 "type": "object", 367 "properties": { 368 "tags": { 369 "type": "array", 370 "items": { 371 "type": "string" 372 } 373 }, 374 "summary": { 375 "type": "string" 376 }, 377 "description": { 378 "type": "string" 379 }, 380 "externalDocs": { 381 "$ref": "#/$defs/external-documentation" 382 }, 383 "operationId": { 384 "type": "string" 385 }, 386 "parameters": { 387 "type": "array", 388 "items": { 389 "$ref": "#/$defs/parameter-or-reference" 390 } 391 }, 392 "requestBody": { 393 "$ref": "#/$defs/request-body-or-reference" 394 }, 395 "responses": { 396 "$ref": "#/$defs/responses" 397 }, 398 "callbacks": { 399 "type": "object", 400 "additionalProperties": { 401 "$ref": "#/$defs/callbacks-or-reference" 402 } 403 }, 404 "deprecated": { 405 "default": false, 406 "type": "boolean" 407 }, 408 "security": { 409 "type": "array", 410 "items": { 411 "$ref": "#/$defs/security-requirement" 412 } 413 }, 414 "servers": { 415 "type": "array", 416 "items": { 417 "$ref": "#/$defs/server" 418 } 419 } 420 }, 421 "$ref": "#/$defs/specification-extensions", 422 "unevaluatedProperties": false 423 }, 424 "external-documentation": { 425 "$comment": "https://spec.openapis.org/oas/v3.1.0#external-documentation-object", 426 "type": "object", 427 "properties": { 428 "description": { 429 "type": "string" 430 }, 431 "url": { 432 "type": "string", 433 "format": "uri" 434 } 435 }, 436 "required": [ 437 "url" 438 ], 439 "$ref": "#/$defs/specification-extensions", 440 "unevaluatedProperties": false 441 }, 442 "parameter": { 443 "$comment": "https://spec.openapis.org/oas/v3.1.0#parameter-object", 444 "type": "object", 445 "properties": { 446 "name": { 447 "type": "string" 448 }, 449 "in": { 450 "enum": [ 451 "query", 452 "header", 453 "path", 454 "cookie" 455 ] 456 }, 457 "description": { 458 "type": "string" 459 }, 460 "required": { 461 "default": false, 462 "type": "boolean" 463 }, 464 "deprecated": { 465 "default": false, 466 "type": "boolean" 467 }, 468 "schema": { 469 "$dynamicRef": "#meta" 470 }, 471 "content": { 472 "$ref": "#/$defs/content", 473 "minProperties": 1, 474 "maxProperties": 1 475 } 476 }, 477 "required": [ 478 "name", 479 "in" 480 ], 481 "oneOf": [ 482 { 483 "required": [ 484 "schema" 485 ] 486 }, 487 { 488 "required": [ 489 "content" 490 ] 491 } 492 ], 493 "if": { 494 "properties": { 495 "in": { 496 "const": "query" 497 } 498 }, 499 "required": [ 500 "in" 501 ] 502 }, 503 "then": { 504 "properties": { 505 "allowEmptyValue": { 506 "default": false, 507 "type": "boolean" 508 } 509 } 510 }, 511 "dependentSchemas": { 512 "schema": { 513 "properties": { 514 "style": { 515 "type": "string" 516 }, 517 "explode": { 518 "type": "boolean" 519 } 520 }, 521 "allOf": [ 522 { 523 "$ref": "#/$defs/examples" 524 }, 525 { 526 "$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-path" 527 }, 528 { 529 "$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-header" 530 }, 531 { 532 "$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-query" 533 }, 534 { 535 "$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-cookie" 536 }, 537 { 538 "$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-form" 539 } 540 ], 541 "$defs": { 542 "styles-for-path": { 543 "if": { 544 "properties": { 545 "in": { 546 "const": "path" 547 } 548 }, 549 "required": [ 550 "in" 551 ] 552 }, 553 "then": { 554 "properties": { 555 "name": { 556 "pattern": "[^/#?]+$" 557 }, 558 "style": { 559 "default": "simple", 560 "enum": [ 561 "matrix", 562 "label", 563 "simple" 564 ] 565 }, 566 "required": { 567 "const": true 568 } 569 }, 570 "required": [ 571 "required" 572 ] 573 } 574 }, 575 "styles-for-header": { 576 "if": { 577 "properties": { 578 "in": { 579 "const": "header" 580 } 581 }, 582 "required": [ 583 "in" 584 ] 585 }, 586 "then": { 587 "properties": { 588 "style": { 589 "default": "simple", 590 "const": "simple" 591 } 592 } 593 } 594 }, 595 "styles-for-query": { 596 "if": { 597 "properties": { 598 "in": { 599 "const": "query" 600 } 601 }, 602 "required": [ 603 "in" 604 ] 605 }, 606 "then": { 607 "properties": { 608 "style": { 609 "default": "form", 610 "enum": [ 611 "form", 612 "spaceDelimited", 613 "pipeDelimited", 614 "deepObject" 615 ] 616 }, 617 "allowReserved": { 618 "default": false, 619 "type": "boolean" 620 } 621 } 622 } 623 }, 624 "styles-for-cookie": { 625 "if": { 626 "properties": { 627 "in": { 628 "const": "cookie" 629 } 630 }, 631 "required": [ 632 "in" 633 ] 634 }, 635 "then": { 636 "properties": { 637 "style": { 638 "default": "form", 639 "const": "form" 640 } 641 } 642 } 643 }, 644 "styles-for-form": { 645 "if": { 646 "properties": { 647 "style": { 648 "const": "form" 649 } 650 }, 651 "required": [ 652 "style" 653 ] 654 }, 655 "then": { 656 "properties": { 657 "explode": { 658 "default": true 659 } 660 } 661 }, 662 "else": { 663 "properties": { 664 "explode": { 665 "default": false 666 } 667 } 668 } 669 } 670 } 671 } 672 }, 673 "$ref": "#/$defs/specification-extensions", 674 "unevaluatedProperties": false 675 }, 676 "parameter-or-reference": { 677 "if": { 678 "type": "object", 679 "required": [ 680 "$ref" 681 ] 682 }, 683 "then": { 684 "$ref": "#/$defs/reference" 685 }, 686 "else": { 687 "$ref": "#/$defs/parameter" 688 } 689 }, 690 "request-body": { 691 "$comment": "https://spec.openapis.org/oas/v3.1.0#request-body-object", 692 "type": "object", 693 "properties": { 694 "description": { 695 "type": "string" 696 }, 697 "content": { 698 "$ref": "#/$defs/content" 699 }, 700 "required": { 701 "default": false, 702 "type": "boolean" 703 } 704 }, 705 "required": [ 706 "content" 707 ], 708 "$ref": "#/$defs/specification-extensions", 709 "unevaluatedProperties": false 710 }, 711 "request-body-or-reference": { 712 "if": { 713 "type": "object", 714 "required": [ 715 "$ref" 716 ] 717 }, 718 "then": { 719 "$ref": "#/$defs/reference" 720 }, 721 "else": { 722 "$ref": "#/$defs/request-body" 723 } 724 }, 725 "content": { 726 "$comment": "https://spec.openapis.org/oas/v3.1.0#fixed-fields-10", 727 "type": "object", 728 "additionalProperties": { 729 "$ref": "#/$defs/media-type" 730 }, 731 "propertyNames": { 732 "format": "media-range" 733 } 734 }, 735 "media-type": { 736 "$comment": "https://spec.openapis.org/oas/v3.1.0#media-type-object", 737 "type": "object", 738 "properties": { 739 "schema": { 740 "$dynamicRef": "#meta" 741 }, 742 "encoding": { 743 "type": "object", 744 "additionalProperties": { 745 "$ref": "#/$defs/encoding" 746 } 747 } 748 }, 749 "allOf": [ 750 { 751 "$ref": "#/$defs/specification-extensions" 752 }, 753 { 754 "$ref": "#/$defs/examples" 755 } 756 ], 757 "unevaluatedProperties": false 758 }, 759 "encoding": { 760 "$comment": "https://spec.openapis.org/oas/v3.1.0#encoding-object", 761 "type": "object", 762 "properties": { 763 "contentType": { 764 "type": "string", 765 "format": "media-range" 766 }, 767 "headers": { 768 "type": "object", 769 "additionalProperties": { 770 "$ref": "#/$defs/header-or-reference" 771 } 772 }, 773 "style": { 774 "default": "form", 775 "enum": [ 776 "form", 777 "spaceDelimited", 778 "pipeDelimited", 779 "deepObject" 780 ] 781 }, 782 "explode": { 783 "type": "boolean" 784 }, 785 "allowReserved": { 786 "default": false, 787 "type": "boolean" 788 } 789 }, 790 "allOf": [ 791 { 792 "$ref": "#/$defs/specification-extensions" 793 }, 794 { 795 "$ref": "#/$defs/encoding/$defs/explode-default" 796 } 797 ], 798 "unevaluatedProperties": false, 799 "$defs": { 800 "explode-default": { 801 "if": { 802 "properties": { 803 "style": { 804 "const": "form" 805 } 806 }, 807 "required": [ 808 "style" 809 ] 810 }, 811 "then": { 812 "properties": { 813 "explode": { 814 "default": true 815 } 816 } 817 }, 818 "else": { 819 "properties": { 820 "explode": { 821 "default": false 822 } 823 } 824 } 825 } 826 } 827 }, 828 "responses": { 829 "$comment": "https://spec.openapis.org/oas/v3.1.0#responses-object", 830 "type": "object", 831 "properties": { 832 "default": { 833 "$ref": "#/$defs/response-or-reference" 834 } 835 }, 836 "patternProperties": { 837 "^[1-5](?:[0-9]{2}|XX)$": { 838 "$ref": "#/$defs/response-or-reference" 839 } 840 }, 841 "minProperties": 1, 842 "$ref": "#/$defs/specification-extensions", 843 "unevaluatedProperties": false 844 }, 845 "response": { 846 "$comment": "https://spec.openapis.org/oas/v3.1.0#response-object", 847 "type": "object", 848 "properties": { 849 "description": { 850 "type": "string" 851 }, 852 "headers": { 853 "type": "object", 854 "additionalProperties": { 855 "$ref": "#/$defs/header-or-reference" 856 } 857 }, 858 "content": { 859 "$ref": "#/$defs/content" 860 }, 861 "links": { 862 "type": "object", 863 "additionalProperties": { 864 "$ref": "#/$defs/link-or-reference" 865 } 866 } 867 }, 868 "required": [ 869 "description" 870 ], 871 "$ref": "#/$defs/specification-extensions", 872 "unevaluatedProperties": false 873 }, 874 "response-or-reference": { 875 "if": { 876 "type": "object", 877 "required": [ 878 "$ref" 879 ] 880 }, 881 "then": { 882 "$ref": "#/$defs/reference" 883 }, 884 "else": { 885 "$ref": "#/$defs/response" 886 } 887 }, 888 "callbacks": { 889 "$comment": "https://spec.openapis.org/oas/v3.1.0#callback-object", 890 "type": "object", 891 "$ref": "#/$defs/specification-extensions", 892 "additionalProperties": { 893 "$ref": "#/$defs/path-item-or-reference" 894 } 895 }, 896 "callbacks-or-reference": { 897 "if": { 898 "type": "object", 899 "required": [ 900 "$ref" 901 ] 902 }, 903 "then": { 904 "$ref": "#/$defs/reference" 905 }, 906 "else": { 907 "$ref": "#/$defs/callbacks" 908 } 909 }, 910 "example": { 911 "$comment": "https://spec.openapis.org/oas/v3.1.0#example-object", 912 "type": "object", 913 "properties": { 914 "summary": { 915 "type": "string" 916 }, 917 "description": { 918 "type": "string" 919 }, 920 "value": true, 921 "externalValue": { 922 "type": "string", 923 "format": "uri" 924 } 925 }, 926 "not": { 927 "required": [ 928 "value", 929 "externalValue" 930 ] 931 }, 932 "$ref": "#/$defs/specification-extensions", 933 "unevaluatedProperties": false 934 }, 935 "example-or-reference": { 936 "if": { 937 "type": "object", 938 "required": [ 939 "$ref" 940 ] 941 }, 942 "then": { 943 "$ref": "#/$defs/reference" 944 }, 945 "else": { 946 "$ref": "#/$defs/example" 947 } 948 }, 949 "link": { 950 "$comment": "https://spec.openapis.org/oas/v3.1.0#link-object", 951 "type": "object", 952 "properties": { 953 "operationRef": { 954 "type": "string", 955 "format": "uri-reference" 956 }, 957 "operationId": { 958 "type": "string" 959 }, 960 "parameters": { 961 "$ref": "#/$defs/map-of-strings" 962 }, 963 "requestBody": true, 964 "description": { 965 "type": "string" 966 }, 967 "body": { 968 "$ref": "#/$defs/server" 969 } 970 }, 971 "oneOf": [ 972 { 973 "required": [ 974 "operationRef" 975 ] 976 }, 977 { 978 "required": [ 979 "operationId" 980 ] 981 } 982 ], 983 "$ref": "#/$defs/specification-extensions", 984 "unevaluatedProperties": false 985 }, 986 "link-or-reference": { 987 "if": { 988 "type": "object", 989 "required": [ 990 "$ref" 991 ] 992 }, 993 "then": { 994 "$ref": "#/$defs/reference" 995 }, 996 "else": { 997 "$ref": "#/$defs/link" 998 } 999 }, 1000 "header": { 1001 "$comment": "https://spec.openapis.org/oas/v3.1.0#header-object", 1002 "type": "object", 1003 "properties": { 1004 "description": { 1005 "type": "string" 1006 }, 1007 "required": { 1008 "default": false, 1009 "type": "boolean" 1010 }, 1011 "deprecated": { 1012 "default": false, 1013 "type": "boolean" 1014 }, 1015 "schema": { 1016 "$dynamicRef": "#meta" 1017 }, 1018 "content": { 1019 "$ref": "#/$defs/content", 1020 "minProperties": 1, 1021 "maxProperties": 1 1022 } 1023 }, 1024 "oneOf": [ 1025 { 1026 "required": [ 1027 "schema" 1028 ] 1029 }, 1030 { 1031 "required": [ 1032 "content" 1033 ] 1034 } 1035 ], 1036 "dependentSchemas": { 1037 "schema": { 1038 "properties": { 1039 "style": { 1040 "default": "simple", 1041 "const": "simple" 1042 }, 1043 "explode": { 1044 "default": false, 1045 "type": "boolean" 1046 } 1047 }, 1048 "$ref": "#/$defs/examples" 1049 } 1050 }, 1051 "$ref": "#/$defs/specification-extensions", 1052 "unevaluatedProperties": false 1053 }, 1054 "header-or-reference": { 1055 "if": { 1056 "type": "object", 1057 "required": [ 1058 "$ref" 1059 ] 1060 }, 1061 "then": { 1062 "$ref": "#/$defs/reference" 1063 }, 1064 "else": { 1065 "$ref": "#/$defs/header" 1066 } 1067 }, 1068 "tag": { 1069 "$comment": "https://spec.openapis.org/oas/v3.1.0#tag-object", 1070 "type": "object", 1071 "properties": { 1072 "name": { 1073 "type": "string" 1074 }, 1075 "description": { 1076 "type": "string" 1077 }, 1078 "externalDocs": { 1079 "$ref": "#/$defs/external-documentation" 1080 } 1081 }, 1082 "required": [ 1083 "name" 1084 ], 1085 "$ref": "#/$defs/specification-extensions", 1086 "unevaluatedProperties": false 1087 }, 1088 "reference": { 1089 "$comment": "https://spec.openapis.org/oas/v3.1.0#reference-object", 1090 "type": "object", 1091 "properties": { 1092 "$ref": { 1093 "type": "string", 1094 "format": "uri-reference" 1095 }, 1096 "summary": { 1097 "type": "string" 1098 }, 1099 "description": { 1100 "type": "string" 1101 } 1102 }, 1103 "unevaluatedProperties": false 1104 }, 1105 "schema": { 1106 "$comment": "https://spec.openapis.org/oas/v3.1.0#schema-object", 1107 "$dynamicAnchor": "meta", 1108 "type": [ 1109 "object", 1110 "boolean" 1111 ] 1112 }, 1113 "security-scheme": { 1114 "$comment": "https://spec.openapis.org/oas/v3.1.0#security-scheme-object", 1115 "type": "object", 1116 "properties": { 1117 "type": { 1118 "enum": [ 1119 "apiKey", 1120 "http", 1121 "mutualTLS", 1122 "oauth2", 1123 "openIdConnect" 1124 ] 1125 }, 1126 "description": { 1127 "type": "string" 1128 } 1129 }, 1130 "required": [ 1131 "type" 1132 ], 1133 "allOf": [ 1134 { 1135 "$ref": "#/$defs/specification-extensions" 1136 }, 1137 { 1138 "$ref": "#/$defs/security-scheme/$defs/type-apikey" 1139 }, 1140 { 1141 "$ref": "#/$defs/security-scheme/$defs/type-http" 1142 }, 1143 { 1144 "$ref": "#/$defs/security-scheme/$defs/type-http-bearer" 1145 }, 1146 { 1147 "$ref": "#/$defs/security-scheme/$defs/type-oauth2" 1148 }, 1149 { 1150 "$ref": "#/$defs/security-scheme/$defs/type-oidc" 1151 } 1152 ], 1153 "unevaluatedProperties": false, 1154 "$defs": { 1155 "type-apikey": { 1156 "if": { 1157 "properties": { 1158 "type": { 1159 "const": "apiKey" 1160 } 1161 }, 1162 "required": [ 1163 "type" 1164 ] 1165 }, 1166 "then": { 1167 "properties": { 1168 "name": { 1169 "type": "string" 1170 }, 1171 "in": { 1172 "enum": [ 1173 "query", 1174 "header", 1175 "cookie" 1176 ] 1177 } 1178 }, 1179 "required": [ 1180 "name", 1181 "in" 1182 ] 1183 } 1184 }, 1185 "type-http": { 1186 "if": { 1187 "properties": { 1188 "type": { 1189 "const": "http" 1190 } 1191 }, 1192 "required": [ 1193 "type" 1194 ] 1195 }, 1196 "then": { 1197 "properties": { 1198 "scheme": { 1199 "type": "string" 1200 } 1201 }, 1202 "required": [ 1203 "scheme" 1204 ] 1205 } 1206 }, 1207 "type-http-bearer": { 1208 "if": { 1209 "properties": { 1210 "type": { 1211 "const": "http" 1212 }, 1213 "scheme": { 1214 "type": "string", 1215 "pattern": "^[Bb][Ee][Aa][Rr][Ee][Rr]$" 1216 } 1217 }, 1218 "required": [ 1219 "type", 1220 "scheme" 1221 ] 1222 }, 1223 "then": { 1224 "properties": { 1225 "bearerFormat": { 1226 "type": "string" 1227 } 1228 } 1229 } 1230 }, 1231 "type-oauth2": { 1232 "if": { 1233 "properties": { 1234 "type": { 1235 "const": "oauth2" 1236 } 1237 }, 1238 "required": [ 1239 "type" 1240 ] 1241 }, 1242 "then": { 1243 "properties": { 1244 "flows": { 1245 "$ref": "#/$defs/oauth-flows" 1246 } 1247 }, 1248 "required": [ 1249 "flows" 1250 ] 1251 } 1252 }, 1253 "type-oidc": { 1254 "if": { 1255 "properties": { 1256 "type": { 1257 "const": "openIdConnect" 1258 } 1259 }, 1260 "required": [ 1261 "type" 1262 ] 1263 }, 1264 "then": { 1265 "properties": { 1266 "openIdConnectUrl": { 1267 "type": "string", 1268 "format": "uri" 1269 } 1270 }, 1271 "required": [ 1272 "openIdConnectUrl" 1273 ] 1274 } 1275 } 1276 } 1277 }, 1278 "security-scheme-or-reference": { 1279 "if": { 1280 "type": "object", 1281 "required": [ 1282 "$ref" 1283 ] 1284 }, 1285 "then": { 1286 "$ref": "#/$defs/reference" 1287 }, 1288 "else": { 1289 "$ref": "#/$defs/security-scheme" 1290 } 1291 }, 1292 "oauth-flows": { 1293 "type": "object", 1294 "properties": { 1295 "implicit": { 1296 "$ref": "#/$defs/oauth-flows/$defs/implicit" 1297 }, 1298 "password": { 1299 "$ref": "#/$defs/oauth-flows/$defs/password" 1300 }, 1301 "clientCredentials": { 1302 "$ref": "#/$defs/oauth-flows/$defs/client-credentials" 1303 }, 1304 "authorizationCode": { 1305 "$ref": "#/$defs/oauth-flows/$defs/authorization-code" 1306 } 1307 }, 1308 "$ref": "#/$defs/specification-extensions", 1309 "unevaluatedProperties": false, 1310 "$defs": { 1311 "implicit": { 1312 "type": "object", 1313 "properties": { 1314 "authorizationUrl": { 1315 "type": "string", 1316 "format": "uri" 1317 }, 1318 "refreshUrl": { 1319 "type": "string", 1320 "format": "uri" 1321 }, 1322 "scopes": { 1323 "$ref": "#/$defs/map-of-strings" 1324 } 1325 }, 1326 "required": [ 1327 "authorizationUrl", 1328 "scopes" 1329 ], 1330 "$ref": "#/$defs/specification-extensions", 1331 "unevaluatedProperties": false 1332 }, 1333 "password": { 1334 "type": "object", 1335 "properties": { 1336 "tokenUrl": { 1337 "type": "string", 1338 "format": "uri" 1339 }, 1340 "refreshUrl": { 1341 "type": "string", 1342 "format": "uri" 1343 }, 1344 "scopes": { 1345 "$ref": "#/$defs/map-of-strings" 1346 } 1347 }, 1348 "required": [ 1349 "tokenUrl", 1350 "scopes" 1351 ], 1352 "$ref": "#/$defs/specification-extensions", 1353 "unevaluatedProperties": false 1354 }, 1355 "client-credentials": { 1356 "type": "object", 1357 "properties": { 1358 "tokenUrl": { 1359 "type": "string", 1360 "format": "uri" 1361 }, 1362 "refreshUrl": { 1363 "type": "string", 1364 "format": "uri" 1365 }, 1366 "scopes": { 1367 "$ref": "#/$defs/map-of-strings" 1368 } 1369 }, 1370 "required": [ 1371 "tokenUrl", 1372 "scopes" 1373 ], 1374 "$ref": "#/$defs/specification-extensions", 1375 "unevaluatedProperties": false 1376 }, 1377 "authorization-code": { 1378 "type": "object", 1379 "properties": { 1380 "authorizationUrl": { 1381 "type": "string", 1382 "format": "uri" 1383 }, 1384 "tokenUrl": { 1385 "type": "string", 1386 "format": "uri" 1387 }, 1388 "refreshUrl": { 1389 "type": "string", 1390 "format": "uri" 1391 }, 1392 "scopes": { 1393 "$ref": "#/$defs/map-of-strings" 1394 } 1395 }, 1396 "required": [ 1397 "authorizationUrl", 1398 "tokenUrl", 1399 "scopes" 1400 ], 1401 "$ref": "#/$defs/specification-extensions", 1402 "unevaluatedProperties": false 1403 } 1404 } 1405 }, 1406 "security-requirement": { 1407 "$comment": "https://spec.openapis.org/oas/v3.1.0#security-requirement-object", 1408 "type": "object", 1409 "additionalProperties": { 1410 "type": "array", 1411 "items": { 1412 "type": "string" 1413 } 1414 } 1415 }, 1416 "specification-extensions": { 1417 "$comment": "https://spec.openapis.org/oas/v3.1.0#specification-extensions", 1418 "patternProperties": { 1419 "^x-": true 1420 } 1421 }, 1422 "examples": { 1423 "properties": { 1424 "example": true, 1425 "examples": { 1426 "type": "object", 1427 "additionalProperties": { 1428 "$ref": "#/$defs/example-or-reference" 1429 } 1430 } 1431 } 1432 }, 1433 "map-of-strings": { 1434 "type": "object", 1435 "additionalProperties": { 1436 "type": "string" 1437 } 1438 } 1439 } 1440} 1441