In dynamic settings, you can include applications and their parameters you wish to enable in DIAL.
Refer to DIAL Admin to learn how to manage apps in DIAL Admin UI.
A list of deployed applications and their parameters.
<application_name>: A unique application name.
Example
"applications": {
"app1": {},
"app2": {}
}An object containing parameters for each application.
Effective Parameter Rule: When
applicationTypeSchemaIdandapplicationPropertiesare specified, parameters defined in the corresponding schema will take precedence and will override the corresponding parameters specified in theapplicationobject.
applications.<application_name>.applicationTypeSchemaId: The identifier of a JSON schema that application is based upon. The shema ID must exist in the DIAL Core config propertyapplicationTypeSchemas. Refer to DIAL Documentation to learn more about schema-rich apps.applications.<application_name>.applicationProperties: Properties of a schema-rich application. Specified properties must conform to the JSON schema referenced byapplicationTypeSchemaId. Refer to DIAL Documentation to learn more about schema-rich apps.endpoint: The application's API endpoint for chat completion requests.iconUrl: A string with URL of the icon to display for the app in the UI.description: A string with a brief description of the application.displayName: A string with the app's name. Display name is shown in all DIAL client UI dropdowns, tables, and logs for identification purposes.displayVersion: A string with the app's version.inputAttachmentTypes: A list of allowed MIME types for the input attachments.maxInputAttachments: Maximum number of input attachments. IfinputAttachmentTypesis not set, this value is zero. Otherwise, if not specified, the default is unlimited.forwardAuthToken: A boolean parameter to determine whether the Auth Token should be forwarded from the caller's session to the upstream API call. This enables multi-tenant scenarios or pass-through authentication for downstream services. If this flag is set totrue, the Http header with authorization token is forwarded to the chat completion endpoint of the application.userRoles: A specificclaimvalue provided by a specific IDP in JWT or an API key role. If not defined, the application is available to all users. Refer to IDP Configuration to view examples.descriptionKeywords: A list of keywords describing the application, e.g.code-gen,text2image.maxRetryAttempts: The number of times DIAL Core will retry a connection in case of upstream errors.author: The application's developer.createdAt: The date of the application creation.updatedAt: The date of the last application update.dependencies: A list of dependent deployments (applications, AI models) which the application may use. Refer to Managing Authorization in Complex Application Ecosystems to learn more about dependencies.viewerUrl: A string with URL of the application's custom viewer UI. A custom UI, if enabled, will override the standard DIAL Chat UI.editorUrl: A string with URL of the application's custom builder UI. Application builder allows DIAL Chat end-users to create instances of apps using a UI wizards.defaults: Default parameters are applied if a request doesn't contain them in OpenAIchat/completionsAPI call.interceptors: A list of local interceptors to be triggered for the given application. Refer to Interceptors to learn more.features: A list of features supported by the application. Refer to Features for more details.routes: A list of registered routes in the application. Refer to applications.<application_name>.routes for more details.
Example:
"applications": {
"app": {
"endpoint": "http://localhost:7001/openai/deployments/10k/chat/completions",
"displayName": "Forecast",
"iconUrl": "https://host/app.svg",
"description": "Application that provides forecast",
"descriptionKeywords": ["code-gen"],
"userRoles": [
"Forecast"
],
"forwardAuthToken": true,
"features": {
"rateEndpoint": "http://host/rate",
"tokenizeEndpoint": "http://host/tokinize",
"truncatePromptEndpoint": "http://host/truncate",
"configurationEndpoint": "http://host/configure",
"systemPromptSupported": false,
"toolsSupported": false,
"seedSupported":false,
"urlAttachmentsSupported": false,
"folderAttachmentsSupported": false,
"accessibleByPerRequestKey": true,
"contentPartsSupported": false
},
"maxInputAttachments": 10,
"inputAttachmentTypes": ["type1", "type2"],
"defaults": {
"paramStr": "value",
"paramBool": true,
"paramInt": 123,
"paramFloat": 0.25
},
"interceptors": ["interceptor1", "interceptor2", "interceptor3"],
"routes": {
"vector_store_query": {
"paths": ["/v1/vector_store(/[^/]+)*$"],
"rewritePath": true,
"methods": ["GET", "HEAD"],
"userRoles": ["role1"],
"upstreams": [
{
"endpoint": "http://localhost:9876"
},
{
"endpoint": "http://localhost:9877"
}
],
"order": 1,
"permissions": [
"WRITE"
],
"attachmentPaths": {
"requestBody": [
"@.attachments[*].url"
],
"responseBody": [
"@.result.attachedFiles"
]
}
},
"rate": {
"paths": ["/v1/rate"],
"rewritePath": true,
"methods": ["GET", "HEAD"],
"response": {
"status": 200,
"body": "OK"
},
"order": 2
}
}
}
},Effective Parameter Rule: When
applicationTypeSchemaIdandapplicationPropertiesare specified, parameters defined in the corresponding schema will take precedence and will override the corresponding parameters specified in theapplicationobject.
Use features to specify additional capabilities of the application. Refer to DIAL Admin to learn more about features and the difference between model and app features.
The following features are supported:
rateEndpoint: A URL of a custom rate-estimation API to compute cost or quota usage based on your custom logic (e.g. grouping by tenant, complex billing rules). Exposed by DIAL Core as<deployment name>/rate.tokenizeEndpoint: A URL to call a custom tokenization service. Can be used if you require precise, app-wide token counting (for mixed-model or multi-step prompts) that the model adapter can’t provide. Exposed by DIAL Core as<deployment name>/tokenize.truncatePromptEndpoint: A URL to call your own prompt-truncation API. Handy if you implement advanced context-window management (e.g. dynamic summarization) before the actual app call. Exposed by DIAL Core as<deployment name>/truncate_prompt.configurationEndpoint: A URL to fetch JSON Schema describing settings of the application. DIAL Core exposes this endpoint to DIAL clients asGET v1/deployments/<deployment name>/configuration. DIAL client must provide a JSON value corresponding to the configuration JSON Schema in a chat completion request in thecustom_fields.configurationfield.systemPromptSupported: A boolean parameter that enables/disables an initial "system" message injection. Useful for orchestrating multi-step agents where you need to enforce a global policy at the application level. Default istrue.toolsSupported: A boolean parameter that enables/disables tools/functions payloads in API calls. Switch on if your application makes external function calls (e.g. calendar lookup, database fetch). Default isfalse.seedSupported: A boolean parameter that enables/disables theseedparameter for reproducible results. Great for testing or deterministic pipelines. Disable to ensure randomized creativity. Default isfalse.urlAttachmentsSupported: A boolean parameter that enables/disables URL references (images, docs) as attachments in API requests. Must be enabled if your workflow downloads or processes remote assets via URLs. Default isfalse.folderAttachmentsSupported: A boolean parameter that enables/disables attachments of folders (batching multiple files). Default isfalse.accessibleByPerRequestKey: A boolean parameter that indicates whether the deployment is accessible using a per-request API key. Default istrue.contentPartsSupported: A boolean parameter that indicates whether the deployment supports requests with content parts or not.Default isfalse.consentRequired: A boolean parameter that indicates whether the application requires user consent before use.supportCommentInRateResponse: A boolean parameters that indicates whether the application supports the fieldcommentin rate response payload.
Example:
"features": {
"rateEndpoint": "http://host/rate",
"tokenizeEndpoint": "http://host/tokinize",
"truncatePromptEndpoint": "http://host/truncate",
"configurationEndpoint": "http://host/configure",
"systemPromptSupported": false,
"toolsSupported": false,
"seedSupported":false,
"urlAttachmentsSupported": false,
"folderAttachmentsSupported": false,
"accessibleByPerRequestKey": true,
"contentPartsSupported": false
},Effective Parameter Rule: When
applicationTypeSchemaIdandapplicationPropertiesare specified, parameters defined in the corresponding schema will take precedence and will override the corresponding parameters specified in theapplicationobject.
A list of registered routes in the application. Refer to Routes for more information.
applications.<application_name>.routes.<route_name>.userRoles: Route is accessible by user roles from this list. If not defined,userRolesare inherited from the parent application. If defined, they override theuserRolesof the parent application.applications.<application_name>.routes.<route_name>.response: A pre-configured route's response. If theresponseis set, DIAL Core returns the response immediately. Available values:status: HTTP status codebody: HTTP response body
applications.<application_name>.routes.<route_name>.rewritePath: A flag indicating that the path to the upstream server will be replaced with the path of the original request if this flag is set totrue.applications.<application_name>.routes.<route_name>.paths: A list of paths to match the request's path. If any path is matched, the request will be processed by this route. Note: A path can be a plain string or a regular expression.applications.<application_name>.routes.<route_name>.methods: A list of HTTP methods supported by this route.applications.<application_name>.routes.<route_name>.upstreams: A list of upstream servers with parameters:endpoint: A route's endpoint.key: Your API key.weight: Weight for upstream endpoint; positive number represents endpoint capacity, zero or negative disables this endpoint from routing. Default: 1.tier: Specifies a tier group for the endpoint. Only positive numbers are allowed. All requests will be routed to endpoints with the highest tier (lowest tier value); other endpoints may be used only if the highest tier endpoints are unavailable. Default: 0 (highest tier). Refer to load balancing to learn more.extraData: Additional metadata containing any information that is passed to the upstream's endpoint. Can be JSON or String.
applications.<application_name>.routes.<route_name>.maxRetryAttempts: Use this parameter to set the maximum number of retry attempts if the upstream server returns an unsuccessful response code. The load balancer will try to find another upstream from the list of available upstreams.applications.<application_name>.routes.<route_name>.order: This parameter determines the order within the application routes. Lower value means higher priority. Cannot be a negative integer. Default: 2^31-1.applications.<application_name>.routes.<route_name>.permissions: A list of permissions (READ,WRITE) required for access to the route. Default is an empty list.applications.<application_name>.routes.<route_name>.attachmentPaths: Use this parameter to specify a list of attachment paths where DIAL Core should look for attachment links.applications.<application_name>.routes.<route_name>.attachmentPaths.requestBody: This property contains a list of JSON Path strings. DIAL Core will look for attachments in the request body.applications.<application_name>.routes.<route_name>.attachmentPaths.responseBody: This property contains a list of JSON Path strings. DIAL Core will look for attachments in the response body.
Example:
"routes": {
"vector_store_query": {
"paths": ["/v1/vector_store(/[^/]+)*$"],
"rewritePath": true,
"methods": ["GET", "HEAD"],
"userRoles": ["role1"],
"upstreams": [
{
"endpoint": "http://localhost:9876"
},
{
"endpoint": "http://localhost:9877"
}
],
"order": 1,
"permissions": [
"WRITE"
],
"attachmentPaths": {
"requestBody": [
"@.attachments[*].url"
],
"responseBody": [
"@.result.attachedFiles"
]
}
},
"rate": {
"paths": ["/v1/rate"],
"rewritePath": true,
"methods": ["GET", "HEAD"],
"response": {
"status": 200,
"body": "OK"
},
"order": 2
}
}