schema.json 30 KB

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