@sveltia/cms
Version:
Sveltia CMS is a modern, lightweight, Git-based headless content management system.
925 lines • 242 kB
JSON
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$ref": "#/definitions/SiteConfig",
"definitions": {
"SiteConfig": {
"type": "object",
"properties": {
"load_config_file": {
"type": "boolean",
"description": "Whether to load YAML/JSON site configuration file(s) when [manually initializing the CMS](https://decapcms.org/docs/manual-initialization/). This works only in the `CMS.init()` method’s `config` option. Default: `true`.",
"markdownDescription": "Whether to load YAML/JSON site configuration file(s) when [manually initializing the CMS](https://decapcms.org/docs/manual-initialization/). This works only in the `CMS.init()` method’s `config` option. Default: `true`."
},
"backend": {
"$ref": "#/definitions/BackendOptions",
"description": "Backend options.",
"markdownDescription": "Backend options."
},
"publish_mode": {
"type": "string",
"enum": [
"simple",
"editorial_workflow",
""
],
"description": "Publish mode. An empty string is the same as `simple`. Default: `simple`.",
"markdownDescription": "Publish mode. An empty string is the same as `simple`. Default: `simple`."
},
"media_folder": {
"type": "string",
"description": "Global internal media folder path, relative to the project’s root directory.",
"markdownDescription": "Global internal media folder path, relative to the project’s root directory."
},
"public_folder": {
"type": "string",
"description": "Global public media folder path, relative to the project’s public URL. It must be an absolute path starting with `/`. Default: `media_folder` option value.",
"markdownDescription": "Global public media folder path, relative to the project’s public URL. It must be an absolute path starting with `/`. Default: `media_folder` option value."
},
"media_library": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"$ref": "#/definitions/MediaLibraryName",
"description": "Library name.",
"markdownDescription": "Library name."
},
"config": {
"$ref": "#/definitions/DefaultMediaLibraryConfig",
"description": "Configuration for the default media library.",
"markdownDescription": "Configuration for the default media library."
}
},
"required": [
"name"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"$ref": "#/definitions/MediaLibraryName",
"description": "Library name.",
"markdownDescription": "Library name."
},
"output_filename_only": {
"type": "boolean",
"description": "Whether to output a file name instead of a full URL. Default: `false`.",
"markdownDescription": "Whether to output a file name instead of a full URL. Default: `false`."
},
"use_transformations": {
"type": "boolean",
"description": "Whether to include transformation segments in an output URL. Default: `true`.",
"markdownDescription": "Whether to include transformation segments in an output URL. Default: `true`."
},
"use_secure_url": {
"type": "boolean",
"description": "Whether to use an HTTP URL. Default: `true`.",
"markdownDescription": "Whether to use an HTTP URL. Default: `true`."
},
"config": {
"type": "object",
"description": "Options to be passed to Cloudinary, such as `multiple`. The `cloud_name` and `api_key` options are required for the global `media_library` option. See the [Cloudinary documentation](https://cloudinary.com/documentation/media_library_widget#2_set_the_configuration_options) for a full list of available options.",
"markdownDescription": "Options to be passed to Cloudinary, such as `multiple`. The `cloud_name` and `api_key` options are required for the global `media_library` option. See the [Cloudinary documentation](https://cloudinary.com/documentation/media_library_widget#2_set_the_configuration_options) for a full list of available options."
}
},
"required": [
"name"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"$ref": "#/definitions/MediaLibraryName",
"description": "Library name.",
"markdownDescription": "Library name."
},
"config": {
"type": "object",
"description": "Options to be passed to Uploadcare, such as `multiple`. The `publicKey` option is required for the global `media_library` option. See the [Uploadcare documentation](https://uploadcare.com/docs/uploads/file-uploader-options/) for a full list of available options.",
"markdownDescription": "Options to be passed to Uploadcare, such as `multiple`. The `publicKey` option is required for the global `media_library` option. See the [Uploadcare documentation](https://uploadcare.com/docs/uploads/file-uploader-options/) for a full list of available options."
},
"settings": {
"$ref": "#/definitions/UploadcareMediaLibrarySettings",
"description": "Integration settings.",
"markdownDescription": "Integration settings."
}
},
"required": [
"name"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"$ref": "#/definitions/MediaLibraryName",
"description": "Library name.",
"markdownDescription": "Library name."
},
"providers": {
"type": "array",
"items": {
"$ref": "#/definitions/StockAssetProviderName"
},
"description": "Enabled stock photo/video providers. The stock photo/video section in the asset browser is hidden if an empty array is given. Default: all supported providers.",
"markdownDescription": "Enabled stock photo/video providers. The stock photo/video section in the asset browser is hidden if an empty array is given. Default: all supported providers."
}
},
"required": [
"name"
]
}
],
"description": "Legacy media library option that allows only one library. This overrides the global `media_library` option. Use `media_libraries` instead to support multiple libraries.",
"markdownDescription": "Legacy media library option that allows only one library. This overrides the global `media_library` option. Use `media_libraries` instead to support multiple libraries."
},
"media_libraries": {
"$ref": "#/definitions/MediaLibraries",
"description": "Unified media library option that supports multiple libraries. See our [README](https://github.com/sveltia/sveltia-cms#configuring-multiple-media-libraries) for details.",
"markdownDescription": "Unified media library option that supports multiple libraries. See our [README](https://github.com/sveltia/sveltia-cms#configuring-multiple-media-libraries) for details."
},
"site_url": {
"type": "string",
"description": "Site URL. Default: current site’s origin ([`location.origin`](https://developer.mozilla.org/en-US/docs/Web/API/Location/origin)).",
"markdownDescription": "Site URL. Default: current site’s origin ([`location.origin`](https://developer.mozilla.org/en-US/docs/Web/API/Location/origin))."
},
"display_url": {
"type": "string",
"description": "Site URL linked from the UI. Default: `site_url` option value.",
"markdownDescription": "Site URL linked from the UI. Default: `site_url` option value."
},
"logo_url": {
"type": "string",
"description": "Absolute URL or absolute path to the site logo that will be displayed on the entrance page and the browser’s tab (favicon). A square image works best. Default: Sveltia logo.",
"markdownDescription": "Absolute URL or absolute path to the site logo that will be displayed on the entrance page and the browser’s tab (favicon). A square image works best. Default: Sveltia logo."
},
"show_preview_links": {
"type": "boolean",
"description": "Whether to show site preview links. Default: `true`.",
"markdownDescription": "Whether to show site preview links. Default: `true`."
},
"slug": {
"$ref": "#/definitions/SlugOptions",
"description": "Entry slug options.",
"markdownDescription": "Entry slug options."
},
"collections": {
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/definitions/Collection"
},
{
"$ref": "#/definitions/CollectionDivider"
}
]
},
"description": "Set of collections. The list can also contain dividers, which are used to group collections in the collection list. Either `collections` or `singletons` option must be defined.",
"markdownDescription": "Set of collections. The list can also contain dividers, which are used to group collections in the collection list. Either `collections` or `singletons` option must be defined."
},
"singletons": {
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/definitions/CollectionFile"
},
{
"$ref": "#/definitions/CollectionDivider"
}
]
},
"description": "Set of singleton files, such as the site configuration file or the homepage file. They are not part of any collection and can be accessed directly through the collection list. The list can also contain dividers. See our [README](https://github.com/sveltia/sveltia-cms#using-singletons) for details.",
"markdownDescription": "Set of singleton files, such as the site configuration file or the homepage file. They are not part of any collection and can be accessed directly through the collection list. The list can also contain dividers. See our [README](https://github.com/sveltia/sveltia-cms#using-singletons) for details."
},
"i18n": {
"$ref": "#/definitions/I18nOptions",
"description": "Global i18n options.",
"markdownDescription": "Global i18n options."
},
"editor": {
"$ref": "#/definitions/EditorOptions",
"description": "Editor view options.",
"markdownDescription": "Editor view options."
},
"output": {
"$ref": "#/definitions/OutputOptions",
"description": "Data output options. See our [README](https://github.com/sveltia/sveltia-cms#controlling-data-output) for details.",
"markdownDescription": "Data output options. See our [README](https://github.com/sveltia/sveltia-cms#controlling-data-output) for details."
}
},
"required": [
"backend",
"media_folder"
],
"additionalProperties": false,
"description": "Site configuration.",
"markdownDescription": "Site configuration."
},
"BackendOptions": {
"type": "object",
"properties": {
"name": {
"$ref": "#/definitions/BackendName",
"description": "Backend name.",
"markdownDescription": "Backend name."
},
"repo": {
"type": "string",
"description": "Repository identifier. Required for Git backends. GitHub/Gitea/Forgejo: organization/user name and repository name joined by a slash, e.g. `owner/repo`. GitLab: namespace and project name joined by a slash, e.g. `group/project` or `group/subgroup/project`.",
"markdownDescription": "Repository identifier. Required for Git backends. GitHub/Gitea/Forgejo: organization/user name and repository name joined by a slash, e.g. `owner/repo`. GitLab: namespace and project name joined by a slash, e.g. `group/project` or `group/subgroup/project`."
},
"branch": {
"type": "string",
"description": "Git branch name. If omitted, the default branch, usually `main` or `master`, will be used. Git backends only.",
"markdownDescription": "Git branch name. If omitted, the default branch, usually `main` or `master`, will be used. Git backends only."
},
"api_root": {
"type": "string",
"description": "REST API endpoint for the backend. Git backends only. Required when using GitHub Enterprise Server, a self-hosted GitLab/Gitea/Forgejo instance. Default: `https://api.github.com` (GitHub), `https://gitlab.com/api/v4` (GitLab) or `https://gitea.com/api/v1` (Gitea/Forgejo).",
"markdownDescription": "REST API endpoint for the backend. Git backends only. Required when using GitHub Enterprise Server, a self-hosted GitLab/Gitea/Forgejo instance. Default: `https://api.github.com` (GitHub), `https://gitlab.com/api/v4` (GitLab) or `https://gitea.com/api/v1` (Gitea/Forgejo)."
},
"graphql_api_root": {
"type": "string",
"description": "GraphQL API endpoint for the backend. Git backends only. Default: inferred from `api_root` option value.",
"markdownDescription": "GraphQL API endpoint for the backend. Git backends only. Default: inferred from `api_root` option value."
},
"site_domain": {
"type": "string",
"description": "Site domain used for OAuth, which will be included in the `site_id` param to be sent to the API endpoint. Git backends only. Default: [`location.hostname`](https://developer.mozilla.org/en-US/docs/Web/API/Location/hostname).",
"markdownDescription": "Site domain used for OAuth, which will be included in the `site_id` param to be sent to the API endpoint. Git backends only. Default: [`location.hostname`](https://developer.mozilla.org/en-US/docs/Web/API/Location/hostname)."
},
"base_url": {
"type": "string",
"description": "OAuth base URL origin. Git backends only. Required when using an OAuth client other than Netlify, including [Sveltia CMS Authenticator](https://github.com/sveltia/sveltia-cms-auth). Default: `https://api.netlify.com` (GitHub), `https://gitlab.com` (GitLab) or `https://gitea.com/` (Gitea/Forgejo).",
"markdownDescription": "OAuth base URL origin. Git backends only. Required when using an OAuth client other than Netlify, including [Sveltia CMS Authenticator](https://github.com/sveltia/sveltia-cms-auth). Default: `https://api.netlify.com` (GitHub), `https://gitlab.com` (GitLab) or `https://gitea.com/` (Gitea/Forgejo)."
},
"auth_endpoint": {
"type": "string",
"description": "OAuth base URL path. Git backends only. Default: `auth` (GitHub) or `oauth/authorize` (GitLab).",
"markdownDescription": "OAuth base URL path. Git backends only. Default: `auth` (GitHub) or `oauth/authorize` (GitLab)."
},
"auth_type": {
"type": "string",
"enum": [
"pkce",
"implicit"
],
"description": "OAuth authentication method. GitLab only. Default: `pkce`.",
"markdownDescription": "OAuth authentication method. GitLab only. Default: `pkce`."
},
"app_id": {
"type": "string",
"description": "OAuth application ID. GitLab, Gitea/Forgejo only. Required for Gitea/Forgejo.",
"markdownDescription": "OAuth application ID. GitLab, Gitea/Forgejo only. Required for Gitea/Forgejo."
},
"commit_messages": {
"$ref": "#/definitions/CommitMessages",
"description": "Custom commit messages. Git backends only.",
"markdownDescription": "Custom commit messages. Git backends only."
},
"preview_context": {
"type": "string",
"description": "Deploy preview link context. GitHub only.",
"markdownDescription": "Deploy preview link context. GitHub only."
},
"cms_label_prefix": {
"type": "string",
"description": "Pull request label prefix for Editorial Workflow. Git backends only. Default: `sveltia-cms/`.",
"markdownDescription": "Pull request label prefix for Editorial Workflow. Git backends only. Default: `sveltia-cms/`."
},
"squash_merges": {
"type": "boolean",
"description": "Whether to use squash marge for Editorial Workflow. Git backends only. Default: `false`.",
"markdownDescription": "Whether to use squash marge for Editorial Workflow. Git backends only. Default: `false`."
},
"open_authoring": {
"type": "boolean",
"description": "Whether to use Open Authoring. Git backends only. Default: `false`.",
"markdownDescription": "Whether to use Open Authoring. Git backends only. Default: `false`."
},
"auth_scope": {
"type": "string",
"enum": [
"repo",
"public_repo"
],
"description": "Authentication scope for Open Authoring. Git backends only.",
"markdownDescription": "Authentication scope for Open Authoring. Git backends only."
},
"automatic_deployments": {
"type": "boolean",
"description": "Whether to enable or disable automatic deployments with any connected CI/CD provider, such as GitHub Actions or Cloudflare Pages. If `false`, the `[skip ci]` prefix will be added to commit messages. Git backends only. Default: `undefined`. See our [README](https://github.com/sveltia/sveltia-cms#disabling-automatic-deployments) for details.",
"markdownDescription": "Whether to enable or disable automatic deployments with any connected CI/CD provider, such as GitHub Actions or Cloudflare Pages. If `false`, the `[skip ci]` prefix will be added to commit messages. Git backends only. Default: `undefined`. See our [README](https://github.com/sveltia/sveltia-cms#disabling-automatic-deployments) for details."
}
},
"required": [
"name"
],
"additionalProperties": false,
"description": "Backend options.",
"markdownDescription": "Backend options."
},
"BackendName": {
"anyOf": [
{
"$ref": "#/definitions/GitBackendName"
},
{
"type": "string",
"const": "test-repo"
}
],
"description": "Supported backend name.",
"markdownDescription": "Supported backend name."
},
"GitBackendName": {
"type": "string",
"enum": [
"github",
"gitlab",
"gitea"
],
"description": "Supported Git backend name.",
"markdownDescription": "Supported Git backend name."
},
"CommitMessages": {
"type": "object",
"properties": {
"create": {
"type": "string",
"description": "Message to be used when a new entry is created.",
"markdownDescription": "Message to be used when a new entry is created."
},
"update": {
"type": "string",
"description": "Message to be used when existing entries are updated.",
"markdownDescription": "Message to be used when existing entries are updated."
},
"delete": {
"type": "string",
"description": "Message to be used when existing entries are deleted.",
"markdownDescription": "Message to be used when existing entries are deleted."
},
"uploadMedia": {
"type": "string",
"description": "Message to be used when new files are uploaded/updated.",
"markdownDescription": "Message to be used when new files are uploaded/updated."
},
"deleteMedia": {
"type": "string",
"description": "Message to be used when existing files are deleted.",
"markdownDescription": "Message to be used when existing files are deleted."
},
"openAuthoring": {
"type": "string",
"description": "Message to be used when committed via a forked repository.",
"markdownDescription": "Message to be used when committed via a forked repository."
}
},
"additionalProperties": false,
"description": "Custom commit messages.",
"markdownDescription": "Custom commit messages."
},
"MediaLibraryName": {
"type": "string",
"enum": [
"default",
"cloudinary",
"uploadcare",
"stock_assets"
],
"description": "Supported media library name.",
"markdownDescription": "Supported media library name."
},
"DefaultMediaLibraryConfig": {
"type": "object",
"properties": {
"max_file_size": {
"type": "number",
"description": "Maximum file size in bytes that can be accepted for uploading.",
"markdownDescription": "Maximum file size in bytes that can be accepted for uploading."
},
"slugify_filename": {
"type": "boolean",
"description": "Whether to rename an original asset file when saving it, according to the global `slug` option. Default: `false`, meaning that the original file name is kept by default, while Netlify/Decap CMS forces to slugify file names. If set to `true`, for example, `Hello World (1).webp` would be `hello-world-1.webp`.",
"markdownDescription": "Whether to rename an original asset file when saving it, according to the global `slug` option. Default: `false`, meaning that the original file name is kept by default, while Netlify/Decap CMS forces to slugify file names. If set to `true`, for example, `Hello World (1).webp` would be `hello-world-1.webp`."
},
"transformations": {
"$ref": "#/definitions/FileTransformations",
"description": "File transformation option map. The key is an original format like `png` or `jpeg`. It can also be `raster_image` that matches any supported raster image format. See our [README](https://github.com/sveltia/sveltia-cms#optimizing-images-for-upload) for details.",
"markdownDescription": "File transformation option map. The key is an original format like `png` or `jpeg`. It can also be `raster_image` that matches any supported raster image format. See our [README](https://github.com/sveltia/sveltia-cms#optimizing-images-for-upload) for details."
}
},
"additionalProperties": false,
"description": "Configuration for the default media library.",
"markdownDescription": "Configuration for the default media library."
},
"FileTransformations": {
"$ref": "#/definitions/ImageTransformations",
"description": "File transformation option map.",
"markdownDescription": "File transformation option map."
},
"ImageTransformations": {
"type": "object",
"additionalProperties": false,
"properties": {
"svg": {
"$ref": "#/definitions/VectorImageTransformationOptions",
"description": "SVG image transformation options.",
"markdownDescription": "SVG image transformation options."
},
"raster_image": {
"$ref": "#/definitions/RasterImageTransformationOptions",
"description": "Raster image transformation options that apply to any supported raster image format.",
"markdownDescription": "Raster image transformation options that apply to any supported raster image format."
},
"avif": {
"$ref": "#/definitions/RasterImageTransformationOptions",
"description": "AVIF image transformation options.",
"markdownDescription": "AVIF image transformation options."
},
"gif": {
"$ref": "#/definitions/RasterImageTransformationOptions",
"description": "GIF image transformation options.",
"markdownDescription": "GIF image transformation options."
},
"jpeg": {
"$ref": "#/definitions/RasterImageTransformationOptions",
"description": "JPEG image transformation options.",
"markdownDescription": "JPEG image transformation options."
},
"png": {
"$ref": "#/definitions/RasterImageTransformationOptions",
"description": "PNG image transformation options.",
"markdownDescription": "PNG image transformation options."
},
"webp": {
"$ref": "#/definitions/RasterImageTransformationOptions",
"description": "WebP image transformation options.",
"markdownDescription": "WebP image transformation options."
}
},
"description": "Image transformation option map.",
"markdownDescription": "Image transformation option map."
},
"VectorImageTransformationOptions": {
"type": "object",
"properties": {
"optimize": {
"type": "boolean",
"description": "Whether to optimize the image.",
"markdownDescription": "Whether to optimize the image."
}
},
"additionalProperties": false,
"description": "Vector image transformation option map.",
"markdownDescription": "Vector image transformation option map."
},
"RasterImageTransformationOptions": {
"type": "object",
"properties": {
"format": {
"$ref": "#/definitions/RasterImageConversionFormat",
"description": "New format. Default: `webp`.",
"markdownDescription": "New format. Default: `webp`."
},
"quality": {
"type": "number",
"description": "Image quality between 0 and 100. Default: `85`.",
"markdownDescription": "Image quality between 0 and 100. Default: `85`."
},
"width": {
"type": "number",
"description": "Max width. Default: original width.",
"markdownDescription": "Max width. Default: original width."
},
"height": {
"type": "number",
"description": "Max height. Default: original height.",
"markdownDescription": "Max height. Default: original height."
}
},
"additionalProperties": false,
"description": "Raster image transformation options. See our [README](https://github.com/sveltia/sveltia-cms#optimizing-images-for-upload) for details.",
"markdownDescription": "Raster image transformation options. See our [README](https://github.com/sveltia/sveltia-cms#optimizing-images-for-upload) for details."
},
"RasterImageConversionFormat": {
"type": "string",
"const": "webp",
"description": "Supported raster image conversion format. We don’t support AVIF at this time because no browser supports AVIF encoding natively and `@jsquash/avif` is slow. Meanwhile, browsers other than Safari support WebP encoding and `@jsquash/webp` is relatively fast.",
"markdownDescription": "Supported raster image conversion format. We don’t support AVIF at this time because no browser supports AVIF encoding natively and `@jsquash/avif` is slow. Meanwhile, browsers other than Safari support WebP encoding and `@jsquash/webp` is relatively fast."
},
"UploadcareMediaLibrarySettings": {
"type": "object",
"properties": {
"autoFilename": {
"type": "boolean",
"description": "Whether to append a file name to an output URL. Default: `false`.",
"markdownDescription": "Whether to append a file name to an output URL. Default: `false`."
},
"defaultOperations": {
"type": "string",
"description": "Transformation operations to be included in an output URL. Default: empty string.",
"markdownDescription": "Transformation operations to be included in an output URL. Default: empty string."
}
},
"additionalProperties": false,
"description": "Settings for the [Uploadcare media library](https://decapcms.org/docs/uploadcare/).",
"markdownDescription": "Settings for the [Uploadcare media library](https://decapcms.org/docs/uploadcare/)."
},
"StockAssetProviderName": {
"type": "string",
"enum": [
"pexels",
"pixabay",
"unsplash"
],
"description": "Name of supported stock photo/video provider.",
"markdownDescription": "Name of supported stock photo/video provider."
},
"MediaLibraries": {
"type": "object",
"properties": {
"default": {
"$ref": "#/definitions/DefaultMediaLibrary",
"description": "Options for the default media library.",
"markdownDescription": "Options for the default media library."
},
"cloudinary": {
"$ref": "#/definitions/CloudinaryMediaLibrary",
"description": "Options for the Cloudinary media library.",
"markdownDescription": "Options for the Cloudinary media library."
},
"uploadcare": {
"$ref": "#/definitions/UploadcareMediaLibrary",
"description": "Options for the Uploadcare media library.",
"markdownDescription": "Options for the Uploadcare media library."
},
"stock_assets": {
"$ref": "#/definitions/StockAssetMediaLibrary",
"description": "Options for the unified stock photo/video media library.",
"markdownDescription": "Options for the unified stock photo/video media library."
}
},
"additionalProperties": false,
"description": "Unified media library option that supports multiple libraries. See our [README](https://github.com/sveltia/sveltia-cms#configuring-multiple-media-libraries) for details.",
"markdownDescription": "Unified media library option that supports multiple libraries. See our [README](https://github.com/sveltia/sveltia-cms#configuring-multiple-media-libraries) for details."
},
"DefaultMediaLibrary": {
"type": "object",
"properties": {
"config": {
"$ref": "#/definitions/DefaultMediaLibraryConfig",
"description": "Configuration for the default media library.",
"markdownDescription": "Configuration for the default media library."
}
},
"additionalProperties": false,
"description": "Options for the default media library.",
"markdownDescription": "Options for the default media library."
},
"CloudinaryMediaLibrary": {
"type": "object",
"properties": {
"output_filename_only": {
"type": "boolean",
"description": "Whether to output a file name instead of a full URL. Default: `false`.",
"markdownDescription": "Whether to output a file name instead of a full URL. Default: `false`."
},
"use_transformations": {
"type": "boolean",
"description": "Whether to include transformation segments in an output URL. Default: `true`.",
"markdownDescription": "Whether to include transformation segments in an output URL. Default: `true`."
},
"use_secure_url": {
"type": "boolean",
"description": "Whether to use an HTTP URL. Default: `true`.",
"markdownDescription": "Whether to use an HTTP URL. Default: `true`."
},
"config": {
"type": "object",
"description": "Options to be passed to Cloudinary, such as `multiple`. The `cloud_name` and `api_key` options are required for the global `media_library` option. See the [Cloudinary documentation](https://cloudinary.com/documentation/media_library_widget#2_set_the_configuration_options) for a full list of available options.",
"markdownDescription": "Options to be passed to Cloudinary, such as `multiple`. The `cloud_name` and `api_key` options are required for the global `media_library` option. See the [Cloudinary documentation](https://cloudinary.com/documentation/media_library_widget#2_set_the_configuration_options) for a full list of available options."
}
},
"additionalProperties": false,
"description": "Options for the [Cloudinary media library](https://decapcms.org/docs/cloudinary/).",
"markdownDescription": "Options for the [Cloudinary media library](https://decapcms.org/docs/cloudinary/)."
},
"UploadcareMediaLibrary": {
"type": "object",
"properties": {
"config": {
"type": "object",
"description": "Options to be passed to Uploadcare, such as `multiple`. The `publicKey` option is required for the global `media_library` option. See the [Uploadcare documentation](https://uploadcare.com/docs/uploads/file-uploader-options/) for a full list of available options.",
"markdownDescription": "Options to be passed to Uploadcare, such as `multiple`. The `publicKey` option is required for the global `media_library` option. See the [Uploadcare documentation](https://uploadcare.com/docs/uploads/file-uploader-options/) for a full list of available options."
},
"settings": {
"$ref": "#/definitions/UploadcareMediaLibrarySettings",
"description": "Integration settings.",
"markdownDescription": "Integration settings."
}
},
"additionalProperties": false,
"description": "Options for the [Uploadcare media library](https://decapcms.org/docs/uploadcare/).",
"markdownDescription": "Options for the [Uploadcare media library](https://decapcms.org/docs/uploadcare/)."
},
"StockAssetMediaLibrary": {
"type": "object",
"properties": {
"providers": {
"type": "array",
"items": {
"$ref": "#/definitions/StockAssetProviderName"
},
"description": "Enabled stock photo/video providers. The stock photo/video section in the asset browser is hidden if an empty array is given. Default: all supported providers.",
"markdownDescription": "Enabled stock photo/video providers. The stock photo/video section in the asset browser is hidden if an empty array is given. Default: all supported providers."
}
},
"additionalProperties": false,
"description": "Options for the unified stock photo/video media library.",
"markdownDescription": "Options for the unified stock photo/video media library."
},
"SlugOptions": {
"type": "object",
"properties": {
"encoding": {
"type": "string",
"enum": [
"unicode",
"ascii"
],
"description": "Encoding option. Default: `unicode`.",
"markdownDescription": "Encoding option. Default: `unicode`."
},
"clean_accents": {
"type": "boolean",
"description": "Whether to remove accents. Default: `false`.",
"markdownDescription": "Whether to remove accents. Default: `false`."
},
"sanitize_replacement": {
"type": "string",
"description": "String to replace sanitized characters. Default: `-`.",
"markdownDescription": "String to replace sanitized characters. Default: `-`."
},
"trim": {
"type": "boolean",
"description": "Whether to trim leading and trailing replacement characters. Default: `true`.",
"markdownDescription": "Whether to trim leading and trailing replacement characters. Default: `true`."
}
},
"additionalProperties": false,
"description": "Entry slug options.",
"markdownDescription": "Entry slug options."
},
"Collection": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Unique identifier for the collection.",
"markdownDescription": "Unique identifier for the collection."
},
"label": {
"type": "string",
"description": "Label of the field to be displayed in the editor UI. Default: `name` option value.",
"markdownDescription": "Label of the field to be displayed in the editor UI. Default: `name` option value."
},
"label_singular": {
"type": "string",
"description": "Singular UI label. It will be Blog Post if the `label` is Blog Posts, for example. Default: `label` option value.",
"markdownDescription": "Singular UI label. It will be Blog Post if the `label` is Blog Posts, for example. Default: `label` option value."
},
"description": {
"type": "string",
"description": "Short description of the collection to be displayed in the editor UI.",
"markdownDescription": "Short description of the collection to be displayed in the editor UI."
},
"icon": {
"type": "string",
"description": "Name of a [Material Symbols icon](https://fonts.google.com/icons?icon.set=Material+Symbols) to be displayed in the collection list.",
"markdownDescription": "Name of a [Material Symbols icon](https://fonts.google.com/icons?icon.set=Material+Symbols) to be displayed in the collection list."
},
"identifier_field": {
"$ref": "#/definitions/FieldKeyPath",
"description": "Field name to be used as the title and slug of an entry. Entry collection only. Default: `title`.",
"markdownDescription": "Field name to be used as the title and slug of an entry. Entry collection only. Default: `title`."
},
"files": {
"type": "array",
"items": {
"$ref": "#/definitions/CollectionFile"
},
"description": "A set of files. File collection only.",
"markdownDescription": "A set of files. File collection only."
},
"folder": {
"type": "string",
"description": "Base folder path relative to the project root. Entry collection only.",
"markdownDescription": "Base folder path relative to the project root. Entry collection only."
},
"fields": {
"type": "array",
"items": {
"$ref": "#/definitions/Field"
},
"description": "Set of fields to be included in entries. Entry collection only.",
"markdownDescription": "Set of fields to be included in entries. Entry collection only."
},
"path": {
"type": "string",
"description": "File path relative to `folder`, without a file extension. Entry collection only.",
"markdownDescription": "File path relative to `folder`, without a file extension. Entry collection only."
},
"media_folder": {
"type": "string",
"description": "Internal media folder path for the collection. This overrides the global `media_folder` option. It can be a relative path from the project root if it starts with a slash. Otherwise it’s a path relative to the entry. If this option is omitted, the global `media_folder` option value is used. See our [README](https://github.com/sveltia/sveltia-cms#using-a-custom-media-folder-for-a-collection) for details.",
"markdownDescription": "Internal media folder path for the collection. This overrides the global `media_folder` option. It can be a relative path from the project root if it starts with a slash. Otherwise it’s a path relative to the entry. If this option is omitted, the global `media_folder` option value is used. See our [README](https://github.com/sveltia/sveltia-cms#using-a-custom-media-folder-for-a-collection) for details."
},
"public_folder": {
"type": "string",
"description": "Public media folder path for an entry collection. This overrides the global `public_folder` option. Default: `media_folder` option value.",
"markdownDescription": "Public media folder path for an entry collection. This overrides the global `public_folder` option. Default: `media_folder` option value."
},
"filter": {
"$ref": "#/definitions/CollectionFilter",
"description": "Entry filter. Entry collection only.",
"markdownDescription": "Entry filter. Entry collection only."
},
"hide": {
"type": "boolean",
"description": "Whether to hide the collection in the UI. Default: `false`.",
"markdownDescription": "Whether to hide the collection in the UI. Default: `false`."
},
"create": {
"type": "boolean",
"description": "Whether to allow users to create entries in the collection. Entry collection only. Default: `false`.",
"markdownDescription": "Whether to allow users to create entries in the collection. Entry collection only. Default: `false`."
},
"delete": {
"type": "boolean",
"description": "Whether to allow users to delete entries in the collection. Entry collection only. Default: `true`.",
"markdownDescription": "Whether to allow users to delete entries in the collection. Entry collection only. Default: `true`."
},
"publish": {
"type": "boolean",
"description": "Whether to show the publishing control UI for Editorial Workflow. Default: `true`.",
"markdownDescription": "Whether to show the publishing control UI for Editorial Workflow. Default: `true`."
},
"extension": {
"$ref": "#/definitions/FileExtension",
"description": "File extension. Entry collection only. Default: `md`.",
"markdownDescription": "File extension. Entry collection only. Default: `md`."
},
"format": {
"$ref": "#/definitions/FileFormat",
"description": "File format. It should match the file extension. Default: `yaml-frontmatter`.",
"markdownDescription": "File format. It should match the file extension. Default: `yaml-frontmatter`."
},
"frontmatter_delimiter": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "Delimiters to be used for the front matter format. Default: depends on the front matter type.",
"markdownDescription": "Delimiters to be used for the front matter format. Default: depends on the front matter type."
},
"slug": {
"type": "string",
"description": "Item slug template. Entry collection only. Default: `identifier_field` option value. It’s possible to [localize the slug](https://github.com/sveltia/sveltia-cms#localizing-entry-slugs) or [use a random ID](https://github.com/sveltia/sveltia-cms#using-a-random-id-for-an-entry-slug).",
"markdownDescription": "Item slug template. Entry collection only. Default: `identifier_field` option value. It’s possible to [localize the slug](https://github.com/sveltia/sveltia-cms#localizing-entry-slugs) or [use a random ID](https://github.com/sveltia/sveltia-cms#using-a-random-id-for-an-entry-slug)."
},
"slug_length": {
"type": "number",
"description": "The maximum number of characters allowed for an entry slug. Entry collection only. Default: `Infinity`.",
"markdownDescription": "The maximum number of characters allowed for an entry slug. Entry collection only. Default: `Infinity`."
},
"summary": {
"type": "string",
"description": "Entry summary template. Entry collection only. Default: `identifier_field`.",
"markdownDescription": "Entry summary template. Entry collection only. Default: `identifier_field`."
},
"sortable_fields": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/definitions/FieldKeyPath"
}
},
{
"$ref": "#/definitions/SortableFields"
}
],
"description": "Custom sortable fields. Entry collection only. Default: `title`, `name`, `date`, `author` and `description`. For a Git backend, commit author and commit date are also included by default. See our [README](https://github.com/sveltia/sveltia-cms#specifying-default-sort-field-and-direction) for details.",
"markdownDescription": "Custom sortable fields. Entry collection only. Default: `title`, `name`, `date`, `author` and `description`. For a Git backend, commit author and commit date are also included by default. See our [README](https://github.com/sveltia/sveltia-cms#specifying-default-sort-field-and-direction) for details."
},
"view_filters": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/definitions/ViewFilter"
}
},
{
"$ref": "#/definitions/ViewFilters"
}
],
"description": "View filters to be used in the entry list. Entry collection only.",
"markdownDescription": "View filters to be used in the entry list. Entry collection only."
},
"view_groups": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/definitions/ViewGroup"
}
},
{
"$ref": "#/definitions/ViewGroups"
}
],
"description": "View groups to be used in the entry list. Entry collection only.",
"markdownDescription": "View groups to be used in the entry list. Entry collection only."
},
"i18n": {
"anyOf": [
{
"$ref": "#/definitions/I18nOptions"
},
{
"type": "boolean"
}
],
"description": "I18n options. Default: `false`.",
"markdownDescription": "I18n options. Default: `false`."
},
"preview_path": {
"type": "string",
"description": "Preview URL path template.",
"markdownDescription": "Preview URL path template."
},
"preview_path_date_field": {
"type": "string",
"description": "Date field name used for `preview_path`.",
"markdownDescription": "Date field name used for `preview_path`."
},
"editor": {
"$ref": "#/definitions/EditorOptions",
"description": "Editor view options.",
"markdownDescription": "Editor view options."
},
"nested": {
"$ref": "#/definitions/NestedCollectionOptions",
"description": "Options for a nested collection. Entry collection only.",
"markdownDescription": "Options for a nested collection. Entry collection only."
},
"meta": {
"$ref": "#/definitions/CollectionMetaData",
"description": "Meta data for a nested collection. Entry collection only.",
"markdownDescription": "Meta data for a nested collection. Entry collection only."
},
"index_file": {
"anyOf": [
{
"$ref": "#/definitions/CollectionIndexFile"
},
{
"type": "boolean"
}
],
"description": "Index file inclusion options. Entry collection only. If `true`, the default index file name is `_index`, which is used for Hugo’s special index file. See our [README](https://github.com/sveltia/sveltia-cms#including-hugos-special-index-file-in-a-folder-collection) for details.",
"markdownDescription": "Index file inclusion options. Entry collection only. If `true`, the default index file name is `_index`, which is used for Hugo’s special index file. See our [README](https://github.com/sveltia/sveltia-cms#including-hugos-special-index-file-in-a-folder-collection) for details."
},
"yaml_quote": {
"type": "boolean",
"description": "Whether to double-quote all the strings values if the YAML format is used for file output. Default: `false`. DEPRECATED in favor of the global YAML format options.",
"markdownDescription": "Whether to double-quote all the strings values if the YAML format is used for file output. Default: `false`. DEPRECATED in favor of the global YAML format options."
},
"thumbnail": {
"anyOf": [
{
"$ref": "#/definitions/FieldKeyPath"
},
{
"type": "array",
"items": {
"$ref": "#/def