App registration
This reference provides configuration options, parameters, and structure for registering an embedded app so it appears in the sidebar or as an asset profile tab. Use this document to look up field names, allowed values, and conditional rendering rules.
Make sure you have deployed your app and added authentication so it can receive user context. If not, see Embed your app.
Configuration object
{
"app-id": {
"display_name": "App Display Name",
"iframe_url": "https://your-app.example.com",
"allowed_origins": ["https://your-app.example.com"],
"icon": "Analytics",
"description": "Brief description of your app",
"company": "Company name",
"render_at": [{ "slot": "nav-tab" }]
}
}
App fields
display_namestringRequired
display_namestringLabel shown in the Atlan UI.
Data Quality Dashboardiframe_urlstringRequired
iframe_urlstringURL Atlan loads in the iframe. Must start with http:// or https://. Atlan rejects javascript: and data: URLs.
https://your-app.example.comallowed_originsstring[]Required
allowed_originsstring[]Origins allowed for postMessage. Use full origins such as https://app.example.com. Wildcards are supported, for example https://*.example.com.
["https://your-app.example.com"]iconstringOptional
iconstringIcon name shown in the UI.
QualitydescriptionstringOptional
descriptionstringShort description shown in navigation.
View data quality metricscompanystringOptional
companystringCompany name for attribution.
Company namerender_atRenderLocation[]Required
render_atRenderLocation[]Where the app renders.
[{ "slot": "nav-tab" }]Render locations
render_at is an array of objects. Each object specifies a slot and, for conditional slots, an optional when clause.
Slots
render_at[].slotstringRequired
render_at[].slotstringRender slot for the app.
nav-tabasset-profile-tabnav-tabslotSlot
nav-tabslotNavigation sidebar item. Opens the app at /external/{app-id} in a full-screen view.
asset-profile-tabslotSlot
asset-profile-tabslotAsset profile tab. Shows the app as a tab on asset pages when conditions match.
Conditional rendering (when)
Use when to control where the asset-profile-tab appears.
render_at[].whenobjectOptional
render_at[].whenobjectConditions that control whether the asset-profile-tab slot renders.
render_at[].when.assetTypesstring[]Optional
render_at[].when.assetTypesstring[]Asset type names (case-sensitive), such as Table, View, MaterialisedView, Column, AtlasGlossaryTerm.
["Table", "View", "MaterialisedView"]render_at[].when.routesstring[]Optional
render_at[].when.routesstring[]Route patterns with glob support, such as /assets/* or /glossary/**.
["/assets/*", "/glossary/**"]Examples
Sidebar app
{
"analytics-dashboard": {
"display_name": "Analytics",
"iframe_url": "https://analytics.example.com",
"allowed_origins": ["https://analytics.example.com"],
"icon": "Analytics",
"description": "View platform analytics",
"render_at": [{ "slot": "nav-tab" }]
}
}
Asset profile tab (tables and views)
{
"data-quality": {
"display_name": "Data Quality",
"iframe_url": "https://dq.example.com",
"allowed_origins": ["https://dq.example.com"],
"icon": "Quality",
"description": "View data quality metrics",
"render_at": [
{
"slot": "asset-profile-tab",
"when": {
"assetTypes": ["Table", "View", "MaterialisedView"]
}
}
]
}
}
Multiple slots
{
"multi-location-app": {
"display_name": "My App",
"iframe_url": "https://myapp.example.com",
"allowed_origins": ["https://myapp.example.com"],
"icon": "Apps",
"render_at": [
{ "slot": "nav-tab" },
{
"slot": "asset-profile-tab",
"when": { "assetTypes": ["Table", "Column"] }
}
]
}
}
See also
- Embed your app: Configure iframe embedding and authentication
- Connection and authentication issues: Troubleshoot registration and embed failures
- Embedded apps security FAQ: Common security questions