{
  "$schema": "http://json-schema.org/draft-07/schema",
  "$id": "https://joystream.org/CreateClass.schema.json",
  "title": "CreateClass",
  "description": "JSON schema to describe a new class for Joystream network",
  "type": "object",
  "additionalProperties": false,
  "required": ["name", "description", "maximum_entities_count", "default_entity_creation_voucher_upper_bound"],
  "properties": {
    "name": {
      "type": "string",
      "description": "Name of this class. Required property.",
      "minLength": 1,
      "maxLength": 49
    },
    "description": {
      "type": "string",
      "description": "Description of this class.",
      "minLength": 1,
      "maxLength": 500
    },
    "class_permissions": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "any_member": { "$ref": "#/definitions/DefaultBoolean" },
        "entity_creation_blocked": { "$ref": "#/definitions/DefaultBoolean" },
        "all_entity_property_values_locked": { "$ref": "#/definitions/DefaultBoolean" },
        "maintainers": {
          "type": "array",
          "uniqueItems": true,
          "items": {
            "type": "integer"
          },
          "default": []
        }
      }
    },
    "maximum_entities_count": { "type": "integer" },
    "default_entity_creation_voucher_upper_bound": { "type": "integer" }
  },
  "definitions": {
    "DefaultBoolean": {
      "type": "boolean",
      "default": false
    }
  }
}
