@cloudcannon/configuration-types 0.0.53 → 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,8 +1,5 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "title": "Configuration",
4
- "description": "The main CloudCannon configuration.",
5
- "$id": "https://github.com/cloudcannon/configuration-types/releases/latest/download/cloudcannon-config.latest.schema.json",
6
3
  "type": "object",
7
4
  "properties": {
8
5
  "paths": {
@@ -256,9 +253,11 @@
256
253
  }
257
254
  },
258
255
  "additionalProperties": false,
256
+ "title": "Configuration",
257
+ "description": "The main CloudCannon configuration.",
258
+ "$id": "https://github.com/cloudcannon/configuration-types/releases/latest/download/cloudcannon-config.latest.schema.json",
259
259
  "definitions": {
260
260
  "type.paths": {
261
- "title": "Paths",
262
261
  "type": "object",
263
262
  "properties": {
264
263
  "static": {
@@ -284,6 +283,7 @@
284
283
  }
285
284
  },
286
285
  "additionalProperties": false,
286
+ "title": "Paths",
287
287
  "documented": true,
288
288
  "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```",
289
289
  "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```"
@@ -367,7 +367,6 @@
367
367
  "markdownDescription": "This key defines your Collections.\n\n## Examples\n\nIn this example, we have configured a `blog` Collection. Key settings include two Schemas to populate files with different content, a Blog Tags input populated by a fixed data set, and a custom Create Path to generate file names from structured data.\n\n```yaml\ncollections_config:\n blog:\n path: content/blog\n glob:\n - '!_index.md'\n name: Blog\n icon: post_add\n url: /blog/[full_slug]/\n documentation:\n url: https://example.com/travel-blog-style-guide\n text: Documentation\n icon: auto_stories\n description: |-\n This Collection is for *Travel blogs* and *Customer stories*.\n\n If your have any questions, please contact Heather.\n _editables:\n _enabled_editors:\n - content\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: _select_data.blog_topics\n _select_data:\n blog_topics:\n - Opinion\n - Feature\n - Resource\n create:\n extra_data:\n filename: '{date|year}-{date|month}-{date|day}-{title}'\n path: '[relative_base_path]/{filename|slugify}.[ext]'\n disable_add: false\n disable_add_folder: false\n disable_file_actions: false\n schemas:\n blog:\n path: schemas/travel_blog.md\n name: Blog Post\n icon: post_add\n customer_story:\n path: schemas/customer_story.md\n name: Customer Story\n icon: post_add\n schema_key: _blog_template\n include_developer_files: false\n```\n\nIn this example, we have configured a `team` Collection. Key settings include custom sorting options, add options, and Card previews.\n\n```yaml\ncollections_config:\n team:\n path: _data/team\n name: Our Team\n singular_name: Team Member\n icon: groups\n disable_url: true\n description: |-\n This Collection has a file for every member of our team!\n preview:\n text:\n - key: name\n subtext:\n - key: job_title\n icon:\n - key: profile_picture\n sort:\n key: name\n order: ascending\n sort_options:\n - key: name\n order: ascending\n label: Name (A-Z)\n - key: name\n order: descending\n label: Name (Z-A)\n - key: job_title\n order: ascending\n label: Job Title (A-Z)\n - key: date\n order: descending\n label: Job Title (Z-A)\n _enabled_editors:\n - data\n add_options:\n - name: Office Locations\n icon: map\n href: /our-offices\n schemas:\n manager:\n path: schemas/manager.yml\n name: Manager\n icon: face\n employee:\n path: schemas/employee.yml\n name: Employee\n icon: support_agent\n```"
368
368
  },
369
369
  "collections_config.*": {
370
- "title": "Collection Config",
371
370
  "type": "object",
372
371
  "properties": {
373
372
  "path": {
@@ -440,8 +439,6 @@
440
439
  "description": "This key defines the options for the *Sort* dropdown in a *Collection browser*.\n\nConfiguring sort options for a Collection will remove CloudCannon's default sorting options from the *Sort* dropdown.\n\nBy default, CloudCannon provides sorting options for path, file size, file creation time, and last modified, in ascending and descending order.\n\nCloudCannon will also read data keys from your early Collection files and provide options to sort by those key values.\n\n## Examples\n\nIn this example, the *Sort* dropdown in the `blog` *Collection browser* only contains options for sorting by `author` and `date` in ascending and descending order.\n\n```yaml\ncollections_config:\n blog:\n sort_options:\n - key: author\n order: ascending\n label: Author (A-Z)\n - key: author\n order: descending\n label: Author (Z-A)\n - key: date\n order: ascending\n label: Date (Newest First)\n - key: date\n order: descending\n label: Date (Oldest First)\n```",
441
440
  "type": "array",
442
441
  "items": {
443
- "title": "SortOption",
444
- "description": "This key represents a sort option for a Collection.",
445
442
  "type": "object",
446
443
  "properties": {
447
444
  "label": {
@@ -452,8 +449,8 @@
452
449
  "markdownDescription": "This key defines the label used for a file sorting option in the *Sort* dropdown.\n\n## Examples\n\nIn this example, the sorting method which uses the `author` key is called \"Author (A-Z)\" in the *Sort* dropdown.\n\n```yaml\ncollections_config:\n blog:\n sort_options:\n - key: author\n order: ascending\n label: Author (A-Z)\n```"
453
450
  },
454
451
  "key": {
455
- "description": "This key defines which key an option in the *Sort* dropdown should use to sort files in your *Collection browser*.\n\nYou must define this key for every entry in the `sort_options` array for the object to function.\n\nValue must be the name of a structured data key in your Collection files.\n\nIf some files in your Collection do not have this data key, CloudCannon will sort those in ascending alphabetical order, after the file sorted by your\ndata key in the *Collection browser*.\n\n## Examples\n\nIn this example, the \"Author (A-Z)\" option in the *Sort* dropdown will use the `author` key to sort files in the `blog` *Collection browser*.\n\n```yaml\ncollections_config:\n blog:\n sort_options:\n - key: author\n order: ascending\n label: Author (A-Z)\n```",
456
452
  "type": "string",
453
+ "description": "This key defines which key an option in the *Sort* dropdown should use to sort files in your *Collection browser*.\n\nYou must define this key for every entry in the `sort_options` array for the object to function.\n\nValue must be the name of a structured data key in your Collection files.\n\nIf some files in your Collection do not have this data key, CloudCannon will sort those in ascending alphabetical order, after the file sorted by your\ndata key in the *Collection browser*.\n\n## Examples\n\nIn this example, the \"Author (A-Z)\" option in the *Sort* dropdown will use the `author` key to sort files in the `blog` *Collection browser*.\n\n```yaml\ncollections_config:\n blog:\n sort_options:\n - key: author\n order: ascending\n label: Author (A-Z)\n```",
457
454
  "documented": true,
458
455
  "title": "key",
459
456
  "markdownDescription": "This key defines which key an option in the *Sort* dropdown should use to sort files in your *Collection browser*.\n\nYou must define this key for every entry in the `sort_options` array for the object to function.\n\nValue must be the name of a structured data key in your Collection files.\n\nIf some files in your Collection do not have this data key, CloudCannon will sort those in ascending alphabetical order, after the file sorted by your\ndata key in the *Collection browser*.\n\n## Examples\n\nIn this example, the \"Author (A-Z)\" option in the *Sort* dropdown will use the `author` key to sort files in the `blog` *Collection browser*.\n\n```yaml\ncollections_config:\n blog:\n sort_options:\n - key: author\n order: ascending\n label: Author (A-Z)\n```"
@@ -477,6 +474,8 @@
477
474
  "key"
478
475
  ],
479
476
  "additionalProperties": false,
477
+ "title": "SortOption",
478
+ "description": "This key represents a sort option for a Collection.",
480
479
  "documented": true,
481
480
  "markdownDescription": "This key represents a sort option for a Collection."
482
481
  },
@@ -517,8 +516,6 @@
517
516
  "items": {
518
517
  "anyOf": [
519
518
  {
520
- "title": "Add Option",
521
- "description": "This key represents the standard add option entry in a `collections_config.*.add_options` array.\n\nThe value is an object that defines an option available in the *+ Add* button dropdown at the top right of the *Collection browser*. Standard add options can contain optional `name`, `icon`, `editor`, `base_path`, `collection`, `schema`, and `default_content_file` keys.\n\n## Examples\n\nIn this example, we have configured a standard add option for the `people` Collection that uses the `employee` Schema and opens files in the [Data Editor](https://cloudcannon.com/documentation/articles/what-is-the-data-editor/).\n\n```yaml\ncollections_config:\n people:\n add_options:\n - name: Add Staff Member\n schema: employee\n icon: face\n editor: data\n schemas:\n employee:\n path: /.cloudcannon/schemas/employee.yml\n```",
522
519
  "type": "object",
523
520
  "properties": {
524
521
  "name": {
@@ -580,12 +577,12 @@
580
577
  }
581
578
  },
582
579
  "additionalProperties": false,
580
+ "title": "Add Option",
581
+ "description": "This key represents the standard add option entry in a `collections_config.*.add_options` array.\n\nThe value is an object that defines an option available in the *+ Add* button dropdown at the top right of the *Collection browser*. Standard add options can contain optional `name`, `icon`, `editor`, `base_path`, `collection`, `schema`, and `default_content_file` keys.\n\n## Examples\n\nIn this example, we have configured a standard add option for the `people` Collection that uses the `employee` Schema and opens files in the [Data Editor](https://cloudcannon.com/documentation/articles/what-is-the-data-editor/).\n\n```yaml\ncollections_config:\n people:\n add_options:\n - name: Add Staff Member\n schema: employee\n icon: face\n editor: data\n schemas:\n employee:\n path: /.cloudcannon/schemas/employee.yml\n```",
583
582
  "documented": true,
584
583
  "markdownDescription": "This key represents the standard add option entry in a `collections_config.*.add_options` array.\n\nThe value is an object that defines an option available in the *+ Add* button dropdown at the top right of the *Collection browser*. Standard add options can contain optional `name`, `icon`, `editor`, `base_path`, `collection`, `schema`, and `default_content_file` keys.\n\n## Examples\n\nIn this example, we have configured a standard add option for the `people` Collection that uses the `employee` Schema and opens files in the [Data Editor](https://cloudcannon.com/documentation/articles/what-is-the-data-editor/).\n\n```yaml\ncollections_config:\n people:\n add_options:\n - name: Add Staff Member\n schema: employee\n icon: face\n editor: data\n schemas:\n employee:\n path: /.cloudcannon/schemas/employee.yml\n```"
585
584
  },
586
585
  {
587
- "title": "HREF Add Option",
588
- "description": "This key represents the URL add option object in a `collections_config.*.add_options` array.\n\nThe value is an object that defines an option available in the *+ Add* button dropdown at the top right of the *Collection browser*. URL add options must contain a required `href` key and can contain optional `name` and `icon` keys.\n\n## Examples\n\nIn this example, the *\\+ Add* button dropdown in the `team` *Collection browser* has a link to the Office Locations page on our live website.\n\n```yaml\ncollections_config:\n team:\n add_options:\n - name: Office Locations\n icon: map\n href: /our-offices\n```",
589
586
  "type": "object",
590
587
  "properties": {
591
588
  "name": {
@@ -608,8 +605,8 @@
608
605
  "markdownDescription": "This key defines the icon displayed next to the text for a URL option in the *\\+ Add* button dropdown.\n\nThe value is a string that specifies an icon name from [Google's Material Symbols](https://fonts.google.com/icons?icon.set=Material+Symbols&icon.style=Rounded).\n\n## Examples\n\nIn this example, the *\\+ Add* button dropdown in the `team` *Collection browser* uses a link option with the icon `map` to navigate to the Office Locations page on our live website.\n\n```yaml\ncollections_config:\n team:\n add_options:\n - name: Office Locations\n icon: map\n href: /our-offices\n```"
609
606
  },
610
607
  "href": {
611
- "description": "This key defines the link for a URL option in the *\\+ Add* button dropdown.\n\nThe value is a string that specifies a URL. Values can be an external URL or an internal URL relative to the current Site.\n\nThis key is required for URL add options in the `collections_config.*.add_options` array.\n\n## Examples\n\nIn this example, the *\\+ Add* button dropdown in the `team` *Collection browser* uses a link option with the URL `https://forms.gle/xxxxxxx`.\n\n```yaml\ncollections_config:\n team:\n add_options:\n - name: Submit Form\n icon: assignment_add\n href: https://forms.gle/xxxxxxx\n```",
612
608
  "type": "string",
609
+ "description": "This key defines the link for a URL option in the *\\+ Add* button dropdown.\n\nThe value is a string that specifies a URL. Values can be an external URL or an internal URL relative to the current Site.\n\nThis key is required for URL add options in the `collections_config.*.add_options` array.\n\n## Examples\n\nIn this example, the *\\+ Add* button dropdown in the `team` *Collection browser* uses a link option with the URL `https://forms.gle/xxxxxxx`.\n\n```yaml\ncollections_config:\n team:\n add_options:\n - name: Submit Form\n icon: assignment_add\n href: https://forms.gle/xxxxxxx\n```",
613
610
  "documented": true,
614
611
  "title": "href",
615
612
  "markdownDescription": "This key defines the link for a URL option in the *\\+ Add* button dropdown.\n\nThe value is a string that specifies a URL. Values can be an external URL or an internal URL relative to the current Site.\n\nThis key is required for URL add options in the `collections_config.*.add_options` array.\n\n## Examples\n\nIn this example, the *\\+ Add* button dropdown in the `team` *Collection browser* uses a link option with the URL `https://forms.gle/xxxxxxx`.\n\n```yaml\ncollections_config:\n team:\n add_options:\n - name: Submit Form\n icon: assignment_add\n href: https://forms.gle/xxxxxxx\n```"
@@ -619,6 +616,8 @@
619
616
  "href"
620
617
  ],
621
618
  "additionalProperties": false,
619
+ "title": "HREF Add Option",
620
+ "description": "This key represents the URL add option object in a `collections_config.*.add_options` array.\n\nThe value is an object that defines an option available in the *+ Add* button dropdown at the top right of the *Collection browser*. URL add options must contain a required `href` key and can contain optional `name` and `icon` keys.\n\n## Examples\n\nIn this example, the *\\+ Add* button dropdown in the `team` *Collection browser* has a link to the Office Locations page on our live website.\n\n```yaml\ncollections_config:\n team:\n add_options:\n - name: Office Locations\n icon: map\n href: /our-offices\n```",
622
621
  "documented": true,
623
622
  "markdownDescription": "This key represents the URL add option object in a `collections_config.*.add_options` array.\n\nThe value is an object that defines an option available in the *+ Add* button dropdown at the top right of the *Collection browser*. URL add options must contain a required `href` key and can contain optional `name` and `icon` keys.\n\n## Examples\n\nIn this example, the *\\+ Add* button dropdown in the `team` *Collection browser* has a link to the Office Locations page on our live website.\n\n```yaml\ncollections_config:\n team:\n add_options:\n - name: Office Locations\n icon: map\n href: /our-offices\n```"
624
623
  }
@@ -679,13 +678,11 @@
679
678
  "type": "string"
680
679
  },
681
680
  "additionalProperties": {
682
- "title": "Schema",
683
- "description": "This key defines your schemas, which are the structured data formats for your content files.",
684
681
  "type": "object",
685
682
  "properties": {
686
683
  "path": {
687
- "description": "This key defines the path to the schema file relative to the root folder of the site.",
688
684
  "type": "string",
685
+ "description": "This key defines the path to the schema file relative to the root folder of the site.",
689
686
  "documented": true,
690
687
  "title": "path",
691
688
  "markdownDescription": "This key defines the path to the schema file relative to the root folder of the site."
@@ -831,6 +828,8 @@
831
828
  "path"
832
829
  ],
833
830
  "additionalProperties": false,
831
+ "title": "Schema",
832
+ "description": "This key defines your schemas, which are the structured data formats for your content files.",
834
833
  "documented": true,
835
834
  "markdownDescription": "This key defines your schemas, which are the structured data formats for your content files."
836
835
  },
@@ -933,13 +932,14 @@
933
932
  "path"
934
933
  ],
935
934
  "additionalProperties": false,
935
+ "title": "Collection Config",
936
936
  "documented": true,
937
937
  "description": "This key defines your Collections, which are the sets of content files for your site grouped by folder.",
938
938
  "markdownDescription": "This key defines your Collections, which are the sets of content files for your site grouped by folder."
939
939
  },
940
940
  "path": {
941
- "description": "This key defines the folder path for the collection key in which it is nested.\n\nThe value for this key is relative to your [Site source](https://cloudcannon.com/documentation/developer-reference/configuration-file/source/).\n\nEach Collection must have a unique path.\n\n## Examples\n\nIn this example, the files for the `blog` Collection are located in the `content/blog` folder.\n\n```yaml\ncollections_config:\n blog:\n path: content/blog\n```",
942
941
  "type": "string",
942
+ "description": "This key defines the folder path for the collection key in which it is nested.\n\nThe value for this key is relative to your [Site source](https://cloudcannon.com/documentation/developer-reference/configuration-file/source/).\n\nEach Collection must have a unique path.\n\n## Examples\n\nIn this example, the files for the `blog` Collection are located in the `content/blog` folder.\n\n```yaml\ncollections_config:\n blog:\n path: content/blog\n```",
943
943
  "documented": true,
944
944
  "title": "path",
945
945
  "markdownDescription": "This key defines the folder path for the collection key in which it is nested.\n\nThe value for this key is relative to your [Site source](https://cloudcannon.com/documentation/developer-reference/configuration-file/source/).\n\nEach Collection must have a unique path.\n\n## Examples\n\nIn this example, the files for the `blog` Collection are located in the `content/blog` folder.\n\n```yaml\ncollections_config:\n blog:\n path: content/blog\n```"
@@ -948,7 +948,6 @@
948
948
  "description": "This key defines globs which filter the files visible in the *Collection browser* for a given Collection.\n\nGlobs can be positive (e.g. `*.yml`), or negative (e.g. `!**/*.json`).\n\nFiles are included in a Collection if they match any positive globs and do not match any negative globs.\n\nIf you do not define any positive globs, CloudCannon will include all non-developer files in a Collection unless they match a negative\nglob.\n\nDefining a negative glob for a Collection does not remove a file from the associated Collection folder in your Git repository.\n\nSimilarly, defining a positive glob for a file in a folder outside your Collection path does not move the file.\n\n## Examples\n\nIn this example, the *Collection browser* will show all files in the `data` folder except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '!secret.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder or any nested folders.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob: '**/*.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder, except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '**/*.yml'\n - '!secret.yml'\n```",
949
949
  "anyOf": [
950
950
  {
951
- "title": "Glob Array",
952
951
  "type": "array",
953
952
  "items": {
954
953
  "type": "string",
@@ -957,13 +956,14 @@
957
956
  "description": "This key represents an individual glob pattern string in the `collections_config.*.glob` array.\n\nThe value is a string that specifies a file path pattern relative to the Collection path. Globs can be positive (e.g., `*.yml`) or negative (e.g., `!**/*.json`).\n\n## Examples\n\nIn this example, the `data` Collection uses a negative glob pattern to exclude the `secret.yml` file from the *Collection browser*.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '!secret.yml'\n```",
958
957
  "markdownDescription": "This key represents an individual glob pattern string in the `collections_config.*.glob` array.\n\nThe value is a string that specifies a file path pattern relative to the Collection path. Globs can be positive (e.g., `*.yml`) or negative (e.g., `!**/*.json`).\n\n## Examples\n\nIn this example, the `data` Collection uses a negative glob pattern to exclude the `secret.yml` file from the *Collection browser*.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '!secret.yml'\n```"
959
958
  },
959
+ "title": "Glob Array",
960
960
  "documented": true,
961
961
  "description": "This key represents an array format for the `collections_config.*.glob` key.\n\nThe value is an array of glob pattern strings. Each string specifies a file path pattern relative to the Collection path. Globs can be positive (e.g., `*.yml`) or negative (e.g., `!**/*.json`).\n\nFiles are included in a Collection if they match any positive globs and do not match any negative globs.\n\n## Examples\n\nIn this example, the `data` Collection uses an array of glob patterns to show only `.yml` files, except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '**/*.yml'\n - '!secret.yml'\n```",
962
962
  "markdownDescription": "This key represents an array format for the `collections_config.*.glob` key.\n\nThe value is an array of glob pattern strings. Each string specifies a file path pattern relative to the Collection path. Globs can be positive (e.g., `*.yml`) or negative (e.g., `!**/*.json`).\n\nFiles are included in a Collection if they match any positive globs and do not match any negative globs.\n\n## Examples\n\nIn this example, the `data` Collection uses an array of glob patterns to show only `.yml` files, except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '**/*.yml'\n - '!secret.yml'\n```"
963
963
  },
964
964
  {
965
- "title": "Glob",
966
965
  "type": "string",
966
+ "title": "Glob",
967
967
  "documented": true,
968
968
  "description": "This key represents a single glob pattern string format for the `collections_config.*.glob` key.\n\nThe value is a string that specifies a file path pattern relative to the Collection path. Globs can be positive (e.g., `*.yml`) or negative (e.g., `!**/*.json`).\n\nFiles are included in a Collection if they match any positive globs and do not match any negative globs.\n\n## Examples\n\nIn this example, the `data` Collection uses a single glob pattern to show only `.yml` files in the `data` folder or any nested folders.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob: '**/*.yml'\n```",
969
969
  "markdownDescription": "This key represents a single glob pattern string format for the `collections_config.*.glob` key.\n\nThe value is a string that specifies a file path pattern relative to the Collection path. Globs can be positive (e.g., `*.yml`) or negative (e.g., `!**/*.json`).\n\nFiles are included in a Collection if they match any positive globs and do not match any negative globs.\n\n## Examples\n\nIn this example, the `data` Collection uses a single glob pattern to show only `.yml` files in the `data` folder or any nested folders.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob: '**/*.yml'\n```"
@@ -974,8 +974,6 @@
974
974
  "markdownDescription": "This key defines globs which filter the files visible in the *Collection browser* for a given Collection.\n\nGlobs can be positive (e.g. `*.yml`), or negative (e.g. `!**/*.json`).\n\nFiles are included in a Collection if they match any positive globs and do not match any negative globs.\n\nIf you do not define any positive globs, CloudCannon will include all non-developer files in a Collection unless they match a negative\nglob.\n\nDefining a negative glob for a Collection does not remove a file from the associated Collection folder in your Git repository.\n\nSimilarly, defining a positive glob for a file in a folder outside your Collection path does not move the file.\n\n## Examples\n\nIn this example, the *Collection browser* will show all files in the `data` folder except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '!secret.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder or any nested folders.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob: '**/*.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder, except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '**/*.yml'\n - '!secret.yml'\n```"
975
975
  },
976
976
  "icon": {
977
- "title": "Icon",
978
- "description": "Material Symbol icon names available in CloudCannon for UI elements and content previews.",
979
977
  "type": "string",
980
978
  "enum": [
981
979
  "123",
@@ -4563,17 +4561,17 @@
4563
4561
  "zoom_out",
4564
4562
  "zoom_out_map"
4565
4563
  ],
4564
+ "title": "Icon",
4565
+ "description": "Material Symbol icon names available in CloudCannon for UI elements and content previews.",
4566
4566
  "documented": false,
4567
4567
  "markdownDescription": "Material Symbol icon names available in CloudCannon for UI elements and content previews."
4568
4568
  },
4569
4569
  "type.documentation": {
4570
- "title": "Documentation",
4571
- "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```",
4572
4570
  "type": "object",
4573
4571
  "properties": {
4574
4572
  "url": {
4575
- "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```",
4576
4573
  "type": "string",
4574
+ "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```",
4577
4575
  "documented": true,
4578
4576
  "title": "url",
4579
4577
  "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```"
@@ -4602,24 +4600,24 @@
4602
4600
  "url"
4603
4601
  ],
4604
4602
  "additionalProperties": false,
4603
+ "title": "Documentation",
4604
+ "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```",
4605
4605
  "documented": true,
4606
4606
  "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```"
4607
4607
  },
4608
4608
  "EditorKey": {
4609
- "title": "Editor Key",
4610
- "description": "The available editors in CloudCannon: visual, content, and data editors.",
4611
4609
  "type": "string",
4612
4610
  "enum": [
4613
4611
  "visual",
4614
4612
  "content",
4615
4613
  "data"
4616
4614
  ],
4615
+ "title": "Editor Key",
4616
+ "description": "The available editors in CloudCannon: visual, content, and data editors.",
4617
4617
  "documented": false,
4618
4618
  "markdownDescription": "The available editors in CloudCannon: visual, content, and data editors."
4619
4619
  },
4620
4620
  "type.create": {
4621
- "title": "Create",
4622
- "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```",
4623
4621
  "type": "object",
4624
4622
  "properties": {
4625
4623
  "path": {
@@ -4700,12 +4698,12 @@
4700
4698
  }
4701
4699
  },
4702
4700
  "additionalProperties": false,
4701
+ "title": "Create",
4702
+ "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```",
4703
4703
  "documented": true,
4704
4704
  "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```"
4705
4705
  },
4706
4706
  "type._inputs": {
4707
- "title": "Inputs",
4708
- "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```",
4709
4707
  "type": "object",
4710
4708
  "propertyNames": {
4711
4709
  "type": "string"
@@ -4713,15 +4711,14 @@
4713
4711
  "additionalProperties": {
4714
4712
  "$ref": "#/definitions/Input"
4715
4713
  },
4714
+ "title": "Inputs",
4715
+ "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```",
4716
4716
  "documented": true,
4717
4717
  "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```"
4718
4718
  },
4719
4719
  "Input": {
4720
- "title": "Input",
4721
4720
  "anyOf": [
4722
4721
  {
4723
- "title": "Known Input",
4724
- "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```",
4725
4722
  "oneOf": [
4726
4723
  {
4727
4724
  "$ref": "#/definitions/TextInput"
@@ -4781,6 +4778,8 @@
4781
4778
  "$ref": "#/definitions/AutoInput"
4782
4779
  }
4783
4780
  ],
4781
+ "title": "Known Input",
4782
+ "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```",
4784
4783
  "documented": true,
4785
4784
  "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```"
4786
4785
  },
@@ -4788,13 +4787,12 @@
4788
4787
  "$ref": "#/definitions/UnknownInput"
4789
4788
  }
4790
4789
  ],
4790
+ "title": "Input",
4791
4791
  "documented": true,
4792
4792
  "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```",
4793
4793
  "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```"
4794
4794
  },
4795
4795
  "TextInput": {
4796
- "title": "Text Input",
4797
- "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```",
4798
4796
  "type": "object",
4799
4797
  "properties": {
4800
4798
  "comment": {
@@ -4839,8 +4837,6 @@
4839
4837
  "$ref": "#/definitions/type._inputs.*.cascade"
4840
4838
  },
4841
4839
  "type": {
4842
- "title": "Type",
4843
- "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```",
4844
4840
  "type": "string",
4845
4841
  "enum": [
4846
4842
  "text",
@@ -4852,11 +4848,12 @@
4852
4848
  "github",
4853
4849
  "instagram"
4854
4850
  ],
4851
+ "title": "Type",
4852
+ "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```",
4855
4853
  "documented": true,
4856
4854
  "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```"
4857
4855
  },
4858
4856
  "options": {
4859
- "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```",
4860
4857
  "type": "object",
4861
4858
  "properties": {
4862
4859
  "max_length": {
@@ -4964,6 +4961,7 @@
4964
4961
  }
4965
4962
  },
4966
4963
  "additionalProperties": false,
4964
+ "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```",
4967
4965
  "documented": true,
4968
4966
  "title": "options",
4969
4967
  "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```"
@@ -4973,6 +4971,8 @@
4973
4971
  "type"
4974
4972
  ],
4975
4973
  "additionalProperties": false,
4974
+ "title": "Text Input",
4975
+ "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```",
4976
4976
  "documented": true,
4977
4977
  "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```"
4978
4978
  },
@@ -4984,7 +4984,6 @@
4984
4984
  "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```"
4985
4985
  },
4986
4986
  "type._inputs.*.context": {
4987
- "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```",
4988
4987
  "type": "object",
4989
4988
  "properties": {
4990
4989
  "content": {
@@ -5022,6 +5021,7 @@
5022
5021
  }
5023
5022
  },
5024
5023
  "additionalProperties": false,
5024
+ "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```",
5025
5025
  "documented": true,
5026
5026
  "title": "context",
5027
5027
  "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```"
@@ -5038,15 +5038,15 @@
5038
5038
  "default": false,
5039
5039
  "anyOf": [
5040
5040
  {
5041
- "title": "Boolean Hidden",
5042
5041
  "type": "boolean",
5042
+ "title": "Boolean Hidden",
5043
5043
  "documented": true,
5044
5044
  "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```",
5045
5045
  "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```"
5046
5046
  },
5047
5047
  {
5048
- "title": "Query String Hidden",
5049
5048
  "type": "string",
5049
+ "title": "Query String Hidden",
5050
5050
  "documented": true,
5051
5051
  "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```",
5052
5052
  "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```"
@@ -5061,15 +5061,15 @@
5061
5061
  "default": false,
5062
5062
  "anyOf": [
5063
5063
  {
5064
- "title": "Boolean",
5065
5064
  "type": "boolean",
5065
+ "title": "Boolean",
5066
5066
  "documented": true,
5067
5067
  "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```",
5068
5068
  "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```"
5069
5069
  },
5070
5070
  {
5071
- "title": "Query String",
5072
5071
  "type": "string",
5072
+ "title": "Query String",
5073
5073
  "documented": true,
5074
5074
  "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```",
5075
5075
  "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```"
@@ -5285,8 +5285,8 @@
5285
5285
  "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```"
5286
5286
  },
5287
5287
  "type._inputs.*.options.empty_type(text)": {
5288
- "description": "This key defines how an 'empty' value will be saved. Does not apply to existing empty values.",
5289
5288
  "default": "null",
5289
+ "description": "This key defines how an 'empty' value will be saved. Does not apply to existing empty values.",
5290
5290
  "type": "string",
5291
5291
  "enum": [
5292
5292
  "null",
@@ -5312,17 +5312,16 @@
5312
5312
  "title": "icon_color(previewentries)"
5313
5313
  },
5314
5314
  "type.preview-entry.(array)": {
5315
- "title": "Array Preview Entry",
5316
5315
  "type": "array",
5317
5316
  "items": {
5318
5317
  "$ref": "#/definitions/type.preview-entry"
5319
5318
  },
5319
+ "title": "Array Preview Entry",
5320
5320
  "documented": true,
5321
5321
  "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```",
5322
5322
  "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```"
5323
5323
  },
5324
5324
  "type.preview-entry": {
5325
- "title": "Preview Entry",
5326
5325
  "anyOf": [
5327
5326
  {
5328
5327
  "$ref": "#/definitions/type.preview-entry.(key)"
@@ -5340,17 +5339,17 @@
5340
5339
  "$ref": "#/definitions/type.preview-entry.(false)"
5341
5340
  }
5342
5341
  ],
5342
+ "title": "Preview Entry",
5343
5343
  "documented": true,
5344
5344
  "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```",
5345
5345
  "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```"
5346
5346
  },
5347
5347
  "type.preview-entry.(key)": {
5348
- "title": "Key Preview Entry",
5349
5348
  "type": "object",
5350
5349
  "properties": {
5351
5350
  "key": {
5352
- "title": "Key Value",
5353
5351
  "type": "string",
5352
+ "title": "Key Value",
5354
5353
  "documented": true,
5355
5354
  "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```",
5356
5355
  "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```"
@@ -5360,17 +5359,17 @@
5360
5359
  "key"
5361
5360
  ],
5362
5361
  "additionalProperties": false,
5362
+ "title": "Key Preview Entry",
5363
5363
  "documented": true,
5364
5364
  "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```",
5365
5365
  "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```"
5366
5366
  },
5367
5367
  "type.preview-entry.(template)": {
5368
- "title": "Template Preview Entry",
5369
5368
  "type": "object",
5370
5369
  "properties": {
5371
5370
  "template": {
5372
- "title": "Template Value",
5373
5371
  "type": "string",
5372
+ "title": "Template Value",
5374
5373
  "documented": true,
5375
5374
  "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```",
5376
5375
  "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```"
@@ -5380,17 +5379,17 @@
5380
5379
  "template"
5381
5380
  ],
5382
5381
  "additionalProperties": false,
5382
+ "title": "Template Preview Entry",
5383
5383
  "documented": true,
5384
5384
  "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```",
5385
5385
  "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```"
5386
5386
  },
5387
5387
  "type.preview-entry.(text)": {
5388
- "title": "Text Preview Entry",
5389
5388
  "type": "object",
5390
5389
  "properties": {
5391
5390
  "text": {
5392
- "title": "Text Value",
5393
5391
  "type": "string",
5392
+ "title": "Text Value",
5394
5393
  "documented": true,
5395
5394
  "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```",
5396
5395
  "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```"
@@ -5400,28 +5399,27 @@
5400
5399
  "text"
5401
5400
  ],
5402
5401
  "additionalProperties": false,
5402
+ "title": "Text Preview Entry",
5403
5403
  "documented": true,
5404
5404
  "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```",
5405
5405
  "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```"
5406
5406
  },
5407
5407
  "type.preview-entry.(raw-text)": {
5408
- "title": "Raw Text Preview Entry",
5409
5408
  "type": "string",
5409
+ "title": "Raw Text Preview Entry",
5410
5410
  "documented": true,
5411
5411
  "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```",
5412
5412
  "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```"
5413
5413
  },
5414
5414
  "type.preview-entry.(false)": {
5415
- "title": "False Preview Entry",
5416
5415
  "type": "boolean",
5417
5416
  "const": false,
5417
+ "title": "False Preview Entry",
5418
5418
  "documented": true,
5419
5419
  "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```",
5420
5420
  "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```"
5421
5421
  },
5422
5422
  "TextareaInput": {
5423
- "title": "Textarea Input",
5424
- "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```",
5425
5423
  "type": "object",
5426
5424
  "properties": {
5427
5425
  "comment": {
@@ -5466,15 +5464,14 @@
5466
5464
  "$ref": "#/definitions/type._inputs.*.cascade"
5467
5465
  },
5468
5466
  "type": {
5469
- "title": "Type",
5470
- "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```",
5471
5467
  "type": "string",
5472
5468
  "const": "textarea",
5469
+ "title": "Type",
5470
+ "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```",
5473
5471
  "documented": true,
5474
5472
  "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```"
5475
5473
  },
5476
5474
  "options": {
5477
- "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```",
5478
5475
  "type": "object",
5479
5476
  "properties": {
5480
5477
  "max_length": {
@@ -5557,6 +5554,7 @@
5557
5554
  }
5558
5555
  },
5559
5556
  "additionalProperties": false,
5557
+ "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```",
5560
5558
  "documented": true,
5561
5559
  "title": "options",
5562
5560
  "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```"
@@ -5566,12 +5564,12 @@
5566
5564
  "type"
5567
5565
  ],
5568
5566
  "additionalProperties": false,
5567
+ "title": "Textarea Input",
5568
+ "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```",
5569
5569
  "documented": true,
5570
5570
  "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```"
5571
5571
  },
5572
5572
  "CodeInput": {
5573
- "title": "Code Input",
5574
- "description": "This key defines an editing interface for code or mono-spaced plain text content.",
5575
5573
  "type": "object",
5576
5574
  "properties": {
5577
5575
  "comment": {
@@ -5616,15 +5614,14 @@
5616
5614
  "$ref": "#/definitions/type._inputs.*.cascade"
5617
5615
  },
5618
5616
  "type": {
5619
- "title": "Type",
5620
- "description": "This key defines the input type, which controls how this input appears and behaves.",
5621
5617
  "type": "string",
5622
5618
  "const": "code",
5619
+ "title": "Type",
5620
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
5623
5621
  "documented": true,
5624
5622
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
5625
5623
  },
5626
5624
  "options": {
5627
- "description": "This key defines options that are specific to Code Inputs.",
5628
5625
  "type": "object",
5629
5626
  "properties": {
5630
5627
  "tab_size": {
@@ -5753,6 +5750,7 @@
5753
5750
  }
5754
5751
  },
5755
5752
  "additionalProperties": false,
5753
+ "description": "This key defines options that are specific to Code Inputs.",
5756
5754
  "documented": true,
5757
5755
  "title": "options",
5758
5756
  "markdownDescription": "This key defines options that are specific to Code Inputs."
@@ -5762,6 +5760,8 @@
5762
5760
  "type"
5763
5761
  ],
5764
5762
  "additionalProperties": false,
5763
+ "title": "Code Input",
5764
+ "description": "This key defines an editing interface for code or mono-spaced plain text content.",
5765
5765
  "documented": true,
5766
5766
  "markdownDescription": "This key defines an editing interface for code or mono-spaced plain text content."
5767
5767
  },
@@ -5798,8 +5798,6 @@
5798
5798
  "title": "theme(theme)"
5799
5799
  },
5800
5800
  "Syntax": {
5801
- "title": "Syntax",
5802
- "description": "Available syntax highlighting languages for code editors in CloudCannon.",
5803
5801
  "type": "string",
5804
5802
  "enum": [
5805
5803
  "c_cpp",
@@ -5871,12 +5869,12 @@
5871
5869
  "xquery",
5872
5870
  "yaml"
5873
5871
  ],
5872
+ "title": "Syntax",
5873
+ "description": "Available syntax highlighting languages for code editors in CloudCannon.",
5874
5874
  "documented": false,
5875
5875
  "markdownDescription": "Available syntax highlighting languages for code editors in CloudCannon."
5876
5876
  },
5877
5877
  "ColorInput": {
5878
- "title": "Color Input",
5879
- "description": "This key defines an editing interface for color values.",
5880
5878
  "type": "object",
5881
5879
  "properties": {
5882
5880
  "comment": {
@@ -5921,15 +5919,14 @@
5921
5919
  "$ref": "#/definitions/type._inputs.*.cascade"
5922
5920
  },
5923
5921
  "type": {
5924
- "title": "Type",
5925
- "description": "This key defines the input type, which controls how this input appears and behaves.",
5926
5922
  "type": "string",
5927
5923
  "const": "color",
5924
+ "title": "Type",
5925
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
5928
5926
  "documented": true,
5929
5927
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
5930
5928
  },
5931
5929
  "options": {
5932
- "description": "This key defines options that are specific to Color Inputs.",
5933
5930
  "type": "object",
5934
5931
  "properties": {
5935
5932
  "max_length": {
@@ -6039,6 +6036,7 @@
6039
6036
  }
6040
6037
  },
6041
6038
  "additionalProperties": false,
6039
+ "description": "This key defines options that are specific to Color Inputs.",
6042
6040
  "documented": true,
6043
6041
  "title": "options",
6044
6042
  "markdownDescription": "This key defines options that are specific to Color Inputs."
@@ -6048,12 +6046,12 @@
6048
6046
  "type"
6049
6047
  ],
6050
6048
  "additionalProperties": false,
6049
+ "title": "Color Input",
6050
+ "description": "This key defines an editing interface for color values.",
6051
6051
  "documented": true,
6052
6052
  "markdownDescription": "This key defines an editing interface for color values."
6053
6053
  },
6054
6054
  "BooleanInput": {
6055
- "title": "Boolean Input",
6056
- "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```",
6057
6055
  "type": "object",
6058
6056
  "properties": {
6059
6057
  "comment": {
@@ -6098,13 +6096,13 @@
6098
6096
  "$ref": "#/definitions/type._inputs.*.cascade"
6099
6097
  },
6100
6098
  "type": {
6101
- "title": "Type",
6102
- "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```",
6103
6099
  "type": "string",
6104
6100
  "enum": [
6105
6101
  "checkbox",
6106
6102
  "switch"
6107
6103
  ],
6104
+ "title": "Type",
6105
+ "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```",
6108
6106
  "documented": true,
6109
6107
  "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```"
6110
6108
  }
@@ -6113,12 +6111,12 @@
6113
6111
  "type"
6114
6112
  ],
6115
6113
  "additionalProperties": false,
6114
+ "title": "Boolean Input",
6115
+ "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```",
6116
6116
  "documented": true,
6117
6117
  "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```"
6118
6118
  },
6119
6119
  "NumberInput": {
6120
- "title": "Number Input",
6121
- "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```",
6122
6120
  "type": "object",
6123
6121
  "properties": {
6124
6122
  "comment": {
@@ -6163,15 +6161,14 @@
6163
6161
  "$ref": "#/definitions/type._inputs.*.cascade"
6164
6162
  },
6165
6163
  "type": {
6166
- "title": "Type",
6167
- "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```",
6168
6164
  "type": "string",
6169
6165
  "const": "number",
6166
+ "title": "Type",
6167
+ "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```",
6170
6168
  "documented": true,
6171
6169
  "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```"
6172
6170
  },
6173
6171
  "options": {
6174
- "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```",
6175
6172
  "type": "object",
6176
6173
  "properties": {
6177
6174
  "required": {
@@ -6218,6 +6215,7 @@
6218
6215
  }
6219
6216
  },
6220
6217
  "additionalProperties": false,
6218
+ "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```",
6221
6219
  "documented": true,
6222
6220
  "title": "options",
6223
6221
  "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```"
@@ -6227,12 +6225,14 @@
6227
6225
  "type"
6228
6226
  ],
6229
6227
  "additionalProperties": false,
6228
+ "title": "Number Input",
6229
+ "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```",
6230
6230
  "documented": true,
6231
6231
  "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```"
6232
6232
  },
6233
6233
  "type._inputs.*.options.empty_type(number)": {
6234
- "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```",
6235
6234
  "default": "null",
6235
+ "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```",
6236
6236
  "type": "string",
6237
6237
  "enum": [
6238
6238
  "null",
@@ -6243,15 +6243,15 @@
6243
6243
  "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```"
6244
6244
  },
6245
6245
  "type._inputs.*.options.min": {
6246
- "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```",
6247
6246
  "type": "number",
6247
+ "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```",
6248
6248
  "documented": true,
6249
6249
  "title": "min",
6250
6250
  "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```"
6251
6251
  },
6252
6252
  "type._inputs.*.options.max": {
6253
- "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```",
6254
6253
  "type": "number",
6254
+ "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```",
6255
6255
  "documented": true,
6256
6256
  "title": "max",
6257
6257
  "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```"
@@ -6278,8 +6278,6 @@
6278
6278
  "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```"
6279
6279
  },
6280
6280
  "RangeInput": {
6281
- "title": "Range Input",
6282
- "description": "This key defines a slider interface for selecting a numeric value.",
6283
6281
  "type": "object",
6284
6282
  "properties": {
6285
6283
  "comment": {
@@ -6324,15 +6322,14 @@
6324
6322
  "$ref": "#/definitions/type._inputs.*.cascade"
6325
6323
  },
6326
6324
  "type": {
6327
- "title": "Type",
6328
- "description": "This key defines the input type, which controls how this input appears and behaves.",
6329
6325
  "type": "string",
6330
6326
  "const": "range",
6327
+ "title": "Type",
6328
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
6331
6329
  "documented": true,
6332
6330
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
6333
6331
  },
6334
6332
  "options": {
6335
- "description": "This key defines options that are specific to Range Inputs.",
6336
6333
  "type": "object",
6337
6334
  "properties": {
6338
6335
  "required": {
@@ -6371,6 +6368,7 @@
6371
6368
  "max"
6372
6369
  ],
6373
6370
  "additionalProperties": false,
6371
+ "description": "This key defines options that are specific to Range Inputs.",
6374
6372
  "documented": true,
6375
6373
  "title": "options",
6376
6374
  "markdownDescription": "This key defines options that are specific to Range Inputs."
@@ -6380,12 +6378,12 @@
6380
6378
  "type"
6381
6379
  ],
6382
6380
  "additionalProperties": false,
6381
+ "title": "Range Input",
6382
+ "description": "This key defines a slider interface for selecting a numeric value.",
6383
6383
  "documented": true,
6384
6384
  "markdownDescription": "This key defines a slider interface for selecting a numeric value."
6385
6385
  },
6386
6386
  "RichTextInput": {
6387
- "title": "Rich Text Input",
6388
- "description": "This key defines an editing interface for HTML markup content.",
6389
6387
  "type": "object",
6390
6388
  "properties": {
6391
6389
  "comment": {
@@ -6430,18 +6428,17 @@
6430
6428
  "$ref": "#/definitions/type._inputs.*.cascade"
6431
6429
  },
6432
6430
  "type": {
6433
- "title": "Type",
6434
- "description": "This key defines the input type, which controls how this input appears and behaves.",
6435
6431
  "type": "string",
6436
6432
  "enum": [
6437
6433
  "html",
6438
6434
  "markdown"
6439
6435
  ],
6436
+ "title": "Type",
6437
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
6440
6438
  "documented": true,
6441
6439
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
6442
6440
  },
6443
6441
  "options": {
6444
- "description": "This key defines options that are specific to Rich Text Inputs.",
6445
6442
  "type": "object",
6446
6443
  "properties": {
6447
6444
  "mime_type": {
@@ -6647,11 +6644,11 @@
6647
6644
  },
6648
6645
  "allow_resize": {
6649
6646
  "deprecated": true,
6650
- "description": "**⚠️ DEPRECATED:** This key is deprecated. Use `preview_resize` instead.\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).",
6651
6647
  "type": "boolean",
6652
6648
  "documented": true,
6653
6649
  "title": "allow_resize",
6654
- "markdownDescription": "**⚠️ DEPRECATED:** This key is deprecated. Use `preview_resize` instead.\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)."
6650
+ "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).",
6651
+ "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)."
6655
6652
  },
6656
6653
  "prevent_resize": {
6657
6654
  "description": "Shows or hides the resize handler to vertically resize the input.",
@@ -6670,6 +6667,7 @@
6670
6667
  }
6671
6668
  },
6672
6669
  "additionalProperties": false,
6670
+ "description": "This key defines options that are specific to Rich Text Inputs.",
6673
6671
  "documented": true,
6674
6672
  "title": "options",
6675
6673
  "markdownDescription": "This key defines options that are specific to Rich Text Inputs."
@@ -6679,6 +6677,8 @@
6679
6677
  "type"
6680
6678
  ],
6681
6679
  "additionalProperties": false,
6680
+ "title": "Rich Text Input",
6681
+ "description": "This key defines an editing interface for HTML markup content.",
6682
6682
  "documented": true,
6683
6683
  "markdownDescription": "This key defines an editing interface for HTML markup content."
6684
6684
  },
@@ -6768,8 +6768,8 @@
6768
6768
  "type": "object",
6769
6769
  "properties": {
6770
6770
  "size": {
6771
- "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```",
6772
6771
  "type": "string",
6772
+ "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```",
6773
6773
  "documented": true,
6774
6774
  "title": "size",
6775
6775
  "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```"
@@ -7060,8 +7060,6 @@
7060
7060
  "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."
7061
7061
  },
7062
7062
  "DateInput": {
7063
- "title": "Date/Datetime Input",
7064
- "description": "This key defines an editing interface for date and/or time values.",
7065
7063
  "type": "object",
7066
7064
  "properties": {
7067
7065
  "comment": {
@@ -7106,18 +7104,17 @@
7106
7104
  "$ref": "#/definitions/type._inputs.*.cascade"
7107
7105
  },
7108
7106
  "type": {
7109
- "title": "Type",
7110
- "description": "This key defines the input type, which controls how this input appears and behaves.",
7111
7107
  "type": "string",
7112
7108
  "enum": [
7113
7109
  "date",
7114
7110
  "datetime"
7115
7111
  ],
7112
+ "title": "Type",
7113
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
7116
7114
  "documented": true,
7117
7115
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
7118
7116
  },
7119
7117
  "options": {
7120
- "description": "This key defines options that are specific to Date Inputs.",
7121
7118
  "type": "object",
7122
7119
  "properties": {
7123
7120
  "required": {
@@ -7150,10 +7147,10 @@
7150
7147
  "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```",
7151
7148
  "anyOf": [
7152
7149
  {
7153
- "title": "String Start From",
7154
7150
  "type": "string",
7155
7151
  "format": "date-time",
7156
7152
  "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)))$",
7153
+ "title": "String Start From",
7157
7154
  "documented": true,
7158
7155
  "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.",
7159
7156
  "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."
@@ -7180,10 +7177,10 @@
7180
7177
  "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```",
7181
7178
  "anyOf": [
7182
7179
  {
7183
- "title": "String End Before",
7184
7180
  "type": "string",
7185
7181
  "format": "date-time",
7186
7182
  "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)))$",
7183
+ "title": "String End Before",
7187
7184
  "documented": true,
7188
7185
  "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.",
7189
7186
  "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."
@@ -7208,6 +7205,7 @@
7208
7205
  }
7209
7206
  },
7210
7207
  "additionalProperties": false,
7208
+ "description": "This key defines options that are specific to Date Inputs.",
7211
7209
  "documented": true,
7212
7210
  "title": "options",
7213
7211
  "markdownDescription": "This key defines options that are specific to Date Inputs."
@@ -7217,11 +7215,12 @@
7217
7215
  "type"
7218
7216
  ],
7219
7217
  "additionalProperties": false,
7218
+ "title": "Date/Datetime Input",
7219
+ "description": "This key defines an editing interface for date and/or time values.",
7220
7220
  "documented": true,
7221
7221
  "markdownDescription": "This key defines an editing interface for date and/or time values."
7222
7222
  },
7223
7223
  "type.timezone": {
7224
- "title": "Timezone",
7225
7224
  "type": "string",
7226
7225
  "enum": [
7227
7226
  "Africa/Abidjan",
@@ -7820,13 +7819,12 @@
7820
7819
  "WET",
7821
7820
  "Zulu"
7822
7821
  ],
7822
+ "title": "Timezone",
7823
7823
  "documented": true,
7824
7824
  "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/).",
7825
7825
  "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/)."
7826
7826
  },
7827
7827
  "TimeInput": {
7828
- "title": "Time Input",
7829
- "description": "This key defines an editing interface for time values only.",
7830
7828
  "type": "object",
7831
7829
  "properties": {
7832
7830
  "comment": {
@@ -7871,15 +7869,14 @@
7871
7869
  "$ref": "#/definitions/type._inputs.*.cascade"
7872
7870
  },
7873
7871
  "type": {
7874
- "title": "Type",
7875
- "description": "This key defines the input type, which controls how this input appears and behaves.",
7876
7872
  "type": "string",
7877
7873
  "const": "time",
7874
+ "title": "Type",
7875
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
7878
7876
  "documented": true,
7879
7877
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
7880
7878
  },
7881
7879
  "options": {
7882
- "description": "This key defines options that are specific to Time Inputs.",
7883
7880
  "type": "object",
7884
7881
  "properties": {
7885
7882
  "required": {
@@ -7899,6 +7896,7 @@
7899
7896
  }
7900
7897
  },
7901
7898
  "additionalProperties": false,
7899
+ "description": "This key defines options that are specific to Time Inputs.",
7902
7900
  "documented": true,
7903
7901
  "title": "options",
7904
7902
  "markdownDescription": "This key defines options that are specific to Time Inputs."
@@ -7908,12 +7906,12 @@
7908
7906
  "type"
7909
7907
  ],
7910
7908
  "additionalProperties": false,
7909
+ "title": "Time Input",
7910
+ "description": "This key defines an editing interface for time values only.",
7911
7911
  "documented": true,
7912
7912
  "markdownDescription": "This key defines an editing interface for time values only."
7913
7913
  },
7914
7914
  "FileInput": {
7915
- "title": "File Input",
7916
- "description": "This key defines an editing interface for uploading files to your repository or DAM and browsing existing assets.",
7917
7915
  "type": "object",
7918
7916
  "properties": {
7919
7917
  "comment": {
@@ -7958,19 +7956,18 @@
7958
7956
  "$ref": "#/definitions/type._inputs.*.cascade"
7959
7957
  },
7960
7958
  "type": {
7961
- "title": "Type",
7962
- "description": "This key defines the input type, which controls how this input appears and behaves.",
7963
7959
  "type": "string",
7964
7960
  "enum": [
7965
7961
  "file",
7966
7962
  "document",
7967
7963
  "image"
7968
7964
  ],
7965
+ "title": "Type",
7966
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
7969
7967
  "documented": true,
7970
7968
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
7971
7969
  },
7972
7970
  "options": {
7973
- "description": "This key defines options that are specific to File Inputs.",
7974
7971
  "type": "object",
7975
7972
  "properties": {
7976
7973
  "mime_type": {
@@ -8092,6 +8089,7 @@
8092
8089
  }
8093
8090
  },
8094
8091
  "additionalProperties": false,
8092
+ "description": "This key defines options that are specific to File Inputs.",
8095
8093
  "documented": true,
8096
8094
  "title": "options",
8097
8095
  "markdownDescription": "This key defines options that are specific to File Inputs."
@@ -8101,6 +8099,8 @@
8101
8099
  "type"
8102
8100
  ],
8103
8101
  "additionalProperties": false,
8102
+ "title": "File Input",
8103
+ "description": "This key defines an editing interface for uploading files to your repository or DAM and browsing existing assets.",
8104
8104
  "documented": true,
8105
8105
  "markdownDescription": "This key defines an editing interface for uploading files to your repository or DAM and browsing existing assets."
8106
8106
  },
@@ -8108,18 +8108,18 @@
8108
8108
  "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```",
8109
8109
  "anyOf": [
8110
8110
  {
8111
- "title": "Comma Separated Accepts Mime Types",
8112
8111
  "type": "string",
8112
+ "title": "Comma Separated Accepts Mime Types",
8113
8113
  "documented": true,
8114
8114
  "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```",
8115
8115
  "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```"
8116
8116
  },
8117
8117
  {
8118
- "title": "Array Accepts Mime Types",
8119
8118
  "type": "array",
8120
8119
  "items": {
8121
8120
  "$ref": "#/definitions/MimeType"
8122
8121
  },
8122
+ "title": "Array Accepts Mime Types",
8123
8123
  "documented": true,
8124
8124
  "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```",
8125
8125
  "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```"
@@ -8130,8 +8130,6 @@
8130
8130
  "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```"
8131
8131
  },
8132
8132
  "MimeType": {
8133
- "title": "Mime Type",
8134
- "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```",
8135
8133
  "type": "string",
8136
8134
  "enum": [
8137
8135
  "x-world/x-3dmf",
@@ -8568,6 +8566,8 @@
8568
8566
  "multipart/x-zip",
8569
8567
  "text/x-script.zsh"
8570
8568
  ],
8569
+ "title": "Mime Type",
8570
+ "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```",
8571
8571
  "documented": true,
8572
8572
  "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```"
8573
8573
  },
@@ -8610,8 +8610,6 @@
8610
8610
  "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```"
8611
8611
  },
8612
8612
  "UrlInput": {
8613
- "title": "URL Input",
8614
- "description": "This key defines an editing interface for relative, absolute, and fully qualified URLs.",
8615
8613
  "type": "object",
8616
8614
  "properties": {
8617
8615
  "comment": {
@@ -8656,15 +8654,14 @@
8656
8654
  "$ref": "#/definitions/type._inputs.*.cascade"
8657
8655
  },
8658
8656
  "type": {
8659
- "title": "Type",
8660
- "description": "This key defines the input type, which controls how this input appears and behaves.",
8661
8657
  "type": "string",
8662
8658
  "const": "url",
8659
+ "title": "Type",
8660
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
8663
8661
  "documented": true,
8664
8662
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
8665
8663
  },
8666
8664
  "options": {
8667
- "description": "This key defines options that are specific to URL Inputs.",
8668
8665
  "type": "object",
8669
8666
  "properties": {
8670
8667
  "mime_type": {
@@ -8818,6 +8815,7 @@
8818
8815
  }
8819
8816
  },
8820
8817
  "additionalProperties": false,
8818
+ "description": "This key defines options that are specific to URL Inputs.",
8821
8819
  "documented": true,
8822
8820
  "title": "options",
8823
8821
  "markdownDescription": "This key defines options that are specific to URL Inputs."
@@ -8827,12 +8825,12 @@
8827
8825
  "type"
8828
8826
  ],
8829
8827
  "additionalProperties": false,
8828
+ "title": "URL Input",
8829
+ "description": "This key defines an editing interface for relative, absolute, and fully qualified URLs.",
8830
8830
  "documented": true,
8831
8831
  "markdownDescription": "This key defines an editing interface for relative, absolute, and fully qualified URLs."
8832
8832
  },
8833
8833
  "SelectInput": {
8834
- "title": "Select Input",
8835
- "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```",
8836
8834
  "type": "object",
8837
8835
  "properties": {
8838
8836
  "comment": {
@@ -8877,15 +8875,14 @@
8877
8875
  "$ref": "#/definitions/type._inputs.*.cascade"
8878
8876
  },
8879
8877
  "type": {
8880
- "title": "Type",
8881
- "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```",
8882
8878
  "type": "string",
8883
8879
  "const": "select",
8880
+ "title": "Type",
8881
+ "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```",
8884
8882
  "documented": true,
8885
8883
  "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```"
8886
8884
  },
8887
8885
  "options": {
8888
- "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```",
8889
8886
  "type": "object",
8890
8887
  "properties": {
8891
8888
  "required": {
@@ -8989,6 +8986,7 @@
8989
8986
  }
8990
8987
  },
8991
8988
  "additionalProperties": false,
8989
+ "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```",
8992
8990
  "documented": true,
8993
8991
  "title": "options",
8994
8992
  "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```"
@@ -8998,11 +8996,12 @@
8998
8996
  "type"
8999
8997
  ],
9000
8998
  "additionalProperties": false,
8999
+ "title": "Select Input",
9000
+ "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```",
9001
9001
  "documented": true,
9002
9002
  "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```"
9003
9003
  },
9004
9004
  "type.preview": {
9005
- "title": "Preview",
9006
9005
  "type": "object",
9007
9006
  "properties": {
9008
9007
  "text": {
@@ -9034,6 +9033,7 @@
9034
9033
  }
9035
9034
  },
9036
9035
  "additionalProperties": false,
9036
+ "title": "Preview",
9037
9037
  "documented": true,
9038
9038
  "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```",
9039
9039
  "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```"
@@ -9230,37 +9230,35 @@
9230
9230
  },
9231
9231
  "type._inputs.*.options.allow_empty": {
9232
9232
  "deprecated": true,
9233
- "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```",
9233
+ "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```",
9234
9234
  "type": "boolean",
9235
9235
  "documented": true,
9236
9236
  "title": "allow_empty",
9237
- "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```"
9237
+ "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```"
9238
9238
  },
9239
9239
  "type._inputs.*.options.values": {
9240
9240
  "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```",
9241
9241
  "anyOf": [
9242
9242
  {
9243
+ "type": "string",
9243
9244
  "title": "Dataset Reference Values",
9244
9245
  "description": "This key defines a reference to a dataset.",
9245
- "type": "string",
9246
9246
  "documented": true,
9247
9247
  "markdownDescription": "This key defines a reference to a dataset."
9248
9248
  },
9249
9249
  {
9250
- "description": "Data formats for populating select and multiselect input options, supporting arrays and objects.",
9251
9250
  "anyOf": [
9252
9251
  {
9253
- "title": "Text Array",
9254
9252
  "type": "array",
9255
9253
  "items": {
9256
9254
  "type": "string",
9257
9255
  "documented": false,
9258
9256
  "title": "values(any-of-1)(text-array)[*]"
9259
9257
  },
9258
+ "title": "Text Array",
9260
9259
  "documented": false
9261
9260
  },
9262
9261
  {
9263
- "title": "Text Object",
9264
9262
  "type": "object",
9265
9263
  "propertyNames": {
9266
9264
  "type": "string"
@@ -9270,10 +9268,10 @@
9270
9268
  "documented": false,
9271
9269
  "title": "values(any-of-1)(text-object).*"
9272
9270
  },
9271
+ "title": "Text Object",
9273
9272
  "documented": false
9274
9273
  },
9275
9274
  {
9276
- "title": "Object Array",
9277
9275
  "type": "array",
9278
9276
  "items": {
9279
9277
  "type": "object",
@@ -9284,18 +9282,20 @@
9284
9282
  "documented": false,
9285
9283
  "title": "values(any-of-1)(object-array)[*]"
9286
9284
  },
9285
+ "title": "Object Array",
9287
9286
  "documented": false
9288
9287
  },
9289
9288
  {
9290
- "title": "Object",
9291
9289
  "type": "object",
9292
9290
  "propertyNames": {
9293
9291
  "type": "string"
9294
9292
  },
9295
9293
  "additionalProperties": {},
9294
+ "title": "Object",
9296
9295
  "documented": false
9297
9296
  }
9298
9297
  ],
9298
+ "description": "Data formats for populating select and multiselect input options, supporting arrays and objects.",
9299
9299
  "documented": false,
9300
9300
  "title": "values(any-of-1)",
9301
9301
  "markdownDescription": "Data formats for populating select and multiselect input options, supporting arrays and objects."
@@ -9339,8 +9339,6 @@
9339
9339
  "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```"
9340
9340
  },
9341
9341
  "MultiselectInput": {
9342
- "title": "Multiselect Input",
9343
- "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```",
9344
9342
  "type": "object",
9345
9343
  "properties": {
9346
9344
  "comment": {
@@ -9385,15 +9383,14 @@
9385
9383
  "$ref": "#/definitions/type._inputs.*.cascade"
9386
9384
  },
9387
9385
  "type": {
9388
- "title": "Type",
9389
- "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```",
9390
9386
  "type": "string",
9391
9387
  "const": "multiselect",
9388
+ "title": "Type",
9389
+ "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```",
9392
9390
  "documented": true,
9393
9391
  "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```"
9394
9392
  },
9395
9393
  "options": {
9396
- "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```",
9397
9394
  "type": "object",
9398
9395
  "properties": {
9399
9396
  "required": {
@@ -9467,6 +9464,7 @@
9467
9464
  }
9468
9465
  },
9469
9466
  "additionalProperties": false,
9467
+ "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```",
9470
9468
  "documented": true,
9471
9469
  "title": "options",
9472
9470
  "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```"
@@ -9476,6 +9474,8 @@
9476
9474
  "type"
9477
9475
  ],
9478
9476
  "additionalProperties": false,
9477
+ "title": "Multiselect Input",
9478
+ "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```",
9479
9479
  "documented": true,
9480
9480
  "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```"
9481
9481
  },
@@ -9522,8 +9522,8 @@
9522
9522
  "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```"
9523
9523
  },
9524
9524
  "type._inputs.*.options.empty_type(array)": {
9525
- "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```",
9526
9525
  "default": "null",
9526
+ "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```",
9527
9527
  "type": "string",
9528
9528
  "enum": [
9529
9529
  "null",
@@ -9534,8 +9534,6 @@
9534
9534
  "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```"
9535
9535
  },
9536
9536
  "ChoiceInput": {
9537
- "title": "Choice Input",
9538
- "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```",
9539
9537
  "type": "object",
9540
9538
  "properties": {
9541
9539
  "comment": {
@@ -9580,15 +9578,14 @@
9580
9578
  "$ref": "#/definitions/type._inputs.*.cascade"
9581
9579
  },
9582
9580
  "type": {
9583
- "title": "Type",
9584
- "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```",
9585
9581
  "type": "string",
9586
9582
  "const": "choice",
9583
+ "title": "Type",
9584
+ "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```",
9587
9585
  "documented": true,
9588
9586
  "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```"
9589
9587
  },
9590
9588
  "options": {
9591
- "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```",
9592
9589
  "type": "object",
9593
9590
  "properties": {
9594
9591
  "required": {
@@ -9689,6 +9686,7 @@
9689
9686
  }
9690
9687
  },
9691
9688
  "additionalProperties": false,
9689
+ "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```",
9692
9690
  "documented": true,
9693
9691
  "title": "options",
9694
9692
  "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```"
@@ -9698,12 +9696,12 @@
9698
9696
  "type"
9699
9697
  ],
9700
9698
  "additionalProperties": false,
9699
+ "title": "Choice Input",
9700
+ "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```",
9701
9701
  "documented": true,
9702
9702
  "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```"
9703
9703
  },
9704
9704
  "MultichoiceInput": {
9705
- "title": "Multichoice Input",
9706
- "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```",
9707
9705
  "type": "object",
9708
9706
  "properties": {
9709
9707
  "comment": {
@@ -9748,15 +9746,14 @@
9748
9746
  "$ref": "#/definitions/type._inputs.*.cascade"
9749
9747
  },
9750
9748
  "type": {
9751
- "title": "Type",
9752
- "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```",
9753
9749
  "type": "string",
9754
9750
  "const": "multichoice",
9751
+ "title": "Type",
9752
+ "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```",
9755
9753
  "documented": true,
9756
9754
  "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```"
9757
9755
  },
9758
9756
  "options": {
9759
- "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```",
9760
9757
  "type": "object",
9761
9758
  "properties": {
9762
9759
  "required": {
@@ -9827,6 +9824,7 @@
9827
9824
  }
9828
9825
  },
9829
9826
  "additionalProperties": false,
9827
+ "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```",
9830
9828
  "documented": true,
9831
9829
  "title": "options",
9832
9830
  "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```"
@@ -9836,12 +9834,12 @@
9836
9834
  "type"
9837
9835
  ],
9838
9836
  "additionalProperties": false,
9837
+ "title": "Multichoice Input",
9838
+ "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```",
9839
9839
  "documented": true,
9840
9840
  "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```"
9841
9841
  },
9842
9842
  "ObjectInput": {
9843
- "title": "Object Input",
9844
- "description": "This key defines a user interface for a group of inputs.",
9845
9843
  "type": "object",
9846
9844
  "properties": {
9847
9845
  "comment": {
@@ -9886,15 +9884,14 @@
9886
9884
  "$ref": "#/definitions/type._inputs.*.cascade"
9887
9885
  },
9888
9886
  "type": {
9889
- "title": "Type",
9890
- "description": "This key defines the input type, which controls how this input appears and behaves.",
9891
9887
  "type": "string",
9892
9888
  "const": "object",
9889
+ "title": "Type",
9890
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
9893
9891
  "documented": true,
9894
9892
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
9895
9893
  },
9896
9894
  "options": {
9897
- "description": "This key defines options that are specific to Object Inputs.",
9898
9895
  "type": "object",
9899
9896
  "properties": {
9900
9897
  "required": {
@@ -10117,6 +10114,7 @@
10117
10114
  }
10118
10115
  },
10119
10116
  "additionalProperties": false,
10117
+ "description": "This key defines options that are specific to Object Inputs.",
10120
10118
  "documented": true,
10121
10119
  "title": "options",
10122
10120
  "markdownDescription": "This key defines options that are specific to Object Inputs."
@@ -10126,12 +10124,14 @@
10126
10124
  "type"
10127
10125
  ],
10128
10126
  "additionalProperties": false,
10127
+ "title": "Object Input",
10128
+ "description": "This key defines a user interface for a group of inputs.",
10129
10129
  "documented": true,
10130
10130
  "markdownDescription": "This key defines a user interface for a group of inputs."
10131
10131
  },
10132
10132
  "type._inputs.*.options.empty_type(object)": {
10133
- "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```",
10134
10133
  "default": "null",
10134
+ "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```",
10135
10135
  "type": "string",
10136
10136
  "enum": [
10137
10137
  "null",
@@ -10142,15 +10142,13 @@
10142
10142
  "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```"
10143
10143
  },
10144
10144
  "type.structure-reference": {
10145
+ "type": "string",
10145
10146
  "title": "Structure Reference",
10146
10147
  "description": "A reference to an existing structure.",
10147
- "type": "string",
10148
10148
  "documented": true,
10149
10149
  "markdownDescription": "A reference to an existing structure."
10150
10150
  },
10151
10151
  "type.structure": {
10152
- "title": "Structure",
10153
- "description": "This key defines data formats when adding new items to arrays and objects, with options for how editors choose from available values.",
10154
10152
  "type": "object",
10155
10153
  "properties": {
10156
10154
  "reorder_inputs": {
@@ -10186,11 +10184,11 @@
10186
10184
  "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```"
10187
10185
  },
10188
10186
  "values": {
10189
- "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```",
10190
10187
  "type": "array",
10191
10188
  "items": {
10192
10189
  "$ref": "#/definitions/type.structure.values.[*]"
10193
10190
  },
10191
+ "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```",
10194
10192
  "documented": true,
10195
10193
  "title": "values",
10196
10194
  "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```"
@@ -10234,12 +10232,12 @@
10234
10232
  "values"
10235
10233
  ],
10236
10234
  "additionalProperties": false,
10235
+ "title": "Structure",
10236
+ "description": "This key defines data formats when adding new items to arrays and objects, with options for how editors choose from available values.",
10237
10237
  "documented": true,
10238
10238
  "markdownDescription": "This key defines data formats when adding new items to arrays and objects, with options for how editors choose from available values."
10239
10239
  },
10240
10240
  "type.structure.values.[*]": {
10241
- "title": "Structure Value",
10242
- "description": "This key represents a single value option within a structure, defining the data format and appearance for content editors.",
10243
10241
  "type": "object",
10244
10242
  "properties": {
10245
10243
  "reorder_inputs": {
@@ -10500,6 +10498,8 @@
10500
10498
  "value"
10501
10499
  ],
10502
10500
  "additionalProperties": false,
10501
+ "title": "Structure Value",
10502
+ "description": "This key represents a single value option within a structure, defining the data format and appearance for content editors.",
10503
10503
  "documented": true,
10504
10504
  "markdownDescription": "This key represents a single value option within a structure, defining the data format and appearance for content editors."
10505
10505
  },
@@ -10518,27 +10518,23 @@
10518
10518
  "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```"
10519
10519
  },
10520
10520
  "type._select_data": {
10521
- "title": "Select Data",
10522
- "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```",
10523
10521
  "type": "object",
10524
10522
  "propertyNames": {
10525
10523
  "type": "string"
10526
10524
  },
10527
10525
  "additionalProperties": {
10528
- "description": "This key defines data formats for populating select and multiselect input options, supporting arrays and objects.",
10529
10526
  "anyOf": [
10530
10527
  {
10531
- "title": "Text Array Select Data",
10532
10528
  "type": "array",
10533
10529
  "items": {
10534
10530
  "type": "string",
10535
10531
  "documented": true,
10536
10532
  "title": "*(text-array)[*]"
10537
10533
  },
10534
+ "title": "Text Array Select Data",
10538
10535
  "documented": true
10539
10536
  },
10540
10537
  {
10541
- "title": "Text Object Select Data",
10542
10538
  "type": "object",
10543
10539
  "propertyNames": {
10544
10540
  "type": "string"
@@ -10548,10 +10544,10 @@
10548
10544
  "documented": true,
10549
10545
  "title": "*(text-object).*"
10550
10546
  },
10547
+ "title": "Text Object Select Data",
10551
10548
  "documented": true
10552
10549
  },
10553
10550
  {
10554
- "title": "Object Array Select Data",
10555
10551
  "type": "array",
10556
10552
  "items": {
10557
10553
  "type": "object",
@@ -10562,28 +10558,30 @@
10562
10558
  "documented": true,
10563
10559
  "title": "*(object-array)[*]"
10564
10560
  },
10561
+ "title": "Object Array Select Data",
10565
10562
  "documented": true
10566
10563
  },
10567
10564
  {
10568
- "title": "Object Select Data",
10569
10565
  "type": "object",
10570
10566
  "propertyNames": {
10571
10567
  "type": "string"
10572
10568
  },
10573
10569
  "additionalProperties": {},
10570
+ "title": "Object Select Data",
10574
10571
  "documented": true
10575
10572
  }
10576
10573
  ],
10574
+ "description": "This key defines data formats for populating select and multiselect input options, supporting arrays and objects.",
10577
10575
  "documented": true,
10578
10576
  "title": "_select_data.*",
10579
10577
  "markdownDescription": "This key defines data formats for populating select and multiselect input options, supporting arrays and objects."
10580
10578
  },
10579
+ "title": "Select Data",
10580
+ "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```",
10581
10581
  "documented": true,
10582
10582
  "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```"
10583
10583
  },
10584
10584
  "type._structures": {
10585
- "title": "Structures",
10586
- "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```",
10587
10585
  "type": "object",
10588
10586
  "propertyNames": {
10589
10587
  "type": "string"
@@ -10591,6 +10589,8 @@
10591
10589
  "additionalProperties": {
10592
10590
  "$ref": "#/definitions/type.structure"
10593
10591
  },
10592
+ "title": "Structures",
10593
+ "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```",
10594
10594
  "documented": true,
10595
10595
  "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```"
10596
10596
  },
@@ -10616,8 +10616,6 @@
10616
10616
  "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```"
10617
10617
  },
10618
10618
  "ArrayInput": {
10619
- "title": "Array Input",
10620
- "description": "This key defines a user interface for lists of inputs or input groups.",
10621
10619
  "type": "object",
10622
10620
  "properties": {
10623
10621
  "comment": {
@@ -10662,15 +10660,14 @@
10662
10660
  "$ref": "#/definitions/type._inputs.*.cascade"
10663
10661
  },
10664
10662
  "type": {
10665
- "title": "Type",
10666
- "description": "This key defines the input type, which controls how this input appears and behaves.",
10667
10663
  "type": "string",
10668
10664
  "const": "array",
10665
+ "title": "Type",
10666
+ "description": "This key defines the input type, which controls how this input appears and behaves.",
10669
10667
  "documented": true,
10670
10668
  "markdownDescription": "This key defines the input type, which controls how this input appears and behaves."
10671
10669
  },
10672
10670
  "options": {
10673
- "description": "This key defines options that are specific to Array Inputs.",
10674
10671
  "type": "object",
10675
10672
  "properties": {
10676
10673
  "required": {
@@ -10731,6 +10728,7 @@
10731
10728
  }
10732
10729
  },
10733
10730
  "additionalProperties": false,
10731
+ "description": "This key defines options that are specific to Array Inputs.",
10734
10732
  "documented": true,
10735
10733
  "title": "options",
10736
10734
  "markdownDescription": "This key defines options that are specific to Array Inputs."
@@ -10740,6 +10738,8 @@
10740
10738
  "type"
10741
10739
  ],
10742
10740
  "additionalProperties": false,
10741
+ "title": "Array Input",
10742
+ "description": "This key defines a user interface for lists of inputs or input groups.",
10743
10743
  "documented": true,
10744
10744
  "markdownDescription": "This key defines a user interface for lists of inputs or input groups."
10745
10745
  },
@@ -10768,9 +10768,6 @@
10768
10768
  "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)."
10769
10769
  },
10770
10770
  "AutoInput": {
10771
- "title": "Automatic Input",
10772
- "description": "Provides a default user interface based on the data contained.",
10773
- "excludeFromDocumentation": true,
10774
10771
  "type": "object",
10775
10772
  "properties": {
10776
10773
  "comment": {
@@ -10815,10 +10812,10 @@
10815
10812
  "$ref": "#/definitions/type._inputs.*.cascade"
10816
10813
  },
10817
10814
  "type": {
10818
- "title": "Type",
10819
- "description": "Sets an input type, which controls how this input appears and behaves.",
10820
10815
  "type": "string",
10821
10816
  "const": "auto",
10817
+ "title": "Type",
10818
+ "description": "Sets an input type, which controls how this input appears and behaves.",
10822
10819
  "documented": false,
10823
10820
  "markdownDescription": "Sets an input type, which controls how this input appears and behaves."
10824
10821
  },
@@ -10833,13 +10830,13 @@
10833
10830
  "type"
10834
10831
  ],
10835
10832
  "additionalProperties": false,
10833
+ "title": "Automatic Input",
10834
+ "description": "Provides a default user interface based on the data contained.",
10835
+ "excludeFromDocumentation": true,
10836
10836
  "documented": false,
10837
10837
  "markdownDescription": "Provides a default user interface based on the data contained."
10838
10838
  },
10839
10839
  "UnknownInput": {
10840
- "title": "Unknown Input",
10841
- "description": "Provides a default user interface based on the data contained.",
10842
- "excludeFromDocumentation": true,
10843
10840
  "type": "object",
10844
10841
  "properties": {
10845
10842
  "comment": {
@@ -10891,6 +10888,9 @@
10891
10888
  }
10892
10889
  },
10893
10890
  "additionalProperties": false,
10891
+ "title": "Unknown Input",
10892
+ "description": "Provides a default user interface based on the data contained.",
10893
+ "excludeFromDocumentation": true,
10894
10894
  "documented": false,
10895
10895
  "markdownDescription": "Provides a default user interface based on the data contained."
10896
10896
  },
@@ -11374,18 +11374,16 @@
11374
11374
  "markdownDescription": "This key defines custom order and grouping for Collections in your *Site Navigation*.\n\nThe value is an array of group objects. Each group object must contain a `heading` key and a `collections` key.\n\nIf undefined, CloudCannon will sort your Collections in the order they are defined under the `collections_config` key.\n\n## Examples\n\nIn this example, we have configured Collection groups to organize Collections into \"Content\" and \"Data Files\" sections in the *Site Navigation*.\n\n```yaml\ncollection_groups:\n - heading: Content\n collections:\n - pages\n - blog\n - heading: Data Files\n collections:\n - data\n```"
11375
11375
  },
11376
11376
  "CollectionGroup": {
11377
- "title": "Collection Group",
11378
11377
  "type": "object",
11379
11378
  "properties": {
11380
11379
  "heading": {
11381
- "description": "This key defines a short, descriptive label for a group of Collections displayed in the *Site Navigation*.\n\nThis key is required for each group entry in the `collection_groups` array.\n\n## Examples\n\nIn this example, we have configured two Collection groups with a heading that labels the group in the *Site Navigation*.\n\n```yaml\ncollection_groups:\n - heading: Content\n collections:\n - pages\n - blog\n - heading: Data Files\n collections:\n - data\n```",
11382
11380
  "type": "string",
11381
+ "description": "This key defines a short, descriptive label for a group of Collections displayed in the *Site Navigation*.\n\nThis key is required for each group entry in the `collection_groups` array.\n\n## Examples\n\nIn this example, we have configured two Collection groups with a heading that labels the group in the *Site Navigation*.\n\n```yaml\ncollection_groups:\n - heading: Content\n collections:\n - pages\n - blog\n - heading: Data Files\n collections:\n - data\n```",
11383
11382
  "documented": true,
11384
11383
  "title": "heading",
11385
11384
  "markdownDescription": "This key defines a short, descriptive label for a group of Collections displayed in the *Site Navigation*.\n\nThis key is required for each group entry in the `collection_groups` array.\n\n## Examples\n\nIn this example, we have configured two Collection groups with a heading that labels the group in the *Site Navigation*.\n\n```yaml\ncollection_groups:\n - heading: Content\n collections:\n - pages\n - blog\n - heading: Data Files\n collections:\n - data\n```"
11386
11385
  },
11387
11386
  "collections": {
11388
- "description": "This key defines the Collections displayed in a group in the *Site Navigation*.\n\nThe value is an array of Collection key name strings, matching the keys defined in `collections_config`.\n\nThis key is required for each group entry in the `collection_groups` array.\n\n## Examples\n\nIn this example, we have configured two Collection groups with collections arrays.\n\n```yaml\ncollection_groups:\n - heading: Content\n collections:\n - pages\n - blog\n - heading: Data Files\n collections:\n - data\n```",
11389
11387
  "type": "array",
11390
11388
  "items": {
11391
11389
  "type": "string",
@@ -11394,6 +11392,7 @@
11394
11392
  "description": "This key represents an individual Collection key name string in the `collection_groups.[*].collections` array.\n\nThe value is a string that specifies the key name of a Collection defined in `collections_config` to include in a group in the *Site Navigation*.\n\n## Examples\n\nIn this example, we have configured a Collection group with multiple Collection key names in the collections array.\n\n```yaml\ncollection_groups:\n - heading: Content\n collections:\n - pages\n - blog\n - heading: Data Files\n collections:\n - data\n```",
11395
11393
  "markdownDescription": "This key represents an individual Collection key name string in the `collection_groups.[*].collections` array.\n\nThe value is a string that specifies the key name of a Collection defined in `collections_config` to include in a group in the *Site Navigation*.\n\n## Examples\n\nIn this example, we have configured a Collection group with multiple Collection key names in the collections array.\n\n```yaml\ncollection_groups:\n - heading: Content\n collections:\n - pages\n - blog\n - heading: Data Files\n collections:\n - data\n```"
11396
11394
  },
11395
+ "description": "This key defines the Collections displayed in a group in the *Site Navigation*.\n\nThe value is an array of Collection key name strings, matching the keys defined in `collections_config`.\n\nThis key is required for each group entry in the `collection_groups` array.\n\n## Examples\n\nIn this example, we have configured two Collection groups with collections arrays.\n\n```yaml\ncollection_groups:\n - heading: Content\n collections:\n - pages\n - blog\n - heading: Data Files\n collections:\n - data\n```",
11397
11396
  "documented": true,
11398
11397
  "title": "collections",
11399
11398
  "markdownDescription": "This key defines the Collections displayed in a group in the *Site Navigation*.\n\nThe value is an array of Collection key name strings, matching the keys defined in `collections_config`.\n\nThis key is required for each group entry in the `collection_groups` array.\n\n## Examples\n\nIn this example, we have configured two Collection groups with collections arrays.\n\n```yaml\ncollection_groups:\n - heading: Content\n collections:\n - pages\n - blog\n - heading: Data Files\n collections:\n - data\n```"
@@ -11404,6 +11403,7 @@
11404
11403
  "collections"
11405
11404
  ],
11406
11405
  "additionalProperties": false,
11406
+ "title": "Collection Group",
11407
11407
  "documented": true,
11408
11408
  "description": "This key represents an individual group entry in the `collection_groups` array.\n\nThe value defines a group of Collections displayed in the *Site Navigation*. Each group entry must contain a `heading` key and a `collections` key.\n\n## Examples\n\nIn this example, we have configured two Collection groups with a heading and collections array.\n\n```yaml\ncollection_groups:\n - heading: Content\n collections:\n - pages\n - blog\n - heading: Data Files\n collections:\n - data\n```",
11409
11409
  "markdownDescription": "This key represents an individual group entry in the `collection_groups` array.\n\nThe value defines a group of Collections displayed in the *Site Navigation*. Each group entry must contain a `heading` key and a `collections` key.\n\n## Examples\n\nIn this example, we have configured two Collection groups with a heading and collections array.\n\n```yaml\ncollection_groups:\n - heading: Content\n collections:\n - pages\n - blog\n - heading: Data Files\n collections:\n - data\n```"
@@ -11462,24 +11462,24 @@
11462
11462
  "type": "object",
11463
11463
  "properties": {
11464
11464
  "glob": {
11465
- "description": "This key defines the glob pattern(s) targeting a path to one or more files.\n\n## Examples\n\nIn this example, we have configured a file config to target the `data/tabs.yml` file with object input configuration.\n\n```yaml\nfile_config:\n - glob: data/tabs.yml\n _inputs:\n $:\n type: object\n options:\n subtype: tabbed\n```",
11466
11465
  "anyOf": [
11467
11466
  {
11468
- "title": "Glob Array",
11469
11467
  "type": "array",
11470
11468
  "items": {
11471
11469
  "type": "string",
11472
11470
  "documented": true,
11473
11471
  "title": "glob(glob-array)[*]"
11474
11472
  },
11473
+ "title": "Glob Array",
11475
11474
  "documented": true
11476
11475
  },
11477
11476
  {
11478
- "title": "Glob",
11479
11477
  "type": "string",
11478
+ "title": "Glob",
11480
11479
  "documented": true
11481
11480
  }
11482
11481
  ],
11482
+ "description": "This key defines the glob pattern(s) targeting a path to one or more files.\n\n## Examples\n\nIn this example, we have configured a file config to target the `data/tabs.yml` file with object input configuration.\n\n```yaml\nfile_config:\n - glob: data/tabs.yml\n _inputs:\n $:\n type: object\n options:\n subtype: tabbed\n```",
11483
11483
  "documented": true,
11484
11484
  "title": "glob",
11485
11485
  "markdownDescription": "This key defines the glob pattern(s) targeting a path to one or more files.\n\n## Examples\n\nIn this example, we have configured a file config to target the `data/tabs.yml` file with object input configuration.\n\n```yaml\nfile_config:\n - glob: data/tabs.yml\n _inputs:\n $:\n type: object\n options:\n subtype: tabbed\n```"
@@ -11627,8 +11627,6 @@
11627
11627
  "commit_templates": {
11628
11628
  "type": "array",
11629
11629
  "items": {
11630
- "title": "Commit Template",
11631
- "description": "This key represents an individual commit template object in the `commit_templates` array.\n\nThe value is an object that defines a template for commit messages when saving changes. Each template object can contain optional `label`, `template_path`, `template_string`, `wrap_width`, `extra_data`, and `_inputs` keys.\n\n## Examples\n\nIn this example, we have configured a commit template with a template string and input configuration.\n\n```yaml\ncommit_templates:\n - label: Default\n template_string: '{commit_type}: {message|trim}'\n _inputs:\n commit_type:\n type: select\n options:\n allow_empty: true\n values:\n - feature\n - fix\n - test\n cascade: true\n```",
11632
11630
  "type": "object",
11633
11631
  "properties": {
11634
11632
  "label": {
@@ -11687,6 +11685,8 @@
11687
11685
  }
11688
11686
  },
11689
11687
  "additionalProperties": false,
11688
+ "title": "Commit Template",
11689
+ "description": "This key represents an individual commit template object in the `commit_templates` array.\n\nThe value is an object that defines a template for commit messages when saving changes. Each template object can contain optional `label`, `template_path`, `template_string`, `wrap_width`, `extra_data`, and `_inputs` keys.\n\n## Examples\n\nIn this example, we have configured a commit template with a template string and input configuration.\n\n```yaml\ncommit_templates:\n - label: Default\n template_string: '{commit_type}: {message|trim}'\n _inputs:\n commit_type:\n type: select\n options:\n allow_empty: true\n values:\n - feature\n - fix\n - test\n cascade: true\n```",
11690
11690
  "documented": true,
11691
11691
  "markdownDescription": "This key represents an individual commit template object in the `commit_templates` array.\n\nThe value is an object that defines a template for commit messages when saving changes. Each template object can contain optional `label`, `template_path`, `template_string`, `wrap_width`, `extra_data`, and `_inputs` keys.\n\n## Examples\n\nIn this example, we have configured a commit template with a template string and input configuration.\n\n```yaml\ncommit_templates:\n - label: Default\n template_string: '{commit_type}: {message|trim}'\n _inputs:\n commit_type:\n type: select\n options:\n allow_empty: true\n values:\n - feature\n - fix\n - test\n cascade: true\n```"
11692
11692
  },
@@ -11703,8 +11703,6 @@
11703
11703
  "markdownDescription": "This key defines the commit template to use when pulling changes from the upstream repository.\n\nAn upstream commit message template can contain plain text and placeholders. Placeholders insert data related to the commit and use `[ ]` brackets. CloudCannon supports the following commit placeholders:\n\n* `[branch]` — the name of the current branch.\n* `[publish_branch]` — the name of the Publish Branch from which you merge upstream changes.\n* `[author]` — the email address of the person responsible for the upstream merge.\n* `[date]` — the date of the upstream merge in the format \"Tue Nov 28 2023 21:46:17 GMT+0000\".\n\n## Examples\n\nIn this example, we have configured a commit template with placeholders for upstream pulls.\n\n```yaml\nupstream_commit_template: \"Merge branch [publish_branch] into develop of [branch] by [author] at [date]\"\n```"
11704
11704
  },
11705
11705
  "markdown": {
11706
- "title": "Markdown Settings",
11707
- "description": "This key defines your markdown engine for parsing Markdown content into HTML and any configuration options for your engine.\n\n## Examples\n\nIn this example, we have configured CloudCannon to use the `commonmark` Markdown engine with various options including attributes and attribute elements.\n\n```yaml\nmarkdown:\n engine: commonmark\n options:\n attributes: true\n attributes_elements:\n inline: none\n block: space right\n ul: below\n ol: below\n blockquote: below\n p: below\n img: below\n hr: below\n table: below\n li: none\n```",
11708
11706
  "type": "object",
11709
11707
  "properties": {
11710
11708
  "engine": {
@@ -11869,7 +11867,6 @@
11869
11867
  },
11870
11868
  "attribute_elements": {
11871
11869
  "description": "This key defines positioning behavior of Markdown attributes for different element types when converting HTML to Markdown.\n\nThe value is an object that can contain `inline`, `block`, or element-specific properties. Each property value specifies where attribute lists should be positioned for that element type. Valid values are `none`, `right`, `space right`, `below`, `newline below`, or `right-of-prefix`.\n\nThis key only takes effect when `attributes` is enabled.\n\n## Examples\n\nIn this example, we have configured attribute positioning for inline and block elements.\n\n```yaml\nmarkdown:\n engine: commonmark\n options:\n attributes: true\n attribute_elements:\n inline: right\n block: below\n```",
11872
- "title": "Markdown Attribute Element Options",
11873
11870
  "type": "object",
11874
11871
  "properties": {
11875
11872
  "inline": {
@@ -11898,6 +11895,7 @@
11898
11895
  "additionalProperties": {
11899
11896
  "$ref": "#/definitions/AttributeListPosition"
11900
11897
  },
11898
+ "title": "Markdown Attribute Element Options",
11901
11899
  "documented": true,
11902
11900
  "markdownDescription": "This key defines positioning behavior of Markdown attributes for different element types when converting HTML to Markdown.\n\nThe value is an object that can contain `inline`, `block`, or element-specific properties. Each property value specifies where attribute lists should be positioned for that element type. Valid values are `none`, `right`, `space right`, `below`, `newline below`, or `right-of-prefix`.\n\nThis key only takes effect when `attributes` is enabled.\n\n## Examples\n\nIn this example, we have configured attribute positioning for inline and block elements.\n\n```yaml\nmarkdown:\n engine: commonmark\n options:\n attributes: true\n attribute_elements:\n inline: right\n block: below\n```"
11903
11901
  }
@@ -11910,12 +11908,12 @@
11910
11908
  }
11911
11909
  },
11912
11910
  "additionalProperties": false,
11911
+ "title": "Markdown Settings",
11912
+ "description": "This key defines your markdown engine for parsing Markdown content into HTML and any configuration options for your engine.\n\n## Examples\n\nIn this example, we have configured CloudCannon to use the `commonmark` Markdown engine with various options including attributes and attribute elements.\n\n```yaml\nmarkdown:\n engine: commonmark\n options:\n attributes: true\n attributes_elements:\n inline: none\n block: space right\n ul: below\n ol: below\n blockquote: below\n p: below\n img: below\n hr: below\n table: below\n li: none\n```",
11913
11913
  "documented": true,
11914
11914
  "markdownDescription": "This key defines your markdown engine for parsing Markdown content into HTML and any configuration options for your engine.\n\n## Examples\n\nIn this example, we have configured CloudCannon to use the `commonmark` Markdown engine with various options including attributes and attribute elements.\n\n```yaml\nmarkdown:\n engine: commonmark\n options:\n attributes: true\n attributes_elements:\n inline: none\n block: space right\n ul: below\n ol: below\n blockquote: below\n p: below\n img: below\n hr: below\n table: below\n li: none\n```"
11915
11915
  },
11916
11916
  "AttributeListPosition": {
11917
- "title": "Attribute List Position",
11918
- "description": "Positioning options for Markdown attribute elements.",
11919
11917
  "type": "string",
11920
11918
  "enum": [
11921
11919
  "none",
@@ -11925,6 +11923,8 @@
11925
11923
  "newline below",
11926
11924
  "right-of-prefix"
11927
11925
  ],
11926
+ "title": "Attribute List Position",
11927
+ "description": "Positioning options for Markdown attribute elements.",
11928
11928
  "documented": false,
11929
11929
  "markdownDescription": "Positioning options for Markdown attribute elements."
11930
11930
  },
@@ -11942,8 +11942,6 @@
11942
11942
  "markdownDescription": "This key defines custom snippets for your Site.\n\nThis key has no default."
11943
11943
  },
11944
11944
  "type.snippet": {
11945
- "title": "Snippet",
11946
- "description": "This key defines a snippet configuration.",
11947
11945
  "type": "object",
11948
11946
  "properties": {
11949
11947
  "_inputs": {
@@ -12074,7 +12072,6 @@
12074
12072
  "additionalProperties": {
12075
12073
  "anyOf": [
12076
12074
  {
12077
- "title": "Argument List Parser Configuration",
12078
12075
  "type": "object",
12079
12076
  "properties": {
12080
12077
  "parser": {
@@ -12114,12 +12111,12 @@
12114
12111
  "options"
12115
12112
  ],
12116
12113
  "additionalProperties": false,
12114
+ "title": "Argument List Parser Configuration",
12117
12115
  "documented": true,
12118
12116
  "description": "This key defines a parser configuration that parses a list of distinct positional arguments based on their position.\n\n## Examples\n\nIn this example, we have configured an argument list parser to parse distinct positional arguments based on their position.\n\n```markdown\n{{<figure \"image.png\" \"My image title\">}}\n └──────────────────────────┘\n```",
12119
12117
  "markdownDescription": "This key defines a parser configuration that parses a list of distinct positional arguments based on their position.\n\n## Examples\n\nIn this example, we have configured an argument list parser to parse distinct positional arguments based on their position.\n\n```markdown\n{{<figure \"image.png\" \"My image title\">}}\n └──────────────────────────┘\n```"
12120
12118
  },
12121
12119
  {
12122
- "title": "Argument Parser Configuration",
12123
12120
  "type": "object",
12124
12121
  "properties": {
12125
12122
  "parser": {
@@ -12152,12 +12149,12 @@
12152
12149
  "options"
12153
12150
  ],
12154
12151
  "additionalProperties": false,
12152
+ "title": "Argument Parser Configuration",
12155
12153
  "documented": true,
12156
12154
  "description": "This key defines a parser configuration that parses a single argument, optionally delimited by characters.\n\nUseful for matching a single positional argument.\n\nThe argument parser is also used to parse a list of repeating arguments.\n\n## Examples\n\nIn this example, we have configured an argument parser to parse a single positional argument.\n\n```markdown\n{{<figure image.png>}}\n └───────┘\n```\n\nIn this example, we have configured an argument parser to parse a list of repeating arguments.\n\n```markdown\n{{<images image1.png image2.png image3.png>}}\n └──────────────────────────────┘\n```",
12157
12155
  "markdownDescription": "This key defines a parser configuration that parses a single argument, optionally delimited by characters.\n\nUseful for matching a single positional argument.\n\nThe argument parser is also used to parse a list of repeating arguments.\n\n## Examples\n\nIn this example, we have configured an argument parser to parse a single positional argument.\n\n```markdown\n{{<figure image.png>}}\n └───────┘\n```\n\nIn this example, we have configured an argument parser to parse a list of repeating arguments.\n\n```markdown\n{{<images image1.png image2.png image3.png>}}\n └──────────────────────────────┘\n```"
12158
12156
  },
12159
12157
  {
12160
- "title": "Content Parser Configuration",
12161
12158
  "type": "object",
12162
12159
  "properties": {
12163
12160
  "parser": {
@@ -12289,12 +12286,12 @@
12289
12286
  "options"
12290
12287
  ],
12291
12288
  "additionalProperties": false,
12289
+ "title": "Content Parser Configuration",
12292
12290
  "documented": true,
12293
12291
  "description": "This key defines a parser configuration that parses rich multiline content, such as the content between paired tags. Can be configured to parse nested snippets within.\n\n## Examples\n\nIn this example, we have configured a content parser to parse rich multiline content between paired tags.\n\n```liquid\n{% highlight \"js\" %} let a = b; {% endhighlight %}\n └──────────┘\n```",
12294
12292
  "markdownDescription": "This key defines a parser configuration that parses rich multiline content, such as the content between paired tags. Can be configured to parse nested snippets within.\n\n## Examples\n\nIn this example, we have configured a content parser to parse rich multiline content between paired tags.\n\n```liquid\n{% highlight \"js\" %} let a = b; {% endhighlight %}\n └──────────┘\n```"
12295
12293
  },
12296
12294
  {
12297
- "title": "Key Value List Parser Configuration",
12298
12295
  "type": "object",
12299
12296
  "properties": {
12300
12297
  "parser": {
@@ -12339,12 +12336,12 @@
12339
12336
  "parser"
12340
12337
  ],
12341
12338
  "additionalProperties": false,
12339
+ "title": "Key Value List Parser Configuration",
12342
12340
  "documented": true,
12343
12341
  "description": "This key defines a parser configuration that parses repeating pairs of keys and values.\n\nUseful for most SSG snippets that take properties.\n\nCan be configured to handle most syntax forms of key value pairs.\n\n## Examples\n\nIn this example, we have configured a key-value list parser to parse repeating pairs of keys and values in Liquid syntax.\n\n```liquid\n{% include \"image.html\" image: \"tree.png\" alt: \"Image of a tree\" %}\n └──────────────────────────────────────┘\n```\n\nIn this example, we have configured a key-value list parser to parse repeating pairs of keys and values in Markdown syntax.\n\n```markdown\n<Link href=\"/about/\" new_tab={true}/>\n └───────────────────────────┘\n```",
12344
12342
  "markdownDescription": "This key defines a parser configuration that parses repeating pairs of keys and values.\n\nUseful for most SSG snippets that take properties.\n\nCan be configured to handle most syntax forms of key value pairs.\n\n## Examples\n\nIn this example, we have configured a key-value list parser to parse repeating pairs of keys and values in Liquid syntax.\n\n```liquid\n{% include \"image.html\" image: \"tree.png\" alt: \"Image of a tree\" %}\n └──────────────────────────────────────┘\n```\n\nIn this example, we have configured a key-value list parser to parse repeating pairs of keys and values in Markdown syntax.\n\n```markdown\n<Link href=\"/about/\" new_tab={true}/>\n └───────────────────────────┘\n```"
12345
12343
  },
12346
12344
  {
12347
- "title": "Literal Parser Configuration",
12348
12345
  "type": "object",
12349
12346
  "properties": {
12350
12347
  "parser": {
@@ -12405,12 +12402,12 @@
12405
12402
  "options"
12406
12403
  ],
12407
12404
  "additionalProperties": false,
12405
+ "title": "Literal Parser Configuration",
12408
12406
  "documented": true,
12409
12407
  "description": "This key defines a parser configuration that parses an exact literal value. Mainly useful when configuring a snippet template.",
12410
12408
  "markdownDescription": "This key defines a parser configuration that parses an exact literal value. Mainly useful when configuring a snippet template."
12411
12409
  },
12412
12410
  {
12413
- "title": "Optional Parser Configuration",
12414
12411
  "type": "object",
12415
12412
  "properties": {
12416
12413
  "parser": {
@@ -12454,12 +12451,12 @@
12454
12451
  "options"
12455
12452
  ],
12456
12453
  "additionalProperties": false,
12454
+ "title": "Optional Parser Configuration",
12457
12455
  "documented": true,
12458
12456
  "description": "This key toggles whether matching zero times is a valid state for this parser.\n\nSetting this key to `true` will allow matching zero times as a valid state. If `false`, this parser requires at least one matching value. Setting this to `true` is preferred to wrapping the `repeating` parser inside an `optional` parser.\n\nBy default, this key is `false` (i.e., at least one matching value is required).",
12459
12457
  "markdownDescription": "This key toggles whether matching zero times is a valid state for this parser.\n\nSetting this key to `true` will allow matching zero times as a valid state. If `false`, this parser requires at least one matching value. Setting this to `true` is preferred to wrapping the `repeating` parser inside an `optional` parser.\n\nBy default, this key is `false` (i.e., at least one matching value is required)."
12460
12458
  },
12461
12459
  {
12462
- "title": "Repeating Literal Parser Config",
12463
12460
  "type": "object",
12464
12461
  "properties": {
12465
12462
  "parser": {
@@ -12517,12 +12514,12 @@
12517
12514
  "options"
12518
12515
  ],
12519
12516
  "additionalProperties": false,
12517
+ "title": "Repeating Literal Parser Config",
12520
12518
  "documented": true,
12521
12519
  "description": "This key defines a parser configuration that parses a repeating set of exact literal values.",
12522
12520
  "markdownDescription": "This key defines a parser configuration that parses a repeating set of exact literal values."
12523
12521
  },
12524
12522
  {
12525
- "title": "Repeating Parser Configuration",
12526
12523
  "type": "object",
12527
12524
  "properties": {
12528
12525
  "parser": {
@@ -12590,12 +12587,12 @@
12590
12587
  "options"
12591
12588
  ],
12592
12589
  "additionalProperties": false,
12590
+ "title": "Repeating Parser Configuration",
12593
12591
  "documented": true,
12594
12592
  "description": "This key defines a higher-order parser configuration that wraps a snippet string and allows it to repeat.",
12595
12593
  "markdownDescription": "This key defines a higher-order parser configuration that wraps a snippet string and allows it to repeat."
12596
12594
  },
12597
12595
  {
12598
- "title": "Wrapper Parser Configuration",
12599
12596
  "type": "object",
12600
12597
  "properties": {
12601
12598
  "parser": {
@@ -12642,6 +12639,7 @@
12642
12639
  "options"
12643
12640
  ],
12644
12641
  "additionalProperties": false,
12642
+ "title": "Wrapper Parser Configuration",
12645
12643
  "documented": true,
12646
12644
  "description": "This key defines a wrapper parser configuration for wrapping another snippet configuration.\n\nThe value is an object that contains a `parser` property set to `wrapper` and an `options` object with `snippet` and optional `remove_empty` properties. The wrapper parser wraps another snippet configuration, allowing it to be used within a different snippet context.\n\n## Examples\n\nIn this example, we have configured a wrapper parser to wrap a content snippet.\n\n```yaml\n_snippets:\n example:\n snippet: \"<<example [[wrapped_content]]>>\"\n params:\n wrapped_content:\n parser: wrapper\n options:\n snippet: 'content'\n content:\n snippet: \"<<content [[text]]>>\"\n params:\n text:\n parser: content\n options:\n editor_key: content_text\n```",
12647
12645
  "markdownDescription": "This key defines a wrapper parser configuration for wrapping another snippet configuration.\n\nThe value is an object that contains a `parser` property set to `wrapper` and an `options` object with `snippet` and optional `remove_empty` properties. The wrapper parser wraps another snippet configuration, allowing it to be used within a different snippet context.\n\n## Examples\n\nIn this example, we have configured a wrapper parser to wrap a content snippet.\n\n```yaml\n_snippets:\n example:\n snippet: \"<<example [[wrapped_content]]>>\"\n params:\n wrapped_content:\n parser: wrapper\n options:\n snippet: 'content'\n content:\n snippet: \"<<content [[text]]>>\"\n params:\n text:\n parser: content\n options:\n editor_key: content_text\n```"
@@ -12657,6 +12655,8 @@
12657
12655
  }
12658
12656
  },
12659
12657
  "additionalProperties": false,
12658
+ "title": "Snippet",
12659
+ "description": "This key defines a snippet configuration.",
12660
12660
  "documented": true,
12661
12661
  "markdownDescription": "This key defines a snippet configuration."
12662
12662
  },
@@ -13110,7 +13110,6 @@
13110
13110
  "markdownDescription": "This key defines styling options for snippet output formatting.\n\nThe value is an object that can contain `output`, `inline`, and `block` properties. These options control how snippet content is parsed and formatted to produce cleaner source code.\n\n## Examples\n\nIn this example, we have configured snippet style with inline and block formatting options.\n\n```yaml\n_snippets:\n highlight:\n snippet: \"<<highlight>> [[content]] <</highlight>>\"\n params:\n content:\n parser: content\n options:\n style:\n inline:\n leading: ' '\n trailing: ' '\n block:\n leading: '\\n'\n trailing: '\\n'\n indent: ' '\n```"
13111
13111
  },
13112
13112
  "type._snippets_imports": {
13113
- "title": "Snippets Imports",
13114
13113
  "type": "object",
13115
13114
  "properties": {
13116
13115
  "hugo": {
@@ -13139,6 +13138,7 @@
13139
13138
  }
13140
13139
  },
13141
13140
  "additionalProperties": false,
13141
+ "title": "Snippets Imports",
13142
13142
  "documented": true,
13143
13143
  "description": "This key defines snippet templates or libraries for your Site.\n\nSome libraries are SSG specific while others work for most SSGs.\n\nFor more information, please read our documentation on [Docusaurus Components](https://cloudcannon.com/documentation/articles/snippets-using-docusaurus-components/),\n[Eleventy Shortcodes](https://cloudcannon.com/documentation/articles/snippets-using-eleventy-shortcodes/), [Hugo Shortcodes](https://cloudcannon.com/documentation/articles/snippets-using-hugo-shortcodes/), [MDX Components](https://cloudcannon.com/documentation/articles/snippets-using-mdx-components/), or [Python Markdown](https://cloudcannon.com/documentation/articles/snippets-using-python-markdown/).\n\n## Examples\n\nIn this example, we have configured Hugo shortcode imports for the Site.\n\n```yaml\n_snippets_imports:\n hugo:\n include:\n - figure\n - youtube\n```",
13144
13144
  "markdownDescription": "This key defines snippet templates or libraries for your Site.\n\nSome libraries are SSG specific while others work for most SSGs.\n\nFor more information, please read our documentation on [Docusaurus Components](https://cloudcannon.com/documentation/articles/snippets-using-docusaurus-components/),\n[Eleventy Shortcodes](https://cloudcannon.com/documentation/articles/snippets-using-eleventy-shortcodes/), [Hugo Shortcodes](https://cloudcannon.com/documentation/articles/snippets-using-hugo-shortcodes/), [MDX Components](https://cloudcannon.com/documentation/articles/snippets-using-mdx-components/), or [Python Markdown](https://cloudcannon.com/documentation/articles/snippets-using-python-markdown/).\n\n## Examples\n\nIn this example, we have configured Hugo shortcode imports for the Site.\n\n```yaml\n_snippets_imports:\n hugo:\n include:\n - figure\n - youtube\n```"
@@ -13150,7 +13150,6 @@
13150
13150
  "$ref": "#/definitions/type._snippets_imports.*.(full-import)"
13151
13151
  },
13152
13152
  {
13153
- "title": "Snippets Imports Exclude List",
13154
13153
  "type": "object",
13155
13154
  "properties": {
13156
13155
  "exclude": {
@@ -13161,10 +13160,10 @@
13161
13160
  "exclude"
13162
13161
  ],
13163
13162
  "additionalProperties": false,
13163
+ "title": "Snippets Imports Exclude List",
13164
13164
  "documented": true
13165
13165
  },
13166
13166
  {
13167
- "title": "Snippets Imports Include List",
13168
13167
  "type": "object",
13169
13168
  "properties": {
13170
13169
  "include": {
@@ -13175,6 +13174,7 @@
13175
13174
  "include"
13176
13175
  ],
13177
13176
  "additionalProperties": false,
13177
+ "title": "Snippets Imports Include List",
13178
13178
  "documented": true
13179
13179
  }
13180
13180
  ],
@@ -13182,30 +13182,30 @@
13182
13182
  "title": "hugo"
13183
13183
  },
13184
13184
  "type._snippets_imports.*.(full-import)": {
13185
- "title": "Snippets Imports Full Import",
13186
13185
  "type": "boolean",
13186
+ "title": "Snippets Imports Full Import",
13187
13187
  "documented": true
13188
13188
  },
13189
13189
  "SnippetImportExclude": {
13190
- "description": "This key defines the list of excluded snippets.\n\nIf unset, all snippets are excluded unless defined in `include`.",
13191
13190
  "type": "array",
13192
13191
  "items": {
13193
13192
  "type": "string",
13194
13193
  "documented": true,
13195
13194
  "title": "exclude[*]"
13196
13195
  },
13196
+ "description": "This key defines the list of excluded snippets.\n\nIf unset, all snippets are excluded unless defined in `include`.",
13197
13197
  "documented": true,
13198
13198
  "title": "exclude",
13199
13199
  "markdownDescription": "This key defines the list of excluded snippets.\n\nIf unset, all snippets are excluded unless defined in `include`."
13200
13200
  },
13201
13201
  "SnippetImportInclude": {
13202
- "description": "This key defines the list of included snippets.\n\nIf unset, all snippets are included unless defined in `exclude`.",
13203
13202
  "type": "array",
13204
13203
  "items": {
13205
13204
  "type": "string",
13206
13205
  "documented": true,
13207
13206
  "title": "include[*]"
13208
13207
  },
13208
+ "description": "This key defines the list of included snippets.\n\nIf unset, all snippets are included unless defined in `exclude`.",
13209
13209
  "documented": true,
13210
13210
  "title": "include",
13211
13211
  "markdownDescription": "This key defines the list of included snippets.\n\nIf unset, all snippets are included unless defined in `exclude`."
@@ -13217,7 +13217,6 @@
13217
13217
  "$ref": "#/definitions/type._snippets_imports.*.(full-import)"
13218
13218
  },
13219
13219
  {
13220
- "title": "Snippets Imports Exclude List",
13221
13220
  "type": "object",
13222
13221
  "properties": {
13223
13222
  "exclude": {
@@ -13228,10 +13227,10 @@
13228
13227
  "exclude"
13229
13228
  ],
13230
13229
  "additionalProperties": false,
13230
+ "title": "Snippets Imports Exclude List",
13231
13231
  "documented": true
13232
13232
  },
13233
13233
  {
13234
- "title": "Snippets Imports Include List",
13235
13234
  "type": "object",
13236
13235
  "properties": {
13237
13236
  "include": {
@@ -13242,6 +13241,7 @@
13242
13241
  "include"
13243
13242
  ],
13244
13243
  "additionalProperties": false,
13244
+ "title": "Snippets Imports Include List",
13245
13245
  "documented": true
13246
13246
  }
13247
13247
  ],
@@ -13255,7 +13255,6 @@
13255
13255
  "$ref": "#/definitions/type._snippets_imports.*.(full-import)"
13256
13256
  },
13257
13257
  {
13258
- "title": "Snippets Imports Exclude List",
13259
13258
  "type": "object",
13260
13259
  "properties": {
13261
13260
  "exclude": {
@@ -13266,10 +13265,10 @@
13266
13265
  "exclude"
13267
13266
  ],
13268
13267
  "additionalProperties": false,
13268
+ "title": "Snippets Imports Exclude List",
13269
13269
  "documented": true
13270
13270
  },
13271
13271
  {
13272
- "title": "Snippets Imports Include List",
13273
13272
  "type": "object",
13274
13273
  "properties": {
13275
13274
  "include": {
@@ -13280,6 +13279,7 @@
13280
13279
  "include"
13281
13280
  ],
13282
13281
  "additionalProperties": false,
13282
+ "title": "Snippets Imports Include List",
13283
13283
  "documented": true
13284
13284
  }
13285
13285
  ],
@@ -13293,7 +13293,6 @@
13293
13293
  "$ref": "#/definitions/type._snippets_imports.*.(full-import)"
13294
13294
  },
13295
13295
  {
13296
- "title": "Snippets Imports Exclude List",
13297
13296
  "type": "object",
13298
13297
  "properties": {
13299
13298
  "exclude": {
@@ -13304,10 +13303,10 @@
13304
13303
  "exclude"
13305
13304
  ],
13306
13305
  "additionalProperties": false,
13306
+ "title": "Snippets Imports Exclude List",
13307
13307
  "documented": true
13308
13308
  },
13309
13309
  {
13310
- "title": "Snippets Imports Include List",
13311
13310
  "type": "object",
13312
13311
  "properties": {
13313
13312
  "include": {
@@ -13318,6 +13317,7 @@
13318
13317
  "include"
13319
13318
  ],
13320
13319
  "additionalProperties": false,
13320
+ "title": "Snippets Imports Include List",
13321
13321
  "documented": true
13322
13322
  }
13323
13323
  ],
@@ -13331,7 +13331,6 @@
13331
13331
  "$ref": "#/definitions/type._snippets_imports.*.(full-import)"
13332
13332
  },
13333
13333
  {
13334
- "title": "Snippets Imports Exclude List",
13335
13334
  "type": "object",
13336
13335
  "properties": {
13337
13336
  "exclude": {
@@ -13342,10 +13341,10 @@
13342
13341
  "exclude"
13343
13342
  ],
13344
13343
  "additionalProperties": false,
13344
+ "title": "Snippets Imports Exclude List",
13345
13345
  "documented": true
13346
13346
  },
13347
13347
  {
13348
- "title": "Snippets Imports Include List",
13349
13348
  "type": "object",
13350
13349
  "properties": {
13351
13350
  "include": {
@@ -13356,6 +13355,7 @@
13356
13355
  "include"
13357
13356
  ],
13358
13357
  "additionalProperties": false,
13358
+ "title": "Snippets Imports Include List",
13359
13359
  "documented": true
13360
13360
  }
13361
13361
  ],
@@ -13369,7 +13369,6 @@
13369
13369
  "$ref": "#/definitions/type._snippets_imports.*.(full-import)"
13370
13370
  },
13371
13371
  {
13372
- "title": "Snippets Imports Exclude List",
13373
13372
  "type": "object",
13374
13373
  "properties": {
13375
13374
  "exclude": {
@@ -13380,10 +13379,10 @@
13380
13379
  "exclude"
13381
13380
  ],
13382
13381
  "additionalProperties": false,
13382
+ "title": "Snippets Imports Exclude List",
13383
13383
  "documented": true
13384
13384
  },
13385
13385
  {
13386
- "title": "Snippets Imports Include List",
13387
13386
  "type": "object",
13388
13387
  "properties": {
13389
13388
  "include": {
@@ -13394,6 +13393,7 @@
13394
13393
  "include"
13395
13394
  ],
13396
13395
  "additionalProperties": false,
13396
+ "title": "Snippets Imports Include List",
13397
13397
  "documented": true
13398
13398
  }
13399
13399
  ],
@@ -13407,7 +13407,6 @@
13407
13407
  "$ref": "#/definitions/type._snippets_imports.*.(full-import)"
13408
13408
  },
13409
13409
  {
13410
- "title": "Snippets Imports Exclude List",
13411
13410
  "type": "object",
13412
13411
  "properties": {
13413
13412
  "exclude": {
@@ -13418,10 +13417,10 @@
13418
13417
  "exclude"
13419
13418
  ],
13420
13419
  "additionalProperties": false,
13420
+ "title": "Snippets Imports Exclude List",
13421
13421
  "documented": true
13422
13422
  },
13423
13423
  {
13424
- "title": "Snippets Imports Include List",
13425
13424
  "type": "object",
13426
13425
  "properties": {
13427
13426
  "include": {
@@ -13432,6 +13431,7 @@
13432
13431
  "include"
13433
13432
  ],
13434
13433
  "additionalProperties": false,
13434
+ "title": "Snippets Imports Include List",
13435
13435
  "documented": true
13436
13436
  }
13437
13437
  ],
@@ -13445,7 +13445,6 @@
13445
13445
  "$ref": "#/definitions/type._snippets_imports.*.(full-import)"
13446
13446
  },
13447
13447
  {
13448
- "title": "Snippets Imports Exclude List",
13449
13448
  "type": "object",
13450
13449
  "properties": {
13451
13450
  "exclude": {
@@ -13456,10 +13455,10 @@
13456
13455
  "exclude"
13457
13456
  ],
13458
13457
  "additionalProperties": false,
13458
+ "title": "Snippets Imports Exclude List",
13459
13459
  "documented": true
13460
13460
  },
13461
13461
  {
13462
- "title": "Snippets Imports Include List",
13463
13462
  "type": "object",
13464
13463
  "properties": {
13465
13464
  "include": {
@@ -13470,6 +13469,7 @@
13470
13469
  "include"
13471
13470
  ],
13472
13471
  "additionalProperties": false,
13472
+ "title": "Snippets Imports Include List",
13473
13473
  "documented": true
13474
13474
  }
13475
13475
  ],
@@ -13503,8 +13503,6 @@
13503
13503
  "markdownDescription": "A record of reusable values that can be referenced in snippet templates. Values are substituted using `{ ref: \"key\" }` for direct replacement or `{ spread_ref: \"key\" }` for spreading arrays/objects. Common definition types include parser formats, argument models, select option lists, and simple string values like shortcode names.\n\n## Examples\n\nDefine reusable values like shortcode names, argument models, and parser formats that can be referenced in snippet templates.\n\n```yaml\n_snippets_definitions:\n # Simple string value for the shortcode name\n shortcode_name: \"highlight\"\n content_key: \"content\"\n\n # Array of argument models for positional arguments\n positional_args:\n - editor_key: \"language\"\n type: \"string\"\n - editor_key: \"linenos\"\n type: \"boolean\"\n optional: true\n default: false\n\n # Parser format configuration\n custom_format:\n root_pair_delimiter:\n - \" \"\n root_value_delimiter: \"=\"\n string_boundary:\n - '\"'\n - \"'\"\n - \"\"\n allow_booleans: true\n allow_numbers: true\n```\n\nReference definitions in snippet templates using `{ ref: \"key\" }` syntax. This allows you to reuse common configurations across multiple snippets.\n\n```yaml\n_snippets_definitions:\n shortcode_name: \"figure\"\n named_args:\n - editor_key: \"src\"\n type: \"string\"\n - editor_key: \"alt\"\n type: \"string\"\n optional: true\n\n_snippets_templates:\n my_shortcode_template:\n snippet: \"{{< [[name]] [[args]] >}}\"\n params:\n name:\n parser: \"literal\"\n options:\n literal:\n ref: \"shortcode_name\"\n args:\n parser: \"key_values\"\n options:\n models:\n ref: \"named_args\"\n\n_snippets:\n figure:\n template: \"my_shortcode_template\"\n definitions:\n shortcode_name: \"figure\"\n named_args:\n - editor_key: \"src\"\n type: \"string\"\n - editor_key: \"alt\"\n type: \"string\"\n```\n\nDefine a list of select options for use in snippet inputs, such as a list of programming languages for a code highlighting snippet.\n\n```yaml\n_snippets_definitions:\n languages:\n - name: \"JavaScript\"\n value: \"js\"\n - name: \"Python\"\n value: \"python\"\n - name: \"Ruby\"\n value: \"ruby\"\n - name: \"HTML\"\n value: \"html\"\n - name: \"CSS\"\n value: \"css\"\n```"
13504
13504
  },
13505
13505
  "type.snippet-definition-value": {
13506
- "title": "Snippet Definition Value",
13507
- "description": "A reusable value that can be referenced in snippet templates via `{ ref: \"key\" }` or `{ spread_ref: \"key\" }`. Can be a string, number, boolean, parser format, parser model, array of models, or array of select options.",
13508
13506
  "anyOf": [
13509
13507
  {
13510
13508
  "$ref": "#/definitions/type.snippet-format"
@@ -13513,49 +13511,47 @@
13513
13511
  "$ref": "#/definitions/type.snippet-model"
13514
13512
  },
13515
13513
  {
13516
- "title": "Parser Model Array",
13517
- "description": "An array of parser model configurations. Typically used for `positional_args` or `named_args` definitions that specify the arguments a snippet accepts. Each model defines an argument's editor key, type, default value, and whether it's optional.",
13518
13514
  "type": "array",
13519
13515
  "items": {
13520
13516
  "$ref": "#/definitions/type.snippet-model"
13521
13517
  },
13518
+ "title": "Parser Model Array",
13519
+ "description": "An array of parser model configurations. Typically used for `positional_args` or `named_args` definitions that specify the arguments a snippet accepts. Each model defines an argument's editor key, type, default value, and whether it's optional.",
13522
13520
  "documented": true,
13523
13521
  "markdownDescription": "An array of parser model configurations. Typically used for `positional_args` or `named_args` definitions that specify the arguments a snippet accepts. Each model defines an argument's editor key, type, default value, and whether it's optional."
13524
13522
  },
13525
13523
  {
13526
- "title": "Select Values Array",
13527
- "description": "An array of select option values. Commonly used for language lists in code highlighting snippets, where each option has a display name and a value. For example: `[{ name: \"JavaScript\", value: \"js\" }, { name: \"Python\", value: \"python\" }]`.",
13528
13524
  "type": "array",
13529
13525
  "items": {
13530
13526
  "$ref": "#/definitions/type.snippet-definition-select-value"
13531
13527
  },
13528
+ "title": "Select Values Array",
13529
+ "description": "An array of select option values. Commonly used for language lists in code highlighting snippets, where each option has a display name and a value. For example: `[{ name: \"JavaScript\", value: \"js\" }, { name: \"Python\", value: \"python\" }]`.",
13532
13530
  "documented": true,
13533
13531
  "markdownDescription": "An array of select option values. Commonly used for language lists in code highlighting snippets, where each option has a display name and a value. For example: `[{ name: \"JavaScript\", value: \"js\" }, { name: \"Python\", value: \"python\" }]`."
13534
13532
  },
13535
13533
  {
13534
+ "type": "string",
13536
13535
  "title": "String Value",
13537
13536
  "description": "A string value definition. Commonly used for `shortcode_name`, `tag_name`, `content_key`, `include_name`, and similar definitions that identify snippet components by name.",
13538
- "type": "string",
13539
13537
  "documented": true,
13540
13538
  "markdownDescription": "A string value definition. Commonly used for `shortcode_name`, `tag_name`, `content_key`, `include_name`, and similar definitions that identify snippet components by name."
13541
13539
  },
13542
13540
  {
13541
+ "type": "number",
13543
13542
  "title": "Number Value",
13544
13543
  "description": "A numeric value definition. Use for counts, sizes, or other numeric values that can be referenced in snippet templates.",
13545
- "type": "number",
13546
13544
  "documented": true,
13547
13545
  "markdownDescription": "A numeric value definition. Use for counts, sizes, or other numeric values that can be referenced in snippet templates."
13548
13546
  },
13549
13547
  {
13548
+ "type": "boolean",
13550
13549
  "title": "Boolean Value",
13551
13550
  "description": "A boolean value definition. Use for flags and toggles that can be referenced in snippet templates.",
13552
- "type": "boolean",
13553
13551
  "documented": true,
13554
13552
  "markdownDescription": "A boolean value definition. Use for flags and toggles that can be referenced in snippet templates."
13555
13553
  },
13556
13554
  {
13557
- "title": "String Array",
13558
- "description": "An array of string values. Useful for defining lists of allowed values, delimiters, or other string collections that can be referenced in snippet templates.",
13559
13555
  "type": "array",
13560
13556
  "items": {
13561
13557
  "type": "string",
@@ -13564,16 +13560,18 @@
13564
13560
  "description": "A string item in the array.",
13565
13561
  "markdownDescription": "A string item in the array."
13566
13562
  },
13563
+ "title": "String Array",
13564
+ "description": "An array of string values. Useful for defining lists of allowed values, delimiters, or other string collections that can be referenced in snippet templates.",
13567
13565
  "documented": true,
13568
13566
  "markdownDescription": "An array of string values. Useful for defining lists of allowed values, delimiters, or other string collections that can be referenced in snippet templates."
13569
13567
  }
13570
13568
  ],
13569
+ "title": "Snippet Definition Value",
13570
+ "description": "A reusable value that can be referenced in snippet templates via `{ ref: \"key\" }` or `{ spread_ref: \"key\" }`. Can be a string, number, boolean, parser format, parser model, array of models, or array of select options.",
13571
13571
  "documented": true,
13572
13572
  "markdownDescription": "A reusable value that can be referenced in snippet templates via `{ ref: \"key\" }` or `{ spread_ref: \"key\" }`. Can be a string, number, boolean, parser format, parser model, array of models, or array of select options."
13573
13573
  },
13574
13574
  "type.snippet-definition-select-value": {
13575
- "title": "Snippet Definition Select Value",
13576
- "description": "A value option for select inputs, typically used in language lists. Contains a display name and the actual value to use.",
13577
13575
  "type": "object",
13578
13576
  "properties": {
13579
13577
  "name": {
@@ -13584,24 +13582,24 @@
13584
13582
  "markdownDescription": "The display name shown to users when selecting this option. For example, \"JavaScript\" for a language with value \"js\"."
13585
13583
  },
13586
13584
  "value": {
13587
- "description": "The actual value used when this option is selected. Can be a string, number, or boolean. For example, \"js\" for JavaScript or 4 for an indentation level.",
13588
13585
  "anyOf": [
13589
13586
  {
13590
- "title": "String Select Value",
13591
13587
  "type": "string",
13588
+ "title": "String Select Value",
13592
13589
  "documented": true
13593
13590
  },
13594
13591
  {
13595
- "title": "Number Select Value",
13596
13592
  "type": "number",
13593
+ "title": "Number Select Value",
13597
13594
  "documented": true
13598
13595
  },
13599
13596
  {
13600
- "title": "Boolean Select Value",
13601
13597
  "type": "boolean",
13598
+ "title": "Boolean Select Value",
13602
13599
  "documented": true
13603
13600
  }
13604
13601
  ],
13602
+ "description": "The actual value used when this option is selected. Can be a string, number, or boolean. For example, \"js\" for JavaScript or 4 for an indentation level.",
13605
13603
  "documented": true,
13606
13604
  "title": "value",
13607
13605
  "markdownDescription": "The actual value used when this option is selected. Can be a string, number, or boolean. For example, \"js\" for JavaScript or 4 for an indentation level."
@@ -13611,6 +13609,8 @@
13611
13609
  "value"
13612
13610
  ],
13613
13611
  "additionalProperties": false,
13612
+ "title": "Snippet Definition Select Value",
13613
+ "description": "A value option for select inputs, typically used in language lists. Contains a display name and the actual value to use.",
13614
13614
  "documented": true,
13615
13615
  "markdownDescription": "A value option for select inputs, typically used in language lists. Contains a display name and the actual value to use."
13616
13616
  }