Quick Apps in DIAL Core and DIAL Chat
Quick Apps works only once DIAL Core knows its application type, and DIAL Chat may open its editor. This reference covers the Core application type, the Quick App applications an administrator defines in Core, and the Chat settings for the editor. It is for platform engineers who add Quick Apps to a deployment. It assumes you know application type schemas in DIAL Core.
DIAL Core version
| Feature | Minimum DIAL Core |
|---|---|
| Registration through the schema endpoint | 0.41.0 |
| DIAL skill resources, and skill invocation from a message | 0.48.0 |
| Per-user tool access filter | 0.49.0 |
On an older Core, the tool access filter fails open and offers every configured tool.
Register the application type
Add Quick Apps to applicationTypeSchemas in the DIAL Core configuration. Replace <QUICKAPPS_BASE_URL> with the backend's URL inside your network, such as http://quickapps-backend:5000. Replace <EDITOR_URL> with the editor's URL in the browser, such as https://quickapps.example.com.
{
"applicationTypeSchemas": [
{
"dial:applicationTypeDisplayName": "Quick App 2.0",
"dial:appendApplicationPropertiesHeader": false,
"dial:applicationTypeAssistantAttachmentsInRequestSupported": true,
"dial:applicationTypeCompletionEndpoint": "<QUICKAPPS_BASE_URL>/openai/deployments/quick_apps2/chat/completions",
"dial:applicationTypeConfigurationEndpoint": "<QUICKAPPS_BASE_URL>/openai/deployments/quick_apps2/configuration",
"dial:applicationTypeSchemaEndpoint": "<QUICKAPPS_BASE_URL>/v1/configuration-support/application-schema",
"dial:applicationTypeEditorUrl": "<EDITOR_URL>",
"dial:applicationTypeRoutes": {
"configuration_support_read": {
"dial:paths": ["/v1/configuration-support(/[^/]+)*$"],
"dial:methods": ["GET"],
"dial:rewritePath": true,
"dial:permissions": ["WRITE"],
"dial:upstreams": [{ "dial:endpoint": "<QUICKAPPS_BASE_URL>" }]
},
"configuration_support_skill_validate": {
"dial:paths": ["/v1/configuration-support/skills/validate$"],
"dial:methods": ["POST"],
"dial:rewritePath": true,
"dial:permissions": ["WRITE"],
"dial:upstreams": [{ "dial:endpoint": "<QUICKAPPS_BASE_URL>" }],
"dial:attachmentPaths": { "dial:requestBody": ["@.url"] }
}
},
"$id": "https://mydial.epam.com/custom_application_schemas/quickapps2",
"$schema": "https://dial.epam.com/application_type_schemas/schema#"
}
]
}
| Property | What it does for Quick Apps |
|---|---|
dial:applicationTypeDisplayName | The type's name in DIAL Chat. Chat also passes it to the editor as applicationName. |
dial:appendApplicationPropertiesHeader | false: Core doesn't add the application's properties as a header to proxied requests. |
dial:applicationTypeAssistantAttachmentsInRequestSupported | true: DIAL Chat keeps the attachments of assistant messages in the requests it sends. |
dial:applicationTypeCompletionEndpoint | The backend's one completion endpoint, quick_apps2, for every Quick App. |
dial:applicationTypeConfigurationEndpoint | The backend's configuration endpoint. |
dial:applicationTypeSchemaEndpoint | The backend's schema endpoint. Core fetches the manifest's JSON schema from it, so the schema stays in step with the backend version. |
dial:applicationTypeEditorUrl | The Quick Apps Frontend. Leave it out when the editor isn't deployed. DIAL Chat then shows a form generated from the schema. |
dial:applicationTypeRoutes | Exposes the backend's /v1/configuration-support/* endpoints through Core. The editor uses them to list the predefined skills, prompts, Toolsets, and tools. A GET route covers the reads, and a POST route validates skills. Both need WRITE permission, since only users who can edit an application need them. On the POST route, dial:attachmentPaths makes Core check access to the DIAL prompt URL in the request body before the request reaches the backend. |
$id | The schema ID. Quick App applications refer to it as applicationTypeSchemaId. It must match the backend's APP_SCHEMA_ID. |
$schema | The DIAL meta schema. |
You can instead copy the full generated schema, generated-app-schema.json in the backend repository, into applicationTypeSchemas. This isn't recommended: you must then update it by hand with every backend upgrade.
Core settings
applications.includeCustomAppsmust staytrue, its default. With it off, Quick Apps don't appear in the deployment listing. The tool access filter also treats tools that point at users' own applications as inaccessible.
Quick App applications
An administrator can define Quick Apps in the applications section of the Core configuration. Each one refers to the type by applicationTypeSchemaId, and its manifest is applicationProperties:
{
"applications": {
"travel-assistant": {
"displayName": "Travel assistant",
"description": "Answers travel questions and runs Python for calculations.",
"applicationTypeSchemaId": "https://mydial.epam.com/custom_application_schemas/quickapps2",
"applicationProperties": {
"orchestrator": {
"deployment": { "deployment_id": "<MODEL_ID>" },
"system_prompt": { "type": "custom", "variables": {}, "content": "You are a travel assistant." }
},
"contexts": [],
"tool_sets": [
{ "type": "predefined", "template_name": "py_interpreter" }
]
},
"features": {
"systemPromptSupported": false
}
}
}
}
features.systemPromptSupported. Set it tofalsefor every Quick App. Core reportstruewhen it is unset, so DIAL Chat offers a system prompt field. With the backend's defaultALLOW_OVERRIDE_SYSTEM_MESSAGE=false, anything typed there fails with400. Skip it only when you setALLOW_OVERRIDE_SYSTEM_MESSAGE=true.- Access. Give users access to the applications with roles, as for any application.
Complete manifests are in Examples. Users create their own Quick Apps in DIAL Chat or through the API.
DIAL Chat
DIAL Chat shows Quick Apps with no Quick Apps-specific settings. Only the editor needs configuration.
- Iframe origin. Add the editor's origin to Chat's
ALLOWED_IFRAME_ORIGINS. Without it, the browser blocks the editor. - Creation entries. The
schema-appsUI feature key is on by default and lets users create Quick Apps.hide-custom-app-creationhides the creation entries.
When a user creates or edits a Quick App, Chat opens its editor page. The Settings step loads dial:applicationTypeEditorUrl in an iframe, with these query parameters:
| Parameter | Value |
|---|---|
id | The application being edited |
authProvider | The user's sign-in provider |
theme | The current theme |
applicationName | dial:applicationTypeDisplayName, URL-encoded |
applicationCredentials | true when Chat can open the application credential forms |
Chat accepts the editor's messages only from the editor URL's origin. Editor 0.3.0 and later need a Chat that sends applicationName; otherwise Save and Preview stay disabled.
The editor can also be embedded in DIAL Admin, through the dialAdminHost editor option.
Further reading
- ChatHub — ready-made Quick Apps to define in the Core configuration
- Application type schemas — every
dial:property of a schema - Frontend — the editor's own configuration
- Quick Apps Backend configuration — deployment-wide defaults and limits for the backend
- Quick App manifest examples — complete manifests for common Quick App patterns
- Applications and Code Interpreter — how Core reaches Code App and interpreter services