White-Label Your Organization
To customize the look of Dashboards and Analytical Designer, you can hide links to the GoodData documentation and upload your own logo for the whole portal.
You apply the white-labeling options for the whole organization - all workspaces in your organization inherit the new settings.
Tip
For additional options of customization, see Create Custom Themes and Create Custom Color Palettes.
Hide Links to GoodData Documentation
You can hide the GoodData links to the documentation from Dashboards and Analytical Designer through the user interface or via API.
To hide the links through the user interface:
- Go to the Appearance > White-labeling section in your workspace Settings.
- Enable the Hide links to GoodData documentation option.
To create the whiteLabeling
organization setting that enables you to hide the links, send the following POST request /api/v1/entities/organizationSettings/
:
curl $ENDPOINT/api/v1/entities/organizationSettings \
-H "Content-Type: application/vnd.gooddata.api+json" \
-H "Accept: application/vnd.gooddata.api+json" \
-H "Authorization: Bearer {API_TOKEN}" \
-X POST \
-d '{
"data": {
"type": "organizationSetting",
"id": "<some-id>",
"attributes": {
"content": {
"enabled": true
},
"type": "WHITE_LABELING"
}
}
}' | jq .
To change the setting, send the following PUT request /api/v1/entities/organizationSettings/whiteLabeling
:
curl $ENDPOINT/api/v1/entities/organizationSettings/whiteLabeling \
-H "Content-Type: application/vnd.gooddata.api+json" \
-H "Accept: application/vnd.gooddata.api+json" \
-H "Authorization: Bearer bWFydGluLm1pbGlja2ExOmRldjozdElveCtKSzBuakdTWEFBV2lwYjZvdHYzR05aRUJNdA==" \
-X PUT \
-d '{
"data": {
"type": "organizationSetting",
"id": "<some-id>",
"attributes": {
"content": {
"enabled": true/false
},
"type": "WHITE_LABELING"
}
}
}' | jq .
To create the whiteLabeling
organization setting that enables you to hide the links, send the following POST request /api/v1/entities/organizationSettings/
:
Invoke-RestMethod -Method Post -Uri '$ENDPOINT/api/v1/entities/organizationSettings' `
-ContentType 'application/vnd.gooddata.api+json' `
-H @{
'Accept' = 'application/vnd.gooddata.api+json'
'Authorization' = 'Bearer {API_TOKEN}'
} `
-Body '{
"data": {
"type": "organizationSetting",
"id": "<some-id>",
"attributes": {
"content": {
"enabled": true
},
"type": "WHITE_LABELING"
}
}
}' | ConvertTo-Json
To change the setting, send the following PUT request /api/v1/entities/organizationSettings/whiteLabeling
:
Invoke-RestMethod -Method Put -Uri '$ENDPOINT/api/v1/entities/organizationSettings/whiteLabeling' `
-ContentType 'application/vnd.gooddata.api+json' `
-H @{
'Accept' = 'application/vnd.gooddata.api+json'
'Authorization' = 'Bearer {API_TOKEN}'
} `
-Body '{
"data": {
"type": "organizationSetting",
"id": "<some-id>",
"attributes": {
"content": {
"enabled": true
},
"type": "WHITE_LABELING"
}
}
}' | ConvertTo-Json
Upload Your Logo
To customize the appearance you can upload your own logo via API. You can change the following:
- LogoThe logo displayed in the top-left corner of the Portal.
- FaviconThe image that appears in the browser address bar.
- Apple Touch iconThe desktop icon that iOS users see when they save a GoodData page to the desktop.
Note
Changing the logo does not depend on the Enable button in the Appearance section - once you upload the files, the logo will change immediately upon refresh.
To change the logo:
- White-list the logo locations.
- Create the
whiteLabeling
organization setting. - Update the logo files.
White-list Domains
To use your own logo, you must white-list the domains where your logo files are located.
The logo files must be in locations that are publicly available on the Internet and must meet the following criteria:
Description | Format | Size (px) | URL Format | |
---|---|---|---|---|
faviconUrl | The URL pointing to the image that appears in the browser address bar. | ICO | 16x16, 32x32, 48x48, 64x64 | Fully qualified or relative URL |
logoUrl | The URL pointing to the logo displayed in the top-left corner of the Portal. | PNG | 120x25 | Fully qualified or relative URL |
appleTouchIconUrl | The URL pointing to the desktop icon that iOS users see when they save a GoodData page to the desktop. | PNG | 114x114 | Fully qualified or relative URL |
To white-list the domains with logo locations, send the following PUT requests with the list of domains /api/v1/entities/cspDirectives/img-src
:
curl $ENDPOINT/api/v1/entities/cspDirectives/img-src \
-H "Content-Type: application/vnd.gooddata.api+json" \
-H "Accept: application/vnd.gooddata.api+json" \
-H "Authorization: Bearer {API_TOKEN}" \
-X PUT \
-d '{
"data": {
"attributes": {
"sources": [
"{DOMAIN_1_URL}",
"{DOMAIN_2_URL}"",
"{DOMAIN_3_URL}"",
"'\''self'\''"
]
},
"id": "img-src",
"type": "cspDirective"
}
}' | jq .
To white-list the domains with logo locations, send the following PUT requests with the list of domains /api/v1/entities/cspDirectives/img-src
:
Invoke-RestMethod -Method Put -Uri '$ENDPOINT/api/v1/entities/cspDirectives/img-src' `
-ContentType 'application/vnd.gooddata.api+json' `
-H @{
'Accept' = 'application/vnd.gooddata.api+json'
'Authorization' = 'Bearer {API_TOKEN}'
} `
-Body '{
"data": {
"attributes": {
"sources": [
"{DOMAIN_1_URL}",
"{DOMAIN_2_URL}"",
"{DOMAIN_3_URL}"",
"''self''"
]
},
"id": "img-src",
"type": "cspDirective"
}
}' | ConvertTo-Json
Create Organization Setting
To create the whiteLabeling
organization settings, send the following POST request /api/v1/entities/organizationSettings
:
curl $ENDPOINT/api/v1/entities/organizationSettings \
-H "Content-Type: application/vnd.gooddata.api+json" \
-H "Accept: application/vnd.gooddata.api+json" \
-H "Authorization: Bearer {API_TOKEN}" \
-X POST \
-d '{
"data": {
"type": "organizationSetting",
"id": "<some-id>",
"attributes": {
"content": {
"enabled": true,
"faviconUrl": "{FAVICON_URL}",
"logoUrl": "{LOGO_URL}",
"appleTouchIconUrl": "{APPLE_TOUCH_ICON_URL}"
},
"type": "WHITE_LABELING"
}
}
}' | jq .
To create the whiteLabeling
organization settings, send the following POST request /api/v1/entities/organizationSettings
:
Invoke-RestMethod -Method Post -Uri '$ENDPOINT/api/v1/entities/organizationSettings' `
-ContentType 'application/vnd.gooddata.api+json' `
-H @{
'Accept' = 'application/vnd.gooddata.api+json'
'Authorization' = 'Bearer {API_TOKEN}'
} `
-Body '{
"data": {
"type": "organizationSetting",
"id": "<some-id>",
"attributes": {
"content": {
"enabled": true,
"faviconUrl": "{FAVICON_URL}",
"logoUrl": "{LOGO_URL}",
"appleTouchIconUrl": "{APPLE_TOUCH_ICON_URL}"
},
"type": "WHITE_LABELING"
}
}
}' | ConvertTo-Json
Note
If you enable white-labeling in the Appearance section, the whiteLabeling
setting is created automatically.
The "enabled": true/false
controls hiding of documentation links in the White-labeling section in the user interface. Its setting (true/false
) does not impact the logo.
Update Logo
To update the logo, send the following PUT request /api/v1/entities/organizationSettings/whiteLabeling
:
curl $ENDPOINT/api/v1/entities/organizationSettings/whiteLabeling \
-H "Content-Type: application/vnd.gooddata.api+json" \
-H "Accept: application/vnd.gooddata.api+json" \
-H "Authorization: Bearer {API_TOKEN}" \
-X PUT \
-d '{
"data": {
"type": "organizationSetting",
"id": "<some-id>",
"attributes": {
"content": {
"enabled": true,
"faviconUrl": "{FAVICON_URL}",
"logoUrl": "{LOGO_URL}",
"appleTouchIconUrl": "{APPLE_TOUCH_ICON_URL}"
},
"type": "WHITE_LABELING"
}
}
}' | jq .
To update the logo, send the following PUT request /api/v1/entities/organizationSettings/whiteLabeling
:
Invoke-RestMethod -Method Put -Uri '$ENDPOINT/api/v1/entities/organizationSettings/whiteLabeling' `
-ContentType 'application/vnd.gooddata.api+json' `
-H @{
'Accept' = 'application/vnd.gooddata.api+json'
'Authorization' = 'Bearer {API_TOKEN}'
} `
-Body '{
"data": {
"type": "organizationSetting",
"id": "<some-id>",
"attributes": {
"content": {
"enabled": true,
"faviconUrl": "{FAVICON_URL}",
"logoUrl": "{LOGO_URL}",
"appleTouchIconUrl": "{APPLE_TOUCH_ICON_URL}"
},
"type": "WHITE_LABELING"
}
}
}' | ConvertTo-Json
Tip
If you want to use the default GoodData logo again, issue the request with empty strings.