feat(schema): enhance API configuration schemas with new properties and validations
All checks were successful
continuous-integration/drone/push Build is passing

- Updated collection.json to include upload defaults, audit logging, query limits, and more.
- Enhanced collectionNavigation.json with viewHint configurations.
- Added project-wide upload defaults and hook configurations in config.json.
- Expanded field.json to support new field types, validations, and properties.
- Improved fieldMeta.json with additional widget configurations and properties.
- Updated hooks.json to include new bulk operation hooks and audit logging.
- Enhanced imageFilter.json with additional image processing options.
- Added timeout properties to job.json for better execution control.
- Refined permissions.json to allow more granular control over HTTP method permissions and added filter and field visibility options.
This commit is contained in:
2026-03-30 12:28:50 +00:00
parent afa7c9b238
commit 025a7ccca4
10 changed files with 1504 additions and 128 deletions

View File

@@ -413,6 +413,171 @@
}
}
]
},
{
"$ref": "#/definitions/minimum",
"patternProperties": {
"^x-.*|widget|pagebuilder$": {
"$comment": "stub for allOf"
}
},
"allOf": [
{
"properties": {
"widget": {
"enum": [
"pagebuilder",
"pageBuilder"
]
},
"pagebuilder": {
"type": "object",
"description": "Pagebuilder widget configuration. Field-level settings override collection-level fallbacks.",
"additionalProperties": false,
"properties": {
"mode": {
"type": "string",
"enum": [
"overlay",
"inline",
"both"
],
"description": "[Planned] Editor mode. Currently only 'overlay' is implemented. 'inline' and 'both' are planned."
},
"defaultViewport": {
"type": "number",
"description": "Default viewport width in pixels for the preview. Common presets: 1280 (Desktop), 768 (Tablet), 375 (Phone). Default: 1280. Overrides collection-level fallback."
},
"blockTypeField": {
"type": "string",
"description": "Name of the sub-field that holds the block type identifier. Default: 'blockType'. Overrides collection-level fallback."
},
"blockRegistry": {
"type": "object",
"description": "Block registry configuration for loading available block definitions.",
"additionalProperties": false,
"properties": {
"file": {
"type": "string",
"description": "URL to an ES module that default-exports a BlockRegistry (Record<string, BlockDefinition>). Overrides collection-level fallback."
}
}
}
}
}
}
}
]
},
{
"$ref": "#/definitions/minimum",
"patternProperties": {
"^x-.*|widget|pagebuilder$": {
"$comment": "stub for allOf"
}
},
"allOf": [
{
"properties": {
"widget": {
"enum": [
"pagebuilder",
"pageBuilder"
]
},
"pagebuilder": {
"type": "object",
"description": "Pagebuilder widget configuration. Field-level settings override collection-level fallbacks.",
"additionalProperties": false,
"properties": {
"mode": {
"type": "string",
"enum": [
"overlay",
"inline",
"both"
],
"description": "[Planned] Editor mode. Currently only 'overlay' is implemented. 'inline' and 'both' are planned."
},
"defaultViewport": {
"type": "number",
"description": "Default viewport width in pixels for the preview. Common presets: 1280 (Desktop), 768 (Tablet), 375 (Phone). Default: 1280. Overrides collection-level fallback."
},
"blockTypeField": {
"type": "string",
"description": "Name of the sub-field that holds the block type identifier. Default: 'blockType'. Overrides collection-level fallback."
},
"blockRegistry": {
"type": "object",
"description": "Block registry configuration for loading available block definitions.",
"additionalProperties": false,
"properties": {
"file": {
"type": "string",
"description": "URL to an ES module that default-exports a BlockRegistry (Record<string, BlockDefinition>). Overrides collection-level fallback."
}
}
}
}
}
}
}
]
},
{
"$ref": "#/definitions/minimum",
"patternProperties": {
"^x-.*|widget|pagebuilder$": {
"$comment": "stub for allOf"
}
},
"allOf": [
{
"properties": {
"widget": {
"enum": [
"pagebuilder",
"pageBuilder"
]
},
"pagebuilder": {
"type": "object",
"description": "Pagebuilder widget configuration. Field-level settings override collection-level fallbacks.",
"additionalProperties": false,
"properties": {
"mode": {
"type": "string",
"enum": [
"overlay",
"inline",
"both"
],
"description": "[Planned] Editor mode. Currently only 'overlay' is implemented. 'inline' and 'both' are planned."
},
"defaultViewport": {
"type": "number",
"description": "Default viewport width in pixels for the preview. Common presets: 1280 (Desktop), 768 (Tablet), 375 (Phone). Default: 1280. Overrides collection-level fallback."
},
"blockTypeField": {
"type": "string",
"description": "Name of the sub-field that holds the block type identifier. Default: 'blockType'. Overrides collection-level fallback."
},
"blockRegistry": {
"type": "object",
"description": "Block registry configuration for loading available block definitions.",
"additionalProperties": false,
"properties": {
"file": {
"type": "string",
"description": "URL to an ES module that default-exports a BlockRegistry (Record<string, BlockDefinition>). Overrides collection-level fallback."
}
}
}
}
}
}
}
]
}
],
"definitions": {
@@ -721,18 +886,27 @@
"type": "boolean"
},
"size": {
"type": "object",
"properties": {
"default": {
"type": "string"
"oneOf": [
{
"type": "string",
"description": "shorthand: single size for all breakpoints (e.g. col-3)"
},
"small": {
"type": "string"
},
"large": {
"type": "string"
{
"type": "object",
"description": "responsive sizes per breakpoint",
"properties": {
"default": {
"type": "string"
},
"small": {
"type": "string"
},
"large": {
"type": "string"
}
}
}
}
]
}
}
}
@@ -794,6 +968,62 @@
]
}
}
},
"widget": {
"type": "string",
"description": "widget type for rendering the field in admin UI"
},
"position": {
"type": "string",
"description": "field position in the editor layout: 'main' (default), 'sidebar' (default settings card), or 'sidebar:<group>' (named sidebar card, e.g. 'sidebar:SEO')"
},
"section": {
"description": "section grouping for the field in the editor",
"$ref": "definitions.json#/definitions/i18nString"
},
"choices": {
"description": "choices for select/chipArray/checkboxArray widgets",
"oneOf": [
{
"type": "array",
"items": {
"type": "object"
}
},
{
"type": "object"
}
]
},
"foreign": {
"type": "object",
"description": "foreign key configuration for foreignKey/foreignFile widgets"
},
"downscale": {
"type": "object",
"description": "image downscale configuration for file/image widgets",
"properties": {
"maxWidth": {
"type": "number",
"description": "maximum width in pixels"
},
"maxHeight": {
"type": "number",
"description": "maximum height in pixels"
},
"quality": {
"type": "number",
"description": "JPEG quality (0-100)"
}
}
},
"drillDown": {
"type": "boolean",
"description": "whether object subFields should be rendered inline (false) or as drill-down navigation (true, default)"
},
"readonly": {
"type": "boolean",
"description": "if true, the field is displayed as a read-only view (table/card style) instead of an editable widget. Use inputProps for a disabled input instead."
}
}
},
@@ -841,4 +1071,4 @@
]
}
}
}
}