Dashboards ๐Ÿ”—

A dashboard is a deck that has been configured to be displayed in presentation mode by default. They can be accessed directly by a client URL where only the Deck ID is made available.

This endpoint works as a helper to obtain a direct reference to the deck without necessarily knowing under which Dataset is located.

Catalog ๐Ÿ”—

/dasboards/

Returns an empty shoji:catalog by default. It should be used to discover available dashboards that have been shared with you directly.

GET ๐Ÿ”—

{
    "element": "shoji:catalog",
    "self": "https://app.crunch.io/api/dashboards/",
    "index": {}
}

To discover a specific dashboard, it must be searched by ID via a GET parameter

GET /dashboards/?id=abcdef
{
    "element": "shoji:catalog",
    "self": "https://app.crunch.io/api/dashboards/",
    "index": {
      "abcdef/": {
          "dashboard": {
              "name": "Dashboard name",
          },
          "name": "Deck configured for client",
          "creation_time": "1986-11-26T12:05:00",
          "id": "4fa25",
          "is_public": false,
          "owner_id": "https://app.crunch.io/api/users/abcd3/",
          "owner_name": "Real Person",
          "team": null
      }
    }
}

The dashboards that are available for searching are any of those that the user has view access to. These are the decks that are either public or shared through a team on any on the datasets the authenticated user has at least view permissions on.

Note that when accessing a dashboard URL from the catalog, the server will 303 redirect to the associated deck entity. So it is safe for clients to guess the dashboard entity URL by appending the dashboard ID to the catalog URL.

POST ๐Ÿ”—

In order to create new dashboards for decks, clients need to issue a POST request to the dashboards catalog containing the desired deck in the body

POST /dashboards/
{
    "element": "shoji:entity",
    "body": {
      "deck": "https://app.crunch.io/dataset/abc/decks/def/"
    }
}

The server will return a Location header with the newly created Dashboardโ€™s URL.

After creating a new dashboard, the deck will now contain two new keys on its payload, fragments.dashboard which points to the dashboard and body.dashboard_id which is the ID of the new dashboard, which can be used on the dashboards catalog to search for it.

Note that decks can only have one single dashboard associated, trying to create multiple dashboards for a deck will raise 400 errors. The relasionship is 1:1.

When decks are deleted, the associated dashboard is also deleted.