metaschema.json 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. {
  2. "id": "http://json-schema.org/draft-04/schema#",
  3. "$schema": "http://json-schema.org/draft-04/schema#",
  4. "description": "Core schema meta-schema",
  5. "definitions": {
  6. "schemaArray": {
  7. "type": "array",
  8. "minItems": 1,
  9. "items": { "$ref": "#" }
  10. },
  11. "positiveInteger": {
  12. "type": "integer",
  13. "minimum": 0
  14. },
  15. "positiveIntegerDefault0": {
  16. "allOf": [ { "$ref": "#/definitions/positiveInteger" }, { "default": 0 } ]
  17. },
  18. "simpleTypes": {
  19. "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ]
  20. },
  21. "stringArray": {
  22. "type": "array",
  23. "items": { "type": "string" },
  24. "minItems": 1,
  25. "uniqueItems": true
  26. }
  27. },
  28. "type": "object",
  29. "properties": {
  30. "id": {
  31. "type": "string"
  32. },
  33. "$schema": {
  34. "type": "string"
  35. },
  36. "title": {
  37. "type": "string"
  38. },
  39. "description": {
  40. "type": "string"
  41. },
  42. "default": {},
  43. "multipleOf": {
  44. "type": "number",
  45. "minimum": 0,
  46. "exclusiveMinimum": true
  47. },
  48. "maximum": {
  49. "type": "number"
  50. },
  51. "exclusiveMaximum": {
  52. "type": "boolean",
  53. "default": false
  54. },
  55. "minimum": {
  56. "type": "number"
  57. },
  58. "exclusiveMinimum": {
  59. "type": "boolean",
  60. "default": false
  61. },
  62. "maxLength": { "$ref": "#/definitions/positiveInteger" },
  63. "minLength": { "$ref": "#/definitions/positiveIntegerDefault0" },
  64. "pattern": {
  65. "type": "string",
  66. "format": "regex"
  67. },
  68. "additionalItems": {
  69. "anyOf": [
  70. { "type": "boolean" },
  71. { "$ref": "#" }
  72. ],
  73. "default": {}
  74. },
  75. "items": {
  76. "anyOf": [
  77. { "$ref": "#" },
  78. { "$ref": "#/definitions/schemaArray" }
  79. ],
  80. "default": {}
  81. },
  82. "maxItems": { "$ref": "#/definitions/positiveInteger" },
  83. "minItems": { "$ref": "#/definitions/positiveIntegerDefault0" },
  84. "uniqueItems": {
  85. "type": "boolean",
  86. "default": false
  87. },
  88. "maxProperties": { "$ref": "#/definitions/positiveInteger" },
  89. "minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" },
  90. "required": { "$ref": "#/definitions/stringArray" },
  91. "additionalProperties": {
  92. "anyOf": [
  93. { "type": "boolean" },
  94. { "$ref": "#" }
  95. ],
  96. "default": {}
  97. },
  98. "definitions": {
  99. "type": "object",
  100. "additionalProperties": { "$ref": "#" },
  101. "default": {}
  102. },
  103. "properties": {
  104. "type": "object",
  105. "additionalProperties": { "$ref": "#" },
  106. "default": {}
  107. },
  108. "patternProperties": {
  109. "type": "object",
  110. "additionalProperties": { "$ref": "#" },
  111. "default": {}
  112. },
  113. "dependencies": {
  114. "type": "object",
  115. "additionalProperties": {
  116. "anyOf": [
  117. { "$ref": "#" },
  118. { "$ref": "#/definitions/stringArray" }
  119. ]
  120. }
  121. },
  122. "enum": {
  123. "type": "array",
  124. "minItems": 1,
  125. "uniqueItems": true
  126. },
  127. "type": {
  128. "anyOf": [
  129. { "$ref": "#/definitions/simpleTypes" },
  130. {
  131. "type": "array",
  132. "items": { "$ref": "#/definitions/simpleTypes" },
  133. "minItems": 1,
  134. "uniqueItems": true
  135. }
  136. ]
  137. },
  138. "format": { "type": "string" },
  139. "allOf": { "$ref": "#/definitions/schemaArray" },
  140. "anyOf": { "$ref": "#/definitions/schemaArray" },
  141. "oneOf": { "$ref": "#/definitions/schemaArray" },
  142. "not": { "$ref": "#" }
  143. },
  144. "dependencies": {
  145. "exclusiveMaximum": [ "maximum" ],
  146. "exclusiveMinimum": [ "minimum" ]
  147. },
  148. "default": {}
  149. }