Hi, Gooddata Team I would like to create new tabs ...
# gooddata-cloud
v
Hi, Gooddata Team I would like to create new tabs in my existing dashboard and reorganize the current content under separate titled tabs, without building the visualizations from scratch. Could you please suggest how this can be done?
k
Hello! I’m kapa.ai, a virtual assistant focused on GoodData. How can I help you today with GoodData—such as dashboards, exports, embedding, SDK/UI, SSO, or usage/telemetry?
v
I would like to create new tabs in my existing dashboard and reorganize the current content under separate titled tabs, without building the visualizations from scratch. Could you please suggest how this can be done? (
j
Hi Venus, Apologies, I'm not sure if I understand the question. If you already have existing visualizations you can simply add them to the new created tab. Or are you experiencing any issues with that?
Or maybe you mean some functionality that would allow you to clone the previous dashboard tab?
v
I already have an existing dashboard, and I would like to segregate it into different tabs without recreating the visualizations.
yes
The visualizations are very critical and complex, so it is not feasible to recreate them from scratch. Could you please guide me on how this can be done?
j
just so we are on the same page, you don't have to re-create visualizations from scratch. You can just add them one by one on the new tab.
if you want to clone existing tab, and just "tweak" it on another tab, that's currently not possible via UI. I can submit a product feedback there. Might be possible via API though.
v
or how can I replicate my existing dashboard in multiple tabs?
j
okay, so cloning it is, let me check if it's possible via API.
v
yes, please check it.
1
j
should be doable, I'll get back to you asap
So you can go about it like this: 1. Retrieve the Dashboard Call:
Copy code
GET /api/v1/entities/workspaces/{workspaceId}/analyticalDashboards/{objectId}
The response structure is:
Copy code
{
  "data": {
    "id": "...",
    "type": "analyticalDashboard",
    "attributes": {
      "title": "...",
      "description": "...",
      "content": {
        "filterContextRef": { ... },
        "layout": { ... },
        "tabs": [ ... ],
        "version": "2"
      }
    }
  }
}
The part that needs to be modified is:
Copy code
data.attributes.content.tabs
2. Understand the Tabs Structure Each tab inside
content.tabs
has this structure:
Copy code
{
  "localIdentifier": "tab-id",
  "title": "Tab name",
  "layout": { ... },
  "filterContextRef": { ... }
}
Within
layout.sections[].items[].widget
there is also:
Copy code
widget.localIdentifier
Both
tab.localIdentifier
and
widget.localIdentifier
must be unique within the dashboard. 3. Duplicate the Tab To duplicate an existing tab: 1. Copy the entire tab object from the
tabs
array. 2. Append it to the same
tabs
array. 3. Modify:
localIdentifier
of the new tab All
widget.localIdentifier
values inside that tab 4. Optionally modify the tab
title
. You can reuse: •
layout
insight.identifier
filterContextRef
Only the local identifiers must be unique. 4. Update the Dashboard Send a PATCH request to:
Copy code
PATCH /api/v1/entities/workspaces/{workspaceId}/analyticalDashboards/{objectId}
The request body must contain a single
data
object:
Copy code
{
  "data": {
    "id": "{objectId}",
    "type": "analyticalDashboard",
    "attributes": {
      "title": "...",
      "description": "...",
      "content": {
        ... full updated content including modified tabs array ...
      }
    }
  }
}
to summarize this: There is no separate endpoint for creating tabs. A tab is part of the dashboard’s
content
. To duplicate a tab, you: 1. Retrieve the full dashboard definition. 2. Modify the
content.tabs
array. 3. Send the updated
content
back via PATCH. The dashboard is treated as a single entity whose content is replaced with the updated version.
If you wish, please let me know and I can submit a product feedback on your behalf for having some nice and simple way how to do this in UI (some simple "duplicate" option)