Types Schema#

The following is a detailed list of all available Zope Schema field types and their corresponding representation as JSON objects.

TextLine#

Zope Schema:

zope.schema.TextLine(
    title="My field",
    description="My great field",
    default="foobar"
)

JSON:

{
  "type": "string",
  "title": "My field",
  "description": "My great field",
  "default": "foobar"
}

Text#

Zope Schema:

zope.schema.Text(
    title="My field",
    description="My great field",
    default="Lorem ipsum dolor sit amet",
    min_length=10,
)

JSON:

{
  "type": "string",
  "title": "My field",
  "description": "My great field",
  "widget": "textarea",
  "default": "Lorem ipsum dolor sit amet",
  "minLength": 10
}

Bool#

Zope Schema:

zope.schema.Bool(
    title="My field",
    description="My great field",
    default=False,
)

JSON:

{
  "type": "boolean",
  "title": "My field",
  "description": "My great field",
  "default": false
}

Float#

Zope Schema:

zope.schema.Float(
    title="My field",
    description="My great field",
    min=0.0,
    max=1.0,
    default=0.5,
)

JSON:

{
  "minimum": 0.0,
  "maximum": 1.0,
  "type": "number",
  "title": "My field",
  "description": "My great field",
  "default": 0.5
}

Decimal#

Zope Schema:

zope.schema.Decimal(
    title="My field",
    description="My great field",
    min=Decimal(0),
    max=Decimal(1),
    default=Decimal(0.5),
)

JSON:

{
  "minimum": 0.0,
  "maximum": 1.0,
  "type": "number",
  "title": "My field",
  "description": "My great field",
  "default": 0.5
},

Int#

Zope Schema:

zope.schema.Int(
    title="My field",
    description="My great field",
    min=0,
    max=100,
    default=50,
)

JSON:

{
  "minimum": 0,
  "maximum": 100,
  "type": "integer",
  "title": "My field",
  "description": "My great field",
  "default": 50
}

Choice#

Zope Schema:

zope.schema.Choice(
    title="My field",
    description="My great field",
    vocabulary=self.dummy_vocabulary,
)

JSON:

{
  "type": "string",
  "title": "My field",
  "description": "My great field",
  "enum": ["foo", "bar"],
  "enumNames": ["Foo", "Bar"],
  "choices": [
    {"foo": "Foo"},
    {"bar": "Bar"}
  ]
}

List#

Zope Schema:

zope.schema.List(
    title="My field",
    description="My great field",
    min_length=1,
    value_type=schema.TextLine(
        title="Text",
        description="Text field",
        default="Default text"
    ),
    default=["foobar"],
)

JSON:

{
  "type": "array",
  "title": "My field",
  "description": "My great field",
  "default": ["foobar"],
  "minItems": 1,
  "uniqueItems": false,
  "additionalItems": true,
  "items": {
    "type": "string",
    "title": "Text",
    "description": "Text field",
    "default": "Default text"
  }
},

Tuple#

Zope Schema:

field = zope.schema.Tuple(
    title="My field",
    value_type=schema.Int(),
    default=(1, 2),
)

JSON:

{
  "type": "array",
  "title": "My field",
  "description": "",
  "uniqueItems": true,
  "additionalItems": true,
  "items": {
    "title": "",
    "description": "",
    "type": "integer"
  },
"default": [1, 2]
}

Set#

Zope Schema:

field = zope.schema.Set(
    title="My field",
    value_type=schema.TextLine(),
)

JSON:

{
  "type": "array",
  "title": "My field",
  "description": "",
  "uniqueItems": true,
  "additionalItems": true,
  "items": {
    "title": "",
    "description": "",
    "type": "string"
  }
}

List of Choices#

Zope Schema:

field = zope.schema.List(
    title="My field",
    value_type=schema.Choice(
        vocabulary=self.dummy_vocabulary,
    ),
)

JSON:

{
  "type": "array",
  "title": "My field",
  "description": "",
  "uniqueItems": true,
  "additionalItems": true,
  "items": {
    "title": "",
    "description": "",
    "type": "string",
    "enum": ["foo", "bar"],
    "enumNames": ["Foo", "Bar"],
    "choices": [
      {"foo": "Foo"},
      {"bar": "Bar"}
    ]
  }
}

Object#

Zope Schema:

zope.schema.Object(
    title="My field",
    description="My great field",
    schema=IDummySchema,
)

JSON:

{
  "type": "object",
  "title": "My field",
  "description": "My great field",
  "properties": {
    "field1": {
      "title": "Foo",
      "description": "",
      "type": "boolean"
    },
    "field2": {
      "title": "Bar",
      "description": "",
      "type": "string"
    }
  }
}

RichText (plone.app.textfield)#

Zope Schema:

from plone.app.textfield import RichText
field = RichText(
    title="My field",
    description="My great field",
)

JSON:

{
  "type": "string",
  "title": "My field",
  "description": "My great field",
  "widget": "richtext"
}

Date#

Zope Schema:

zope.schema.Date(
    title="My field",
    description="My great field",
    default=date(2016, 1, 1),
)

JSON:

{
  "type": "string",
  "title": "My field",
  "description": "My great field",
  "default": "2016-01-01",
  "widget": "date"
}

DateTime#

Zope Schema:

zope.schema.Datetime(
    title="My field",
    description="My great field",
)

JSON:

{
  "type": "string",
  "title": "My field",
  "description": "My great field",
  "widget": "datetime"
}

Email#

Zope Schema:

plone.schema.Email(
    title="My field",
    description="My great field",
)

JSON:

{
  "type": "string",
  "title": "My field",
  "description": "My great field",
  "widget": "email"
}

Password#

Zope Schema:

zope.schema.Password(
    title="My field",
    description="My great field",
)

JSON:

{
  "type": "string",
  "title": "My field",
  "description": "My great field",
  "widget": "password"
}

URI#

Zope Schema:

zope.schema.URI(
    title="My field",
    description="My great field",
)

JSON:

{
  "type": "string",
  "title": "My field",
  "description": "My great field",
  "widget": "url"
}