Browse Source

remove lc schema

pull/25052/head
Halil İbrahim Kalkan 7 months ago
parent
commit
a6386408e7
  1. 23
      lowcode/schema/definitions/command-interceptor-descriptor.schema.json
  2. 8
      lowcode/schema/definitions/dashboard-aggregation-type.schema.json
  3. 74
      lowcode/schema/definitions/dashboard-chart-descriptor.schema.json
  4. 8
      lowcode/schema/definitions/dashboard-chart-type.schema.json
  5. 23
      lowcode/schema/definitions/dashboard-descriptor.schema.json
  6. 38
      lowcode/schema/definitions/dashboard-filter-descriptor.schema.json
  7. 54
      lowcode/schema/definitions/dashboard-group-descriptor.schema.json
  8. 55
      lowcode/schema/definitions/dashboard-list-descriptor.schema.json
  9. 48
      lowcode/schema/definitions/dashboard-number-descriptor.schema.json
  10. 29
      lowcode/schema/definitions/dashboard-position-descriptor.schema.json
  11. 21
      lowcode/schema/definitions/dashboard-user-filter-descriptor.schema.json
  12. 70
      lowcode/schema/definitions/dashboard-visualization-descriptor.schema.json
  13. 8
      lowcode/schema/definitions/dashboard-visualization-type.schema.json
  14. 45
      lowcode/schema/definitions/endpoint-descriptor.schema.json
  15. 42
      lowcode/schema/definitions/entity-descriptor.schema.json
  16. 58
      lowcode/schema/definitions/entity-property-descriptor.schema.json
  17. 25
      lowcode/schema/definitions/entity-property-type.schema.json
  18. 32
      lowcode/schema/definitions/entity-property-ui-descriptor.schema.json
  19. 15
      lowcode/schema/definitions/entity-property-ui-form-availability.schema.json
  20. 14
      lowcode/schema/definitions/entity-ui-descriptor.schema.json
  21. 41
      lowcode/schema/definitions/enum-descriptor.schema.json
  22. 45
      lowcode/schema/definitions/foreign-key-descriptor.schema.json
  23. 38
      lowcode/schema/definitions/form-descriptor.schema.json
  24. 61
      lowcode/schema/definitions/form-field-descriptor.schema.json
  25. 18
      lowcode/schema/definitions/form-field-type.schema.json
  26. 105
      lowcode/schema/definitions/form-layout-descriptor.schema.json
  27. 71
      lowcode/schema/definitions/form-rule-descriptor.schema.json
  28. 15
      lowcode/schema/definitions/interceptor-type.schema.json
  29. 113
      lowcode/schema/definitions/page-descriptor.schema.json
  30. 8
      lowcode/schema/definitions/page-type.schema.json
  31. 69
      lowcode/schema/definitions/validator-descriptor.schema.json
  32. 49
      lowcode/schema/model.schema.json

23
lowcode/schema/definitions/command-interceptor-descriptor.schema.json

@ -1,23 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "command-interceptor-descriptor.schema.json",
"title": "CommandInterceptorDescriptor",
"description": "Describes a command interceptor",
"type": "object",
"properties": {
"commandName": {
"type": "string",
"description": "Name of the command to intercept",
"enum": ["Create", "Update", "Delete"]
},
"type": {
"$ref": "interceptor-type.schema.json"
},
"javascript": {
"type": "string",
"description": "JavaScript code to execute"
}
},
"required": ["commandName", "type", "javascript"],
"additionalProperties": false
}

8
lowcode/schema/definitions/dashboard-aggregation-type.schema.json

@ -1,8 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "dashboard-aggregation-type.schema.json",
"title": "DashboardAggregationType",
"description": "The type of aggregation to perform",
"type": "string",
"enum": ["count", "sum", "average", "min", "max", "percentFilled", "percentEmpty"]
}

74
lowcode/schema/definitions/dashboard-chart-descriptor.schema.json

@ -1,74 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "dashboard-chart-descriptor.schema.json",
"title": "DashboardChartDescriptor",
"description": "Configuration for a chart visualization",
"type": "object",
"properties": {
"chartType": {
"$ref": "dashboard-chart-type.schema.json"
},
"xAxis": {
"type": "object",
"properties": {
"property": {
"type": "string",
"description": "Property name to group by on the X-axis"
},
"useForeignDisplay": {
"type": "boolean",
"description": "Show the FK display property instead of the raw ID",
"default": false
},
"dateGrouping": {
"type": "string",
"enum": ["day", "week", "month", "quarter", "year"],
"description": "Grouping interval for DateTime properties"
}
},
"required": ["property"],
"additionalProperties": false
},
"yAxis": {
"type": "array",
"items": {
"type": "object",
"properties": {
"aggregation": {
"$ref": "dashboard-aggregation-type.schema.json"
},
"property": {
"type": "string",
"description": "Property name for sum/average/min/max"
},
"label": {
"type": "string",
"description": "Display label for this series"
},
"color": {
"type": "string"
}
},
"required": ["aggregation"],
"additionalProperties": false
},
"minItems": 1
},
"size": {
"type": "string",
"enum": ["small", "medium", "large"],
"default": "medium"
},
"barOrientation": {
"type": "string",
"enum": ["vertical", "horizontal"],
"default": "vertical"
},
"showRecordCount": {
"type": "boolean",
"default": false
}
},
"required": ["chartType", "xAxis", "yAxis"],
"additionalProperties": false
}

8
lowcode/schema/definitions/dashboard-chart-type.schema.json

@ -1,8 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "dashboard-chart-type.schema.json",
"title": "DashboardChartType",
"description": "The type of chart",
"type": "string",
"enum": ["bar", "line", "pie", "donut"]
}

23
lowcode/schema/definitions/dashboard-descriptor.schema.json

@ -1,23 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "dashboard-descriptor.schema.json",
"title": "DashboardDescriptor",
"description": "Describes a dashboard configuration with groups and visualizations",
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "Description text shown below the dashboard title"
},
"groups": {
"type": "array",
"description": "Dashboard groups, each bound to a single entity",
"items": {
"$ref": "dashboard-group-descriptor.schema.json"
},
"minItems": 1
}
},
"required": ["groups"],
"additionalProperties": false
}

38
lowcode/schema/definitions/dashboard-filter-descriptor.schema.json

@ -1,38 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "dashboard-filter-descriptor.schema.json",
"title": "DashboardFilterDescriptor",
"description": "Static filter applied to a dashboard group or visualization",
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": ["and", "or"],
"default": "and"
},
"conditions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"property": {
"type": "string",
"description": "Property name to filter on"
},
"filterType": {
"type": "string",
"enum": ["equal", "notEqual", "contains", "greaterThan", "lessThan", "isNull", "isNotNull"],
"default": "equal"
},
"value": {
"description": "Filter value"
}
},
"required": ["property", "filterType"],
"additionalProperties": false
}
}
},
"required": ["conditions"],
"additionalProperties": false
}

54
lowcode/schema/definitions/dashboard-group-descriptor.schema.json

@ -1,54 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "dashboard-group-descriptor.schema.json",
"title": "DashboardGroupDescriptor",
"description": "A dashboard group bound to a single entity, containing visualizations",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Unique identifier for this group within the dashboard",
"minLength": 1
},
"title": {
"type": "string",
"description": "Display title for the group section"
},
"entityName": {
"type": "string",
"description": "Full entity name this group sources data from",
"minLength": 1
},
"filter": {
"$ref": "dashboard-filter-descriptor.schema.json"
},
"userFilters": {
"type": "array",
"description": "Properties exposed as dynamic filters for end users",
"items": {
"$ref": "dashboard-user-filter-descriptor.schema.json"
}
},
"appearance": {
"type": "object",
"properties": {
"useBackground": {
"type": "boolean",
"description": "Show light background color for this group",
"default": false
}
},
"additionalProperties": false
},
"visualizations": {
"type": "array",
"description": "Visualizations within this group",
"items": {
"$ref": "dashboard-visualization-descriptor.schema.json"
},
"minItems": 1
}
},
"required": ["name", "visualizations"],
"additionalProperties": false
}

55
lowcode/schema/definitions/dashboard-list-descriptor.schema.json

@ -1,55 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "dashboard-list-descriptor.schema.json",
"title": "DashboardListDescriptor",
"description": "Configuration for a list/table visualization",
"type": "object",
"properties": {
"fields": {
"type": "array",
"items": { "type": "string" },
"description": "Property names to display as columns"
},
"sortBy": {
"type": "object",
"properties": {
"property": { "type": "string" },
"direction": {
"type": "string",
"enum": ["asc", "desc"],
"default": "asc"
}
},
"required": ["property"],
"additionalProperties": false
},
"maxRows": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 10
},
"rowHeight": {
"type": "string",
"enum": ["compact", "normal", "tall"],
"default": "compact"
},
"colorBy": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["property", "conditions"]
},
"property": {
"type": "string",
"description": "Enum property name for automatic coloring"
}
},
"required": ["type"],
"additionalProperties": false
}
},
"required": ["fields"],
"additionalProperties": false
}

48
lowcode/schema/definitions/dashboard-number-descriptor.schema.json

@ -1,48 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "dashboard-number-descriptor.schema.json",
"title": "DashboardNumberDescriptor",
"description": "Configuration for a number/KPI visualization",
"type": "object",
"properties": {
"aggregation": {
"$ref": "dashboard-aggregation-type.schema.json"
},
"aggregationProperty": {
"type": "string",
"description": "Property name for sum/average/min/max aggregations"
},
"format": {
"type": "string",
"enum": ["number", "currency", "percentage"],
"default": "number"
},
"color": {
"type": "string",
"description": "Display color name (blue, green, red, purple, orange, indigo, amber, teal)"
},
"useBackgroundColor": {
"type": "boolean",
"default": false
},
"conditionalColors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": ["greaterThan", "lessThan", "equals", "between"]
},
"value": { "type": "number" },
"valueTo": { "type": "number" },
"color": { "type": "string" }
},
"required": ["operator", "value", "color"],
"additionalProperties": false
}
}
},
"required": ["aggregation"],
"additionalProperties": false
}

29
lowcode/schema/definitions/dashboard-position-descriptor.schema.json

@ -1,29 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "dashboard-position-descriptor.schema.json",
"title": "DashboardPositionDescriptor",
"description": "Grid position for a visualization (4-column grid)",
"type": "object",
"properties": {
"row": {
"type": "integer",
"minimum": 0,
"description": "Row index (0-based)"
},
"col": {
"type": "integer",
"minimum": 0,
"maximum": 3,
"description": "Column index (0-based, max 3)"
},
"colSpan": {
"type": "integer",
"minimum": 1,
"maximum": 4,
"default": 1,
"description": "Number of columns this visualization spans"
}
},
"required": ["row", "col", "colSpan"],
"additionalProperties": false
}

21
lowcode/schema/definitions/dashboard-user-filter-descriptor.schema.json

@ -1,21 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "dashboard-user-filter-descriptor.schema.json",
"title": "DashboardUserFilterDescriptor",
"description": "An interactive filter exposed to end users as a dropdown or input",
"type": "object",
"properties": {
"property": {
"type": "string",
"description": "Property name to filter on",
"minLength": 1
},
"displayType": {
"type": "string",
"enum": ["dropdown", "dateRange", "text", "range"],
"default": "dropdown"
}
},
"required": ["property"],
"additionalProperties": false
}

70
lowcode/schema/definitions/dashboard-visualization-descriptor.schema.json

@ -1,70 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "dashboard-visualization-descriptor.schema.json",
"title": "DashboardVisualizationDescriptor",
"description": "A single visualization element (number, chart, or list) within a dashboard group",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Unique identifier within the group",
"minLength": 1
},
"type": {
"$ref": "dashboard-visualization-type.schema.json"
},
"title": {
"type": "string",
"description": "Display title for the visualization"
},
"description": {
"type": "string",
"description": "Optional description text"
},
"position": {
"$ref": "dashboard-position-descriptor.schema.json"
},
"filter": {
"$ref": "dashboard-filter-descriptor.schema.json"
},
"showDescriptionAsTooltip": {
"type": "boolean",
"default": false
},
"clickToSeeRecords": {
"type": "boolean",
"description": "Allow users to click to see underlying records",
"default": false
},
"entityName": {
"type": "string",
"description": "Override entity for this visualization. If omitted, uses the group's entityName.",
"minLength": 1
},
"number": {
"$ref": "dashboard-number-descriptor.schema.json"
},
"chart": {
"$ref": "dashboard-chart-descriptor.schema.json"
},
"list": {
"$ref": "dashboard-list-descriptor.schema.json"
}
},
"required": ["name", "type", "title", "position"],
"allOf": [
{
"if": { "properties": { "type": { "const": "number" } } },
"then": { "required": ["number"] }
},
{
"if": { "properties": { "type": { "const": "chart" } } },
"then": { "required": ["chart"] }
},
{
"if": { "properties": { "type": { "const": "list" } } },
"then": { "required": ["list"] }
}
],
"additionalProperties": false
}

8
lowcode/schema/definitions/dashboard-visualization-type.schema.json

@ -1,8 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "dashboard-visualization-type.schema.json",
"title": "DashboardVisualizationType",
"description": "The type of dashboard visualization",
"type": "string",
"enum": ["number", "chart", "list"]
}

45
lowcode/schema/definitions/endpoint-descriptor.schema.json

@ -1,45 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:abp:lowcode:endpoint-descriptor",
"title": "Custom Endpoint Descriptor",
"description": "Defines a custom HTTP endpoint that executes JavaScript code",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Unique identifier for the endpoint"
},
"route": {
"type": "string",
"description": "URL route pattern (e.g., '/api/custom/products/{id}')"
},
"method": {
"type": "string",
"description": "HTTP method",
"enum": ["GET", "POST", "PUT", "DELETE", "PATCH"],
"default": "GET"
},
"javascript": {
"type": "string",
"description": "JavaScript code to execute. Has access to context object with request, db, currentUser, emailSender."
},
"requireAuthentication": {
"type": "boolean",
"description": "Whether authentication is required",
"default": true
},
"requiredPermissions": {
"type": "array",
"description": "Permission names required to access the endpoint",
"items": {
"type": "string"
}
},
"description": {
"type": "string",
"description": "Optional description for documentation"
}
},
"required": ["name", "route", "javascript"],
"additionalProperties": false
}

42
lowcode/schema/definitions/entity-descriptor.schema.json

@ -1,42 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "entity-descriptor.schema.json",
"title": "EntityDescriptor",
"description": "Describes an entity configuration",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Full name of the entity (e.g., 'Namespace.EntityName')",
"minLength": 1
},
"displayProperty": {
"type": "string",
"description": "The property to be used as the display property for the entity"
},
"parent": {
"type": "string",
"description": "Full name of the parent entity (e.g., 'Namespace.EntityName')",
"minLength": 1
},
"ui": {
"$ref": "entity-ui-descriptor.schema.json"
},
"properties": {
"type": "array",
"description": "List of property descriptors",
"items": {
"$ref": "entity-property-descriptor.schema.json"
}
},
"interceptors": {
"type": "array",
"description": "List of command interceptors",
"items": {
"$ref": "command-interceptor-descriptor.schema.json"
}
}
},
"required": ["name"],
"additionalProperties": false
}

58
lowcode/schema/definitions/entity-property-descriptor.schema.json

@ -1,58 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "entity-property-descriptor.schema.json",
"title": "EntityPropertyDescriptor",
"description": "Describes a property configuration",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the property",
"minLength": 1
},
"type": {
"$ref": "entity-property-type.schema.json"
},
"enumType": {
"type": "string",
"description": "Name of a JSON-defined enum (or full type name for code enums)"
},
"allowSetByClients": {
"type": "boolean",
"description": "Indicates whether clients are allowed to set this property"
},
"serverOnly": {
"type": "boolean",
"description": "When true, this property is completely hidden from clients (API responses and UI definitions). Use for sensitive data like passwords."
},
"isMappedToDbField": {
"type": "boolean",
"description": "Indicates whether the property is mapped to a database field"
},
"isUnique": {
"type": "boolean",
"description": "Indicates whether the property value must be unique across all entities"
},
"isRequired": {
"type": "boolean",
"description": "When true, the property is required (not nullable). Affects DB column (NOT NULL), UI validation, and backend validation."
},
"ui": {
"$ref": "entity-property-ui-descriptor.schema.json"
},
"foreignKey": {
"$ref": "foreign-key-descriptor.schema.json"
},
"validators": {
"type": "array",
"description": "Array of validators to apply to this property",
"items": {
"$ref": "validator-descriptor.schema.json"
}
}
},
"required": [
"name"
],
"additionalProperties": false
}

25
lowcode/schema/definitions/entity-property-type.schema.json

@ -1,25 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "entity-property-type.schema.json",
"title": "EntityPropertyType",
"description": "Data type of the property",
"type": "string",
"enum": [
"string",
"String",
"int",
"Int",
"long",
"Long",
"decimal",
"Decimal",
"dateTime",
"DateTime",
"boolean",
"Boolean",
"guid",
"Guid",
"enum",
"Enum"
]
}

32
lowcode/schema/definitions/entity-property-ui-descriptor.schema.json

@ -1,32 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "entity-property-ui-descriptor.schema.json",
"title": "EntityPropertyUIDescriptor",
"description": "UI configuration for a property",
"type": "object",
"properties": {
"displayName": {
"type": "string",
"description": "Display name for the property in UI. Falls back to property name if not set."
},
"isAvailableOnDataTable": {
"type": "boolean",
"description": "Whether the property is shown in the data table listing"
},
"isAvailableOnDataTableFiltering": {
"type": "boolean",
"description": "Whether the property is available for filtering in the data table"
},
"creationFormAvailability": {
"$ref": "entity-property-ui-form-availability.schema.json"
},
"editingFormAvailability": {
"$ref": "entity-property-ui-form-availability.schema.json"
},
"quickLookOrder": {
"type": "integer",
"description": "Order of the property in quick look views. Higher numbers appear first. Set to -1 to exclude from quick look. If no property has a value, first 5 properties by name are shown."
}
},
"additionalProperties": false
}

15
lowcode/schema/definitions/entity-property-ui-form-availability.schema.json

@ -1,15 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "entity-property-ui-form-availability.schema.json",
"title": "EntityPropertyUIFormAvailability",
"description": "Availability of the property on forms",
"type": "string",
"enum": [
"Available",
"available",
"Hidden",
"hidden",
"NotAvailable",
"notAvailable"
]
}

14
lowcode/schema/definitions/entity-ui-descriptor.schema.json

@ -1,14 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "entity-ui-descriptor.schema.json",
"title": "EntityUIDescriptor",
"description": "UI configuration for the entity",
"type": "object",
"properties": {
"pageTitle": {
"type": "string",
"description": "Title to display on the entity's page"
}
},
"additionalProperties": false
}

41
lowcode/schema/definitions/enum-descriptor.schema.json

@ -1,41 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "enum-descriptor.schema.json",
"title": "EnumDescriptor",
"description": "Describes an enum definition for use in entity properties",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Unique name for the enum",
"minLength": 1
},
"values": {
"type": "array",
"description": "List of enum values",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Display name of the enum value"
},
"value": {
"type": "integer",
"description": "Integer value (auto-assigned if omitted)"
}
},
"required": [
"name"
],
"additionalProperties": false
},
"minItems": 1
}
},
"required": [
"name",
"values"
],
"additionalProperties": false
}

45
lowcode/schema/definitions/foreign-key-descriptor.schema.json

@ -1,45 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "foreign-key-descriptor.schema.json",
"title": "ForeignKeyDescriptor",
"description": "Describes a foreign key relationship",
"type": "object",
"properties": {
"entityName": {
"type": "string",
"description": "Full name of the related entity",
"minLength": 1
},
"displayPropertyName": {
"type": "string",
"description": "Property name to display from the related entity",
"minLength": 1
},
"access": {
"type": "string",
"description": "Access level for managing this relation from the referenced entity side. When set to 'view' or 'edit', the referenced entity can see/manage items that reference it.",
"enum": ["none", "view", "edit"],
"default": "none"
},
"dependsOn": {
"type": "object",
"description": "Cascading dependency: filter this FK's lookup by the value of another FK property on the same entity.",
"properties": {
"propertyName": {
"type": "string",
"description": "The property name on the owning entity whose value provides the filter (e.g. 'CountryId' on Author)",
"minLength": 1
},
"filterPropertyName": {
"type": "string",
"description": "The property name on the target (lookup) entity to filter by (e.g. 'CountryId' on City)",
"minLength": 1
}
},
"required": ["propertyName", "filterPropertyName"],
"additionalProperties": false
}
},
"required": ["entityName"],
"additionalProperties": false
}

38
lowcode/schema/definitions/form-descriptor.schema.json

@ -1,38 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "form-descriptor.schema.json",
"title": "FormDescriptor",
"description": "Describes a named form definition bound to an entity",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Unique identifier for the form",
"minLength": 1
},
"entityName": {
"type": "string",
"description": "Full name of the entity this form is bound to (e.g., 'Namespace.EntityName')",
"minLength": 1
},
"fields": {
"type": "array",
"description": "Flat list of all field definitions in this form",
"items": {
"$ref": "form-field-descriptor.schema.json"
}
},
"layout": {
"$ref": "form-layout-descriptor.schema.json"
},
"rules": {
"type": "array",
"description": "Conditional rules for field/group visibility and enabled state",
"items": {
"$ref": "form-rule-descriptor.schema.json"
}
}
},
"required": ["name", "entityName", "fields", "layout"],
"additionalProperties": false
}

61
lowcode/schema/definitions/form-field-descriptor.schema.json

@ -1,61 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "form-field-descriptor.schema.json",
"title": "FormFieldDescriptor",
"description": "Describes a single field in a form",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for this field within the form",
"minLength": 1
},
"label": {
"type": "string",
"description": "Display label for the field",
"minLength": 1
},
"type": {
"$ref": "form-field-type.schema.json"
},
"binding": {
"type": ["string", "null"],
"description": "Entity property name to bind to, or null for unbound fields. Supports dotted paths like 'Parent.Name' for related entity display."
},
"enumType": {
"type": "string",
"description": "Full enum type name for select fields"
},
"defaultValue": {
"description": "Default value for the field"
},
"placeholder": {
"type": "string",
"description": "Placeholder text for the input"
},
"helpText": {
"type": "string",
"description": "Help text displayed below the field"
},
"readOnly": {
"type": "boolean",
"description": "Whether the field is read-only",
"default": false
},
"modeVisibility": {
"type": "string",
"enum": ["both", "createOnly", "editOnly"],
"description": "Controls in which form mode the field is visible",
"default": "both"
},
"validations": {
"type": "array",
"description": "Form-level validation rules (override or extend entity-level validators)",
"items": {
"$ref": "validator-descriptor.schema.json"
}
}
},
"required": ["id", "label", "type"],
"additionalProperties": false
}

18
lowcode/schema/definitions/form-field-type.schema.json

@ -1,18 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "form-field-type.schema.json",
"title": "FormFieldType",
"description": "Available field types for form fields",
"type": "string",
"enum": [
"text",
"textarea",
"number",
"checkbox",
"date",
"select",
"lookup",
"guid",
"computed"
]
}

105
lowcode/schema/definitions/form-layout-descriptor.schema.json

@ -1,105 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "form-layout-descriptor.schema.json",
"title": "FormLayoutDescriptor",
"description": "Describes the visual layout of a form (tabs > groups > field placements)",
"type": "object",
"properties": {
"tabs": {
"type": "array",
"description": "Ordered list of tabs in the form",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for this tab",
"minLength": 1
},
"title": {
"type": "string",
"description": "Display title for the tab",
"minLength": 1
},
"isDefault": {
"type": "boolean",
"description": "Whether this is the default tab (cannot be deleted, receives orphaned fields)",
"default": false
},
"groups": {
"type": "array",
"description": "Ordered list of groups within this tab",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for this group",
"minLength": 1
},
"title": {
"type": ["string", "null"],
"description": "Optional display title for the group"
},
"isDefault": {
"type": "boolean",
"description": "Whether this is the default group (cannot be deleted, receives orphaned fields)",
"default": false
},
"rows": {
"type": "array",
"description": "Ordered list of layout rows; each row contains one or more cells (fields placed side-by-side)",
"items": {
"type": "object",
"properties": {
"cells": {
"type": "array",
"description": "Fields placed side-by-side in this row (total colSpan should not exceed 4)",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"fieldId": {
"type": "string",
"description": "Reference to a field id in the form's fields array",
"minLength": 1
},
"colSpan": {
"type": "integer",
"description": "Number of grid columns this field spans (1-4)",
"minimum": 1,
"maximum": 4,
"default": 4
},
"colStart": {
"type": "integer",
"description": "Starting grid column (1-4). Omit or null to auto-place after the previous cell.",
"minimum": 1,
"maximum": 4
}
},
"required": ["fieldId"],
"additionalProperties": false
}
}
},
"required": ["cells"],
"additionalProperties": false
}
}
},
"required": ["id", "rows"],
"additionalProperties": false
}
}
},
"required": ["id", "title", "groups"],
"additionalProperties": false
}
}
},
"required": ["tabs"],
"additionalProperties": false
}

71
lowcode/schema/definitions/form-rule-descriptor.schema.json

@ -1,71 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "form-rule-descriptor.schema.json",
"title": "FormRuleDescriptor",
"description": "Describes a conditional rule with one or more actions that execute when the condition is met",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for this rule",
"minLength": 1
},
"name": {
"type": "string",
"description": "Human-readable name for this rule (optional)"
},
"condition": {
"type": "object",
"description": "The condition that triggers this rule",
"properties": {
"fieldId": {
"type": "string",
"description": "The field whose value is evaluated",
"minLength": 1
},
"operator": {
"type": "string",
"enum": ["equals", "notEquals", "isEmpty", "isNotEmpty"],
"description": "Comparison operator"
},
"value": {
"description": "The value to compare against (not used for isEmpty/isNotEmpty)"
}
},
"required": ["fieldId", "operator"],
"additionalProperties": false
},
"actions": {
"type": "array",
"description": "Actions to perform when condition is met (executed in order)",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["hide", "show", "disable", "enable", "setValue"],
"description": "The action type"
},
"targetType": {
"type": "string",
"enum": ["field", "group"],
"description": "Whether the target is a field or a group"
},
"targetId": {
"type": "string",
"description": "The id of the target field or group",
"minLength": 1
},
"value": {
"description": "The value to set (only for setValue action)"
}
},
"required": ["type", "targetType", "targetId"],
"additionalProperties": false
}
}
},
"required": ["id", "condition", "actions"],
"additionalProperties": false
}

15
lowcode/schema/definitions/interceptor-type.schema.json

@ -1,15 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "interceptor-type.schema.json",
"title": "InterceptorType",
"description": "When the interceptor runs",
"type": "string",
"enum": [
"Pre",
"pre",
"Post",
"post",
"Replace",
"replace"
]
}

113
lowcode/schema/definitions/page-descriptor.schema.json

@ -1,113 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "page-descriptor.schema.json",
"title": "PageDescriptor",
"description": "Describes a UI page bound to an entity",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Unique URL-safe identifier for the page",
"minLength": 1
},
"title": {
"type": "string",
"description": "Display title for the menu item and page header",
"minLength": 1
},
"icon": {
"type": "string",
"description": "FontAwesome icon class (e.g., 'fa-solid fa-users')"
},
"type": {
"$ref": "page-type.schema.json"
},
"entityName": {
"type": "string",
"description": "Full name of the root entity this page displays (e.g., 'Namespace.EntityName'). Not required for dashboard pages.",
"minLength": 1
},
"groupByProperty": {
"type": "string",
"description": "Property name to group entities by (required for kanban). Must reference an enum property.",
"minLength": 1
},
"order": {
"type": "integer",
"description": "Menu sort order (lower values appear first)",
"default": 0
},
"formName": {
"type": "string",
"description": "Name of the form to render (required when type is 'form')",
"minLength": 1
},
"createFormName": {
"type": "string",
"description": "Name of the form to use for creating entities (for dataGrid/kanban pages)"
},
"editFormName": {
"type": "string",
"description": "Name of the form to use for editing entities (for dataGrid/kanban pages)"
},
"createFormDisplay": {
"type": "string",
"enum": ["modal", "page"],
"description": "How to display the create form",
"default": "modal"
},
"editFormDisplay": {
"type": "string",
"enum": ["modal", "page"],
"description": "How to display the edit form",
"default": "modal"
},
"dashboard": {
"$ref": "dashboard-descriptor.schema.json"
}
},
"required": ["name", "title", "type"],
"allOf": [
{
"if": {
"properties": { "type": { "const": "dataGrid" } }
},
"then": {
"required": ["entityName"]
}
},
{
"if": {
"properties": { "type": { "const": "kanban" } }
},
"then": {
"required": ["entityName", "groupByProperty"]
}
},
{
"if": {
"properties": { "type": { "const": "calendar" } }
},
"then": {
"required": ["entityName"]
}
},
{
"if": {
"properties": { "type": { "const": "form" } }
},
"then": {
"required": ["entityName", "formName"]
}
},
{
"if": {
"properties": { "type": { "const": "dashboard" } }
},
"then": {
"required": ["dashboard"]
}
}
],
"additionalProperties": false
}

8
lowcode/schema/definitions/page-type.schema.json

@ -1,8 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "page-type.schema.json",
"title": "PageType",
"description": "The type of page to render",
"type": "string",
"enum": ["dataGrid", "kanban", "calendar", "form", "dashboard"]
}

69
lowcode/schema/definitions/validator-descriptor.schema.json

@ -1,69 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "validator-descriptor.schema.json",
"title": "ValidatorDescriptor",
"description": "A single validator in the validators array",
"type": "object",
"required": ["type"],
"properties": {
"type": {
"type": "string",
"description": "Type of validator",
"enum": [
"required",
"minLength",
"maxLength",
"stringLength",
"min",
"minimum",
"max",
"maximum",
"range",
"pattern",
"regularExpression",
"email",
"emailAddress",
"phone",
"url",
"creditCard"
]
},
"message": {
"type": "string",
"description": "Custom error message for this validator"
},
"length": {
"type": "integer",
"description": "Length value for minLength, maxLength validators",
"minimum": 0
},
"minimumLength": {
"type": "integer",
"description": "Minimum length for stringLength validator",
"minimum": 0
},
"maximumLength": {
"type": "integer",
"description": "Maximum length for stringLength validator",
"minimum": 0
},
"value": {
"type": "number",
"description": "Value for min/minimum, max/maximum validators"
},
"minimum": {
"type": "number",
"description": "Minimum value for range validator"
},
"maximum": {
"type": "number",
"description": "Maximum value for range validator"
},
"pattern": {
"type": "string",
"description": "Regular expression pattern for pattern/regularExpression validators"
}
},
"additionalProperties": true
}

49
lowcode/schema/model.schema.json

@ -1,49 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "model.schema.json",
"title": "ABP Low Code Model",
"description": "Schema for ABP Low Code model.json configuration file",
"type": "object",
"properties": {
"$schema": {
"type": "string",
"description": "Reference to the JSON schema"
},
"enums": {
"type": "array",
"description": "List of enum definitions",
"items": {
"$ref": "definitions/enum-descriptor.schema.json"
}
},
"entities": {
"type": "array",
"description": "List of entity descriptors",
"items": {
"$ref": "definitions/entity-descriptor.schema.json"
}
},
"endpoints": {
"type": "array",
"description": "List of custom HTTP endpoints that execute JavaScript code",
"items": {
"$ref": "definitions/endpoint-descriptor.schema.json"
}
},
"pages": {
"type": "array",
"description": "List of UI pages that appear as menu items and define how entities are displayed",
"items": {
"$ref": "definitions/page-descriptor.schema.json"
}
},
"forms": {
"type": "array",
"description": "List of named form definitions for entity create/edit",
"items": {
"$ref": "definitions/form-descriptor.schema.json"
}
}
},
"additionalProperties": false
}
Loading…
Cancel
Save