Skip to main content

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​

FeatureMinimum DIAL Core
Registration through the schema endpoint0.41.0
DIAL skill resources, and skill invocation from a message0.48.0
Per-user tool access filter0.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#"
}
]
}
PropertyWhat it does for Quick Apps
dial:applicationTypeDisplayNameThe type's name in DIAL Chat. Chat also passes it to the editor as applicationName.
dial:appendApplicationPropertiesHeaderfalse: Core doesn't add the application's properties as a header to proxied requests.
dial:applicationTypeAssistantAttachmentsInRequestSupportedtrue: DIAL Chat keeps the attachments of assistant messages in the requests it sends.
dial:applicationTypeCompletionEndpointThe backend's one completion endpoint, quick_apps2, for every Quick App.
dial:applicationTypeConfigurationEndpointThe backend's configuration endpoint.
dial:applicationTypeSchemaEndpointThe backend's schema endpoint. Core fetches the manifest's JSON schema from it, so the schema stays in step with the backend version.
dial:applicationTypeEditorUrlThe Quick Apps Frontend. Leave it out when the editor isn't deployed. DIAL Chat then shows a form generated from the schema.
dial:applicationTypeRoutesExposes 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.
$idThe schema ID. Quick App applications refer to it as applicationTypeSchemaId. It must match the backend's APP_SCHEMA_ID.
$schemaThe DIAL meta schema.
note

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.includeCustomApps must stay true, 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 to false for every Quick App. Core reports true when it is unset, so DIAL Chat offers a system prompt field. With the backend's default ALLOW_OVERRIDE_SYSTEM_MESSAGE=false, anything typed there fails with 400. Skip it only when you set ALLOW_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-apps UI feature key is on by default and lets users create Quick Apps. hide-custom-app-creation hides 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:

ParameterValue
idThe application being edited
authProviderThe user's sign-in provider
themeThe current theme
applicationNamedial:applicationTypeDisplayName, URL-encoded
applicationCredentialstrue 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​