App registration
Configure where your embedded app appears in Atlan by registering iframe URL, allowed origins, and render locations — display as a sidebar navigation tab, asset profile tab, or both with conditional rendering rules. Verify your app is deployed and has authentication set up to receive user context (see Embed your app if needed), then use this reference to configure display name, icons, and conditional asset type rendering.
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