@cloudcannon/configuration-types 0.0.52 → 0.0.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,18 +1,15 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "https://github.com/cloudcannon/configuration-types/releases/latest/download/cloudcannon-schemas.schema.json",
4
3
  "type": "object",
5
4
  "propertyNames": {
6
5
  "type": "string"
7
6
  },
8
7
  "additionalProperties": {
9
- "title": "Schema",
10
- "description": "This key defines your schemas, which are the structured data formats for your content files.",
11
8
  "type": "object",
12
9
  "properties": {
13
10
  "path": {
14
- "description": "This key defines the path to the schema file relative to the root folder of the site.",
15
11
  "type": "string",
12
+ "description": "This key defines the path to the schema file relative to the root folder of the site.",
16
13
  "documented": true,
17
14
  "title": "path",
18
15
  "markdownDescription": "This key defines the path to the schema file relative to the root folder of the site."
@@ -158,13 +155,14 @@
158
155
  "path"
159
156
  ],
160
157
  "additionalProperties": false,
158
+ "title": "Schema",
159
+ "description": "This key defines your schemas, which are the structured data formats for your content files.",
161
160
  "documented": true,
162
161
  "markdownDescription": "This key defines your schemas, which are the structured data formats for your content files."
163
162
  },
163
+ "$id": "https://github.com/cloudcannon/configuration-types/releases/latest/download/cloudcannon-schemas.schema.json",
164
164
  "definitions": {
165
165
  "icon": {
166
- "title": "Icon",
167
- "description": "Material Symbol icon names available in CloudCannon for UI elements and content previews.",
168
166
  "type": "string",
169
167
  "enum": [
170
168
  "123",
@@ -3752,12 +3750,12 @@
3752
3750
  "zoom_out",
3753
3751
  "zoom_out_map"
3754
3752
  ],
3753
+ "title": "Icon",
3754
+ "description": "Material Symbol icon names available in CloudCannon for UI elements and content previews.",
3755
3755
  "documented": false,
3756
3756
  "markdownDescription": "Material Symbol icon names available in CloudCannon for UI elements and content previews."
3757
3757
  },
3758
3758
  "type.create": {
3759
- "title": "Create",
3760
- "description": "This key defines the path to which CloudCannon will save new files in a Collection.\n\nCloudCannon generates \"Create Paths\" when you open the *Review changes* modal.\n\nFor more information, please read our documentation on [Create Paths](https://cloudcannon.com/documentation/articles/set-the-path-for-new-files/).\n\n## Examples\n\nIn this example, CloudCannon will generate a Create Path for new files in the `blog` Collection using the `date` and `title` structured data keys. For example, CloudCannon will generate a create path of `blog/2024-10-31-spooky-getaway.md` for a file with the date 31st October 2024 and the title \"Spooky Getaway\".\n\n```yaml\ncollections_config:\n blog:\n create:\n extra_data:\n filename: '{date|year}-{date|month}-{date|day}-{title}'\n path: '[relative_base_path]/{filename|slugify}.[ext]'\n```",
3761
3759
  "type": "object",
3762
3760
  "properties": {
3763
3761
  "path": {
@@ -3838,12 +3836,12 @@
3838
3836
  }
3839
3837
  },
3840
3838
  "additionalProperties": false,
3839
+ "title": "Create",
3840
+ "description": "This key defines the path to which CloudCannon will save new files in a Collection.\n\nCloudCannon generates \"Create Paths\" when you open the *Review changes* modal.\n\nFor more information, please read our documentation on [Create Paths](https://cloudcannon.com/documentation/articles/set-the-path-for-new-files/).\n\n## Examples\n\nIn this example, CloudCannon will generate a Create Path for new files in the `blog` Collection using the `date` and `title` structured data keys. For example, CloudCannon will generate a create path of `blog/2024-10-31-spooky-getaway.md` for a file with the date 31st October 2024 and the title \"Spooky Getaway\".\n\n```yaml\ncollections_config:\n blog:\n create:\n extra_data:\n filename: '{date|year}-{date|month}-{date|day}-{title}'\n path: '[relative_base_path]/{filename|slugify}.[ext]'\n```",
3841
3841
  "documented": true,
3842
3842
  "markdownDescription": "This key defines the path to which CloudCannon will save new files in a Collection.\n\nCloudCannon generates \"Create Paths\" when you open the *Review changes* modal.\n\nFor more information, please read our documentation on [Create Paths](https://cloudcannon.com/documentation/articles/set-the-path-for-new-files/).\n\n## Examples\n\nIn this example, CloudCannon will generate a Create Path for new files in the `blog` Collection using the `date` and `title` structured data keys. For example, CloudCannon will generate a create path of `blog/2024-10-31-spooky-getaway.md` for a file with the date 31st October 2024 and the title \"Spooky Getaway\".\n\n```yaml\ncollections_config:\n blog:\n create:\n extra_data:\n filename: '{date|year}-{date|month}-{date|day}-{title}'\n path: '[relative_base_path]/{filename|slugify}.[ext]'\n```"
3843
3843
  },
3844
3844
  "type._inputs": {
3845
- "title": "Inputs",
3846
- "description": "This key defines which inputs are available at a given level of the configuration cascade.\n\nThis key has no default.\n\nIf undefined at higher levels of the [configuration cascade](https://cloudcannon.com/documentation/articles/using-the-configuration-cascade/), `_inputs` will default to any\nvalues configured in the [CloudCannon configuration file](https://cloudcannon.com/documentation/articles/what-is-the-cloudcannon-configuration-file/).\n\n## Examples\n\nIn this example, we have configured the `date_created` key as a *Date and Time Input*, which will automatically populate when you create a file using this input. Editors cannot alter this input as the interface is disabled.\n\n```yaml\n_inputs:\n date_created:\n type: datetime\n label: Date of article creation\n comment: UTC +0 timezone\n context:\n open: false\n title: Help\n icon: help\n content: This date field will automatically populate when you create an article.\n hidden: false\n disabled: true\n instance_value: NOW\n cascade: true\n options:\n timezone: Etc/UTC\n```\n\nIn this example, we have configured the `blog_tags` key as a *Multiselect Input* in the `blog` Collection.\n\n```yaml\ncollections_config:\n blog:\n _inputs:\n blog_tags:\n type: multiselect\n label: Blog type\n comment: Select a blog type\n context:\n open: false\n title: Help\n icon: help\n content: |\n Blog tags help our users filter articles by topic.\n options:\n values:\n - Opinion\n - Feature\n - Resource\n```",
3847
3845
  "type": "object",
3848
3846
  "propertyNames": {
3849
3847
  "type": "string"
@@ -3851,15 +3849,14 @@
3851
3849
  "additionalProperties": {
3852
3850
  "$ref": "#/definitions/Input"
3853
3851
  },
3852
+ "title": "Inputs",
3853
+ "description": "This key defines which inputs are available at a given level of the configuration cascade.\n\nThis key has no default.\n\nIf undefined at higher levels of the [configuration cascade](https://cloudcannon.com/documentation/articles/using-the-configuration-cascade/), `_inputs` will default to any\nvalues configured in the [CloudCannon configuration file](https://cloudcannon.com/documentation/articles/what-is-the-cloudcannon-configuration-file/).\n\n## Examples\n\nIn this example, we have configured the `date_created` key as a *Date and Time Input*, which will automatically populate when you create a file using this input. Editors cannot alter this input as the interface is disabled.\n\n```yaml\n_inputs:\n date_created:\n type: datetime\n label: Date of article creation\n comment: UTC +0 timezone\n context:\n open: false\n title: Help\n icon: help\n content: This date field will automatically populate when you create an article.\n hidden: false\n disabled: true\n instance_value: NOW\n cascade: true\n options:\n timezone: Etc/UTC\n```\n\nIn this example, we have configured the `blog_tags` key as a *Multiselect Input* in the `blog` Collection.\n\n```yaml\ncollections_config:\n blog:\n _inputs:\n blog_tags:\n type: multiselect\n label: Blog type\n comment: Select a blog type\n context:\n open: false\n title: Help\n icon: help\n content: |\n Blog tags help our users filter articles by topic.\n options:\n values:\n - Opinion\n - Feature\n - Resource\n```",
3854
3854
  "documented": true,
3855
3855
  "markdownDescription": "This key defines which inputs are available at a given level of the configuration cascade.\n\nThis key has no default.\n\nIf undefined at higher levels of the [configuration cascade](https://cloudcannon.com/documentation/articles/using-the-configuration-cascade/), `_inputs` will default to any\nvalues configured in the [CloudCannon configuration file](https://cloudcannon.com/documentation/articles/what-is-the-cloudcannon-configuration-file/).\n\n## Examples\n\nIn this example, we have configured the `date_created` key as a *Date and Time Input*, which will automatically populate when you create a file using this input. Editors cannot alter this input as the interface is disabled.\n\n```yaml\n_inputs:\n date_created:\n type: datetime\n label: Date of article creation\n comment: UTC +0 timezone\n context:\n open: false\n title: Help\n icon: help\n content: This date field will automatically populate when you create an article.\n hidden: false\n disabled: true\n instance_value: NOW\n cascade: true\n options:\n timezone: Etc/UTC\n```\n\nIn this example, we have configured the `blog_tags` key as a *Multiselect Input* in the `blog` Collection.\n\n```yaml\ncollections_config:\n blog:\n _inputs:\n blog_tags:\n type: multiselect\n label: Blog type\n comment: Select a blog type\n context:\n open: false\n title: Help\n icon: help\n content: |\n Blog tags help our users filter articles by topic.\n options:\n values:\n - Opinion\n - Feature\n - Resource\n```"
3856
3856
  },
3857
3857
  "Input": {
3858
- "title": "Input",
3859
3858
  "anyOf": [
3860
3859
  {
3861
- "title": "Known Input",
3862
- "description": "This key defines an input configuration at a given level of the configuration cascade.\n\nThe value is an object that can contain `type`, `label`, `options`, `disabled`, `hidden`, and other input-specific properties. Each input configuration defines how team members interact with data in the *Data Editor*.\n\nFor more information, please read our documentation on [inputs](https://cloudcannon.com/documentation/articles/what-are-inputs/).\n\n## Examples\n\nIn this example, we have configured the `title` key as a *Text Input* in the `blog` Collection.\n\n```yaml\ncollections_config:\n blog:\n _inputs:\n title:\n type: text\n label: Title\n```",
3863
3860
  "oneOf": [
3864
3861
  {
3865
3862
  "$ref": "#/definitions/TextInput"
@@ -3919,6 +3916,8 @@
3919
3916
  "$ref": "#/definitions/AutoInput"
3920
3917
  }
3921
3918
  ],
3919
+ "title": "Known Input",
3920
+ "description": "This key defines an input configuration at a given level of the configuration cascade.\n\nThe value is an object that can contain `type`, `label`, `options`, `disabled`, `hidden`, and other input-specific properties. Each input configuration defines how team members interact with data in the *Data Editor*.\n\nFor more information, please read our documentation on [inputs](https://cloudcannon.com/documentation/articles/what-are-inputs/).\n\n## Examples\n\nIn this example, we have configured the `title` key as a *Text Input* in the `blog` Collection.\n\n```yaml\ncollections_config:\n blog:\n _inputs:\n title:\n type: text\n label: Title\n```",
3922
3921
  "documented": true,
3923
3922
  "markdownDescription": "This key defines an input configuration at a given level of the configuration cascade.\n\nThe value is an object that can contain `type`, `label`, `options`, `disabled`, `hidden`, and other input-specific properties. Each input configuration defines how team members interact with data in the *Data Editor*.\n\nFor more information, please read our documentation on [inputs](https://cloudcannon.com/documentation/articles/what-are-inputs/).\n\n## Examples\n\nIn this example, we have configured the `title` key as a *Text Input* in the `blog` Collection.\n\n```yaml\ncollections_config:\n blog:\n _inputs:\n title:\n type: text\n label: Title\n```"
3924
3923
  },
@@ -3926,13 +3925,12 @@
3926
3925
  "$ref": "#/definitions/UnknownInput"
3927
3926
  }
3928
3927
  ],
3928
+ "title": "Input",
3929
3929
  "documented": true,
3930
3930
  "description": "This key defines an input configuration at a given level of the configuration cascade.\n\nThe value is an object that can contain `type`, `label`, `options`, `disabled`, `hidden`, and other input-specific properties. Each input configuration defines how team members interact with data in the *Data Editor*.\n\nFor more information, please read our documentation on [inputs](https://cloudcannon.com/documentation/articles/what-are-inputs/).\n\n## Examples\n\nIn this example, we have configured the `title` key as a *Text Input* in the `blog` Collection.\n\n```yaml\ncollections_config:\n blog:\n _inputs:\n title:\n type: text\n label: Title\n```",
3931
3931
  "markdownDescription": "This key defines an input configuration at a given level of the configuration cascade.\n\nThe value is an object that can contain `type`, `label`, `options`, `disabled`, `hidden`, and other input-specific properties. Each input configuration defines how team members interact with data in the *Data Editor*.\n\nFor more information, please read our documentation on [inputs](https://cloudcannon.com/documentation/articles/what-are-inputs/).\n\n## Examples\n\nIn this example, we have configured the `title` key as a *Text Input* in the `blog` Collection.\n\n```yaml\ncollections_config:\n blog:\n _inputs:\n title:\n type: text\n label: Title\n```"
3932
3932
  },
3933
3933
  "TextInput": {
3934
- "title": "Text Input",
3935
- "description": "This key defines a simple editing interface for plain text.\n\n## Examples\n\nIn this example, we have configured the `title` key as a *Text Input*.\n\n```yaml\n_inputs:\n title:\n type: text\n label: Blog Title\n```",
3936
3934
  "type": "object",
3937
3935
  "properties": {
3938
3936
  "comment": {
@@ -3977,8 +3975,6 @@
3977
3975
  "$ref": "#/definitions/type._inputs.*.cascade"
3978
3976
  },
3979
3977
  "type": {
3980
- "title": "Type",
3981
- "description": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `title` key as a *Text Input* type.\n\n```yaml\n_inputs:\n title:\n type: text\n```",
3982
3978
  "type": "string",
3983
3979
  "enum": [
3984
3980
  "text",
@@ -3990,11 +3986,12 @@
3990
3986
  "github",
3991
3987
  "instagram"
3992
3988
  ],
3989
+ "title": "Type",
3990
+ "description": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `title` key as a *Text Input* type.\n\n```yaml\n_inputs:\n title:\n type: text\n```",
3993
3991
  "documented": true,
3994
3992
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `title` key as a *Text Input* type.\n\n```yaml\n_inputs:\n title:\n type: text\n```"
3995
3993
  },
3996
3994
  "options": {
3997
- "description": "This key defines options that are specific to Text Inputs.\n\n## Examples\n\nIn this example, we have configured *Text Input* options including comment and icon.\n\n```yaml\n_inputs:\n title:\n type: text\n options:\n comment: Enter a title\n icon: title\n```",
3998
3995
  "type": "object",
3999
3996
  "properties": {
4000
3997
  "max_length": {
@@ -4009,6 +4006,33 @@
4009
4006
  "min_length_message": {
4010
4007
  "$ref": "#/definitions/type._inputs.*.options.min_length_message"
4011
4008
  },
4009
+ "max_words": {
4010
+ "$ref": "#/definitions/type._inputs.*.options.max_words"
4011
+ },
4012
+ "max_words_message": {
4013
+ "$ref": "#/definitions/type._inputs.*.options.max_words_message"
4014
+ },
4015
+ "min_words": {
4016
+ "$ref": "#/definitions/type._inputs.*.options.min_words"
4017
+ },
4018
+ "min_words_message": {
4019
+ "$ref": "#/definitions/type._inputs.*.options.min_words_message"
4020
+ },
4021
+ "max_graphemes": {
4022
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes"
4023
+ },
4024
+ "max_graphemes_message": {
4025
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes_message"
4026
+ },
4027
+ "min_graphemes": {
4028
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes"
4029
+ },
4030
+ "min_graphemes_message": {
4031
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes_message"
4032
+ },
4033
+ "locale": {
4034
+ "$ref": "#/definitions/type._inputs.*.options.locale"
4035
+ },
4012
4036
  "pattern": {
4013
4037
  "$ref": "#/definitions/type._inputs.*.options.pattern"
4014
4038
  },
@@ -4075,6 +4099,7 @@
4075
4099
  }
4076
4100
  },
4077
4101
  "additionalProperties": false,
4102
+ "description": "This key defines options that are specific to Text Inputs.\n\n## Examples\n\nIn this example, we have configured *Text Input* options including comment and icon.\n\n```yaml\n_inputs:\n title:\n type: text\n options:\n comment: Enter a title\n icon: title\n```",
4078
4103
  "documented": true,
4079
4104
  "title": "options",
4080
4105
  "markdownDescription": "This key defines options that are specific to Text Inputs.\n\n## Examples\n\nIn this example, we have configured *Text Input* options including comment and icon.\n\n```yaml\n_inputs:\n title:\n type: text\n options:\n comment: Enter a title\n icon: title\n```"
@@ -4084,6 +4109,8 @@
4084
4109
  "type"
4085
4110
  ],
4086
4111
  "additionalProperties": false,
4112
+ "title": "Text Input",
4113
+ "description": "This key defines a simple editing interface for plain text.\n\n## Examples\n\nIn this example, we have configured the `title` key as a *Text Input*.\n\n```yaml\n_inputs:\n title:\n type: text\n label: Blog Title\n```",
4087
4114
  "documented": true,
4088
4115
  "markdownDescription": "This key defines a simple editing interface for plain text.\n\n## Examples\n\nIn this example, we have configured the `title` key as a *Text Input*.\n\n```yaml\n_inputs:\n title:\n type: text\n label: Blog Title\n```"
4089
4116
  },
@@ -4095,7 +4122,6 @@
4095
4122
  "markdownDescription": "This key defines the subtitle text above an Input.\n\nCloudCannon supports a limited selection of Markdown formatting for the value of this key: links, bold, italic, subscript, superscript, and inline\ncode.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we want to add helpful guidance for our `page_description` Input.\n\n```yaml\n_inputs:\n page_description:\n type: text\n label: Page Description\n comment: Enter a brief description of this page for search engines\n```"
4096
4123
  },
4097
4124
  "type._inputs.*.context": {
4098
- "description": "This key defines a context box for extra information about an Input.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we want to add a context box to our `date_created` Input to explain its purpose.\n\n```yaml\n_inputs:\n date_created:\n type: datetime\n label: Date of article creation\n instance_value: NOW\n context:\n open: false\n title: Help\n icon: help\n content: This date field will automatically populate when you create an article.\n```",
4099
4125
  "type": "object",
4100
4126
  "properties": {
4101
4127
  "content": {
@@ -4133,18 +4159,17 @@
4133
4159
  }
4134
4160
  },
4135
4161
  "additionalProperties": false,
4162
+ "description": "This key defines a context box for extra information about an Input.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we want to add a context box to our `date_created` Input to explain its purpose.\n\n```yaml\n_inputs:\n date_created:\n type: datetime\n label: Date of article creation\n instance_value: NOW\n context:\n open: false\n title: Help\n icon: help\n content: This date field will automatically populate when you create an article.\n```",
4136
4163
  "documented": true,
4137
4164
  "title": "context",
4138
4165
  "markdownDescription": "This key defines a context box for extra information about an Input.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we want to add a context box to our `date_created` Input to explain its purpose.\n\n```yaml\n_inputs:\n date_created:\n type: datetime\n label: Date of article creation\n instance_value: NOW\n context:\n open: false\n title: Help\n icon: help\n content: This date field will automatically populate when you create an article.\n```"
4139
4166
  },
4140
4167
  "type.documentation": {
4141
- "title": "Documentation",
4142
- "description": "This key defines the documentation link at the top of a *Collection browser*.\n\nCollection documentation is useful for assisting your team members.\n\n## Examples\n\nIn this example, the documentation link for the `data` Collection goes to [CloudCannon Documentation](https://cloudcannon.com/documentation/).\n\n```yaml\ncollections_config:\n data:\n documentation:\n url: https://cloudcannon.com/documentation/\n text: CloudCannon Documentation\n icon: star\n```",
4143
4168
  "type": "object",
4144
4169
  "properties": {
4145
4170
  "url": {
4146
- "description": "This key defines the URL for the documentation link at the top of a *Collection browser*.\n\nYou must define this key for the\n`documentation` object to function.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we have configured the `blog` Collection documentation link to go to `example.com`.\n\n```yaml\ncollections_config:\n blog:\n documentation:\n url: https://example.com\n```",
4147
4171
  "type": "string",
4172
+ "description": "This key defines the URL for the documentation link at the top of a *Collection browser*.\n\nYou must define this key for the\n`documentation` object to function.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we have configured the `blog` Collection documentation link to go to `example.com`.\n\n```yaml\ncollections_config:\n blog:\n documentation:\n url: https://example.com\n```",
4148
4173
  "documented": true,
4149
4174
  "title": "url",
4150
4175
  "markdownDescription": "This key defines the URL for the documentation link at the top of a *Collection browser*.\n\nYou must define this key for the\n`documentation` object to function.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we have configured the `blog` Collection documentation link to go to `example.com`.\n\n```yaml\ncollections_config:\n blog:\n documentation:\n url: https://example.com\n```"
@@ -4173,6 +4198,8 @@
4173
4198
  "url"
4174
4199
  ],
4175
4200
  "additionalProperties": false,
4201
+ "title": "Documentation",
4202
+ "description": "This key defines the documentation link at the top of a *Collection browser*.\n\nCollection documentation is useful for assisting your team members.\n\n## Examples\n\nIn this example, the documentation link for the `data` Collection goes to [CloudCannon Documentation](https://cloudcannon.com/documentation/).\n\n```yaml\ncollections_config:\n data:\n documentation:\n url: https://cloudcannon.com/documentation/\n text: CloudCannon Documentation\n icon: star\n```",
4176
4203
  "documented": true,
4177
4204
  "markdownDescription": "This key defines the documentation link at the top of a *Collection browser*.\n\nCollection documentation is useful for assisting your team members.\n\n## Examples\n\nIn this example, the documentation link for the `data` Collection goes to [CloudCannon Documentation](https://cloudcannon.com/documentation/).\n\n```yaml\ncollections_config:\n data:\n documentation:\n url: https://cloudcannon.com/documentation/\n text: CloudCannon Documentation\n icon: star\n```"
4178
4205
  },
@@ -4188,15 +4215,15 @@
4188
4215
  "default": false,
4189
4216
  "anyOf": [
4190
4217
  {
4191
- "title": "Boolean Hidden",
4192
4218
  "type": "boolean",
4219
+ "title": "Boolean Hidden",
4193
4220
  "documented": true,
4194
4221
  "description": "This key represents a boolean value for the `hidden` key that toggles whether CloudCannon hides an input from view.\n\nWhen set to `true`, CloudCannon hides the input from the *Data Editor* and the sidebar of the *Visual Editor* or *Content Editor*. The input still exists in the file and can be edited in the *Source Editor*.\n\nWhen set to `false`, CloudCannon displays the input normally.\n\nBy default, this key follows the input naming convention where key names beginning with an underscore are hidden (`true`). Otherwise, this key defaults to `false` (i.e., the input is visible).\n\n## Examples\n\nIn this example, we have configured an input to be hidden using a boolean value, making it only editable in the *Source Editor*.\n\n```yaml\n_inputs:\n internal_id:\n type: text\n label: Internal ID\n hidden: true\n```",
4195
4222
  "markdownDescription": "This key represents a boolean value for the `hidden` key that toggles whether CloudCannon hides an input from view.\n\nWhen set to `true`, CloudCannon hides the input from the *Data Editor* and the sidebar of the *Visual Editor* or *Content Editor*. The input still exists in the file and can be edited in the *Source Editor*.\n\nWhen set to `false`, CloudCannon displays the input normally.\n\nBy default, this key follows the input naming convention where key names beginning with an underscore are hidden (`true`). Otherwise, this key defaults to `false` (i.e., the input is visible).\n\n## Examples\n\nIn this example, we have configured an input to be hidden using a boolean value, making it only editable in the *Source Editor*.\n\n```yaml\n_inputs:\n internal_id:\n type: text\n label: Internal ID\n hidden: true\n```"
4196
4223
  },
4197
4224
  {
4198
- "title": "Query String Hidden",
4199
4225
  "type": "string",
4226
+ "title": "Query String Hidden",
4200
4227
  "documented": true,
4201
4228
  "description": "This key represents a query string value for the `hidden` key that conditionally hides an input based on another input's value.\n\nThe value is a string that references a sibling input key name. CloudCannon evaluates the referenced input's value to determine whether to hide this input.\n\nWhen the referenced input is truthy, CloudCannon hides this input. You can reverse this behavior by prefixing the string with `!`.\n\nFor reverse values in YAML files, the string should be wrapped in single or double quotation marks.\n\n## Examples\n\nIn this example, we have configured an input to be hidden when the `published` input is truthy.\n\n```yaml\n_inputs:\n published:\n type: checkbox\n label: Published\n draft_notes:\n type: textarea\n label: Draft notes\n hidden: published\n```\n\nIn this example, we have configured an input to be hidden when the `published` input is falsy using the `!` prefix.\n\n```yaml\n_inputs:\n published:\n type: checkbox\n label: Published\n publish_date:\n type: datetime\n label: Publish date\n hidden: '!published'\n```",
4202
4229
  "markdownDescription": "This key represents a query string value for the `hidden` key that conditionally hides an input based on another input's value.\n\nThe value is a string that references a sibling input key name. CloudCannon evaluates the referenced input's value to determine whether to hide this input.\n\nWhen the referenced input is truthy, CloudCannon hides this input. You can reverse this behavior by prefixing the string with `!`.\n\nFor reverse values in YAML files, the string should be wrapped in single or double quotation marks.\n\n## Examples\n\nIn this example, we have configured an input to be hidden when the `published` input is truthy.\n\n```yaml\n_inputs:\n published:\n type: checkbox\n label: Published\n draft_notes:\n type: textarea\n label: Draft notes\n hidden: published\n```\n\nIn this example, we have configured an input to be hidden when the `published` input is falsy using the `!` prefix.\n\n```yaml\n_inputs:\n published:\n type: checkbox\n label: Published\n publish_date:\n type: datetime\n label: Publish date\n hidden: '!published'\n```"
@@ -4211,15 +4238,15 @@
4211
4238
  "default": false,
4212
4239
  "anyOf": [
4213
4240
  {
4214
- "title": "Boolean",
4215
4241
  "type": "boolean",
4242
+ "title": "Boolean",
4216
4243
  "documented": true,
4217
4244
  "description": "This key represents a boolean value for the `disabled` key that toggles whether CloudCannon prevents editing of an input value.\n\nWhen set to `true`, CloudCannon prevents team members from editing the input value in the *Data Editor* or the sidebar of the *Visual Editor* or *Content Editor*. The input value is still displayed but cannot be modified outside of the *Source Editor*.\n\nWhen set to `false`, team members can edit the input value normally.\n\nBy default, this key is `false` (i.e., team members can edit input values).\n\n## Examples\n\nIn this example, we have configured a datetime input to be disabled using a boolean value, preventing editors from modifying the automatically generated date.\n\n```yaml\n_inputs:\n date_created:\n type: datetime\n label: Date of article creation\n disabled: true\n instance_value: NOW\n```",
4218
4245
  "markdownDescription": "This key represents a boolean value for the `disabled` key that toggles whether CloudCannon prevents editing of an input value.\n\nWhen set to `true`, CloudCannon prevents team members from editing the input value in the *Data Editor* or the sidebar of the *Visual Editor* or *Content Editor*. The input value is still displayed but cannot be modified outside of the *Source Editor*.\n\nWhen set to `false`, team members can edit the input value normally.\n\nBy default, this key is `false` (i.e., team members can edit input values).\n\n## Examples\n\nIn this example, we have configured a datetime input to be disabled using a boolean value, preventing editors from modifying the automatically generated date.\n\n```yaml\n_inputs:\n date_created:\n type: datetime\n label: Date of article creation\n disabled: true\n instance_value: NOW\n```"
4219
4246
  },
4220
4247
  {
4221
- "title": "Query String",
4222
4248
  "type": "string",
4249
+ "title": "Query String",
4223
4250
  "documented": true,
4224
4251
  "description": "This key represents a query string value for the `disabled` key that conditionally prevents editing of an input value based on another input's value.\n\nThe value is a string that references a sibling input key name. CloudCannon evaluates the referenced input's value to determine whether to disable this input.\n\nWhen the referenced input is truthy, CloudCannon disables this input. You can reverse this behavior by prefixing the string with `!`.\n\nFor reverse values in YAML files, the string should be wrapped in single or double quotation marks.\n\n## Examples\n\nIn this example, we have configured an input to be disabled when the `published` input is truthy.\n\n```yaml\n_inputs:\n published:\n type: checkbox\n label: Published\n edit_date:\n type: datetime\n label: Last edited\n disabled: published\n```\n\nIn this example, we have configured an input to be disabled when the `published` input is falsy using the `!` prefix.\n\n```yaml\n_inputs:\n published:\n type: checkbox\n label: Published\n draft_notes:\n type: textarea\n label: Draft notes\n disabled: '!published'\n```",
4225
4252
  "markdownDescription": "This key represents a query string value for the `disabled` key that conditionally prevents editing of an input value based on another input's value.\n\nThe value is a string that references a sibling input key name. CloudCannon evaluates the referenced input's value to determine whether to disable this input.\n\nWhen the referenced input is truthy, CloudCannon disables this input. You can reverse this behavior by prefixing the string with `!`.\n\nFor reverse values in YAML files, the string should be wrapped in single or double quotation marks.\n\n## Examples\n\nIn this example, we have configured an input to be disabled when the `published` input is truthy.\n\n```yaml\n_inputs:\n published:\n type: checkbox\n label: Published\n edit_date:\n type: datetime\n label: Last edited\n disabled: published\n```\n\nIn this example, we have configured an input to be disabled when the `published` input is falsy using the `!` prefix.\n\n```yaml\n_inputs:\n published:\n type: checkbox\n label: Published\n draft_notes:\n type: textarea\n label: Draft notes\n disabled: '!published'\n```"
@@ -4284,6 +4311,69 @@
4284
4311
  "title": "min_length_message",
4285
4312
  "markdownDescription": "This key defines a custom error message that explains why a value has failed the validation criteria from `options.min_length`.\n\nThis key requires you to define `options.min_length`.\n\nThis key has no default.\n\nThis key is available for Code, Color, File, Select, Text, Rich Text, and URL Inputs.\n\n## Examples\n\nIn this example, we prompt our team to enter a valid number of characters using a custom message.\n\n```yaml\n_inputs:\n seo_description:\n type: markdown\n comment: Enter a brief description of this blog.\n options:\n max_length: 125\n max_length_message: You are only allowed 125 characters.\n min_length: 25\n min_length_message: Please write more than 25 characters.\n```"
4286
4313
  },
4314
+ "type._inputs.*.options.max_words": {
4315
+ "description": "This key defines the maximum string length, in words, that CloudCannon will allow in an Input. When configured, CloudCannon will warn you when an Input value is too long. If the Input already contains a longer value, CloudCannon will require you to remove characters until the Input contains a valid string to save your changes, or discard your unsaved changes.",
4316
+ "type": "number",
4317
+ "documented": true,
4318
+ "title": "max_words",
4319
+ "markdownDescription": "This key defines the maximum string length, in words, that CloudCannon will allow in an Input. When configured, CloudCannon will warn you when an Input value is too long. If the Input already contains a longer value, CloudCannon will require you to remove characters until the Input contains a valid string to save your changes, or discard your unsaved changes."
4320
+ },
4321
+ "type._inputs.*.options.max_words_message": {
4322
+ "description": "This key defines the message that explains which maximum string length an Input will accept. This key requires you to define `options.max_words.",
4323
+ "type": "string",
4324
+ "documented": true,
4325
+ "title": "max_words_message",
4326
+ "markdownDescription": "This key defines the message that explains which maximum string length an Input will accept. This key requires you to define `options.max_words."
4327
+ },
4328
+ "type._inputs.*.options.min_words": {
4329
+ "description": "This key defines the minimum string length, in words, that CloudCannon will allow in an Input. When configured, CloudCannon will warn you when an Input value is too short. If the Input already contains a shorter value, CloudCannon will require you to add characters until the Input contains a valid string to save your changes, or discard your unsaved changes.",
4330
+ "type": "number",
4331
+ "documented": true,
4332
+ "title": "min_words",
4333
+ "markdownDescription": "This key defines the minimum string length, in words, that CloudCannon will allow in an Input. When configured, CloudCannon will warn you when an Input value is too short. If the Input already contains a shorter value, CloudCannon will require you to add characters until the Input contains a valid string to save your changes, or discard your unsaved changes."
4334
+ },
4335
+ "type._inputs.*.options.min_words_message": {
4336
+ "description": "This key defines the message that explains which minimum string length an Input will accept. This key requires you to define `options.min_words`.",
4337
+ "type": "string",
4338
+ "documented": true,
4339
+ "title": "min_words_message",
4340
+ "markdownDescription": "This key defines the message that explains which minimum string length an Input will accept. This key requires you to define `options.min_words`."
4341
+ },
4342
+ "type._inputs.*.options.max_graphemes": {
4343
+ "description": "This key defines the maximum string length, in graphemes, that CloudCannon will allow in an Input. When configured, CloudCannon will warn you when an Input value is too long. If the Input already contains a longer value, CloudCannon will require you to remove characters until the Input contains a valid string to save your changes, or discard your unsaved changes.",
4344
+ "type": "number",
4345
+ "documented": true,
4346
+ "title": "max_graphemes",
4347
+ "markdownDescription": "This key defines the maximum string length, in graphemes, that CloudCannon will allow in an Input. When configured, CloudCannon will warn you when an Input value is too long. If the Input already contains a longer value, CloudCannon will require you to remove characters until the Input contains a valid string to save your changes, or discard your unsaved changes."
4348
+ },
4349
+ "type._inputs.*.options.max_graphemes_message": {
4350
+ "description": "This key defines the message that explains which maximum string length an Input will accept. This key requires you to define `options.max_graphemes.",
4351
+ "type": "string",
4352
+ "documented": true,
4353
+ "title": "max_graphemes_message",
4354
+ "markdownDescription": "This key defines the message that explains which maximum string length an Input will accept. This key requires you to define `options.max_graphemes."
4355
+ },
4356
+ "type._inputs.*.options.min_graphemes": {
4357
+ "description": "This key defines the minimum string length, in graphemes, that CloudCannon will allow in an Input. When configured, CloudCannon will warn you when an Input value is too short. If the Input already contains a shorter value, CloudCannon will require you to add characters until the Input contains a valid string to save your changes, or discard your unsaved changes.",
4358
+ "type": "number",
4359
+ "documented": true,
4360
+ "title": "min_graphemes",
4361
+ "markdownDescription": "This key defines the minimum string length, in graphemes, that CloudCannon will allow in an Input. When configured, CloudCannon will warn you when an Input value is too short. If the Input already contains a shorter value, CloudCannon will require you to add characters until the Input contains a valid string to save your changes, or discard your unsaved changes."
4362
+ },
4363
+ "type._inputs.*.options.min_graphemes_message": {
4364
+ "description": "This key defines the message that explains which minimum string length an Input will accept. This key requires you to define `options.min_graphemes`.",
4365
+ "type": "string",
4366
+ "documented": true,
4367
+ "title": "min_graphemes_message",
4368
+ "markdownDescription": "This key defines the message that explains which minimum string length an Input will accept. This key requires you to define `options.min_graphemes`."
4369
+ },
4370
+ "type._inputs.*.options.locale": {
4371
+ "description": "This key defines the locale that CloudCannon uses to determine the number of words or graphemes in this Input, if you have `max_words`, `min_words`, `max_graphemes`, or `min_graphemes` configured.",
4372
+ "type": "string",
4373
+ "documented": true,
4374
+ "title": "locale",
4375
+ "markdownDescription": "This key defines the locale that CloudCannon uses to determine the number of words or graphemes in this Input, if you have `max_words`, `min_words`, `max_graphemes`, or `min_graphemes` configured."
4376
+ },
4287
4377
  "type._inputs.*.options.pattern": {
4288
4378
  "description": "This key defines a [regular expression](https://re2js.leopard.in.ua/) that the Input value must match.\n\nWhen configured, CloudCannon will require you to enter a value that matches the REGEX pattern.\n\nIf the Input already contains an invalid value, CloudCannon will require you to enter a valid string to save your changes, or discard your unsaved\nchanges.\n\nValue must be a valid REGEX string.\n\nIf your REGEX string includes a `\\` character and CloudCannon Configuration File is a `.yml` file, use single quotes `'` around the string to avoid a\nbuild error.\n\nThis key has no default.\n\nThis key is available for Code, Color, File, Select, Text, Rich Text, and URL Inputs.\n\nTo use this key in a Select Input, `allow_create` must be set to `true`.\n\n## Examples\n\nIn this example, we want our team to add an email address to the `contact_email` Input using the correct email format.\n\n```yaml\n_inputs:\n contact_email:\n type: email\n options:\n pattern: '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}'\n pattern_message: 'Please use the format ___@___.__'\n```",
4289
4379
  "type": "string",
@@ -4372,8 +4462,8 @@
4372
4462
  "markdownDescription": "This key defines a custom error message that explains why a value has failed the validation criteria from `options.required`.\n\nThis key requires you to define `options.required`.\n\nThis key has no default.\n\nThis key is available for Array, Code, Color, Date and Time, File, Number, Object, Select and Multiselect, Text, Rich Text, and URL Inputs.\n\n## Examples\n\nIn this example, we prompt our team to use enter an Input value using a required message.\n\n```yaml\n_inputs:\n author:\n type: text\n comment: Enter the name of the author for this blog post.\n options:\n required: true\n required_message: You are not allowed to leave this blank.\n```"
4373
4463
  },
4374
4464
  "type._inputs.*.options.empty_type(text)": {
4375
- "description": "This key defines how an 'empty' value will be saved. Does not apply to existing empty values.",
4376
4465
  "default": "null",
4466
+ "description": "This key defines how an 'empty' value will be saved. Does not apply to existing empty values.",
4377
4467
  "type": "string",
4378
4468
  "enum": [
4379
4469
  "null",
@@ -4399,17 +4489,16 @@
4399
4489
  "title": "icon_color(previewentries)"
4400
4490
  },
4401
4491
  "type.preview-entry.(array)": {
4402
- "title": "Array Preview Entry",
4403
4492
  "type": "array",
4404
4493
  "items": {
4405
4494
  "$ref": "#/definitions/type.preview-entry"
4406
4495
  },
4496
+ "title": "Array Preview Entry",
4407
4497
  "documented": true,
4408
4498
  "description": "This key represents an array of preview entries for displaying data on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\nThe value is an array of preview entry objects, strings, or `false` values. Each preview entry object can contain a `key`, `template`, or `text` property. When multiple entries are provided, CloudCannon will use them in order as fallback options.\n\n## Examples\n\nIn this example, we have configured an array of preview entries with an array of values to provide fallback options. CloudCannon will use the value of `title` first, then the `{name}` template, and finally fall back to the static text value.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - key: title\n - template: '{name}'\n - text: 'Untitled'\n```",
4409
4499
  "markdownDescription": "This key represents an array of preview entries for displaying data on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\nThe value is an array of preview entry objects, strings, or `false` values. Each preview entry object can contain a `key`, `template`, or `text` property. When multiple entries are provided, CloudCannon will use them in order as fallback options.\n\n## Examples\n\nIn this example, we have configured an array of preview entries with an array of values to provide fallback options. CloudCannon will use the value of `title` first, then the `{name}` template, and finally fall back to the static text value.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - key: title\n - template: '{name}'\n - text: 'Untitled'\n```"
4410
4500
  },
4411
4501
  "type.preview-entry": {
4412
- "title": "Preview Entry",
4413
4502
  "anyOf": [
4414
4503
  {
4415
4504
  "$ref": "#/definitions/type.preview-entry.(key)"
@@ -4427,17 +4516,17 @@
4427
4516
  "$ref": "#/definitions/type.preview-entry.(false)"
4428
4517
  }
4429
4518
  ],
4519
+ "title": "Preview Entry",
4430
4520
  "documented": true,
4431
4521
  "description": "This key defines a preview entry configuration for displaying data on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\nThe value can be an object with a `key`, `template`, or `text` property, a raw text string, `false`, or an array of these values. When multiple entries are provided, CloudCannon will use them in order as fallback options. Preview entries are used to configure how data is displayed in card previews.\n\n## Examples\n\nIn this example, we have configured a preview entry with an array of values to provide fallback options. CloudCannon will use the value of `title` first, then the `{name}` template, and finally fall back to the static text value.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - key: title\n - template: '{name}'\n - text: 'Untitled'\n```\n\nIn this example, we have configured a preview entry to display the `title` key.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - key: title\n```",
4432
4522
  "markdownDescription": "This key defines a preview entry configuration for displaying data on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\nThe value can be an object with a `key`, `template`, or `text` property, a raw text string, `false`, or an array of these values. When multiple entries are provided, CloudCannon will use them in order as fallback options. Preview entries are used to configure how data is displayed in card previews.\n\n## Examples\n\nIn this example, we have configured a preview entry with an array of values to provide fallback options. CloudCannon will use the value of `title` first, then the `{name}` template, and finally fall back to the static text value.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - key: title\n - template: '{name}'\n - text: 'Untitled'\n```\n\nIn this example, we have configured a preview entry to display the `title` key.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - key: title\n```"
4433
4523
  },
4434
4524
  "type.preview-entry.(key)": {
4435
- "title": "Key Preview Entry",
4436
4525
  "type": "object",
4437
4526
  "properties": {
4438
4527
  "key": {
4439
- "title": "Key Value",
4440
4528
  "type": "string",
4529
+ "title": "Key Value",
4441
4530
  "documented": true,
4442
4531
  "description": "This key defines the data key name to display in a key preview entry.\n\nThe value is a string that specifies the name of a data key whose value will be displayed on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\n## Examples\n\nIn this example, we have configured the key value to display the `title` field.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - key: title\n```",
4443
4532
  "markdownDescription": "This key defines the data key name to display in a key preview entry.\n\nThe value is a string that specifies the name of a data key whose value will be displayed on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\n## Examples\n\nIn this example, we have configured the key value to display the `title` field.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - key: title\n```"
@@ -4447,17 +4536,17 @@
4447
4536
  "key"
4448
4537
  ],
4449
4538
  "additionalProperties": false,
4539
+ "title": "Key Preview Entry",
4450
4540
  "documented": true,
4451
4541
  "description": "This key represents a key preview entry type for displaying data from a specific key on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\nThe value is an object that contains a `key` property with a string value. This displays the value of the specified data key in card previews.\n\n## Examples\n\nIn this example, we have configured a key preview entry to display the `title` key.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - key: title\n```",
4452
4542
  "markdownDescription": "This key represents a key preview entry type for displaying data from a specific key on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\nThe value is an object that contains a `key` property with a string value. This displays the value of the specified data key in card previews.\n\n## Examples\n\nIn this example, we have configured a key preview entry to display the `title` key.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - key: title\n```"
4453
4543
  },
4454
4544
  "type.preview-entry.(template)": {
4455
- "title": "Template Preview Entry",
4456
4545
  "type": "object",
4457
4546
  "properties": {
4458
4547
  "template": {
4459
- "title": "Template Value",
4460
4548
  "type": "string",
4549
+ "title": "Template Value",
4461
4550
  "documented": true,
4462
4551
  "description": "This key defines the template string to use in a template preview entry.\n\nThe value is a string that specifies a template with placeholders (e.g., `{name}`, `{date}`) that will be replaced with data values when displayed on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\n## Examples\n\nIn this example, we have configured the template value to display author and date.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - template: '{author} - {date}'\n```",
4463
4552
  "markdownDescription": "This key defines the template string to use in a template preview entry.\n\nThe value is a string that specifies a template with placeholders (e.g., `{name}`, `{date}`) that will be replaced with data values when displayed on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\n## Examples\n\nIn this example, we have configured the template value to display author and date.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - template: '{author} - {date}'\n```"
@@ -4467,17 +4556,17 @@
4467
4556
  "template"
4468
4557
  ],
4469
4558
  "additionalProperties": false,
4559
+ "title": "Template Preview Entry",
4470
4560
  "documented": true,
4471
4561
  "description": "This key represents a template preview entry type for displaying formatted text using a template on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\nThe value is an object that contains a `template` property with a string value. This displays formatted text using template syntax (e.g., `{name}`) in card previews.\n\n## Examples\n\nIn this example, we have configured a template preview entry to display formatted text.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - template: '{author} - {date}'\n```",
4472
4562
  "markdownDescription": "This key represents a template preview entry type for displaying formatted text using a template on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\nThe value is an object that contains a `template` property with a string value. This displays formatted text using template syntax (e.g., `{name}`) in card previews.\n\n## Examples\n\nIn this example, we have configured a template preview entry to display formatted text.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - template: '{author} - {date}'\n```"
4473
4563
  },
4474
4564
  "type.preview-entry.(text)": {
4475
- "title": "Text Preview Entry",
4476
4565
  "type": "object",
4477
4566
  "properties": {
4478
4567
  "text": {
4479
- "title": "Text Value",
4480
4568
  "type": "string",
4569
+ "title": "Text Value",
4481
4570
  "documented": true,
4482
4571
  "description": "This key defines the static text string to display in a text preview entry.\n\nThe value is a string that specifies static text to display on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\n## Examples\n\nIn this example, we have configured the text value to display a static fallback message.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - text: 'Untitled'\n```",
4483
4572
  "markdownDescription": "This key defines the static text string to display in a text preview entry.\n\nThe value is a string that specifies static text to display on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\n## Examples\n\nIn this example, we have configured the text value to display a static fallback message.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - text: 'Untitled'\n```"
@@ -4487,28 +4576,27 @@
4487
4576
  "text"
4488
4577
  ],
4489
4578
  "additionalProperties": false,
4579
+ "title": "Text Preview Entry",
4490
4580
  "documented": true,
4491
4581
  "description": "This key represents a text preview entry type for displaying static text on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\nThe value is an object that contains a `text` property with a string value. This displays static text in card previews.\n\n## Examples\n\nIn this example, we have configured a text preview entry to display static text.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - text: 'Untitled'\n```",
4492
4582
  "markdownDescription": "This key represents a text preview entry type for displaying static text on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\nThe value is an object that contains a `text` property with a string value. This displays static text in card previews.\n\n## Examples\n\nIn this example, we have configured a text preview entry to display static text.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - text: 'Untitled'\n```"
4493
4583
  },
4494
4584
  "type.preview-entry.(raw-text)": {
4495
- "title": "Raw Text Preview Entry",
4496
4585
  "type": "string",
4586
+ "title": "Raw Text Preview Entry",
4497
4587
  "documented": true,
4498
4588
  "description": "This key represents a raw text preview entry type for displaying static text on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\nThe value is a string that specifies static text to display in card previews. This is equivalent to using `{ text: \"...\" }` but in a simpler format.\n\n## Examples\n\nIn this example, we have configured a raw text preview entry to display static text.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text: 'Untitled'\n```",
4499
4589
  "markdownDescription": "This key represents a raw text preview entry type for displaying static text on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\nThe value is a string that specifies static text to display in card previews. This is equivalent to using `{ text: \"...\" }` but in a simpler format.\n\n## Examples\n\nIn this example, we have configured a raw text preview entry to display static text.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text: 'Untitled'\n```"
4500
4590
  },
4501
4591
  "type.preview-entry.(false)": {
4502
- "title": "False Preview Entry",
4503
4592
  "type": "boolean",
4504
4593
  "const": false,
4594
+ "title": "False Preview Entry",
4505
4595
  "documented": true,
4506
4596
  "description": "This key represents a preview entry that disables the preview display for a specific field on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\nThe value must be `false`. Setting a preview entry to `false` will hide that preview element.\n\n## Examples\n\nIn this example, we have configured the preview text to be disabled.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text: false\n```",
4507
4597
  "markdownDescription": "This key represents a preview entry that disables the preview display for a specific field on *Cards* in the *Collection browser*, *Structures*, and *Snippets*.\n\nThe value must be `false`. Setting a preview entry to `false` will hide that preview element.\n\n## Examples\n\nIn this example, we have configured the preview text to be disabled.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text: false\n```"
4508
4598
  },
4509
4599
  "TextareaInput": {
4510
- "title": "Textarea Input",
4511
- "description": "This key defines an editing interface for plain text.\n\n## Examples\n\nIn this example, we have configured the `description` key as a *Textarea Input*.\n\n```yaml\n_inputs:\n description:\n type: textarea\n label: Description\n```",
4512
4600
  "type": "object",
4513
4601
  "properties": {
4514
4602
  "comment": {
@@ -4553,15 +4641,14 @@
4553
4641
  "$ref": "#/definitions/type._inputs.*.cascade"
4554
4642
  },
4555
4643
  "type": {
4556
- "title": "Type",
4557
- "description": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `description` key as a *Textarea Input* type.\n\n```yaml\n_inputs:\n description:\n type: textarea\n```",
4558
4644
  "type": "string",
4559
4645
  "const": "textarea",
4646
+ "title": "Type",
4647
+ "description": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `description` key as a *Textarea Input* type.\n\n```yaml\n_inputs:\n description:\n type: textarea\n```",
4560
4648
  "documented": true,
4561
4649
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `description` key as a *Textarea Input* type.\n\n```yaml\n_inputs:\n description:\n type: textarea\n```"
4562
4650
  },
4563
4651
  "options": {
4564
- "description": "This key defines options that are specific to Textarea Inputs.\n\n## Examples\n\nIn this example, we have configured *Textarea Input* options including comment and character count.\n\n```yaml\n_inputs:\n description:\n type: textarea\n options:\n comment: Enter a description\n show_count: true\n```",
4565
4652
  "type": "object",
4566
4653
  "properties": {
4567
4654
  "max_length": {
@@ -4576,6 +4663,33 @@
4576
4663
  "min_length_message": {
4577
4664
  "$ref": "#/definitions/type._inputs.*.options.min_length_message"
4578
4665
  },
4666
+ "max_words": {
4667
+ "$ref": "#/definitions/type._inputs.*.options.max_words"
4668
+ },
4669
+ "max_words_message": {
4670
+ "$ref": "#/definitions/type._inputs.*.options.max_words_message"
4671
+ },
4672
+ "min_words": {
4673
+ "$ref": "#/definitions/type._inputs.*.options.min_words"
4674
+ },
4675
+ "min_words_message": {
4676
+ "$ref": "#/definitions/type._inputs.*.options.min_words_message"
4677
+ },
4678
+ "max_graphemes": {
4679
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes"
4680
+ },
4681
+ "max_graphemes_message": {
4682
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes_message"
4683
+ },
4684
+ "min_graphemes": {
4685
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes"
4686
+ },
4687
+ "min_graphemes_message": {
4688
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes_message"
4689
+ },
4690
+ "locale": {
4691
+ "$ref": "#/definitions/type._inputs.*.options.locale"
4692
+ },
4579
4693
  "pattern": {
4580
4694
  "$ref": "#/definitions/type._inputs.*.options.pattern"
4581
4695
  },
@@ -4617,6 +4731,7 @@
4617
4731
  }
4618
4732
  },
4619
4733
  "additionalProperties": false,
4734
+ "description": "This key defines options that are specific to Textarea Inputs.\n\n## Examples\n\nIn this example, we have configured *Textarea Input* options including comment and character count.\n\n```yaml\n_inputs:\n description:\n type: textarea\n options:\n comment: Enter a description\n show_count: true\n```",
4620
4735
  "documented": true,
4621
4736
  "title": "options",
4622
4737
  "markdownDescription": "This key defines options that are specific to Textarea Inputs.\n\n## Examples\n\nIn this example, we have configured *Textarea Input* options including comment and character count.\n\n```yaml\n_inputs:\n description:\n type: textarea\n options:\n comment: Enter a description\n show_count: true\n```"
@@ -4626,12 +4741,12 @@
4626
4741
  "type"
4627
4742
  ],
4628
4743
  "additionalProperties": false,
4744
+ "title": "Textarea Input",
4745
+ "description": "This key defines an editing interface for plain text.\n\n## Examples\n\nIn this example, we have configured the `description` key as a *Textarea Input*.\n\n```yaml\n_inputs:\n description:\n type: textarea\n label: Description\n```",
4629
4746
  "documented": true,
4630
4747
  "markdownDescription": "This key defines an editing interface for plain text.\n\n## Examples\n\nIn this example, we have configured the `description` key as a *Textarea Input*.\n\n```yaml\n_inputs:\n description:\n type: textarea\n label: Description\n```"
4631
4748
  },
4632
4749
  "CodeInput": {
4633
- "title": "Code Input",
4634
- "description": "This key defines an editing interface for code or mono-spaced plain text content.",
4635
4750
  "type": "object",
4636
4751
  "properties": {
4637
4752
  "comment": {
@@ -4676,15 +4791,14 @@
4676
4791
  "$ref": "#/definitions/type._inputs.*.cascade"
4677
4792
  },
4678
4793
  "type": {
4679
- "title": "Type",
4680
- "description": "This key defines the input type, which controls how this input appears and behaves.",
4681
4794
  "type": "string",
4682
4795
  "const": "code",
4796
+ "title": "Type",
4797
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
4683
4798
  "documented": true,
4684
4799
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
4685
4800
  },
4686
4801
  "options": {
4687
- "description": "This key defines options that are specific to Code Inputs.",
4688
4802
  "type": "object",
4689
4803
  "properties": {
4690
4804
  "tab_size": {
@@ -4735,6 +4849,33 @@
4735
4849
  "min_length_message": {
4736
4850
  "$ref": "#/definitions/type._inputs.*.options.min_length_message"
4737
4851
  },
4852
+ "max_words": {
4853
+ "$ref": "#/definitions/type._inputs.*.options.max_words"
4854
+ },
4855
+ "max_words_message": {
4856
+ "$ref": "#/definitions/type._inputs.*.options.max_words_message"
4857
+ },
4858
+ "min_words": {
4859
+ "$ref": "#/definitions/type._inputs.*.options.min_words"
4860
+ },
4861
+ "min_words_message": {
4862
+ "$ref": "#/definitions/type._inputs.*.options.min_words_message"
4863
+ },
4864
+ "max_graphemes": {
4865
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes"
4866
+ },
4867
+ "max_graphemes_message": {
4868
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes_message"
4869
+ },
4870
+ "min_graphemes": {
4871
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes"
4872
+ },
4873
+ "min_graphemes_message": {
4874
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes_message"
4875
+ },
4876
+ "locale": {
4877
+ "$ref": "#/definitions/type._inputs.*.options.locale"
4878
+ },
4738
4879
  "pattern": {
4739
4880
  "$ref": "#/definitions/type._inputs.*.options.pattern"
4740
4881
  },
@@ -4786,6 +4927,7 @@
4786
4927
  }
4787
4928
  },
4788
4929
  "additionalProperties": false,
4930
+ "description": "This key defines options that are specific to Code Inputs.",
4789
4931
  "documented": true,
4790
4932
  "title": "options",
4791
4933
  "markdownDescription": "This key defines options that are specific to Code Inputs."
@@ -4795,6 +4937,8 @@
4795
4937
  "type"
4796
4938
  ],
4797
4939
  "additionalProperties": false,
4940
+ "title": "Code Input",
4941
+ "description": "This key defines an editing interface for code or mono-spaced plain text content.",
4798
4942
  "documented": true,
4799
4943
  "markdownDescription": "This key defines an editing interface for code or mono-spaced plain text content."
4800
4944
  },
@@ -4831,8 +4975,6 @@
4831
4975
  "title": "theme(theme)"
4832
4976
  },
4833
4977
  "Syntax": {
4834
- "title": "Syntax",
4835
- "description": "Available syntax highlighting languages for code editors in CloudCannon.",
4836
4978
  "type": "string",
4837
4979
  "enum": [
4838
4980
  "c_cpp",
@@ -4904,12 +5046,12 @@
4904
5046
  "xquery",
4905
5047
  "yaml"
4906
5048
  ],
5049
+ "title": "Syntax",
5050
+ "description": "Available syntax highlighting languages for code editors in CloudCannon.",
4907
5051
  "documented": false,
4908
5052
  "markdownDescription": "Available syntax highlighting languages for code editors in CloudCannon."
4909
5053
  },
4910
5054
  "ColorInput": {
4911
- "title": "Color Input",
4912
- "description": "This key defines an editing interface for color values.",
4913
5055
  "type": "object",
4914
5056
  "properties": {
4915
5057
  "comment": {
@@ -4954,15 +5096,14 @@
4954
5096
  "$ref": "#/definitions/type._inputs.*.cascade"
4955
5097
  },
4956
5098
  "type": {
4957
- "title": "Type",
4958
- "description": "This key defines the input type, which controls how this input appears and behaves.",
4959
5099
  "type": "string",
4960
5100
  "const": "color",
5101
+ "title": "Type",
5102
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
4961
5103
  "documented": true,
4962
5104
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
4963
5105
  },
4964
5106
  "options": {
4965
- "description": "This key defines options that are specific to Color Inputs.",
4966
5107
  "type": "object",
4967
5108
  "properties": {
4968
5109
  "max_length": {
@@ -4977,6 +5118,33 @@
4977
5118
  "min_length_message": {
4978
5119
  "$ref": "#/definitions/type._inputs.*.options.min_length_message"
4979
5120
  },
5121
+ "max_words": {
5122
+ "$ref": "#/definitions/type._inputs.*.options.max_words"
5123
+ },
5124
+ "max_words_message": {
5125
+ "$ref": "#/definitions/type._inputs.*.options.max_words_message"
5126
+ },
5127
+ "min_words": {
5128
+ "$ref": "#/definitions/type._inputs.*.options.min_words"
5129
+ },
5130
+ "min_words_message": {
5131
+ "$ref": "#/definitions/type._inputs.*.options.min_words_message"
5132
+ },
5133
+ "max_graphemes": {
5134
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes"
5135
+ },
5136
+ "max_graphemes_message": {
5137
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes_message"
5138
+ },
5139
+ "min_graphemes": {
5140
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes"
5141
+ },
5142
+ "min_graphemes_message": {
5143
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes_message"
5144
+ },
5145
+ "locale": {
5146
+ "$ref": "#/definitions/type._inputs.*.options.locale"
5147
+ },
4980
5148
  "pattern": {
4981
5149
  "$ref": "#/definitions/type._inputs.*.options.pattern"
4982
5150
  },
@@ -5045,6 +5213,7 @@
5045
5213
  }
5046
5214
  },
5047
5215
  "additionalProperties": false,
5216
+ "description": "This key defines options that are specific to Color Inputs.",
5048
5217
  "documented": true,
5049
5218
  "title": "options",
5050
5219
  "markdownDescription": "This key defines options that are specific to Color Inputs."
@@ -5054,12 +5223,12 @@
5054
5223
  "type"
5055
5224
  ],
5056
5225
  "additionalProperties": false,
5226
+ "title": "Color Input",
5227
+ "description": "This key defines an editing interface for color values.",
5057
5228
  "documented": true,
5058
5229
  "markdownDescription": "This key defines an editing interface for color values."
5059
5230
  },
5060
5231
  "BooleanInput": {
5061
- "title": "Boolean Input",
5062
- "description": "This key defines an editing interface for true or false values.\n\n## Examples\n\nIn this example, we have configured the `featured` key as a *Boolean Input*.\n\n```yaml\n_inputs:\n featured:\n type: switch\n label: Featured\n```",
5063
5232
  "type": "object",
5064
5233
  "properties": {
5065
5234
  "comment": {
@@ -5104,13 +5273,13 @@
5104
5273
  "$ref": "#/definitions/type._inputs.*.cascade"
5105
5274
  },
5106
5275
  "type": {
5107
- "title": "Type",
5108
- "description": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `featured` key as a *Boolean Input* type.\n\n```yaml\n_inputs:\n featured:\n type: switch\n```",
5109
5276
  "type": "string",
5110
5277
  "enum": [
5111
5278
  "checkbox",
5112
5279
  "switch"
5113
5280
  ],
5281
+ "title": "Type",
5282
+ "description": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `featured` key as a *Boolean Input* type.\n\n```yaml\n_inputs:\n featured:\n type: switch\n```",
5114
5283
  "documented": true,
5115
5284
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `featured` key as a *Boolean Input* type.\n\n```yaml\n_inputs:\n featured:\n type: switch\n```"
5116
5285
  }
@@ -5119,12 +5288,12 @@
5119
5288
  "type"
5120
5289
  ],
5121
5290
  "additionalProperties": false,
5291
+ "title": "Boolean Input",
5292
+ "description": "This key defines an editing interface for true or false values.\n\n## Examples\n\nIn this example, we have configured the `featured` key as a *Boolean Input*.\n\n```yaml\n_inputs:\n featured:\n type: switch\n label: Featured\n```",
5122
5293
  "documented": true,
5123
5294
  "markdownDescription": "This key defines an editing interface for true or false values.\n\n## Examples\n\nIn this example, we have configured the `featured` key as a *Boolean Input*.\n\n```yaml\n_inputs:\n featured:\n type: switch\n label: Featured\n```"
5124
5295
  },
5125
5296
  "NumberInput": {
5126
- "title": "Number Input",
5127
- "description": "This key defines an editing interface for numeric values.\n\n## Examples\n\nIn this example, we have configured the `quantity` key as a *Number Input*.\n\n```yaml\n_inputs:\n quantity:\n type: number\n label: Quantity\n```",
5128
5297
  "type": "object",
5129
5298
  "properties": {
5130
5299
  "comment": {
@@ -5169,15 +5338,14 @@
5169
5338
  "$ref": "#/definitions/type._inputs.*.cascade"
5170
5339
  },
5171
5340
  "type": {
5172
- "title": "Type",
5173
- "description": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `quantity` key as a *Number Input* type.\n\n```yaml\n_inputs:\n quantity:\n type: number\n```",
5174
5341
  "type": "string",
5175
5342
  "const": "number",
5343
+ "title": "Type",
5344
+ "description": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `quantity` key as a *Number Input* type.\n\n```yaml\n_inputs:\n quantity:\n type: number\n```",
5176
5345
  "documented": true,
5177
5346
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `quantity` key as a *Number Input* type.\n\n```yaml\n_inputs:\n quantity:\n type: number\n```"
5178
5347
  },
5179
5348
  "options": {
5180
- "description": "This key defines options that are specific to Number Inputs.\n\n## Examples\n\nIn this example, we have configured *Number Input* options including min and max values.\n\n```yaml\n_inputs:\n quantity:\n type: number\n options:\n min: 1\n max: 100\n```",
5181
5349
  "type": "object",
5182
5350
  "properties": {
5183
5351
  "required": {
@@ -5224,6 +5392,7 @@
5224
5392
  }
5225
5393
  },
5226
5394
  "additionalProperties": false,
5395
+ "description": "This key defines options that are specific to Number Inputs.\n\n## Examples\n\nIn this example, we have configured *Number Input* options including min and max values.\n\n```yaml\n_inputs:\n quantity:\n type: number\n options:\n min: 1\n max: 100\n```",
5227
5396
  "documented": true,
5228
5397
  "title": "options",
5229
5398
  "markdownDescription": "This key defines options that are specific to Number Inputs.\n\n## Examples\n\nIn this example, we have configured *Number Input* options including min and max values.\n\n```yaml\n_inputs:\n quantity:\n type: number\n options:\n min: 1\n max: 100\n```"
@@ -5233,12 +5402,14 @@
5233
5402
  "type"
5234
5403
  ],
5235
5404
  "additionalProperties": false,
5405
+ "title": "Number Input",
5406
+ "description": "This key defines an editing interface for numeric values.\n\n## Examples\n\nIn this example, we have configured the `quantity` key as a *Number Input*.\n\n```yaml\n_inputs:\n quantity:\n type: number\n label: Quantity\n```",
5236
5407
  "documented": true,
5237
5408
  "markdownDescription": "This key defines an editing interface for numeric values.\n\n## Examples\n\nIn this example, we have configured the `quantity` key as a *Number Input*.\n\n```yaml\n_inputs:\n quantity:\n type: number\n label: Quantity\n```"
5238
5409
  },
5239
5410
  "type._inputs.*.options.empty_type(number)": {
5240
- "description": "This key defines how an 'empty' value will be saved. Does not apply to existing empty values.\n\n## Examples\n\nIn this example, we have configured how empty number values will be saved.\n\n```yaml\n_inputs:\n quantity:\n type: number\n options:\n empty_type: number\n```",
5241
5411
  "default": "null",
5412
+ "description": "This key defines how an 'empty' value will be saved. Does not apply to existing empty values.\n\n## Examples\n\nIn this example, we have configured how empty number values will be saved.\n\n```yaml\n_inputs:\n quantity:\n type: number\n options:\n empty_type: number\n```",
5242
5413
  "type": "string",
5243
5414
  "enum": [
5244
5415
  "null",
@@ -5249,15 +5420,15 @@
5249
5420
  "markdownDescription": "This key defines how an 'empty' value will be saved. Does not apply to existing empty values.\n\n## Examples\n\nIn this example, we have configured how empty number values will be saved.\n\n```yaml\n_inputs:\n quantity:\n type: number\n options:\n empty_type: number\n```"
5250
5421
  },
5251
5422
  "type._inputs.*.options.min": {
5252
- "description": "This key defines the minimum numerical value CloudCannon will allow in an Input.\n\nWhen configured, CloudCannon will prevent you from entering a lesser numerical value.\n\nIf the Input already contains a lesser numerical value, CloudCannon will require you to enter a valid value to save your changes, or discard your\nunsaved changes.\n\nThis key is required for `range` inputs.\n\nValue can be any number.\n\nIf `options.max` is also configured, this key cannot be a greater number.\n\nThis key has no default.\n\nThis key is available for Number Inputs.\n\n## Examples\n\nIn this example, we want to add a rating out of five for each article in our travel blog using the `rating` Input. This Input limits you to a minimum rating of one.\n\n```yaml\n_inputs:\n rating:\n type: number\n comment: How highly did you rate this experience?\n options:\n max: 5\n min: 1\n```",
5253
5423
  "type": "number",
5424
+ "description": "This key defines the minimum numerical value CloudCannon will allow in an Input.\n\nWhen configured, CloudCannon will prevent you from entering a lesser numerical value.\n\nIf the Input already contains a lesser numerical value, CloudCannon will require you to enter a valid value to save your changes, or discard your\nunsaved changes.\n\nThis key is required for `range` inputs.\n\nValue can be any number.\n\nIf `options.max` is also configured, this key cannot be a greater number.\n\nThis key has no default.\n\nThis key is available for Number Inputs.\n\n## Examples\n\nIn this example, we want to add a rating out of five for each article in our travel blog using the `rating` Input. This Input limits you to a minimum rating of one.\n\n```yaml\n_inputs:\n rating:\n type: number\n comment: How highly did you rate this experience?\n options:\n max: 5\n min: 1\n```",
5254
5425
  "documented": true,
5255
5426
  "title": "min",
5256
5427
  "markdownDescription": "This key defines the minimum numerical value CloudCannon will allow in an Input.\n\nWhen configured, CloudCannon will prevent you from entering a lesser numerical value.\n\nIf the Input already contains a lesser numerical value, CloudCannon will require you to enter a valid value to save your changes, or discard your\nunsaved changes.\n\nThis key is required for `range` inputs.\n\nValue can be any number.\n\nIf `options.max` is also configured, this key cannot be a greater number.\n\nThis key has no default.\n\nThis key is available for Number Inputs.\n\n## Examples\n\nIn this example, we want to add a rating out of five for each article in our travel blog using the `rating` Input. This Input limits you to a minimum rating of one.\n\n```yaml\n_inputs:\n rating:\n type: number\n comment: How highly did you rate this experience?\n options:\n max: 5\n min: 1\n```"
5257
5428
  },
5258
5429
  "type._inputs.*.options.max": {
5259
- "description": "This key defines the maximum numerical value CloudCannon will allow in an Input.\n\nWhen configured, CloudCannon will prevent you from entering a greater numerical value.\n\nIf the Input already contains a greater numerical value, CloudCannon will require you to enter a valid value to save your changes, or discard your\nunsaved changes.\n\nThis key is required for `range` inputs.\n\nValue can be any integer.\n\nIf `options.min` is also configured, this key cannot be a lesser number.\n\nThis key has no default.\n\nThis key is available for Number Inputs.\n\n## Examples\n\nIn this example, we want to add a rating out of five for each article in our travel blog using the `rating` Input. This Input limits you to a maximum rating of five.\n\n```yaml\n_inputs:\n rating:\n type: number\n comment: How highly did you rate this experience?\n options:\n max: 5\n min: 1\n```",
5260
5430
  "type": "number",
5431
+ "description": "This key defines the maximum numerical value CloudCannon will allow in an Input.\n\nWhen configured, CloudCannon will prevent you from entering a greater numerical value.\n\nIf the Input already contains a greater numerical value, CloudCannon will require you to enter a valid value to save your changes, or discard your\nunsaved changes.\n\nThis key is required for `range` inputs.\n\nValue can be any integer.\n\nIf `options.min` is also configured, this key cannot be a lesser number.\n\nThis key has no default.\n\nThis key is available for Number Inputs.\n\n## Examples\n\nIn this example, we want to add a rating out of five for each article in our travel blog using the `rating` Input. This Input limits you to a maximum rating of five.\n\n```yaml\n_inputs:\n rating:\n type: number\n comment: How highly did you rate this experience?\n options:\n max: 5\n min: 1\n```",
5261
5432
  "documented": true,
5262
5433
  "title": "max",
5263
5434
  "markdownDescription": "This key defines the maximum numerical value CloudCannon will allow in an Input.\n\nWhen configured, CloudCannon will prevent you from entering a greater numerical value.\n\nIf the Input already contains a greater numerical value, CloudCannon will require you to enter a valid value to save your changes, or discard your\nunsaved changes.\n\nThis key is required for `range` inputs.\n\nValue can be any integer.\n\nIf `options.min` is also configured, this key cannot be a lesser number.\n\nThis key has no default.\n\nThis key is available for Number Inputs.\n\n## Examples\n\nIn this example, we want to add a rating out of five for each article in our travel blog using the `rating` Input. This Input limits you to a maximum rating of five.\n\n```yaml\n_inputs:\n rating:\n type: number\n comment: How highly did you rate this experience?\n options:\n max: 5\n min: 1\n```"
@@ -5284,8 +5455,6 @@
5284
5455
  "markdownDescription": "This key defines a custom error message that explains why a value has failed the validation criteria from `options.max`.\nThis key requires you to define `options.max`.\n\nThis key has no default.\n\nThis key is available for Number Inputs.\n\n## Examples\n\nIn this example, we prompt our team to enter a valid number using a custom message.\n\n```yaml\n_inputs:\n rating:\n type: number\n comment: How highly did you rate this experience?\n options:\n max: 5\n max_message: Cannot be more than 5\n min: 1\n min_message: Cannot be less than 1\n```"
5285
5456
  },
5286
5457
  "RangeInput": {
5287
- "title": "Range Input",
5288
- "description": "This key defines a slider interface for selecting a numeric value.",
5289
5458
  "type": "object",
5290
5459
  "properties": {
5291
5460
  "comment": {
@@ -5330,15 +5499,14 @@
5330
5499
  "$ref": "#/definitions/type._inputs.*.cascade"
5331
5500
  },
5332
5501
  "type": {
5333
- "title": "Type",
5334
- "description": "This key defines the input type, which controls how this input appears and behaves.",
5335
5502
  "type": "string",
5336
5503
  "const": "range",
5504
+ "title": "Type",
5505
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
5337
5506
  "documented": true,
5338
5507
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
5339
5508
  },
5340
5509
  "options": {
5341
- "description": "This key defines options that are specific to Range Inputs.",
5342
5510
  "type": "object",
5343
5511
  "properties": {
5344
5512
  "required": {
@@ -5377,6 +5545,7 @@
5377
5545
  "max"
5378
5546
  ],
5379
5547
  "additionalProperties": false,
5548
+ "description": "This key defines options that are specific to Range Inputs.",
5380
5549
  "documented": true,
5381
5550
  "title": "options",
5382
5551
  "markdownDescription": "This key defines options that are specific to Range Inputs."
@@ -5386,12 +5555,12 @@
5386
5555
  "type"
5387
5556
  ],
5388
5557
  "additionalProperties": false,
5558
+ "title": "Range Input",
5559
+ "description": "This key defines a slider interface for selecting a numeric value.",
5389
5560
  "documented": true,
5390
5561
  "markdownDescription": "This key defines a slider interface for selecting a numeric value."
5391
5562
  },
5392
5563
  "RichTextInput": {
5393
- "title": "Rich Text Input",
5394
- "description": "This key defines an editing interface for HTML markup content.",
5395
5564
  "type": "object",
5396
5565
  "properties": {
5397
5566
  "comment": {
@@ -5436,18 +5605,17 @@
5436
5605
  "$ref": "#/definitions/type._inputs.*.cascade"
5437
5606
  },
5438
5607
  "type": {
5439
- "title": "Type",
5440
- "description": "This key defines the input type, which controls how this input appears and behaves.",
5441
5608
  "type": "string",
5442
5609
  "enum": [
5443
5610
  "html",
5444
5611
  "markdown"
5445
5612
  ],
5613
+ "title": "Type",
5614
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
5446
5615
  "documented": true,
5447
5616
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
5448
5617
  },
5449
5618
  "options": {
5450
- "description": "This key defines options that are specific to Rich Text Inputs.",
5451
5619
  "type": "object",
5452
5620
  "properties": {
5453
5621
  "mime_type": {
@@ -5600,6 +5768,33 @@
5600
5768
  "min_length_message": {
5601
5769
  "$ref": "#/definitions/type._inputs.*.options.min_length_message"
5602
5770
  },
5771
+ "max_words": {
5772
+ "$ref": "#/definitions/type._inputs.*.options.max_words"
5773
+ },
5774
+ "max_words_message": {
5775
+ "$ref": "#/definitions/type._inputs.*.options.max_words_message"
5776
+ },
5777
+ "min_words": {
5778
+ "$ref": "#/definitions/type._inputs.*.options.min_words"
5779
+ },
5780
+ "min_words_message": {
5781
+ "$ref": "#/definitions/type._inputs.*.options.min_words_message"
5782
+ },
5783
+ "max_graphemes": {
5784
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes"
5785
+ },
5786
+ "max_graphemes_message": {
5787
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes_message"
5788
+ },
5789
+ "min_graphemes": {
5790
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes"
5791
+ },
5792
+ "min_graphemes_message": {
5793
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes_message"
5794
+ },
5795
+ "locale": {
5796
+ "$ref": "#/definitions/type._inputs.*.options.locale"
5797
+ },
5603
5798
  "pattern": {
5604
5799
  "$ref": "#/definitions/type._inputs.*.options.pattern"
5605
5800
  },
@@ -5625,12 +5820,20 @@
5625
5820
  "title": "empty_type"
5626
5821
  },
5627
5822
  "allow_resize": {
5628
- "description": "This key toggles whether CloudCannon will show the resize handler to vertically resize the input.\n\nSetting this key to `false` will hide the resize handler.\n\nBy default, this key is `true` (i.e., the resize handler is shown).",
5629
- "default": false,
5823
+ "deprecated": true,
5630
5824
  "type": "boolean",
5631
5825
  "documented": true,
5632
5826
  "title": "allow_resize",
5633
- "markdownDescription": "This key toggles whether CloudCannon will show the resize handler to vertically resize the input.\n\nSetting this key to `false` will hide the resize handler.\n\nBy default, this key is `true` (i.e., the resize handler is shown)."
5827
+ "description": "This key is deprecated. Use `preview_resize` instead.\n\nThis key toggles whether CloudCannon will show the resize handler to vertically resize the input.\n\nSetting this key to `false` will hide the resize handler.\n\nBy default, this key is `true` (i.e., the resize handler is shown).",
5828
+ "markdownDescription": "This key is deprecated. Use `preview_resize` instead.\n\nThis key toggles whether CloudCannon will show the resize handler to vertically resize the input.\n\nSetting this key to `false` will hide the resize handler.\n\nBy default, this key is `true` (i.e., the resize handler is shown)."
5829
+ },
5830
+ "prevent_resize": {
5831
+ "description": "Shows or hides the resize handler to vertically resize the input.",
5832
+ "default": false,
5833
+ "type": "boolean",
5834
+ "documented": true,
5835
+ "title": "prevent_resize",
5836
+ "markdownDescription": "Shows or hides the resize handler to vertically resize the input."
5634
5837
  },
5635
5838
  "initial_height": {
5636
5839
  "description": "This key defines the initial height of this input in pixels (px).",
@@ -5641,6 +5844,7 @@
5641
5844
  }
5642
5845
  },
5643
5846
  "additionalProperties": false,
5847
+ "description": "This key defines options that are specific to Rich Text Inputs.",
5644
5848
  "documented": true,
5645
5849
  "title": "options",
5646
5850
  "markdownDescription": "This key defines options that are specific to Rich Text Inputs."
@@ -5650,6 +5854,8 @@
5650
5854
  "type"
5651
5855
  ],
5652
5856
  "additionalProperties": false,
5857
+ "title": "Rich Text Input",
5858
+ "description": "This key defines an editing interface for HTML markup content.",
5653
5859
  "documented": true,
5654
5860
  "markdownDescription": "This key defines an editing interface for HTML markup content."
5655
5861
  },
@@ -5739,8 +5945,8 @@
5739
5945
  "type": "object",
5740
5946
  "properties": {
5741
5947
  "size": {
5742
- "description": "This key defines a number suffixed with \"x\" (relative size) or \"w\" (fixed width) for setting the dimensions of the image (e.g. 2x, 3x, 100w, 360w).\n\n## Examples\n\nIn this example, we have configured a size definition for an *Image Input* to create a 2x relative size image.\n\n```yaml\n_inputs:\n hero_image:\n type: image\n options:\n sizes:\n - size: 2x\n```",
5743
5948
  "type": "string",
5949
+ "description": "This key defines a number suffixed with \"x\" (relative size) or \"w\" (fixed width) for setting the dimensions of the image (e.g. 2x, 3x, 100w, 360w).\n\n## Examples\n\nIn this example, we have configured a size definition for an *Image Input* to create a 2x relative size image.\n\n```yaml\n_inputs:\n hero_image:\n type: image\n options:\n sizes:\n - size: 2x\n```",
5744
5950
  "documented": true,
5745
5951
  "title": "size",
5746
5952
  "markdownDescription": "This key defines a number suffixed with \"x\" (relative size) or \"w\" (fixed width) for setting the dimensions of the image (e.g. 2x, 3x, 100w, 360w).\n\n## Examples\n\nIn this example, we have configured a size definition for an *Image Input* to create a 2x relative size image.\n\n```yaml\n_inputs:\n hero_image:\n type: image\n options:\n sizes:\n - size: 2x\n```"
@@ -5766,7 +5972,6 @@
5766
5972
  "markdownDescription": "This key defines definitions for creating additional images of different sizes when uploading or selecting existing files.\n\n## Examples\n\nIn this example, we have configured an *Image Input* to create additional images of different sizes when uploading or selecting files.\n\n```yaml\n_inputs:\n hero_image:\n type: image\n options:\n sizes:\n - size: 2x\n - size: 3x\n```"
5767
5973
  },
5768
5974
  "type.paths": {
5769
- "title": "Paths",
5770
5975
  "type": "object",
5771
5976
  "properties": {
5772
5977
  "static": {
@@ -5792,6 +5997,7 @@
5792
5997
  }
5793
5998
  },
5794
5999
  "additionalProperties": false,
6000
+ "title": "Paths",
5795
6001
  "documented": true,
5796
6002
  "description": "This key defines paths for your Rich Text editors or File inputs.\n\nIf undefined at higher levels of the [configuration cascade](https://cloudcannon.com/documentation/articles/using-the-configuration-cascade/), `paths` will default to any\nvalues configured in the [CloudCannon configuration file](https://cloudcannon.com/documentation/articles/what-is-the-cloudcannon-configuration-file/).\n\n## Examples\n\nIn this example, we have configured paths for the `blog` Collection to set custom upload and static paths.\n\n```yaml\ncollections_config:\n blog:\n paths:\n uploads: /uploads/blog/\n static: /assets/\n```",
5797
6003
  "markdownDescription": "This key defines paths for your Rich Text editors or File inputs.\n\nIf undefined at higher levels of the [configuration cascade](https://cloudcannon.com/documentation/articles/using-the-configuration-cascade/), `paths` will default to any\nvalues configured in the [CloudCannon configuration file](https://cloudcannon.com/documentation/articles/what-is-the-cloudcannon-configuration-file/).\n\n## Examples\n\nIn this example, we have configured paths for the `blog` Collection to set custom upload and static paths.\n\n```yaml\ncollections_config:\n blog:\n paths:\n uploads: /uploads/blog/\n static: /assets/\n```"
@@ -6082,11 +6288,11 @@
6082
6288
  "markdownDescription": "This key toggles whether CloudCannon will display a tool in your WYSIWYG toolbar to insert a [Snippet](https://cloudcannon.com/documentation/articles/what-is-a-snippet/), if any are available.\n\nSetting this key to `true` will enable a tool in your WYSIWYG toolbar to insert a Snippet."
6083
6289
  },
6084
6290
  "type._editables.*.styles": {
6085
- "description": "This key toggles whether CloudCannon will display a dropdown menu in your WYSIWYG toolbar to apply a style to selected text.\n\nSetting this key to `true` will enable a dropdown menu in your WYSIWYG toolbar to apply a style to selected text. Styles are the combination of an element and class name. The value for this option is the path (either source or build output) for the CSS file containing styles.",
6291
+ "description": "This key toggles whether CloudCannon will display a dropdown menu in your WYSIWYG toolbar to apply a style to selected text.\n\n## Examples\n\nIn this example, we have enabled a dropdown menu in our WYSIWYG toolbar to apply a style to selected text. The styles are defined in the `/css/styles.css` file.\n\n```yaml\n_editables:\n content:\n styles: /css/styles.css\n```\n\nThis example file defines the styles that CloudCannon can add to your WYSIWYG toolbar.\n\n```css\n/* Can be applied to blocks of content */\np.callout {\n margin: 10px;\n border: 1px solid #f5f5f5;\n background-color: #eee;\n}\n\n/* Can be applied to inline content */\nspan.big-blue-text {\n font-size: 2rem;\n color: blue;\n}\n\n/* Applied to content, excluded from style dropdown */\nh2 {\n font-family: cursive;\n}\n\n/* Applied to content, excluded from style dropdown */\n.align-left { text-align: left; }\n.align-center { text-align: center; }\n.align-right { text-align: right; }\n.align-justify { text-align: justify; }\n```",
6086
6292
  "type": "string",
6087
6293
  "documented": true,
6088
6294
  "title": "styles",
6089
- "markdownDescription": "This key toggles whether CloudCannon will display a dropdown menu in your WYSIWYG toolbar to apply a style to selected text.\n\nSetting this key to `true` will enable a dropdown menu in your WYSIWYG toolbar to apply a style to selected text. Styles are the combination of an element and class name. The value for this option is the path (either source or build output) for the CSS file containing styles."
6295
+ "markdownDescription": "This key toggles whether CloudCannon will display a dropdown menu in your WYSIWYG toolbar to apply a style to selected text.\n\n## Examples\n\nIn this example, we have enabled a dropdown menu in our WYSIWYG toolbar to apply a style to selected text. The styles are defined in the `/css/styles.css` file.\n\n```yaml\n_editables:\n content:\n styles: /css/styles.css\n```\n\nThis example file defines the styles that CloudCannon can add to your WYSIWYG toolbar.\n\n```css\n/* Can be applied to blocks of content */\np.callout {\n margin: 10px;\n border: 1px solid #f5f5f5;\n background-color: #eee;\n}\n\n/* Can be applied to inline content */\nspan.big-blue-text {\n font-size: 2rem;\n color: blue;\n}\n\n/* Applied to content, excluded from style dropdown */\nh2 {\n font-family: cursive;\n}\n\n/* Applied to content, excluded from style dropdown */\n.align-left { text-align: left; }\n.align-center { text-align: center; }\n.align-right { text-align: right; }\n.align-justify { text-align: justify; }\n```"
6090
6296
  },
6091
6297
  "type._editables.*.table": {
6092
6298
  "description": "This key toggles whether CloudCannon will display a tool in your WYSIWYG toolbar to insert a table.\n\nSetting this key to `true` will enable a tool in your WYSIWYG toolbar to insert a table. Further table options are available from the table context menu in the rich text editor.",
@@ -6113,8 +6319,6 @@
6113
6319
  "markdownDescription": "This key toggles whether CloudCannon will display a tool in your WYSIWYG toolbar to merge a list item with the item below it in an ordered or unordered list.\n\nSetting this key to `true` will enable a tool in your WYSIWYG toolbar to merge a list item with the item below it."
6114
6320
  },
6115
6321
  "DateInput": {
6116
- "title": "Date/Datetime Input",
6117
- "description": "This key defines an editing interface for date and/or time values.",
6118
6322
  "type": "object",
6119
6323
  "properties": {
6120
6324
  "comment": {
@@ -6159,18 +6363,17 @@
6159
6363
  "$ref": "#/definitions/type._inputs.*.cascade"
6160
6364
  },
6161
6365
  "type": {
6162
- "title": "Type",
6163
- "description": "This key defines the input type, which controls how this input appears and behaves.",
6164
6366
  "type": "string",
6165
6367
  "enum": [
6166
6368
  "date",
6167
6369
  "datetime"
6168
6370
  ],
6371
+ "title": "Type",
6372
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
6169
6373
  "documented": true,
6170
6374
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
6171
6375
  },
6172
6376
  "options": {
6173
- "description": "This key defines options that are specific to Date Inputs.",
6174
6377
  "type": "object",
6175
6378
  "properties": {
6176
6379
  "required": {
@@ -6203,10 +6406,10 @@
6203
6406
  "description": "This key defines the earliest date and time, inclusive, that CloudCannon will allow in an Input.\n\nWhen configured, CloudCannon will prevent you from selecting an earlier date and time.\n\nIf the Input already contains an earlier date and time, CloudCannon will require you to change it to a valid value to save your changes, or discard\nyour unsaved changes.\n\nValue must be in [ISO8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.\n\nThe value can have quotation marks or no quotation marks.\n\nIf `options.end_before` is also configured, this key cannot be a later date and time.\n\nThis key has no default.\n\nThis key is available for Date and Time Inputs.\n\n## Examples\n\nIn this example, we want our team to enter the date and time of an event in the `2022_event` Input. This Input will only allow dates on or after January 1st, 2022.\n\n```yaml\n_inputs:\n 2022_event:\n type: datetime\n options:\n start_from: 2022-01-01T00:00:00Z\n end_before: 2023-01-01T00:00:00Z\n```",
6204
6407
  "anyOf": [
6205
6408
  {
6206
- "title": "String Start From",
6207
6409
  "type": "string",
6208
6410
  "format": "date-time",
6209
6411
  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z||([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
6412
+ "title": "String Start From",
6210
6413
  "documented": true,
6211
6414
  "description": "This key defines the earliest date and time, inclusive, that CloudCannon will allow in an Input.\n\nWhen configured, CloudCannon will prevent you from selecting an earlier date and time.\n\nIf the Input already contains an earlier date and time, CloudCannon will require you to change it to a valid value to save your changes, or discard\nyour unsaved changes.\n\nValue must be in [ISO8601](https://www.iso.org/iso-8601-date-and-time-format.html) format and should be in quotes.\n\nIf `options.end_before` is also configured, this key cannot be a later date and time.\n\nThis key has no default.\n\nThis key is available for Date and Time Inputs.",
6212
6415
  "markdownDescription": "This key defines the earliest date and time, inclusive, that CloudCannon will allow in an Input.\n\nWhen configured, CloudCannon will prevent you from selecting an earlier date and time.\n\nIf the Input already contains an earlier date and time, CloudCannon will require you to change it to a valid value to save your changes, or discard\nyour unsaved changes.\n\nValue must be in [ISO8601](https://www.iso.org/iso-8601-date-and-time-format.html) format and should be in quotes.\n\nIf `options.end_before` is also configured, this key cannot be a later date and time.\n\nThis key has no default.\n\nThis key is available for Date and Time Inputs."
@@ -6233,10 +6436,10 @@
6233
6436
  "description": "This key defines the date and time, exclusive, that CloudCannon will allow in an Input.\n\nWhen configured, CloudCannon will prevent you from selecting a later date and time.\n\nIf the Input already contains a later date and time, CloudCannon will require you to change it to a valid value to save your changes, or discard your\nunsaved changes.\n\nValue must be in [ISO8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.\n\nThe value can have quotation marks or no quotation marks.\n\nIf `options.start_from` is also configured, this key cannot be an earlier date and time.\n\nThis key has no default.\n\nThis key is available for Date and Time Inputs.\n\n## Examples\n\nIn this example, we want our team to enter the date and time of an event in the `2022_event` Input. This Input will only allow dates before January 1st, 2023.\n\n```yaml\n_inputs:\n 2022_event:\n type: datetime\n options:\n start_from: 2022-01-01T00:00:00Z\n end_before: 2023-01-01T00:00:00Z\n```",
6234
6437
  "anyOf": [
6235
6438
  {
6236
- "title": "String End Before",
6237
6439
  "type": "string",
6238
6440
  "format": "date-time",
6239
6441
  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z||([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
6442
+ "title": "String End Before",
6240
6443
  "documented": true,
6241
6444
  "description": "This key defines the date and time, exclusive, that CloudCannon will allow in an Input.\n\nWhen configured, CloudCannon will prevent you from selecting a later date and time.\n\nIf the Input already contains a later date and time, CloudCannon will require you to change it to a valid value to save your changes, or discard your\nunsaved changes.\n\nValue must be in [ISO8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.\n\nIf `options.start_from` is also configured, this key cannot be an earlier date and time.\n\nThis key has no default.\n\nThis key is available for Date and Time Inputs.",
6242
6445
  "markdownDescription": "This key defines the date and time, exclusive, that CloudCannon will allow in an Input.\n\nWhen configured, CloudCannon will prevent you from selecting a later date and time.\n\nIf the Input already contains a later date and time, CloudCannon will require you to change it to a valid value to save your changes, or discard your\nunsaved changes.\n\nValue must be in [ISO8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.\n\nIf `options.start_from` is also configured, this key cannot be an earlier date and time.\n\nThis key has no default.\n\nThis key is available for Date and Time Inputs."
@@ -6261,6 +6464,7 @@
6261
6464
  }
6262
6465
  },
6263
6466
  "additionalProperties": false,
6467
+ "description": "This key defines options that are specific to Date Inputs.",
6264
6468
  "documented": true,
6265
6469
  "title": "options",
6266
6470
  "markdownDescription": "This key defines options that are specific to Date Inputs."
@@ -6270,11 +6474,12 @@
6270
6474
  "type"
6271
6475
  ],
6272
6476
  "additionalProperties": false,
6477
+ "title": "Date/Datetime Input",
6478
+ "description": "This key defines an editing interface for date and/or time values.",
6273
6479
  "documented": true,
6274
6480
  "markdownDescription": "This key defines an editing interface for date and/or time values."
6275
6481
  },
6276
6482
  "type.timezone": {
6277
- "title": "Timezone",
6278
6483
  "type": "string",
6279
6484
  "enum": [
6280
6485
  "Africa/Abidjan",
@@ -6873,13 +7078,12 @@
6873
7078
  "WET",
6874
7079
  "Zulu"
6875
7080
  ],
7081
+ "title": "Timezone",
6876
7082
  "documented": true,
6877
7083
  "description": "This key defines the timezone for your Site.\n\nValue must be in IANA timezone format.\n\nFor more information, please read our documentation on [Date and Time inputs](https://cloudcannon.com/documentation/articles/what-are-date-and-time-inputs/).",
6878
7084
  "markdownDescription": "This key defines the timezone for your Site.\n\nValue must be in IANA timezone format.\n\nFor more information, please read our documentation on [Date and Time inputs](https://cloudcannon.com/documentation/articles/what-are-date-and-time-inputs/)."
6879
7085
  },
6880
7086
  "TimeInput": {
6881
- "title": "Time Input",
6882
- "description": "This key defines an editing interface for time values only.",
6883
7087
  "type": "object",
6884
7088
  "properties": {
6885
7089
  "comment": {
@@ -6924,15 +7128,14 @@
6924
7128
  "$ref": "#/definitions/type._inputs.*.cascade"
6925
7129
  },
6926
7130
  "type": {
6927
- "title": "Type",
6928
- "description": "This key defines the input type, which controls how this input appears and behaves.",
6929
7131
  "type": "string",
6930
7132
  "const": "time",
7133
+ "title": "Type",
7134
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
6931
7135
  "documented": true,
6932
7136
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
6933
7137
  },
6934
7138
  "options": {
6935
- "description": "This key defines options that are specific to Time Inputs.",
6936
7139
  "type": "object",
6937
7140
  "properties": {
6938
7141
  "required": {
@@ -6952,6 +7155,7 @@
6952
7155
  }
6953
7156
  },
6954
7157
  "additionalProperties": false,
7158
+ "description": "This key defines options that are specific to Time Inputs.",
6955
7159
  "documented": true,
6956
7160
  "title": "options",
6957
7161
  "markdownDescription": "This key defines options that are specific to Time Inputs."
@@ -6961,12 +7165,12 @@
6961
7165
  "type"
6962
7166
  ],
6963
7167
  "additionalProperties": false,
7168
+ "title": "Time Input",
7169
+ "description": "This key defines an editing interface for time values only.",
6964
7170
  "documented": true,
6965
7171
  "markdownDescription": "This key defines an editing interface for time values only."
6966
7172
  },
6967
7173
  "FileInput": {
6968
- "title": "File Input",
6969
- "description": "This key defines an editing interface for uploading files to your repository or DAM and browsing existing assets.",
6970
7174
  "type": "object",
6971
7175
  "properties": {
6972
7176
  "comment": {
@@ -7011,19 +7215,18 @@
7011
7215
  "$ref": "#/definitions/type._inputs.*.cascade"
7012
7216
  },
7013
7217
  "type": {
7014
- "title": "Type",
7015
- "description": "This key defines the input type, which controls how this input appears and behaves.",
7016
7218
  "type": "string",
7017
7219
  "enum": [
7018
7220
  "file",
7019
7221
  "document",
7020
7222
  "image"
7021
7223
  ],
7224
+ "title": "Type",
7225
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
7022
7226
  "documented": true,
7023
7227
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
7024
7228
  },
7025
7229
  "options": {
7026
- "description": "This key defines options that are specific to File Inputs.",
7027
7230
  "type": "object",
7028
7231
  "properties": {
7029
7232
  "mime_type": {
@@ -7065,6 +7268,33 @@
7065
7268
  "min_length_message": {
7066
7269
  "$ref": "#/definitions/type._inputs.*.options.min_length_message"
7067
7270
  },
7271
+ "max_words": {
7272
+ "$ref": "#/definitions/type._inputs.*.options.max_words"
7273
+ },
7274
+ "max_words_message": {
7275
+ "$ref": "#/definitions/type._inputs.*.options.max_words_message"
7276
+ },
7277
+ "min_words": {
7278
+ "$ref": "#/definitions/type._inputs.*.options.min_words"
7279
+ },
7280
+ "min_words_message": {
7281
+ "$ref": "#/definitions/type._inputs.*.options.min_words_message"
7282
+ },
7283
+ "max_graphemes": {
7284
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes"
7285
+ },
7286
+ "max_graphemes_message": {
7287
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes_message"
7288
+ },
7289
+ "min_graphemes": {
7290
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes"
7291
+ },
7292
+ "min_graphemes_message": {
7293
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes_message"
7294
+ },
7295
+ "locale": {
7296
+ "$ref": "#/definitions/type._inputs.*.options.locale"
7297
+ },
7068
7298
  "pattern": {
7069
7299
  "$ref": "#/definitions/type._inputs.*.options.pattern"
7070
7300
  },
@@ -7118,6 +7348,7 @@
7118
7348
  }
7119
7349
  },
7120
7350
  "additionalProperties": false,
7351
+ "description": "This key defines options that are specific to File Inputs.",
7121
7352
  "documented": true,
7122
7353
  "title": "options",
7123
7354
  "markdownDescription": "This key defines options that are specific to File Inputs."
@@ -7127,6 +7358,8 @@
7127
7358
  "type"
7128
7359
  ],
7129
7360
  "additionalProperties": false,
7361
+ "title": "File Input",
7362
+ "description": "This key defines an editing interface for uploading files to your repository or DAM and browsing existing assets.",
7130
7363
  "documented": true,
7131
7364
  "markdownDescription": "This key defines an editing interface for uploading files to your repository or DAM and browsing existing assets."
7132
7365
  },
@@ -7134,18 +7367,18 @@
7134
7367
  "description": "This key defines which file types are available to select or upload to this input.\n\nAccepted format is an array or comma-separated string of MIME types.\n\nThe special value \"*\" means any type is accepted.\n\n## Examples\n\nIn this example, we have configured a *Image Input* to accept only JPEG or PNG files.\n\n```yaml\n_inputs:\n featured_image:\n type: image\n options:\n accepts_mime_types:\n - image/jpeg\n - image/png\n```",
7135
7368
  "anyOf": [
7136
7369
  {
7137
- "title": "Comma Separated Accepts Mime Types",
7138
7370
  "type": "string",
7371
+ "title": "Comma Separated Accepts Mime Types",
7139
7372
  "documented": true,
7140
7373
  "description": "This key represents a comma-separated string format for the `accepts_mime_types` key that restricts which file types are available to select or upload in *File Inputs*.\n\nThe value is a string containing MIME types separated by commas. Each MIME type specifies a file type that CloudCannon will allow for this input.\n\nAvailable MIME types include image formats (`image/x-icon`, `image/gif`, `image/jpeg`, `image/png`, `image/webp`, `image/bmp`, `image/svg+xml`) and document formats (`application/pdf`, `application/msword`, `application/vnd.openxmlformats-officedocument.wordprocessingml.document`, `application/vnd.ms-excel`, `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`, `application/vnd.ms-powerpoint`, `application/vnd.openxmlformats-officedocument.presentationml.presentation`).\n\nUse the comma-separated format when you prefer a more compact configuration or when working with a small number of MIME types.\n\nThe special value `\"*\"` means any file type is accepted.\n\n## Examples\n\nIn this example, we have configured a *File Input* to accept only image files using a comma-separated string of image MIME types.\n\n```yaml\n_inputs:\n hero_image:\n type: file\n label: Hero Image\n options:\n accepts_mime_types: 'image/jpeg,image/png,image/webp'\n```\n\nIn this example, we have configured a *File Input* to accept only document files using a comma-separated string of document MIME types.\n\n```yaml\n_inputs:\n document:\n type: file\n label: Document\n options:\n accepts_mime_types: 'application/pdf,application/msword'\n```\n\nIn this example, we have configured a *File Input* to accept any file type using the special `\"*\"` value.\n\n```yaml\n_inputs:\n any_file:\n type: file\n label: Any File\n options:\n accepts_mime_types: '*'\n```",
7141
7374
  "markdownDescription": "This key represents a comma-separated string format for the `accepts_mime_types` key that restricts which file types are available to select or upload in *File Inputs*.\n\nThe value is a string containing MIME types separated by commas. Each MIME type specifies a file type that CloudCannon will allow for this input.\n\nAvailable MIME types include image formats (`image/x-icon`, `image/gif`, `image/jpeg`, `image/png`, `image/webp`, `image/bmp`, `image/svg+xml`) and document formats (`application/pdf`, `application/msword`, `application/vnd.openxmlformats-officedocument.wordprocessingml.document`, `application/vnd.ms-excel`, `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`, `application/vnd.ms-powerpoint`, `application/vnd.openxmlformats-officedocument.presentationml.presentation`).\n\nUse the comma-separated format when you prefer a more compact configuration or when working with a small number of MIME types.\n\nThe special value `\"*\"` means any file type is accepted.\n\n## Examples\n\nIn this example, we have configured a *File Input* to accept only image files using a comma-separated string of image MIME types.\n\n```yaml\n_inputs:\n hero_image:\n type: file\n label: Hero Image\n options:\n accepts_mime_types: 'image/jpeg,image/png,image/webp'\n```\n\nIn this example, we have configured a *File Input* to accept only document files using a comma-separated string of document MIME types.\n\n```yaml\n_inputs:\n document:\n type: file\n label: Document\n options:\n accepts_mime_types: 'application/pdf,application/msword'\n```\n\nIn this example, we have configured a *File Input* to accept any file type using the special `\"*\"` value.\n\n```yaml\n_inputs:\n any_file:\n type: file\n label: Any File\n options:\n accepts_mime_types: '*'\n```"
7142
7375
  },
7143
7376
  {
7144
- "title": "Array Accepts Mime Types",
7145
7377
  "type": "array",
7146
7378
  "items": {
7147
7379
  "$ref": "#/definitions/MimeType"
7148
7380
  },
7381
+ "title": "Array Accepts Mime Types",
7149
7382
  "documented": true,
7150
7383
  "description": "This key represents an array format for the `accepts_mime_types` key that restricts which file types are available to select or upload in *File Inputs*.\n\nThe value is an array of MIME type strings. Each string specifies a file type that CloudCannon will allow for this input.\n\nAvailable MIME types include image formats (`image/x-icon`, `image/gif`, `image/jpeg`, `image/png`, `image/webp`, `image/bmp`, `image/svg+xml`) and document formats (`application/pdf`, `application/msword`, `application/vnd.openxmlformats-officedocument.wordprocessingml.document`, `application/vnd.ms-excel`, `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`, `application/vnd.ms-powerpoint`, `application/vnd.openxmlformats-officedocument.presentationml.presentation`).\n\nUse the array format when you want to explicitly list multiple MIME types, making it easier to read and maintain in your configuration.\n\n## Examples\n\nIn this example, we have configured a *File Input* to accept only image files using an array of image MIME types.\n\n```yaml\n_inputs:\n hero_image:\n type: file\n label: Hero Image\n options:\n accepts_mime_types:\n - image/jpeg\n - image/png\n - image/webp\n```\n\nIn this example, we have configured a *File Input* to accept only document files using an array of document MIME types.\n\n```yaml\n_inputs:\n document:\n type: file\n label: Document\n options:\n accepts_mime_types:\n - application/pdf\n - application/msword\n - application/vnd.openxmlformats-officedocument.wordprocessingml.document\n```",
7151
7384
  "markdownDescription": "This key represents an array format for the `accepts_mime_types` key that restricts which file types are available to select or upload in *File Inputs*.\n\nThe value is an array of MIME type strings. Each string specifies a file type that CloudCannon will allow for this input.\n\nAvailable MIME types include image formats (`image/x-icon`, `image/gif`, `image/jpeg`, `image/png`, `image/webp`, `image/bmp`, `image/svg+xml`) and document formats (`application/pdf`, `application/msword`, `application/vnd.openxmlformats-officedocument.wordprocessingml.document`, `application/vnd.ms-excel`, `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`, `application/vnd.ms-powerpoint`, `application/vnd.openxmlformats-officedocument.presentationml.presentation`).\n\nUse the array format when you want to explicitly list multiple MIME types, making it easier to read and maintain in your configuration.\n\n## Examples\n\nIn this example, we have configured a *File Input* to accept only image files using an array of image MIME types.\n\n```yaml\n_inputs:\n hero_image:\n type: file\n label: Hero Image\n options:\n accepts_mime_types:\n - image/jpeg\n - image/png\n - image/webp\n```\n\nIn this example, we have configured a *File Input* to accept only document files using an array of document MIME types.\n\n```yaml\n_inputs:\n document:\n type: file\n label: Document\n options:\n accepts_mime_types:\n - application/pdf\n - application/msword\n - application/vnd.openxmlformats-officedocument.wordprocessingml.document\n```"
@@ -7156,8 +7389,6 @@
7156
7389
  "markdownDescription": "This key defines which file types are available to select or upload to this input.\n\nAccepted format is an array or comma-separated string of MIME types.\n\nThe special value \"*\" means any type is accepted.\n\n## Examples\n\nIn this example, we have configured a *Image Input* to accept only JPEG or PNG files.\n\n```yaml\n_inputs:\n featured_image:\n type: image\n options:\n accepts_mime_types:\n - image/jpeg\n - image/png\n```"
7157
7390
  },
7158
7391
  "MimeType": {
7159
- "title": "Mime Type",
7160
- "description": "This key represents an array format for the `accepts_mime_types` key that restricts which file types are available to select or upload in *File Inputs*.\n\nThe value is an array of MIME type strings. Each string specifies a file type that CloudCannon will allow for this input.\n\nAvailable MIME types include image formats (`image/x-icon`, `image/gif`, `image/jpeg`, `image/png`, `image/webp`, `image/bmp`, `image/svg+xml`) and document formats (`application/pdf`, `application/msword`, `application/vnd.openxmlformats-officedocument.wordprocessingml.document`, `application/vnd.ms-excel`, `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`, `application/vnd.ms-powerpoint`, `application/vnd.openxmlformats-officedocument.presentationml.presentation`).\n\nUse the array format when you want to explicitly list multiple MIME types, making it easier to read and maintain in your configuration.\n\n## Examples\n\nIn this example, we have configured a *File Input* to accept only image files using an array of image MIME types.\n\n```yaml\n_inputs:\n hero_image:\n type: file\n label: Hero Image\n options:\n accepts_mime_types:\n - image/jpeg\n - image/png\n - image/webp\n```\n\nIn this example, we have configured a *File Input* to accept only document files using an array of document MIME types.\n\n```yaml\n_inputs:\n document:\n type: file\n label: Document\n options:\n accepts_mime_types:\n - application/pdf\n - application/msword\n - application/vnd.openxmlformats-officedocument.wordprocessingml.document\n```",
7161
7392
  "type": "string",
7162
7393
  "enum": [
7163
7394
  "x-world/x-3dmf",
@@ -7594,6 +7825,8 @@
7594
7825
  "multipart/x-zip",
7595
7826
  "text/x-script.zsh"
7596
7827
  ],
7828
+ "title": "Mime Type",
7829
+ "description": "This key represents an array format for the `accepts_mime_types` key that restricts which file types are available to select or upload in *File Inputs*.\n\nThe value is an array of MIME type strings. Each string specifies a file type that CloudCannon will allow for this input.\n\nAvailable MIME types include image formats (`image/x-icon`, `image/gif`, `image/jpeg`, `image/png`, `image/webp`, `image/bmp`, `image/svg+xml`) and document formats (`application/pdf`, `application/msword`, `application/vnd.openxmlformats-officedocument.wordprocessingml.document`, `application/vnd.ms-excel`, `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`, `application/vnd.ms-powerpoint`, `application/vnd.openxmlformats-officedocument.presentationml.presentation`).\n\nUse the array format when you want to explicitly list multiple MIME types, making it easier to read and maintain in your configuration.\n\n## Examples\n\nIn this example, we have configured a *File Input* to accept only image files using an array of image MIME types.\n\n```yaml\n_inputs:\n hero_image:\n type: file\n label: Hero Image\n options:\n accepts_mime_types:\n - image/jpeg\n - image/png\n - image/webp\n```\n\nIn this example, we have configured a *File Input* to accept only document files using an array of document MIME types.\n\n```yaml\n_inputs:\n document:\n type: file\n label: Document\n options:\n accepts_mime_types:\n - application/pdf\n - application/msword\n - application/vnd.openxmlformats-officedocument.wordprocessingml.document\n```",
7597
7830
  "documented": true,
7598
7831
  "markdownDescription": "This key represents an array format for the `accepts_mime_types` key that restricts which file types are available to select or upload in *File Inputs*.\n\nThe value is an array of MIME type strings. Each string specifies a file type that CloudCannon will allow for this input.\n\nAvailable MIME types include image formats (`image/x-icon`, `image/gif`, `image/jpeg`, `image/png`, `image/webp`, `image/bmp`, `image/svg+xml`) and document formats (`application/pdf`, `application/msword`, `application/vnd.openxmlformats-officedocument.wordprocessingml.document`, `application/vnd.ms-excel`, `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`, `application/vnd.ms-powerpoint`, `application/vnd.openxmlformats-officedocument.presentationml.presentation`).\n\nUse the array format when you want to explicitly list multiple MIME types, making it easier to read and maintain in your configuration.\n\n## Examples\n\nIn this example, we have configured a *File Input* to accept only image files using an array of image MIME types.\n\n```yaml\n_inputs:\n hero_image:\n type: file\n label: Hero Image\n options:\n accepts_mime_types:\n - image/jpeg\n - image/png\n - image/webp\n```\n\nIn this example, we have configured a *File Input* to accept only document files using an array of document MIME types.\n\n```yaml\n_inputs:\n document:\n type: file\n label: Document\n options:\n accepts_mime_types:\n - application/pdf\n - application/msword\n - application/vnd.openxmlformats-officedocument.wordprocessingml.document\n```"
7599
7832
  },
@@ -7636,8 +7869,6 @@
7636
7869
  "markdownDescription": "This key toggles whether CloudCannon will prevent file uploads inside the \"Select existing file/image\" file browser modal window.\n\nSetting this key to `true` will prevent file uploads inside the file browser modal window.\n\n## Examples\n\nIn this example, CloudCannon will disable the option to upload files inside the file browser modal window.\n\n```yaml\n_inputs:\n image:\n type: file\n options:\n disable_upload_file_in_file_browser: true\n```"
7637
7870
  },
7638
7871
  "UrlInput": {
7639
- "title": "URL Input",
7640
- "description": "This key defines an editing interface for relative, absolute, and fully qualified URLs.",
7641
7872
  "type": "object",
7642
7873
  "properties": {
7643
7874
  "comment": {
@@ -7682,15 +7913,14 @@
7682
7913
  "$ref": "#/definitions/type._inputs.*.cascade"
7683
7914
  },
7684
7915
  "type": {
7685
- "title": "Type",
7686
- "description": "This key defines the input type, which controls how this input appears and behaves.",
7687
7916
  "type": "string",
7688
7917
  "const": "url",
7918
+ "title": "Type",
7919
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
7689
7920
  "documented": true,
7690
7921
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
7691
7922
  },
7692
7923
  "options": {
7693
- "description": "This key defines options that are specific to URL Inputs.",
7694
7924
  "type": "object",
7695
7925
  "properties": {
7696
7926
  "mime_type": {
@@ -7732,6 +7962,33 @@
7732
7962
  "min_length_message": {
7733
7963
  "$ref": "#/definitions/type._inputs.*.options.min_length_message"
7734
7964
  },
7965
+ "max_words": {
7966
+ "$ref": "#/definitions/type._inputs.*.options.max_words"
7967
+ },
7968
+ "max_words_message": {
7969
+ "$ref": "#/definitions/type._inputs.*.options.max_words_message"
7970
+ },
7971
+ "min_words": {
7972
+ "$ref": "#/definitions/type._inputs.*.options.min_words"
7973
+ },
7974
+ "min_words_message": {
7975
+ "$ref": "#/definitions/type._inputs.*.options.min_words_message"
7976
+ },
7977
+ "max_graphemes": {
7978
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes"
7979
+ },
7980
+ "max_graphemes_message": {
7981
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes_message"
7982
+ },
7983
+ "min_graphemes": {
7984
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes"
7985
+ },
7986
+ "min_graphemes_message": {
7987
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes_message"
7988
+ },
7989
+ "locale": {
7990
+ "$ref": "#/definitions/type._inputs.*.options.locale"
7991
+ },
7735
7992
  "pattern": {
7736
7993
  "$ref": "#/definitions/type._inputs.*.options.pattern"
7737
7994
  },
@@ -7817,6 +8074,7 @@
7817
8074
  }
7818
8075
  },
7819
8076
  "additionalProperties": false,
8077
+ "description": "This key defines options that are specific to URL Inputs.",
7820
8078
  "documented": true,
7821
8079
  "title": "options",
7822
8080
  "markdownDescription": "This key defines options that are specific to URL Inputs."
@@ -7826,12 +8084,12 @@
7826
8084
  "type"
7827
8085
  ],
7828
8086
  "additionalProperties": false,
8087
+ "title": "URL Input",
8088
+ "description": "This key defines an editing interface for relative, absolute, and fully qualified URLs.",
7829
8089
  "documented": true,
7830
8090
  "markdownDescription": "This key defines an editing interface for relative, absolute, and fully qualified URLs."
7831
8091
  },
7832
8092
  "SelectInput": {
7833
- "title": "Select Input",
7834
- "description": "This key defines an editing interface for data with multiple predefined options.\n\nSelect inputs only allow one value.\n\n## Examples\n\nIn this example, we have configured the `category` key as a *Select Input*.\n\n```yaml\n_inputs:\n category:\n type: select\n label: Category\n options:\n values:\n - Blog\n - News\n - Events\n```",
7835
8093
  "type": "object",
7836
8094
  "properties": {
7837
8095
  "comment": {
@@ -7876,15 +8134,14 @@
7876
8134
  "$ref": "#/definitions/type._inputs.*.cascade"
7877
8135
  },
7878
8136
  "type": {
7879
- "title": "Type",
7880
- "description": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `category` key as a *Select Input* type.\n\n```yaml\n_inputs:\n category:\n type: select\n options:\n values:\n - Blog\n - News\n - Events\n```",
7881
8137
  "type": "string",
7882
8138
  "const": "select",
8139
+ "title": "Type",
8140
+ "description": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `category` key as a *Select Input* type.\n\n```yaml\n_inputs:\n category:\n type: select\n options:\n values:\n - Blog\n - News\n - Events\n```",
7883
8141
  "documented": true,
7884
8142
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `category` key as a *Select Input* type.\n\n```yaml\n_inputs:\n category:\n type: select\n options:\n values:\n - Blog\n - News\n - Events\n```"
7885
8143
  },
7886
8144
  "options": {
7887
- "description": "This key defines options that are specific to Select Inputs.\n\n## Examples\n\nIn this example, we have configured *Select Input* options including values.\n\n```yaml\n_inputs:\n category:\n type: select\n options:\n values:\n - Blog\n - News\n - Events\n```",
7888
8145
  "type": "object",
7889
8146
  "properties": {
7890
8147
  "required": {
@@ -7941,6 +8198,33 @@
7941
8198
  "min_length_message": {
7942
8199
  "$ref": "#/definitions/type._inputs.*.options.min_length_message"
7943
8200
  },
8201
+ "max_words": {
8202
+ "$ref": "#/definitions/type._inputs.*.options.max_words"
8203
+ },
8204
+ "max_words_message": {
8205
+ "$ref": "#/definitions/type._inputs.*.options.max_words_message"
8206
+ },
8207
+ "min_words": {
8208
+ "$ref": "#/definitions/type._inputs.*.options.min_words"
8209
+ },
8210
+ "min_words_message": {
8211
+ "$ref": "#/definitions/type._inputs.*.options.min_words_message"
8212
+ },
8213
+ "max_graphemes": {
8214
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes"
8215
+ },
8216
+ "max_graphemes_message": {
8217
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes_message"
8218
+ },
8219
+ "min_graphemes": {
8220
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes"
8221
+ },
8222
+ "min_graphemes_message": {
8223
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes_message"
8224
+ },
8225
+ "locale": {
8226
+ "$ref": "#/definitions/type._inputs.*.options.locale"
8227
+ },
7944
8228
  "pattern": {
7945
8229
  "$ref": "#/definitions/type._inputs.*.options.pattern"
7946
8230
  },
@@ -7961,6 +8245,7 @@
7961
8245
  }
7962
8246
  },
7963
8247
  "additionalProperties": false,
8248
+ "description": "This key defines options that are specific to Select Inputs.\n\n## Examples\n\nIn this example, we have configured *Select Input* options including values.\n\n```yaml\n_inputs:\n category:\n type: select\n options:\n values:\n - Blog\n - News\n - Events\n```",
7964
8249
  "documented": true,
7965
8250
  "title": "options",
7966
8251
  "markdownDescription": "This key defines options that are specific to Select Inputs.\n\n## Examples\n\nIn this example, we have configured *Select Input* options including values.\n\n```yaml\n_inputs:\n category:\n type: select\n options:\n values:\n - Blog\n - News\n - Events\n```"
@@ -7970,11 +8255,12 @@
7970
8255
  "type"
7971
8256
  ],
7972
8257
  "additionalProperties": false,
8258
+ "title": "Select Input",
8259
+ "description": "This key defines an editing interface for data with multiple predefined options.\n\nSelect inputs only allow one value.\n\n## Examples\n\nIn this example, we have configured the `category` key as a *Select Input*.\n\n```yaml\n_inputs:\n category:\n type: select\n label: Category\n options:\n values:\n - Blog\n - News\n - Events\n```",
7973
8260
  "documented": true,
7974
8261
  "markdownDescription": "This key defines an editing interface for data with multiple predefined options.\n\nSelect inputs only allow one value.\n\n## Examples\n\nIn this example, we have configured the `category` key as a *Select Input*.\n\n```yaml\n_inputs:\n category:\n type: select\n label: Category\n options:\n values:\n - Blog\n - News\n - Events\n```"
7975
8262
  },
7976
8263
  "type.preview": {
7977
- "title": "Preview",
7978
8264
  "type": "object",
7979
8265
  "properties": {
7980
8266
  "text": {
@@ -8006,6 +8292,7 @@
8006
8292
  }
8007
8293
  },
8008
8294
  "additionalProperties": false,
8295
+ "title": "Preview",
8009
8296
  "documented": true,
8010
8297
  "description": "This key defines the appearance of a Card.\n\nYou can configure Card preview for [Collections](https://cloudcannon.com/documentation/articles/what-is-a-collection/), [Schemas](https://cloudcannon.com/documentation/articles/what-is-a-schema/),\n[Object inputs](https://cloudcannon.com/documentation/articles/what-is-an-object-input/), [Array inputs](https://cloudcannon.com/documentation/articles/what-is-an-array-input/), [Select\ninputs](https://cloudcannon.com/documentation/articles/what-is-a-select-input/), [Structures](https://cloudcannon.com/documentation/articles/what-is-a-structure/), the Structure modal,\n[Snippets](https://cloudcannon.com/documentation/articles/what-is-a-snippet/), and the Snippet modal.\n\nFor more information about previews, please read our documentation on [configuring card previews](https://cloudcannon.com/documentation/articles/configure-your-card-previews/).\n\n## Examples\n\nIn this example, we have configured the appearance of file Cards in the *Collection browser*.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - key: title\n subtext:\n - key: author\n icon: edit_note\n icon_color:\n - key: color\n - '#ff0000'\n image:\n - key: image\n metadata:\n - template: [url]\n - icon: event\n text:\n - template: 'Published on {date|date_long}'\n gallery:\n - key: featured_image\n```\n\nIn this example, we have configured the appearance of Cards in inputs using the Structure `staff`.\n\n```yaml\n_structures:\n staff:\n values:\n - value:\n _type: Employee\n name:\n job_description:\n profile_picture:\n preview:\n text:\n - key: name\n - Employee\n subtext:\n - key: job_description\n - Description of position\n image:\n - key: profile_picture\n icon: support_agent\n - value:\n _type: Manager\n name:\n job_description:\n profile_picture:\n url:\n preview:\n text:\n - key: name\n - Manager\n subtext:\n - key: job_description\n - Description of position\n image:\n - key: profile_picture\n icon: face\n```",
8011
8298
  "markdownDescription": "This key defines the appearance of a Card.\n\nYou can configure Card preview for [Collections](https://cloudcannon.com/documentation/articles/what-is-a-collection/), [Schemas](https://cloudcannon.com/documentation/articles/what-is-a-schema/),\n[Object inputs](https://cloudcannon.com/documentation/articles/what-is-an-object-input/), [Array inputs](https://cloudcannon.com/documentation/articles/what-is-an-array-input/), [Select\ninputs](https://cloudcannon.com/documentation/articles/what-is-a-select-input/), [Structures](https://cloudcannon.com/documentation/articles/what-is-a-structure/), the Structure modal,\n[Snippets](https://cloudcannon.com/documentation/articles/what-is-a-snippet/), and the Snippet modal.\n\nFor more information about previews, please read our documentation on [configuring card previews](https://cloudcannon.com/documentation/articles/configure-your-card-previews/).\n\n## Examples\n\nIn this example, we have configured the appearance of file Cards in the *Collection browser*.\n\n```yaml\ncollections_config:\n blog:\n preview:\n text:\n - key: title\n subtext:\n - key: author\n icon: edit_note\n icon_color:\n - key: color\n - '#ff0000'\n image:\n - key: image\n metadata:\n - template: [url]\n - icon: event\n text:\n - template: 'Published on {date|date_long}'\n gallery:\n - key: featured_image\n```\n\nIn this example, we have configured the appearance of Cards in inputs using the Structure `staff`.\n\n```yaml\n_structures:\n staff:\n values:\n - value:\n _type: Employee\n name:\n job_description:\n profile_picture:\n preview:\n text:\n - key: name\n - Employee\n subtext:\n - key: job_description\n - Description of position\n image:\n - key: profile_picture\n icon: support_agent\n - value:\n _type: Manager\n name:\n job_description:\n profile_picture:\n url:\n preview:\n text:\n - key: name\n - Manager\n subtext:\n - key: job_description\n - Description of position\n image:\n - key: profile_picture\n icon: face\n```"
@@ -8201,38 +8488,36 @@
8201
8488
  "markdownDescription": "This key toggles whether CloudCannon will allow new text values to be created at edit time.\n\nSetting this key to `true` will allow new text values to be created at edit time.\n\n## Examples\n\nIn this example, CloudCannon will allow users to add new values to a *Select Input*.\n\n```yaml\n_inputs:\n category:\n type: select\n options:\n values:\n - Blog\n - News\n allow_create: true\n```"
8202
8489
  },
8203
8490
  "type._inputs.*.options.allow_empty": {
8204
- "description": "**⚠️ DEPRECATED:** This key is deprecated. If you want to prevent empty values, we recommend setting `_inputs.*.options.required` to `true` instead.\n\nThis key toggles whether CloudCannon will accept empty values, and pre-select the first option if opened with an empty value.\n\nSetting this key to `true` will allow CloudCannon to accept empty values.\n\n## Examples\n\nIn this example, CloudCannon will accept empty values for a *Select Input*.\n\n```yaml\n_inputs:\n category:\n type: select\n options:\n values:\n - Blog\n - News\n - Events\n allow_empty: true\n```",
8205
- "default": true,
8491
+ "deprecated": true,
8492
+ "description": "This key is deprecated. If you want to prevent empty values, we recommend setting `_inputs.*.options.required` to `true` instead.\n\nThis key toggles whether CloudCannon will accept empty values, and pre-select the first option if opened with an empty value.\n\nSetting this key to `true` will allow CloudCannon to accept empty values.\n\n## Examples\n\nIn this example, CloudCannon will accept empty values for a *Select Input*.\n\n```yaml\n_inputs:\n category:\n type: select\n options:\n values:\n - Blog\n - News\n - Events\n allow_empty: true\n```",
8206
8493
  "type": "boolean",
8207
8494
  "documented": true,
8208
8495
  "title": "allow_empty",
8209
- "markdownDescription": "**⚠️ DEPRECATED:** This key is deprecated. If you want to prevent empty values, we recommend setting `_inputs.*.options.required` to `true` instead.\n\nThis key toggles whether CloudCannon will accept empty values, and pre-select the first option if opened with an empty value.\n\nSetting this key to `true` will allow CloudCannon to accept empty values.\n\n## Examples\n\nIn this example, CloudCannon will accept empty values for a *Select Input*.\n\n```yaml\n_inputs:\n category:\n type: select\n options:\n values:\n - Blog\n - News\n - Events\n allow_empty: true\n```"
8496
+ "markdownDescription": "This key is deprecated. If you want to prevent empty values, we recommend setting `_inputs.*.options.required` to `true` instead.\n\nThis key toggles whether CloudCannon will accept empty values, and pre-select the first option if opened with an empty value.\n\nSetting this key to `true` will allow CloudCannon to accept empty values.\n\n## Examples\n\nIn this example, CloudCannon will accept empty values for a *Select Input*.\n\n```yaml\n_inputs:\n category:\n type: select\n options:\n values:\n - Blog\n - News\n - Events\n allow_empty: true\n```"
8210
8497
  },
8211
8498
  "type._inputs.*.options.values": {
8212
8499
  "description": "This key defines the values available to choose from.\n\nOptional, defaults to fetching values from the naming convention (e.g. `colors` or `my_colors` for data set `colors`).\n\n## Examples\n\nIn this example, we have configured a *Select Input* with custom values to choose from.\n\n```yaml\n_inputs:\n category:\n type: select\n options:\n values:\n - Blog\n - News\n - Events\n```",
8213
8500
  "anyOf": [
8214
8501
  {
8502
+ "type": "string",
8215
8503
  "title": "Dataset Reference Values",
8216
8504
  "description": "This key defines a reference to a dataset.",
8217
- "type": "string",
8218
8505
  "documented": true,
8219
8506
  "markdownDescription": "This key defines a reference to a dataset."
8220
8507
  },
8221
8508
  {
8222
- "description": "Data formats for populating select and multiselect input options, supporting arrays and objects.",
8223
8509
  "anyOf": [
8224
8510
  {
8225
- "title": "Text Array",
8226
8511
  "type": "array",
8227
8512
  "items": {
8228
8513
  "type": "string",
8229
8514
  "documented": false,
8230
8515
  "title": "values(any-of-1)(text-array)[*]"
8231
8516
  },
8517
+ "title": "Text Array",
8232
8518
  "documented": false
8233
8519
  },
8234
8520
  {
8235
- "title": "Text Object",
8236
8521
  "type": "object",
8237
8522
  "propertyNames": {
8238
8523
  "type": "string"
@@ -8242,10 +8527,10 @@
8242
8527
  "documented": false,
8243
8528
  "title": "values(any-of-1)(text-object).*"
8244
8529
  },
8530
+ "title": "Text Object",
8245
8531
  "documented": false
8246
8532
  },
8247
8533
  {
8248
- "title": "Object Array",
8249
8534
  "type": "array",
8250
8535
  "items": {
8251
8536
  "type": "object",
@@ -8256,18 +8541,20 @@
8256
8541
  "documented": false,
8257
8542
  "title": "values(any-of-1)(object-array)[*]"
8258
8543
  },
8544
+ "title": "Object Array",
8259
8545
  "documented": false
8260
8546
  },
8261
8547
  {
8262
- "title": "Object",
8263
8548
  "type": "object",
8264
8549
  "propertyNames": {
8265
8550
  "type": "string"
8266
8551
  },
8267
8552
  "additionalProperties": {},
8553
+ "title": "Object",
8268
8554
  "documented": false
8269
8555
  }
8270
8556
  ],
8557
+ "description": "Data formats for populating select and multiselect input options, supporting arrays and objects.",
8271
8558
  "documented": false,
8272
8559
  "title": "values(any-of-1)",
8273
8560
  "markdownDescription": "Data formats for populating select and multiselect input options, supporting arrays and objects."
@@ -8311,8 +8598,6 @@
8311
8598
  "markdownDescription": "This key defines how CloudCannon should render selectable options in the dropdown of a *Select Input*.\n\n## Examples\n\nIn this example, we have configured a *Select Input* to display options using the card view.\n\n```yaml\n_inputs:\n category:\n type: select\n options:\n values:\n - Blog\n - News\n - Events\n picker_view: card\n```"
8312
8599
  },
8313
8600
  "MultiselectInput": {
8314
- "title": "Multiselect Input",
8315
- "description": "This key defines an editing interface for data with multiple predefined options.\n\nMultiselect inputs allow several values.\n\n## Examples\n\nIn this example, we have configured the `tags` key as a *Multiselect Input*.\n\n```yaml\n_inputs:\n tags:\n type: multiselect\n label: Tags\n options:\n values:\n - featured\n - news\n - events\n```",
8316
8601
  "type": "object",
8317
8602
  "properties": {
8318
8603
  "comment": {
@@ -8357,15 +8642,14 @@
8357
8642
  "$ref": "#/definitions/type._inputs.*.cascade"
8358
8643
  },
8359
8644
  "type": {
8360
- "title": "Type",
8361
- "description": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `tags` key as a *Multiselect Input* type.\n\n```yaml\n_inputs:\n tags:\n type: multiselect\n```",
8362
8645
  "type": "string",
8363
8646
  "const": "multiselect",
8647
+ "title": "Type",
8648
+ "description": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `tags` key as a *Multiselect Input* type.\n\n```yaml\n_inputs:\n tags:\n type: multiselect\n```",
8364
8649
  "documented": true,
8365
8650
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `tags` key as a *Multiselect Input* type.\n\n```yaml\n_inputs:\n tags:\n type: multiselect\n```"
8366
8651
  },
8367
8652
  "options": {
8368
- "description": "This key defines options that are specific to Multiselect Inputs.\n\n## Examples\n\nIn this example, we have configured *Multiselect Input* options including values.\n\n```yaml\n_inputs:\n tags:\n type: multiselect\n options:\n values:\n - featured\n - news\n - events\n```",
8369
8653
  "type": "object",
8370
8654
  "properties": {
8371
8655
  "required": {
@@ -8439,6 +8723,7 @@
8439
8723
  }
8440
8724
  },
8441
8725
  "additionalProperties": false,
8726
+ "description": "This key defines options that are specific to Multiselect Inputs.\n\n## Examples\n\nIn this example, we have configured *Multiselect Input* options including values.\n\n```yaml\n_inputs:\n tags:\n type: multiselect\n options:\n values:\n - featured\n - news\n - events\n```",
8442
8727
  "documented": true,
8443
8728
  "title": "options",
8444
8729
  "markdownDescription": "This key defines options that are specific to Multiselect Inputs.\n\n## Examples\n\nIn this example, we have configured *Multiselect Input* options including values.\n\n```yaml\n_inputs:\n tags:\n type: multiselect\n options:\n values:\n - featured\n - news\n - events\n```"
@@ -8448,6 +8733,8 @@
8448
8733
  "type"
8449
8734
  ],
8450
8735
  "additionalProperties": false,
8736
+ "title": "Multiselect Input",
8737
+ "description": "This key defines an editing interface for data with multiple predefined options.\n\nMultiselect inputs allow several values.\n\n## Examples\n\nIn this example, we have configured the `tags` key as a *Multiselect Input*.\n\n```yaml\n_inputs:\n tags:\n type: multiselect\n label: Tags\n options:\n values:\n - featured\n - news\n - events\n```",
8451
8738
  "documented": true,
8452
8739
  "markdownDescription": "This key defines an editing interface for data with multiple predefined options.\n\nMultiselect inputs allow several values.\n\n## Examples\n\nIn this example, we have configured the `tags` key as a *Multiselect Input*.\n\n```yaml\n_inputs:\n tags:\n type: multiselect\n label: Tags\n options:\n values:\n - featured\n - news\n - events\n```"
8453
8740
  },
@@ -8494,8 +8781,8 @@
8494
8781
  "markdownDescription": "This key defines a custom error message that explains why a value has failed the validation criteria from `options.unique_on`.\nThis key requires you to define `options.unique_on`.\n\nThis key has no default.\n\nThis key is available for Array inputs.\n\n## Examples\n\nIn this example, we want our team to add article filepaths to the `related_articles` Input. This Input requires all the filepaths to be unique.\n\n```yaml\n_inputs:\n related_articles:\n type: array\n options:\n unique_on: '$.path'\n unique_on_message: The value for path must be different for all items.\n```\n\n```yaml\nrelated_articles:\n - path: /articles/first-article.md\n featured: true\n - path: /articles/first-article.md\n featured: false\n```"
8495
8782
  },
8496
8783
  "type._inputs.*.options.empty_type(array)": {
8497
- "description": "This key defines how an 'empty' value will be saved. Does not apply to existing empty values.\n\n## Examples\n\nIn this example, we have configured how empty array values will be saved.\n\n```yaml\n_inputs:\n tags:\n type: array\n options:\n empty_type: array\n```",
8498
8784
  "default": "null",
8785
+ "description": "This key defines how an 'empty' value will be saved. Does not apply to existing empty values.\n\n## Examples\n\nIn this example, we have configured how empty array values will be saved.\n\n```yaml\n_inputs:\n tags:\n type: array\n options:\n empty_type: array\n```",
8499
8786
  "type": "string",
8500
8787
  "enum": [
8501
8788
  "null",
@@ -8506,8 +8793,6 @@
8506
8793
  "markdownDescription": "This key defines how an 'empty' value will be saved. Does not apply to existing empty values.\n\n## Examples\n\nIn this example, we have configured how empty array values will be saved.\n\n```yaml\n_inputs:\n tags:\n type: array\n options:\n empty_type: array\n```"
8507
8794
  },
8508
8795
  "ChoiceInput": {
8509
- "title": "Choice Input",
8510
- "description": "This key defines an editing interface for data with multiple predefined options.\n\nChoice inputs only allow one value.\n\n## Examples\n\nIn this example, we have configured the `status` key as a *Choice Input*.\n\n```yaml\n_inputs:\n status:\n type: choice\n label: Status\n options:\n values:\n - draft\n - published\n - archived\n```",
8511
8796
  "type": "object",
8512
8797
  "properties": {
8513
8798
  "comment": {
@@ -8552,15 +8837,14 @@
8552
8837
  "$ref": "#/definitions/type._inputs.*.cascade"
8553
8838
  },
8554
8839
  "type": {
8555
- "title": "Type",
8556
- "description": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `status` key as a *Choice Input* type.\n\n```yaml\n_inputs:\n status:\n type: choice\n```",
8557
8840
  "type": "string",
8558
8841
  "const": "choice",
8842
+ "title": "Type",
8843
+ "description": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `status` key as a *Choice Input* type.\n\n```yaml\n_inputs:\n status:\n type: choice\n```",
8559
8844
  "documented": true,
8560
8845
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves.\n\n## Examples\n\nIn this example, we have configured the `status` key as a *Choice Input* type.\n\n```yaml\n_inputs:\n status:\n type: choice\n```"
8561
8846
  },
8562
8847
  "options": {
8563
- "description": "This key defines options that are specific to Choice Inputs.\n\n## Examples\n\nIn this example, we have configured *Choice Input* options including values.\n\n```yaml\n_inputs:\n status:\n type: choice\n options:\n values:\n - draft\n - published\n - archived\n```",
8564
8848
  "type": "object",
8565
8849
  "properties": {
8566
8850
  "required": {
@@ -8614,6 +8898,33 @@
8614
8898
  "min_length_message": {
8615
8899
  "$ref": "#/definitions/type._inputs.*.options.min_length_message"
8616
8900
  },
8901
+ "max_words": {
8902
+ "$ref": "#/definitions/type._inputs.*.options.max_words"
8903
+ },
8904
+ "max_words_message": {
8905
+ "$ref": "#/definitions/type._inputs.*.options.max_words_message"
8906
+ },
8907
+ "min_words": {
8908
+ "$ref": "#/definitions/type._inputs.*.options.min_words"
8909
+ },
8910
+ "min_words_message": {
8911
+ "$ref": "#/definitions/type._inputs.*.options.min_words_message"
8912
+ },
8913
+ "max_graphemes": {
8914
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes"
8915
+ },
8916
+ "max_graphemes_message": {
8917
+ "$ref": "#/definitions/type._inputs.*.options.max_graphemes_message"
8918
+ },
8919
+ "min_graphemes": {
8920
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes"
8921
+ },
8922
+ "min_graphemes_message": {
8923
+ "$ref": "#/definitions/type._inputs.*.options.min_graphemes_message"
8924
+ },
8925
+ "locale": {
8926
+ "$ref": "#/definitions/type._inputs.*.options.locale"
8927
+ },
8617
8928
  "pattern": {
8618
8929
  "$ref": "#/definitions/type._inputs.*.options.pattern"
8619
8930
  },
@@ -8634,6 +8945,7 @@
8634
8945
  }
8635
8946
  },
8636
8947
  "additionalProperties": false,
8948
+ "description": "This key defines options that are specific to Choice Inputs.\n\n## Examples\n\nIn this example, we have configured *Choice Input* options including values.\n\n```yaml\n_inputs:\n status:\n type: choice\n options:\n values:\n - draft\n - published\n - archived\n```",
8637
8949
  "documented": true,
8638
8950
  "title": "options",
8639
8951
  "markdownDescription": "This key defines options that are specific to Choice Inputs.\n\n## Examples\n\nIn this example, we have configured *Choice Input* options including values.\n\n```yaml\n_inputs:\n status:\n type: choice\n options:\n values:\n - draft\n - published\n - archived\n```"
@@ -8643,12 +8955,12 @@
8643
8955
  "type"
8644
8956
  ],
8645
8957
  "additionalProperties": false,
8958
+ "title": "Choice Input",
8959
+ "description": "This key defines an editing interface for data with multiple predefined options.\n\nChoice inputs only allow one value.\n\n## Examples\n\nIn this example, we have configured the `status` key as a *Choice Input*.\n\n```yaml\n_inputs:\n status:\n type: choice\n label: Status\n options:\n values:\n - draft\n - published\n - archived\n```",
8646
8960
  "documented": true,
8647
8961
  "markdownDescription": "This key defines an editing interface for data with multiple predefined options.\n\nChoice inputs only allow one value.\n\n## Examples\n\nIn this example, we have configured the `status` key as a *Choice Input*.\n\n```yaml\n_inputs:\n status:\n type: choice\n label: Status\n options:\n values:\n - draft\n - published\n - archived\n```"
8648
8962
  },
8649
8963
  "MultichoiceInput": {
8650
- "title": "Multichoice Input",
8651
- "description": "This key defines an editing interface for data with multiple predefined options.\n\nMultichoice inputs allow several values.\n\n## Examples\n\nIn this example, we have configured the `categories` key as a *Multichoice Input*.\n\n```yaml\n_inputs:\n categories:\n type: multichoice\n label: Categories\n options:\n values:\n - technology\n - design\n - business\n```",
8652
8964
  "type": "object",
8653
8965
  "properties": {
8654
8966
  "comment": {
@@ -8693,15 +9005,14 @@
8693
9005
  "$ref": "#/definitions/type._inputs.*.cascade"
8694
9006
  },
8695
9007
  "type": {
8696
- "title": "Type",
8697
- "description": "This key defines the type of editing interface used for an Input.\n\nEach Input type has a different appearance and functionality, processes and accepts different types of values, and has different configuration\noptions.\n\nValue can be one of the following: `auto`, `checkbox`, `switch`, `code`, `color`, `datetime`, `date`, `time`, `file`, `document`, `image`, `number`,\n`range`, `object`, `array`, `select`, `multiselect`, `choice`, `multichoice`, `text`, `textarea`, `email`, `html`, `markdown`, or `url`.\n\nIf the type or value of an Input is misconfigured, CloudCannon will display an orange warning instead of an Input.\n\nIf type is not configured for an Input, CloudCannon will attempt to determine Input type based on value or key name conventions.\n\n## Examples\n\nIn this example, we have configured the `categories` key as a *Multichoice Input* type.\n\n```yaml\n_inputs:\n categories:\n type: multichoice\n```",
8698
9008
  "type": "string",
8699
9009
  "const": "multichoice",
9010
+ "title": "Type",
9011
+ "description": "This key defines the type of editing interface used for an Input.\n\nEach Input type has a different appearance and functionality, processes and accepts different types of values, and has different configuration\noptions.\n\nValue can be one of the following: `auto`, `checkbox`, `switch`, `code`, `color`, `datetime`, `date`, `time`, `file`, `document`, `image`, `number`,\n`range`, `object`, `array`, `select`, `multiselect`, `choice`, `multichoice`, `text`, `textarea`, `email`, `html`, `markdown`, or `url`.\n\nIf the type or value of an Input is misconfigured, CloudCannon will display an orange warning instead of an Input.\n\nIf type is not configured for an Input, CloudCannon will attempt to determine Input type based on value or key name conventions.\n\n## Examples\n\nIn this example, we have configured the `categories` key as a *Multichoice Input* type.\n\n```yaml\n_inputs:\n categories:\n type: multichoice\n```",
8700
9012
  "documented": true,
8701
9013
  "markdownDescription": "This key defines the type of editing interface used for an Input.\n\nEach Input type has a different appearance and functionality, processes and accepts different types of values, and has different configuration\noptions.\n\nValue can be one of the following: `auto`, `checkbox`, `switch`, `code`, `color`, `datetime`, `date`, `time`, `file`, `document`, `image`, `number`,\n`range`, `object`, `array`, `select`, `multiselect`, `choice`, `multichoice`, `text`, `textarea`, `email`, `html`, `markdown`, or `url`.\n\nIf the type or value of an Input is misconfigured, CloudCannon will display an orange warning instead of an Input.\n\nIf type is not configured for an Input, CloudCannon will attempt to determine Input type based on value or key name conventions.\n\n## Examples\n\nIn this example, we have configured the `categories` key as a *Multichoice Input* type.\n\n```yaml\n_inputs:\n categories:\n type: multichoice\n```"
8702
9014
  },
8703
9015
  "options": {
8704
- "description": "This key defines options that are specific to Multichoice Inputs.\n\n## Examples\n\nIn this example, we have configured *Multichoice Input* options including values.\n\n```yaml\n_inputs:\n categories:\n type: multichoice\n options:\n values:\n - technology\n - design\n - business\n```",
8705
9016
  "type": "object",
8706
9017
  "properties": {
8707
9018
  "required": {
@@ -8772,6 +9083,7 @@
8772
9083
  }
8773
9084
  },
8774
9085
  "additionalProperties": false,
9086
+ "description": "This key defines options that are specific to Multichoice Inputs.\n\n## Examples\n\nIn this example, we have configured *Multichoice Input* options including values.\n\n```yaml\n_inputs:\n categories:\n type: multichoice\n options:\n values:\n - technology\n - design\n - business\n```",
8775
9087
  "documented": true,
8776
9088
  "title": "options",
8777
9089
  "markdownDescription": "This key defines options that are specific to Multichoice Inputs.\n\n## Examples\n\nIn this example, we have configured *Multichoice Input* options including values.\n\n```yaml\n_inputs:\n categories:\n type: multichoice\n options:\n values:\n - technology\n - design\n - business\n```"
@@ -8781,12 +9093,12 @@
8781
9093
  "type"
8782
9094
  ],
8783
9095
  "additionalProperties": false,
9096
+ "title": "Multichoice Input",
9097
+ "description": "This key defines an editing interface for data with multiple predefined options.\n\nMultichoice inputs allow several values.\n\n## Examples\n\nIn this example, we have configured the `categories` key as a *Multichoice Input*.\n\n```yaml\n_inputs:\n categories:\n type: multichoice\n label: Categories\n options:\n values:\n - technology\n - design\n - business\n```",
8784
9098
  "documented": true,
8785
9099
  "markdownDescription": "This key defines an editing interface for data with multiple predefined options.\n\nMultichoice inputs allow several values.\n\n## Examples\n\nIn this example, we have configured the `categories` key as a *Multichoice Input*.\n\n```yaml\n_inputs:\n categories:\n type: multichoice\n label: Categories\n options:\n values:\n - technology\n - design\n - business\n```"
8786
9100
  },
8787
9101
  "ObjectInput": {
8788
- "title": "Object Input",
8789
- "description": "This key defines a user interface for a group of inputs.",
8790
9102
  "type": "object",
8791
9103
  "properties": {
8792
9104
  "comment": {
@@ -8831,15 +9143,14 @@
8831
9143
  "$ref": "#/definitions/type._inputs.*.cascade"
8832
9144
  },
8833
9145
  "type": {
8834
- "title": "Type",
8835
- "description": "This key defines the input type, which controls how this input appears and behaves.",
8836
9146
  "type": "string",
8837
9147
  "const": "object",
9148
+ "title": "Type",
9149
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
8838
9150
  "documented": true,
8839
9151
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
8840
9152
  },
8841
9153
  "options": {
8842
- "description": "This key defines options that are specific to Object Inputs.",
8843
9154
  "type": "object",
8844
9155
  "properties": {
8845
9156
  "required": {
@@ -9062,6 +9373,7 @@
9062
9373
  }
9063
9374
  },
9064
9375
  "additionalProperties": false,
9376
+ "description": "This key defines options that are specific to Object Inputs.",
9065
9377
  "documented": true,
9066
9378
  "title": "options",
9067
9379
  "markdownDescription": "This key defines options that are specific to Object Inputs."
@@ -9071,12 +9383,14 @@
9071
9383
  "type"
9072
9384
  ],
9073
9385
  "additionalProperties": false,
9386
+ "title": "Object Input",
9387
+ "description": "This key defines a user interface for a group of inputs.",
9074
9388
  "documented": true,
9075
9389
  "markdownDescription": "This key defines a user interface for a group of inputs."
9076
9390
  },
9077
9391
  "type._inputs.*.options.empty_type(object)": {
9078
- "description": "This key defines how an 'empty' value will be saved. Does not apply to existing empty values.\n\n## Examples\n\nIn this example, we have configured how empty object values will be saved.\n\n```yaml\n_inputs:\n metadata:\n type: object\n options:\n empty_type: object\n```",
9079
9392
  "default": "null",
9393
+ "description": "This key defines how an 'empty' value will be saved. Does not apply to existing empty values.\n\n## Examples\n\nIn this example, we have configured how empty object values will be saved.\n\n```yaml\n_inputs:\n metadata:\n type: object\n options:\n empty_type: object\n```",
9080
9394
  "type": "string",
9081
9395
  "enum": [
9082
9396
  "null",
@@ -9087,15 +9401,13 @@
9087
9401
  "markdownDescription": "This key defines how an 'empty' value will be saved. Does not apply to existing empty values.\n\n## Examples\n\nIn this example, we have configured how empty object values will be saved.\n\n```yaml\n_inputs:\n metadata:\n type: object\n options:\n empty_type: object\n```"
9088
9402
  },
9089
9403
  "type.structure-reference": {
9404
+ "type": "string",
9090
9405
  "title": "Structure Reference",
9091
9406
  "description": "A reference to an existing structure.",
9092
- "type": "string",
9093
9407
  "documented": true,
9094
9408
  "markdownDescription": "A reference to an existing structure."
9095
9409
  },
9096
9410
  "type.structure": {
9097
- "title": "Structure",
9098
- "description": "This key defines data formats when adding new items to arrays and objects, with options for how editors choose from available values.",
9099
9411
  "type": "object",
9100
9412
  "properties": {
9101
9413
  "reorder_inputs": {
@@ -9131,11 +9443,11 @@
9131
9443
  "markdownDescription": "This key toggles whether CloudCannon will remove inputs that are not present in a Structure from a file before loading it in an Editing Interface.\n\nSetting this key to `true` will remove inputs that are not present in a Structure from a file before loading it in an Editing Interface. Non-Structure inputs will not be visible in the [Visual Editor](https://cloudcannon.com/documentation/articles/what-is-the-visual-editor/), [Content\nEditor](https://cloudcannon.com/documentation/articles/what-is-the-content-editor/), or [Data Editor](https://cloudcannon.com/documentation/articles/what-is-the-data-editor/), and saving the file\nwill remove them from the file before persisting the changes to your Git repository.\n\nYou can also configure this behavior for specific values of a Structure using `values[*].remove_extra_inputs`.\n\n## Examples\n\nIn this example, we want to delete old inputs that are not in the Structure from the associated file.\n\n```yaml\n_structures:\n related_articles:\n remove_extra_inputs: true\n values:\n - value:\n name:\n description:\n url:\n```"
9132
9444
  },
9133
9445
  "values": {
9134
- "description": "This key defines the options available for a Structure.\n\nYou must define this key for the Structure to function.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we want to add the `title`, `subtitle`, `author`, `featured_image`, and `url` fields to Object or Array inputs that reference this Structure.\n\n```yaml\n_structures:\n related_articles:\n values:\n - label: Blog\n id:\n default: true\n tabbed: false\n tags:\n - blog\n value:\n title:\n subtitle:\n author:\n featured_image:\n url:\n _inputs:\n featured_image:\n type: image\n options:\n width: 50\n height: 50\n groups:\n - heading: Titles\n inputs:\n - title\n - subtitle\n - heading: Details\n inputs:\n - author\n - image\n - url\n preview:\n text:\n - template: \"{title}\"\n subtext:\n - template: \"By {author}\"\n image:\n - key: image\n picker_preview:\n text: Blog\n subtext: Add a related blog\n icon: post_add\n```",
9135
9446
  "type": "array",
9136
9447
  "items": {
9137
9448
  "$ref": "#/definitions/type.structure.values.[*]"
9138
9449
  },
9450
+ "description": "This key defines the options available for a Structure.\n\nYou must define this key for the Structure to function.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we want to add the `title`, `subtitle`, `author`, `featured_image`, and `url` fields to Object or Array inputs that reference this Structure.\n\n```yaml\n_structures:\n related_articles:\n values:\n - label: Blog\n id:\n default: true\n tabbed: false\n tags:\n - blog\n value:\n title:\n subtitle:\n author:\n featured_image:\n url:\n _inputs:\n featured_image:\n type: image\n options:\n width: 50\n height: 50\n groups:\n - heading: Titles\n inputs:\n - title\n - subtitle\n - heading: Details\n inputs:\n - author\n - image\n - url\n preview:\n text:\n - template: \"{title}\"\n subtext:\n - template: \"By {author}\"\n image:\n - key: image\n picker_preview:\n text: Blog\n subtext: Add a related blog\n icon: post_add\n```",
9139
9451
  "documented": true,
9140
9452
  "title": "values",
9141
9453
  "markdownDescription": "This key defines the options available for a Structure.\n\nYou must define this key for the Structure to function.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we want to add the `title`, `subtitle`, `author`, `featured_image`, and `url` fields to Object or Array inputs that reference this Structure.\n\n```yaml\n_structures:\n related_articles:\n values:\n - label: Blog\n id:\n default: true\n tabbed: false\n tags:\n - blog\n value:\n title:\n subtitle:\n author:\n featured_image:\n url:\n _inputs:\n featured_image:\n type: image\n options:\n width: 50\n height: 50\n groups:\n - heading: Titles\n inputs:\n - title\n - subtitle\n - heading: Details\n inputs:\n - author\n - image\n - url\n preview:\n text:\n - template: \"{title}\"\n subtext:\n - template: \"By {author}\"\n image:\n - key: image\n picker_preview:\n text: Blog\n subtext: Add a related blog\n icon: post_add\n```"
@@ -9146,13 +9458,13 @@
9146
9458
  "type": "string",
9147
9459
  "documented": true,
9148
9460
  "title": "values_from_glob[*]",
9149
- "description": "This key represents an individual glob pattern string in the `values_from_glob` array.\n\nThe value is a string that specifies a file path pattern relative to the root of your repository. The path must end in the file extension `.cloudcannon.structure-value.yml` (note the singular form of \"value\").\n\n## Examples\n\nIn this example, the `staff` Array Input uses inline *Structure* values from the main *Configuration File* and also references another value from the `boardMember.cloudcannon.structure-value.yml` in the `/.cloudcannon/structures/` folder.\n\n```yaml\n_inputs:\n staff:\n type: array\n options:\n structures:\n values_from_glob: /.cloudcannon/structures/boardMember.cloudcannon.structure-value.yml\n values:\n - label: Employee\n value:\n name:\n title:\n profile_picture:\n - label: Manager\n value:\n name:\n title:\n profile_picture:\n url:\n```",
9150
- "markdownDescription": "This key represents an individual glob pattern string in the `values_from_glob` array.\n\nThe value is a string that specifies a file path pattern relative to the root of your repository. The path must end in the file extension `.cloudcannon.structure-value.yml` (note the singular form of \"value\").\n\n## Examples\n\nIn this example, the `staff` Array Input uses inline *Structure* values from the main *Configuration File* and also references another value from the `boardMember.cloudcannon.structure-value.yml` in the `/.cloudcannon/structures/` folder.\n\n```yaml\n_inputs:\n staff:\n type: array\n options:\n structures:\n values_from_glob: /.cloudcannon/structures/boardMember.cloudcannon.structure-value.yml\n values:\n - label: Employee\n value:\n name:\n title:\n profile_picture:\n - label: Manager\n value:\n name:\n title:\n profile_picture:\n url:\n```"
9461
+ "description": "This key represents an individual glob pattern string in the `values_from_glob` array.\n\nThe value is a string that specifies a file path pattern relative to the root of your repository. The path must end in the file extension `.cloudcannon.structure-value.yml` (note the singular form of \"value\").\n\n## Examples\n\nIn this example, the `staff` Array Input uses inline *Structure* values from the main *Configuration File* and also references another value from the `boardMember.cloudcannon.structure-value.yml` in the `/.cloudcannon/structures/` folder.\n\n```yaml\n_inputs:\n staff:\n type: array\n options:\n structures:\n values_from_glob:\n - /.cloudcannon/structures/boardMember.cloudcannon.structure-value.yml\n values:\n - label: Employee\n value:\n name:\n title:\n profile_picture:\n - label: Manager\n value:\n name:\n title:\n profile_picture:\n url:\n```",
9462
+ "markdownDescription": "This key represents an individual glob pattern string in the `values_from_glob` array.\n\nThe value is a string that specifies a file path pattern relative to the root of your repository. The path must end in the file extension `.cloudcannon.structure-value.yml` (note the singular form of \"value\").\n\n## Examples\n\nIn this example, the `staff` Array Input uses inline *Structure* values from the main *Configuration File* and also references another value from the `boardMember.cloudcannon.structure-value.yml` in the `/.cloudcannon/structures/` folder.\n\n```yaml\n_inputs:\n staff:\n type: array\n options:\n structures:\n values_from_glob:\n - /.cloudcannon/structures/boardMember.cloudcannon.structure-value.yml\n values:\n - label: Employee\n value:\n name:\n title:\n profile_picture:\n - label: Manager\n value:\n name:\n title:\n profile_picture:\n url:\n```"
9151
9463
  },
9152
9464
  "documented": true,
9153
9465
  "title": "values_from_glob",
9154
- "description": "This key defines globs that filter which files CloudCannon should use for *Structure* value configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structure-value.yml` (note the singular form of \"value\").\n\nYou can use this key anywhere you would use the `_structures.*.values` key.\n\nPlease see our documentation on [structures_from_glob](https://cloudcannon.com/documentation/developer-reference/configuration-file/types/_structures_from_glob/) for defining a\n*Structure* in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, the `staff` Array Input uses inline *Structure* values from the main *Configuration File* and also references another value from the `boardMember.cloudcannon.structure_value.yml` in the `/.cloudcannon/structures/` folder.\n\n```yaml\n_inputs:\n staff:\n type: array\n options:\n structures:\n values_from_glob: /.cloudcannon/structures/boardMember.cloudcannon.structure-value.yml\n values:\n - label: Employee\n value:\n name:\n title:\n profile_picture:\n - label: Manager\n value:\n name:\n title:\n profile_picture:\n url:\n```\n\n```yaml\nlabel: Board\nvalue:\n name:\n title:\n profile_picture:\n url:\n description:\n```",
9155
- "markdownDescription": "This key defines globs that filter which files CloudCannon should use for *Structure* value configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structure-value.yml` (note the singular form of \"value\").\n\nYou can use this key anywhere you would use the `_structures.*.values` key.\n\nPlease see our documentation on [structures_from_glob](https://cloudcannon.com/documentation/developer-reference/configuration-file/types/_structures_from_glob/) for defining a\n*Structure* in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, the `staff` Array Input uses inline *Structure* values from the main *Configuration File* and also references another value from the `boardMember.cloudcannon.structure_value.yml` in the `/.cloudcannon/structures/` folder.\n\n```yaml\n_inputs:\n staff:\n type: array\n options:\n structures:\n values_from_glob: /.cloudcannon/structures/boardMember.cloudcannon.structure-value.yml\n values:\n - label: Employee\n value:\n name:\n title:\n profile_picture:\n - label: Manager\n value:\n name:\n title:\n profile_picture:\n url:\n```\n\n```yaml\nlabel: Board\nvalue:\n name:\n title:\n profile_picture:\n url:\n description:\n```"
9466
+ "description": "This key defines globs that filter which files CloudCannon should use for *Structure* value configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structure-value.yml` (note the singular form of \"value\").\n\nYou can use this key anywhere you would use the `_structures.*.values` key.\n\nPlease see our documentation on [structures_from_glob](https://cloudcannon.com/documentation/developer-reference/configuration-file/types/_structures_from_glob/) for defining a\n*Structure* in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, the `staff` Array Input uses inline *Structure* values from the main *Configuration File* and also references another value from the `boardMember.cloudcannon.structure_value.yml` in the `/.cloudcannon/structures/` folder.\n\n```yaml\n_inputs:\n staff:\n type: array\n options:\n structures:\n values_from_glob:\n - /.cloudcannon/structures/boardMember.cloudcannon.structure-value.yml\n values:\n - label: Employee\n value:\n name:\n title:\n profile_picture:\n - label: Manager\n value:\n name:\n title:\n profile_picture:\n url:\n```\n\n```yaml\nlabel: Board\nvalue:\n name:\n title:\n profile_picture:\n url:\n description:\n```",
9467
+ "markdownDescription": "This key defines globs that filter which files CloudCannon should use for *Structure* value configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structure-value.yml` (note the singular form of \"value\").\n\nYou can use this key anywhere you would use the `_structures.*.values` key.\n\nPlease see our documentation on [structures_from_glob](https://cloudcannon.com/documentation/developer-reference/configuration-file/types/_structures_from_glob/) for defining a\n*Structure* in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, the `staff` Array Input uses inline *Structure* values from the main *Configuration File* and also references another value from the `boardMember.cloudcannon.structure_value.yml` in the `/.cloudcannon/structures/` folder.\n\n```yaml\n_inputs:\n staff:\n type: array\n options:\n structures:\n values_from_glob:\n - /.cloudcannon/structures/boardMember.cloudcannon.structure-value.yml\n values:\n - label: Employee\n value:\n name:\n title:\n profile_picture:\n - label: Manager\n value:\n name:\n title:\n profile_picture:\n url:\n```\n\n```yaml\nlabel: Board\nvalue:\n name:\n title:\n profile_picture:\n url:\n description:\n```"
9156
9468
  },
9157
9469
  "id_key": {
9158
9470
  "description": "This key defines which key within `values[*].value` CloudCannon should use to identify the Structure option.\n\nIf CloudCannon cannot find this key in a Structure value, it will compare all other key names in the Structure value to find the correct one.\n\nBy default, this key is `_type`.\n\n## Examples\n\nIn this example, we have change the `id_key` from the default `_type` to `component` to match our existing configuration in the `content_blocks` Array input.\n\n```yaml\n_inputs:\n content_blocks___1___:\n type: array\n options:\n structures: _structures.page_components\n_structures:\n page_components:\n id_key___2___: component\n values:\n - label: Hero Component\n value:\n component___3___: hero\n title:\n description:\n image_path:\n link:\n text:\n url:\n - label: Feature Component\n value:\n component: feature\n image_path:\n title:\n description:\n button:\n link:\n text:\n reversed_layout: false\n - label: Video Component\n value:\n component: video\n image_path:\n videoUrl:\n```",
@@ -9179,12 +9491,12 @@
9179
9491
  "values"
9180
9492
  ],
9181
9493
  "additionalProperties": false,
9494
+ "title": "Structure",
9495
+ "description": "This key defines data formats when adding new items to arrays and objects, with options for how editors choose from available values.",
9182
9496
  "documented": true,
9183
9497
  "markdownDescription": "This key defines data formats when adding new items to arrays and objects, with options for how editors choose from available values."
9184
9498
  },
9185
9499
  "type.structure.values.[*]": {
9186
- "title": "Structure Value",
9187
- "description": "This key represents a single value option within a structure, defining the data format and appearance for content editors.",
9188
9500
  "type": "object",
9189
9501
  "properties": {
9190
9502
  "reorder_inputs": {
@@ -9445,6 +9757,8 @@
9445
9757
  "value"
9446
9758
  ],
9447
9759
  "additionalProperties": false,
9760
+ "title": "Structure Value",
9761
+ "description": "This key represents a single value option within a structure, defining the data format and appearance for content editors.",
9448
9762
  "documented": true,
9449
9763
  "markdownDescription": "This key represents a single value option within a structure, defining the data format and appearance for content editors."
9450
9764
  },
@@ -9463,27 +9777,23 @@
9463
9777
  "markdownDescription": "This key defines globs that filter which files CloudCannon should use for *Input* configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.inputs.yml`.\n\nYou can use this key anywhere you would use the `_inputs` key in the configuration cascade.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we have several *Input Configuration Files* in the `.cloudcannon/inputs/` folder, with each file containing multiple *Input* definitions. The value of the `_inputs_from_glob` key tells CloudCannon to only use the `seo.cloudcannon.inputs.yml` and `blog-details.cloudcannon.inputs.yml` files in that folder.\n\n```yaml\ncollections_config:\n posts:\n path: content/posts\n icon: event\n inputs_from_glob:\n - '/.cloudcannon/inputs/seo.cloudcannon.inputs.yml'\n - '/.cloudcannon/inputs/blogDetails.cloudcannon.inputs.yml'\n```\n\n```yaml\nseo_title:\n type: text\n options:\n required: true\n max_length: 50\nseo_description:\n type: textarea\n options:\n show_count: true\n required: true\n max_length: 125\nseo_image:\n type: image\n options:\n path:\n uploads: images\n accepts_mime_types:\n - image/png\n - image/jpeg\n required: true\n pattern: (?i)\\.(jpe?g|png)$\n pattern_message: Please select a JPG or PNG image file\n```"
9464
9778
  },
9465
9779
  "type._select_data": {
9466
- "title": "Select Data",
9467
- "description": "This key defines defines fixed data sets to populate Select and Multiselect inputs at a given level of the configuration cascade.\n\nThis key has no default.\n\nIf undefined at higher levels of the [configuration cascade](https://cloudcannon.com/documentation/articles/using-the-configuration-cascade/), `_select_data` will default to\nany values configured in the [CloudCannon configuration file](https://cloudcannon.com/documentation/articles/what-is-the-cloudcannon-configuration-file/).\n\nFor more information, please read our documentation on [Select and Multiselect inputs](https://cloudcannon.com/documentation/articles/what-is-a-select-input/#fixed-data-sets).\n\n## Examples\n\nIn this example, we have configured the `blog_tags` Multiselect input for the `blog` Collection.\n\n```yaml\ncollections_config:\n blog:\n _select_data:\n blog_topics:\n - Opinion\n - Feature\n - Resource\n```",
9468
9780
  "type": "object",
9469
9781
  "propertyNames": {
9470
9782
  "type": "string"
9471
9783
  },
9472
9784
  "additionalProperties": {
9473
- "description": "This key defines data formats for populating select and multiselect input options, supporting arrays and objects.",
9474
9785
  "anyOf": [
9475
9786
  {
9476
- "title": "Text Array Select Data",
9477
9787
  "type": "array",
9478
9788
  "items": {
9479
9789
  "type": "string",
9480
9790
  "documented": true,
9481
9791
  "title": "*(text-array)[*]"
9482
9792
  },
9793
+ "title": "Text Array Select Data",
9483
9794
  "documented": true
9484
9795
  },
9485
9796
  {
9486
- "title": "Text Object Select Data",
9487
9797
  "type": "object",
9488
9798
  "propertyNames": {
9489
9799
  "type": "string"
@@ -9493,10 +9803,10 @@
9493
9803
  "documented": true,
9494
9804
  "title": "*(text-object).*"
9495
9805
  },
9806
+ "title": "Text Object Select Data",
9496
9807
  "documented": true
9497
9808
  },
9498
9809
  {
9499
- "title": "Object Array Select Data",
9500
9810
  "type": "array",
9501
9811
  "items": {
9502
9812
  "type": "object",
@@ -9507,28 +9817,30 @@
9507
9817
  "documented": true,
9508
9818
  "title": "*(object-array)[*]"
9509
9819
  },
9820
+ "title": "Object Array Select Data",
9510
9821
  "documented": true
9511
9822
  },
9512
9823
  {
9513
- "title": "Object Select Data",
9514
9824
  "type": "object",
9515
9825
  "propertyNames": {
9516
9826
  "type": "string"
9517
9827
  },
9518
9828
  "additionalProperties": {},
9829
+ "title": "Object Select Data",
9519
9830
  "documented": true
9520
9831
  }
9521
9832
  ],
9833
+ "description": "This key defines data formats for populating select and multiselect input options, supporting arrays and objects.",
9522
9834
  "documented": true,
9523
9835
  "title": "_select_data.*",
9524
9836
  "markdownDescription": "This key defines data formats for populating select and multiselect input options, supporting arrays and objects."
9525
9837
  },
9838
+ "title": "Select Data",
9839
+ "description": "This key defines defines fixed data sets to populate Select and Multiselect inputs at a given level of the configuration cascade.\n\nThis key has no default.\n\nIf undefined at higher levels of the [configuration cascade](https://cloudcannon.com/documentation/articles/using-the-configuration-cascade/), `_select_data` will default to\nany values configured in the [CloudCannon configuration file](https://cloudcannon.com/documentation/articles/what-is-the-cloudcannon-configuration-file/).\n\nFor more information, please read our documentation on [Select and Multiselect inputs](https://cloudcannon.com/documentation/articles/what-is-a-select-input/#fixed-data-sets).\n\n## Examples\n\nIn this example, we have configured the `blog_tags` Multiselect input for the `blog` Collection.\n\n```yaml\ncollections_config:\n blog:\n _select_data:\n blog_topics:\n - Opinion\n - Feature\n - Resource\n```",
9526
9840
  "documented": true,
9527
9841
  "markdownDescription": "This key defines defines fixed data sets to populate Select and Multiselect inputs at a given level of the configuration cascade.\n\nThis key has no default.\n\nIf undefined at higher levels of the [configuration cascade](https://cloudcannon.com/documentation/articles/using-the-configuration-cascade/), `_select_data` will default to\nany values configured in the [CloudCannon configuration file](https://cloudcannon.com/documentation/articles/what-is-the-cloudcannon-configuration-file/).\n\nFor more information, please read our documentation on [Select and Multiselect inputs](https://cloudcannon.com/documentation/articles/what-is-a-select-input/#fixed-data-sets).\n\n## Examples\n\nIn this example, we have configured the `blog_tags` Multiselect input for the `blog` Collection.\n\n```yaml\ncollections_config:\n blog:\n _select_data:\n blog_topics:\n - Opinion\n - Feature\n - Resource\n```"
9528
9842
  },
9529
9843
  "type._structures": {
9530
- "title": "Structures",
9531
- "description": "This key defines which structures are available for [Object inputs](https://cloudcannon.com/documentation/articles/what-is-an-object-input/) and [Array\ninputs](https://cloudcannon.com/documentation/articles/what-is-an-array-input/) at a given level of the configuration cascade.\n\nThis key has no default.\n\nIf undefined at higher levels of the [configuration cascade](https://cloudcannon.com/documentation/articles/using-the-configuration-cascade/), `_structures` will default to\nany values configured in the [CloudCannon configuration file](https://cloudcannon.com/documentation/articles/what-is-the-cloudcannon-configuration-file/).\n\nFor more information, please read our documentation on [structures](https://cloudcannon.com/documentation/articles/what-is-a-structure/).\n\n## Examples\n\nIn this example, we want to populate an Array input in the `blog` Collection with Related Articles, including the `name`, `description`, and `url` fields.\n\n```yaml\ncollections_config:\n blog:\n _structures:\n related_articles:\n style: select\n values:\n - preview:\n text:\n - key: name\n subtext:\n - key: url\n value:\n name:\n description:\n url:\n```\n\nIn this example, we want to populate an Array input with Staff members, including the `name`, `job_description`, and `profile_picture` fields for all staff types, and the `url` field for Managers only.\n\n```yaml\n_structures:\n staff:\n style: modal\n hide_extra_inputs: false\n values:\n - value:\n _type: Employee\n name:\n job_description:\n profile_picture:\n preview:\n text:\n - key: name\n - Employee\n subtext:\n - key: job_description\n - Description of position\n image:\n - key: profile_picture\n icon: support_agent\n - value:\n _type: Manager\n name:\n job_description:\n profile_picture:\n url:\n preview:\n text:\n - key: name\n - Manager\n subtext:\n - key: job_description\n - Description of position\n image:\n - key: profile_picture\n icon: face\n```",
9532
9844
  "type": "object",
9533
9845
  "propertyNames": {
9534
9846
  "type": "string"
@@ -9536,6 +9848,8 @@
9536
9848
  "additionalProperties": {
9537
9849
  "$ref": "#/definitions/type.structure"
9538
9850
  },
9851
+ "title": "Structures",
9852
+ "description": "This key defines which structures are available for [Object inputs](https://cloudcannon.com/documentation/articles/what-is-an-object-input/) and [Array\ninputs](https://cloudcannon.com/documentation/articles/what-is-an-array-input/) at a given level of the configuration cascade.\n\nThis key has no default.\n\nIf undefined at higher levels of the [configuration cascade](https://cloudcannon.com/documentation/articles/using-the-configuration-cascade/), `_structures` will default to\nany values configured in the [CloudCannon configuration file](https://cloudcannon.com/documentation/articles/what-is-the-cloudcannon-configuration-file/).\n\nFor more information, please read our documentation on [structures](https://cloudcannon.com/documentation/articles/what-is-a-structure/).\n\n## Examples\n\nIn this example, we want to populate an Array input in the `blog` Collection with Related Articles, including the `name`, `description`, and `url` fields.\n\n```yaml\ncollections_config:\n blog:\n _structures:\n related_articles:\n style: select\n values:\n - preview:\n text:\n - key: name\n subtext:\n - key: url\n value:\n name:\n description:\n url:\n```\n\nIn this example, we want to populate an Array input with Staff members, including the `name`, `job_description`, and `profile_picture` fields for all staff types, and the `url` field for Managers only.\n\n```yaml\n_structures:\n staff:\n style: modal\n hide_extra_inputs: false\n values:\n - value:\n _type: Employee\n name:\n job_description:\n profile_picture:\n preview:\n text:\n - key: name\n - Employee\n subtext:\n - key: job_description\n - Description of position\n image:\n - key: profile_picture\n icon: support_agent\n - value:\n _type: Manager\n name:\n job_description:\n profile_picture:\n url:\n preview:\n text:\n - key: name\n - Manager\n subtext:\n - key: job_description\n - Description of position\n image:\n - key: profile_picture\n icon: face\n```",
9539
9853
  "documented": true,
9540
9854
  "markdownDescription": "This key defines which structures are available for [Object inputs](https://cloudcannon.com/documentation/articles/what-is-an-object-input/) and [Array\ninputs](https://cloudcannon.com/documentation/articles/what-is-an-array-input/) at a given level of the configuration cascade.\n\nThis key has no default.\n\nIf undefined at higher levels of the [configuration cascade](https://cloudcannon.com/documentation/articles/using-the-configuration-cascade/), `_structures` will default to\nany values configured in the [CloudCannon configuration file](https://cloudcannon.com/documentation/articles/what-is-the-cloudcannon-configuration-file/).\n\nFor more information, please read our documentation on [structures](https://cloudcannon.com/documentation/articles/what-is-a-structure/).\n\n## Examples\n\nIn this example, we want to populate an Array input in the `blog` Collection with Related Articles, including the `name`, `description`, and `url` fields.\n\n```yaml\ncollections_config:\n blog:\n _structures:\n related_articles:\n style: select\n values:\n - preview:\n text:\n - key: name\n subtext:\n - key: url\n value:\n name:\n description:\n url:\n```\n\nIn this example, we want to populate an Array input with Staff members, including the `name`, `job_description`, and `profile_picture` fields for all staff types, and the `url` field for Managers only.\n\n```yaml\n_structures:\n staff:\n style: modal\n hide_extra_inputs: false\n values:\n - value:\n _type: Employee\n name:\n job_description:\n profile_picture:\n preview:\n text:\n - key: name\n - Employee\n subtext:\n - key: job_description\n - Description of position\n image:\n - key: profile_picture\n icon: support_agent\n - value:\n _type: Manager\n name:\n job_description:\n profile_picture:\n url:\n preview:\n text:\n - key: name\n - Manager\n subtext:\n - key: job_description\n - Description of position\n image:\n - key: profile_picture\n icon: face\n```"
9541
9855
  },
@@ -9561,8 +9875,6 @@
9561
9875
  "markdownDescription": "This key defines the subtitle text above the key input when adding or renaming entries within a mutable *Object Input*.\n\nThe value is a string that supports a limited selection of Markdown formatting: links, bold, italic, subscript, superscript, and inline code elements are allowed.\n\nAvailable for Mutable Objects only.\n\n## Examples\n\nIn this example, we have configured a comment with Markdown formatting to provide help text above the key input.\n\n```yaml\n_inputs:\n metadata:\n type: object\n options:\n allow_create: true\n entries:\n comment: Key names should be **lowercase** and use underscores (e.g., `article_title`)\n```"
9562
9876
  },
9563
9877
  "ArrayInput": {
9564
- "title": "Array Input",
9565
- "description": "This key defines a user interface for lists of inputs or input groups.",
9566
9878
  "type": "object",
9567
9879
  "properties": {
9568
9880
  "comment": {
@@ -9607,15 +9919,14 @@
9607
9919
  "$ref": "#/definitions/type._inputs.*.cascade"
9608
9920
  },
9609
9921
  "type": {
9610
- "title": "Type",
9611
- "description": "This key defines the input type, which controls how this input appears and behaves.",
9612
9922
  "type": "string",
9613
9923
  "const": "array",
9924
+ "title": "Type",
9925
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
9614
9926
  "documented": true,
9615
9927
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
9616
9928
  },
9617
9929
  "options": {
9618
- "description": "This key defines options that are specific to Array Inputs.",
9619
9930
  "type": "object",
9620
9931
  "properties": {
9621
9932
  "required": {
@@ -9676,6 +9987,7 @@
9676
9987
  }
9677
9988
  },
9678
9989
  "additionalProperties": false,
9990
+ "description": "This key defines options that are specific to Array Inputs.",
9679
9991
  "documented": true,
9680
9992
  "title": "options",
9681
9993
  "markdownDescription": "This key defines options that are specific to Array Inputs."
@@ -9685,6 +9997,8 @@
9685
9997
  "type"
9686
9998
  ],
9687
9999
  "additionalProperties": false,
10000
+ "title": "Array Input",
10001
+ "description": "This key defines a user interface for lists of inputs or input groups.",
9688
10002
  "documented": true,
9689
10003
  "markdownDescription": "This key defines a user interface for lists of inputs or input groups."
9690
10004
  },
@@ -9713,9 +10027,6 @@
9713
10027
  "markdownDescription": "This key toggles whether CloudCannon will hide the controls on each item for moving them.\n\nSetting this key to `true` will hide the controls for moving items.\n\nBy default, this key is `false` (i.e., the controls for moving items are displayed)."
9714
10028
  },
9715
10029
  "AutoInput": {
9716
- "title": "Automatic Input",
9717
- "description": "Provides a default user interface based on the data contained.",
9718
- "excludeFromDocumentation": true,
9719
10030
  "type": "object",
9720
10031
  "properties": {
9721
10032
  "comment": {
@@ -9760,10 +10071,10 @@
9760
10071
  "$ref": "#/definitions/type._inputs.*.cascade"
9761
10072
  },
9762
10073
  "type": {
9763
- "title": "Type",
9764
- "description": "Sets an input type, which controls how this input appears and behaves.",
9765
10074
  "type": "string",
9766
10075
  "const": "auto",
10076
+ "title": "Type",
10077
+ "description": "Sets an input type, which controls how this input appears and behaves.",
9767
10078
  "documented": false,
9768
10079
  "markdownDescription": "Sets an input type, which controls how this input appears and behaves."
9769
10080
  },
@@ -9778,13 +10089,13 @@
9778
10089
  "type"
9779
10090
  ],
9780
10091
  "additionalProperties": false,
10092
+ "title": "Automatic Input",
10093
+ "description": "Provides a default user interface based on the data contained.",
10094
+ "excludeFromDocumentation": true,
9781
10095
  "documented": false,
9782
10096
  "markdownDescription": "Provides a default user interface based on the data contained."
9783
10097
  },
9784
10098
  "UnknownInput": {
9785
- "title": "Unknown Input",
9786
- "description": "Provides a default user interface based on the data contained.",
9787
- "excludeFromDocumentation": true,
9788
10099
  "type": "object",
9789
10100
  "properties": {
9790
10101
  "comment": {
@@ -9836,6 +10147,9 @@
9836
10147
  }
9837
10148
  },
9838
10149
  "additionalProperties": false,
10150
+ "title": "Unknown Input",
10151
+ "description": "Provides a default user interface based on the data contained.",
10152
+ "excludeFromDocumentation": true,
9839
10153
  "documented": false,
9840
10154
  "markdownDescription": "Provides a default user interface based on the data contained."
9841
10155
  },
@@ -9851,14 +10165,14 @@
9851
10165
  "markdownDescription": "This key defines which editing interfaces are available by default for files at a given level of the configuration cascade.\n\nWhether an editing interface is available for a specific file is determined by other factors.\n\nValues can be one of the following: `visual`, `content`, or `data`.\n\nSpecifying one or more editing interfaces will disable all unspecified editing interfaces.\n\nYou cannot disable the Source Editor with this key.\n\nBy default, this key is set to `visual`, `content`, and `data`.\n\nIf undefined at higher levels of the [configuration cascade](https://cloudcannon.com/documentation/articles/using-the-configuration-cascade/), `_enabled_editables` will\ndefault to any values configured in the [CloudCannon configuration file](https://cloudcannon.com/documentation/articles/what-is-the-cloudcannon-configuration-file/).\n\nFor more information, please read our documentation on the [Visual Editor](https://cloudcannon.com/documentation/articles/what-is-the-visual-editor/), [Content\nEditor](https://cloudcannon.com/documentation/articles/what-is-the-content-editor/), [Data Editor](https://cloudcannon.com/documentation/articles/what-is-the-data-editor/), and [Source\nEditor](https://cloudcannon.com/documentation/articles/what-is-the-source-editor/).\n\n## Examples\n\nIn this example, we have enabled only the [Content Editor](https://cloudcannon.com/documentation/articles/what-is-the-content-editor/) in the `blog` Collection.\n\n```yaml\ncollections_config:\n blog:\n _enabled_editors:\n - content\n```"
9852
10166
  },
9853
10167
  "EditorKey": {
9854
- "title": "Editor Key",
9855
- "description": "This key defines the available editors in CloudCannon: visual, content, and data editors.",
9856
10168
  "type": "string",
9857
10169
  "enum": [
9858
10170
  "visual",
9859
10171
  "content",
9860
10172
  "data"
9861
10173
  ],
10174
+ "title": "Editor Key",
10175
+ "description": "This key defines the available editors in CloudCannon: visual, content, and data editors.",
9862
10176
  "documented": true,
9863
10177
  "markdownDescription": "This key defines the available editors in CloudCannon: visual, content, and data editors."
9864
10178
  },