Actions
Metadata schema for defining actions in SolidX applications.
Where it lives
JSON Pointer: /actions
JSONPath: $.actions
Parent: Root of the metadata file
Overview
Action metadata defines what happens when a user interacts with a menu item, button, or other clickable UI element in a SolidX application.
Menus, buttons, and links resolve to actions. An action is therefore the binding layer between a user interaction and the runtime surface that should open or execute.
When a user clicks one of these UI elements, the corresponding action is triggered and the defined behavior is executed.
Key Configuration Points
-
Module and view association All actions belong to a module. When the action opens a generated SolidX view, it should also reference the relevant
viewUserKey, and in most cases the matchingmodelUserKey. -
solidactions Usesolidactions when the target is a generated SolidX view. In this case,viewUserKeyandmodelUserKeyare the main linkage fields, andcustomComponentis not needed. -
customactions Usecustomactions when the target is a custom frontend surface rather than a generated view. In this case,customComponentis required, andcustomIsModalcontrols whether that component is shown as a modal dialog.
Note
If a custom action is not associated with a model, modelUserKey can be left empty.
Action Types
-
solidactions: Usesolidactions for standard SolidX views such as list, form, tree, card, or kanban views. -
customactions: Usecustomactions when the target is a custom frontend component or page rather than a generated SolidX view.
Configuration Examples
Solid Action Example
Below is a solid action that opens a generated institute list view.
Solid action example
{
..., // Other metadata
"actions": [
{
"displayName": "Institute List View", // User-friendly action name
"name": "institute-list-view", // Internal action reference (kebab-case)
"type": "solid", // Action type: solid, custom
"domain": "", // Domain context (optional)
"context": "", // Additional configuration (optional)
"customComponent": "", // UI route path
"customIsModal": true, // Display as modal dialog
"serverEndpoint": "", // Feature to be implemented
"viewUserKey": "institute-list-view", // Target view reference
"moduleUserKey": "fees-portal", // Module this action belongs to
"modelUserKey": "institute" // Model for standard actions
},
... // Other actions
]
}Custom Action Example
Below is a custom action that routes into a custom frontend surface for the fees portal home page.
Custom action example
{
..., // Other metadata
"actions": [
{
"displayName": "Fees Portal Home",
"name": "fees-portal-home-action",
"type": "custom", // Custom action
"domain": "",
"context": "",
"customComponent": "/admin/core/fees-portal/home", // Required for custom actions
"customIsModal": true,
"serverEndpoint": "", // Feature to be implemented
"viewUserKey": "",
"moduleUserKey": "fees-portal",
"modelUserKey": ""
},
... // Other actions
]
}Complete Navigation Structure Example
This example shows how menu items and actions are authored together inside one module:
Navigation structure example
{
"menus": [
{
"displayName": "Home",
"name": "fees-portal-home-menu",
"sequenceNumber": 1,
"actionUserKey": "fees-portal-home-action"
},
{
"displayName": "Institute",
"name": "institute-menu-item",
"sequenceNumber": 2,
"actionUserKey": "institute-list-action",
"roles": ["Institute Admin", "App Admin"]
},
... // Additional menus
],
"actions": [
{
"displayName": "fees-portal Home",
"name": "fees-portal-home-action",
"type": "custom",
"customComponent": "/admin/core/fees-portal/home",
"customIsModal": true,
"moduleUserKey": "fees-portal"
},
{
"displayName": "Institute List Action",
"name": "institute-list-action",
"type": "solid",
"customComponent": "",
"customIsModal": true,
"viewUserKey": "institute-list-view",
"modelUserKey": "institute",
"moduleUserKey": "fees-portal",
}
// ... Additional actions
]
}Action Metadata Attributes
name (string, required, unique)
Name of the action item (column/property).
Default: N/A
displayName (string, required)
Display name of the action item (shown in the UI).
Default: N/A
type (string, required)
Type of action. Supported types:
solid: Opens or resolves to a generated SolidX view.custom: Custom action that uses a custom frontend component. ProvidecustomComponentfor this type. Default: N/A
domain (JSON, optional)
JSON object defining domain-specific parameters for the action.
Default: N/A
context (JSON, optional)
JSON object defining context-specific parameters for the action.
Default: N/A
customComponent (string, optional)
Path to the custom frontend component to be used for the action.
Applies: Only if type is custom.
Default: N/A
customIsModal (boolean, optional)
Indicates if the custom component should be displayed as a modal dialog.
Applies: Only if type is custom.
Default: false
serverEndpoint (string, optional)
Backend server endpoint to be called for the action.
Applies: Only if type is custom.
Default: N/A
viewUserKey (string, optional)
User key of the view associated with the action.
Default: N/A
moduleUserKey (string, required)
User key of the module this action belongs to.
Default: N/A
modelUserKey (string, optional)
User key of the model this action operates on. This is typically present for solid actions and may be empty for custom actions that are not model-bound.
Default: N/A

