schema.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. META_SCHEMA = {
  2. "type": "object",
  3. "properties": {
  4. "type": {
  5. "type": "string",
  6. "enum": ["boolean", "integer", "number", "string", "object", "array"],
  7. },
  8. "title": {"type": "string"},
  9. "description": {"type": "string"},
  10. "label": {"type": "string"},
  11. "placeholder": {"type": "string"},
  12. "required": {"type": "boolean"},
  13. "format": {"type": "string"},
  14. "enum": {"type": "array", "items": {"type": ["integer", "number", "string"]}},
  15. "properties": {"type": "object", "patternProperties": {".*": {"$ref": "#"}}},
  16. "allOf": {"type": "array", "items": {"$ref": "#"}},
  17. # Array-specific properties
  18. "items": {"$ref": "#"},
  19. "uniqueItems": {"type": "boolean"},
  20. "minItems": {"type": "integer", "minimum": 0},
  21. "maxItems": {"type": "integer", "minimum": 0},
  22. },
  23. "allOf": [
  24. {
  25. "if": {"properties": {"type": {"const": "integer"}}},
  26. "then": {
  27. "properties": {
  28. "minimum": {"type": "integer"},
  29. "maximum": {"type": "integer"},
  30. "exclusiveMinimum": {"type": "integer"},
  31. "exclusiveMaximum": {"type": "integer"},
  32. }
  33. },
  34. },
  35. {
  36. "if": {"properties": {"type": {"const": "number"}}},
  37. "then": {
  38. "properties": {
  39. "minimum": {"type": ["integer", "number"]},
  40. "maximum": {"type": ["integer", "number"]},
  41. "exclusiveMinimum": {"type": ["integer", "number"]},
  42. "exclusiveMaximum": {"type": ["integer", "number"]},
  43. }
  44. },
  45. },
  46. {
  47. "if": {"properties": {"type": {"const": "array"}}},
  48. "then": {
  49. "required": ["items"],
  50. "properties": {
  51. "items": {
  52. "properties": {
  53. "type": {"enum": ["integer", "number", "string"]},
  54. "enum": {
  55. "type": "array",
  56. "items": {"type": ["integer", "number", "string"]},
  57. },
  58. "title": {"type": "string"},
  59. "description": {"type": "string"},
  60. "format": {"type": "string"},
  61. },
  62. "required": ["type", "enum"],
  63. "unevaluatedProperties": False,
  64. },
  65. "uniqueItems": {"type": "boolean"},
  66. "minItems": {"type": "integer", "minimum": 0},
  67. "maxItems": {"type": "integer", "minimum": 0},
  68. },
  69. },
  70. },
  71. ],
  72. "unevaluatedProperties": False,
  73. }