json-schema-draft-04.json 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  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. "format": "uri"
  33. },
  34. "$schema": {
  35. "type": "string",
  36. "format": "uri"
  37. },
  38. "title": {
  39. "type": "string"
  40. },
  41. "description": {
  42. "type": "string"
  43. },
  44. "default": {},
  45. "multipleOf": {
  46. "type": "number",
  47. "minimum": 0,
  48. "exclusiveMinimum": true
  49. },
  50. "maximum": {
  51. "type": "number"
  52. },
  53. "exclusiveMaximum": {
  54. "type": "boolean",
  55. "default": false
  56. },
  57. "minimum": {
  58. "type": "number"
  59. },
  60. "exclusiveMinimum": {
  61. "type": "boolean",
  62. "default": false
  63. },
  64. "maxLength": { "$ref": "#/definitions/positiveInteger" },
  65. "minLength": { "$ref": "#/definitions/positiveIntegerDefault0" },
  66. "pattern": {
  67. "type": "string",
  68. "format": "regex"
  69. },
  70. "additionalItems": {
  71. "anyOf": [
  72. { "type": "boolean" },
  73. { "$ref": "#" }
  74. ],
  75. "default": {}
  76. },
  77. "items": {
  78. "anyOf": [
  79. { "$ref": "#" },
  80. { "$ref": "#/definitions/schemaArray" }
  81. ],
  82. "default": {}
  83. },
  84. "maxItems": { "$ref": "#/definitions/positiveInteger" },
  85. "minItems": { "$ref": "#/definitions/positiveIntegerDefault0" },
  86. "uniqueItems": {
  87. "type": "boolean",
  88. "default": false
  89. },
  90. "maxProperties": { "$ref": "#/definitions/positiveInteger" },
  91. "minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" },
  92. "required": { "$ref": "#/definitions/stringArray" },
  93. "additionalProperties": {
  94. "anyOf": [
  95. { "type": "boolean" },
  96. { "$ref": "#" }
  97. ],
  98. "default": {}
  99. },
  100. "definitions": {
  101. "type": "object",
  102. "additionalProperties": { "$ref": "#" },
  103. "default": {}
  104. },
  105. "properties": {
  106. "type": "object",
  107. "additionalProperties": { "$ref": "#" },
  108. "default": {}
  109. },
  110. "patternProperties": {
  111. "type": "object",
  112. "additionalProperties": { "$ref": "#" },
  113. "default": {}
  114. },
  115. "dependencies": {
  116. "type": "object",
  117. "additionalProperties": {
  118. "anyOf": [
  119. { "$ref": "#" },
  120. { "$ref": "#/definitions/stringArray" }
  121. ]
  122. }
  123. },
  124. "enum": {
  125. "type": "array",
  126. "minItems": 1,
  127. "uniqueItems": true
  128. },
  129. "type": {
  130. "anyOf": [
  131. { "$ref": "#/definitions/simpleTypes" },
  132. {
  133. "type": "array",
  134. "items": { "$ref": "#/definitions/simpleTypes" },
  135. "minItems": 1,
  136. "uniqueItems": true
  137. }
  138. ]
  139. },
  140. "allOf": { "$ref": "#/definitions/schemaArray" },
  141. "anyOf": { "$ref": "#/definitions/schemaArray" },
  142. "oneOf": { "$ref": "#/definitions/schemaArray" },
  143. "not": { "$ref": "#" }
  144. },
  145. "dependencies": {
  146. "exclusiveMaximum": [ "maximum" ],
  147. "exclusiveMinimum": [ "minimum" ]
  148. },
  149. "default": {}
  150. }