Files
tibi-types/schemas/api-config/field.json
Sebastian Frank 025a7ccca4
All checks were successful
continuous-integration/drone/push Build is passing
feat(schema): enhance API configuration schemas with new properties and validations
- 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.
2026-03-30 12:28:50 +00:00

162 lines
5.3 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "JSON Schema tibi-server field configuration",
"description": "tibi-server field linter",
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^x\\-": {
"description": "template property"
}
},
"properties": {
"name": {
"type": "string",
"description": "name of field",
"pattern": "^[0-9a-zA-Z_]+$"
},
"type": {
"enum": [
"string",
"string[]",
"number",
"number[]",
"boolean",
"object",
"object[]",
"file",
"file[]",
"date",
"any"
]
},
"index": {
"type": "array",
"items": {
"enum": [
"single",
"unique",
"text",
"sparse",
"background"
]
}
},
"subFields": {
"oneOf": [
{
"$comment": "for include tag",
"type": "string"
},
{
"type": "array",
"description": "sub fields of object",
"items": {
"oneOf": [
{
"$comment": "for include tag",
"type": "string"
},
{
"$ref": "#"
}
]
}
}
]
},
"validator": {
"type": "object",
"description": "field validator",
"additionalProperties": false,
"properties": {
"required": {
"type": "boolean",
"description": "force field as required"
},
"allowZero": {
"type": "boolean",
"description": "allow for required fields that the value can be an empty string or 0 for number type"
},
"eval": {
"type": "string",
"description": "javascript validator which failes if evaluates to false or string as error message, with following variables: $this, $parent, $stack, $auth, context"
},
"minLength": {
"type": "number",
"description": "minimum string length"
},
"maxLength": {
"type": "number",
"description": "maximum string length"
},
"pattern": {
"type": "string",
"description": "regex pattern the value must match"
},
"min": {
"type": "number",
"description": "minimum value for number fields"
},
"max": {
"type": "number",
"description": "maximum value for number fields"
},
"in": {
"type": "array",
"description": "array of allowed values"
},
"maxFileSize": {
"type": "string",
"description": "maximum decoded file size for file and file[] fields (e.g. '500KB')"
},
"accept": {
"type": "array",
"description": "allowed MIME types for file and file[] fields; supports wildcards like 'image/*'",
"items": {
"type": "string"
}
}
}
},
"readonly": {
"description": "field-level readonly — boolean or JS eval expression",
"oneOf": [
{ "type": "boolean" },
{
"type": "object",
"additionalProperties": false,
"properties": {
"eval": { "type": "string", "description": "JS expression that returns boolean" }
},
"required": ["eval"]
}
]
},
"hidden": {
"description": "field-level hidden — boolean or JS eval expression",
"oneOf": [
{ "type": "boolean" },
{
"type": "object",
"additionalProperties": false,
"properties": {
"eval": { "type": "string", "description": "JS expression that returns boolean" }
},
"required": ["eval"]
}
]
},
"strictFields": {
"type": "boolean",
"description": "reject unknown sub-fields not defined in subFields"
},
"meta": {
"$ref": "fieldMeta.json"
}
},
"required": [
"name",
"type"
]
}