Browse Source

Merge pull request #25052 from abpframework/lc-dash

Remove unused schema
pull/25054/head
Halil İbrahim Kalkan 3 weeks ago
committed by GitHub
parent
commit
f0b9237d07
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 23
      lowcode/schema/definitions/command-interceptor-descriptor.schema.json
  2. 45
      lowcode/schema/definitions/endpoint-descriptor.schema.json
  3. 42
      lowcode/schema/definitions/entity-descriptor.schema.json
  4. 58
      lowcode/schema/definitions/entity-property-descriptor.schema.json
  5. 25
      lowcode/schema/definitions/entity-property-type.schema.json
  6. 32
      lowcode/schema/definitions/entity-property-ui-descriptor.schema.json
  7. 15
      lowcode/schema/definitions/entity-property-ui-form-availability.schema.json
  8. 14
      lowcode/schema/definitions/entity-ui-descriptor.schema.json
  9. 41
      lowcode/schema/definitions/enum-descriptor.schema.json
  10. 45
      lowcode/schema/definitions/foreign-key-descriptor.schema.json
  11. 38
      lowcode/schema/definitions/form-descriptor.schema.json
  12. 61
      lowcode/schema/definitions/form-field-descriptor.schema.json
  13. 18
      lowcode/schema/definitions/form-field-type.schema.json
  14. 105
      lowcode/schema/definitions/form-layout-descriptor.schema.json
  15. 71
      lowcode/schema/definitions/form-rule-descriptor.schema.json
  16. 15
      lowcode/schema/definitions/interceptor-type.schema.json
  17. 86
      lowcode/schema/definitions/page-descriptor.schema.json
  18. 8
      lowcode/schema/definitions/page-type.schema.json
  19. 69
      lowcode/schema/definitions/validator-descriptor.schema.json
  20. 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
}

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"
]
}

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

@ -1,86 +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')",
"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"
}
},
"required": ["name", "title", "type", "entityName"],
"allOf": [
{
"if": {
"properties": { "type": { "const": "kanban" } }
},
"then": {
"required": ["groupByProperty"]
}
},
{
"if": {
"properties": { "type": { "const": "form" } }
},
"then": {
"required": ["formName"]
}
}
],
"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"]
}

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