> For the complete documentation index, see [llms.txt](https://docs.planetcrust.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.planetcrust.com/human-connections/tableau/tableau.md).

# Tableau

<p align="center"><a class="button primary" data-icon="circle-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>

<figure><img src="/files/YE590JormE4JC82gGJaC" alt="" width="375"><figcaption></figcaption></figure>

<h3 align="center">Put Tableau to Work with @Human Automations and @Human Agents</h3>

<p align="center">The Tableau Connection documents all Triggers, Actions and Query Operations available for creating automations via the Tableau API.</p>

{% embed url="<https://www.youtube.com/watch?v=CyuUuaBSZzA>" %}

#### What can you do with the Tableau Connection?

* Connect to the Tableau API in a few clicks
* Use the related Tableau Operations (see below) in @Human Automations or @Human Agents

### Related Operations

#### Trigger Operations

**Workbook Created**

Triggers on: workbooks/workbook\_created

Triggered when a new workbook is created in Tableau.

**Workbook Updated**

Triggers on: workbooks/workbook\_updated

Triggered when an existing workbook is updated in Tableau.

**Workbook Deleted**

Triggers on: workbooks/workbook\_deleted

Triggered when a workbook is deleted in Tableau.

**Datasource Created**

Triggers on: datasources/datasource\_created

Triggered when a new datasource is created in Tableau.

**Datasource Updated**

Triggers on: datasources/datasource\_updated

Triggered when an existing datasource is updated in Tableau.

**Datasource Deleted**

Triggers on: datasources/datasource\_deleted

Triggered when a datasource is deleted in Tableau.

**Project Created**

Triggers on: projects/project\_created

Triggered when a new project is created in Tableau.

**Project Updated**

Triggers on: projects/project\_updated

Triggered when an existing project is updated in Tableau.

**Project Deleted**

Triggers on: projects/project\_deleted

Triggered when a project is deleted in Tableau.

#### Action Operations

[Action: Download View](/human-connections/tableau/tableau/action-download-view.md)

[Action: Create Workbook Refresh](/human-connections/tableau/tableau/action-create-workbook-refresh.md)

#### Query Operations

### Related Automations

Example link

### Obtaining Access Credentials <a href="#obtaining-access-credentials" id="obtaining-access-credentials"></a>

To obtain a **Personal Access Token (PAT)** for **Tableau** (system-to-system access), follow these steps:

#### **Prerequisites**

* A **Tableau Cloud** or **Tableau Server** account with **Site Administrator** privileges.
* Ensure **Personal Access Tokens** are enabled for your site (Tableau Cloud) or server (Tableau Server).

#### **Steps to Generate a PAT**

1. **Log in** to your **Tableau Cloud** or **Tableau Server** account.
2. Navigate to:
   * **Tableau Cloud**: `https://<your-site>.tableau.com`
   * **Tableau Server**: `https://<your-server>/#/site/<site-name>/explore`
3. Click your **profile icon** (top-right) → **Settings** → **Personal Access Tokens**.
4. Click **Create a Personal Access Token**.
5. Enter:
   * **Token Name** (descriptive, e.g., "API-Automation-Token").
   * **Expiration Date** (optional, but recommended for security).
6. Click **Create**.
7. **Copy the generated token** (it will only be shown once).

### Configuring Webhooks

1. **Generate a Personal Access Token (PAT)**: Sign in to your Tableau account and create a PAT with Site Administrator privileges from your **User Settings**.
2. **Identify the Trigger Event**: Determine the event that will trigger the webhook (e.g., `WorkbookCreated` or `DatasourceRefreshFailed`) from the Tableau REST API documentation.
3. **Set Up the Destination URL**: Prepare a secure HTTPS endpoint to receive and process the HTTP POST payloads.
4. **Authenticate with the REST API**: Send a `POST` request to the `/auth/signin` endpoint using your PAT to obtain an `X-Tableau-Auth` session token and your **Site ID**.
5. **Register the Webhook**: Send a `POST` request to the `/sites/<site-id>/webhooks` endpoint, providing the session token in the `X-Tableau-Auth` header.
6. **Define the Webhook Payload**: Include the webhook name, the selected trigger event, and the destination URL in the JSON request body.
7. **Verify the Configuration**: Submit a `POST` request to the `/sites/<site-id>/webhooks/<webhook-id>/test` endpoint to confirm the destination URL is correctly receiving payloads.

### Code (Apache v2.0): Service Connectivity and Metadata

```
{
  "handle": "tableau-v1",
  "status": "active",
  "meta": {
    "short": "Tableau",
    "description": "Connect to Tableau for data visualization and business intelligence.",
    "icon": "tableau",
    "tags": ["analytics", "visualization", "business-intelligence"]
  },
  "service": {
    "baseURL": {
      "value": "https://{{site}}.tableau.com/api/{{version}}",
      "placeholders": [
        {
          "name": "site",
          "type": "String",
          "description": "Tableau site or server name",
          "required": true
        },
        {
          "name": "version",
          "type": "String",
          "description": "API version (e.g., 3.12)",
          "required": true,
          "default": "3.12"
        }
      ]
    },
    "protocol": "https",
    "contentType": "application/json",
    "headers": {
      "Accept": {
        "value": "application/json"
      }
    },
    "auth": {
      "method": "system_to_system",
      "params": {}
    }
  }
}

```

### Code (Apache v2.0): List of External Resources and Internal Mapping

```
[
  {
    "handle": "workbooks",
    "meta": {
      "short": "Workbooks",
      "description": "Manage and retrieve Tableau workbooks."
    },
    "endpoint": {
      "value": "/api/3.12/sites/{{site_id}}/workbooks",
      "placeholders": [
        {
          "name": "site_id",
          "type": "String",
          "description": "The ID of the site.",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": ["workbook", "id"],
        "meta": {
          "description": "The unique identifier for the workbook."
        }
      },
      {
        "name": "name",
        "type": "String",
        "selector": ["workbook", "name"],
        "meta": {
          "description": "The name of the workbook."
        }
      },
      {
        "name": "description",
        "type": "String",
        "selector": ["workbook", "description"],
        "meta": {
          "description": "The description of the workbook."
        }
      },
      {
        "name": "createdAt",
        "type": "String",
        "selector": ["workbook", "createdAt"],
        "meta": {
          "description": "The timestamp when the workbook was created."
        }
      },
      {
        "name": "updatedAt",
        "type": "String",
        "selector": ["workbook", "updatedAt"],
        "meta": {
          "description": "The timestamp when the workbook was last updated."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "The ID of the workbook.",
              "required": true
            }
          ]
        },
        "headers": {
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "create": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Content-Type": "application/json",
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"workbook\": {\"name\": \"{{name}}\", \"description\": \"{{description}}\"}}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "The name of the workbook.",
              "required": true
            },
            {
              "name": "description",
              "type": "String",
              "description": "The description of the workbook.",
              "required": false
            }
          ]
        }
      },
      "update": {
        "method": "PUT",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "The ID of the workbook.",
              "required": true
            }
          ]
        },
        "headers": {
          "Content-Type": "application/json",
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"workbook\": {\"name\": \"{{name}}\", \"description\": \"{{description}}\"}}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "The name of the workbook.",
              "required": false
            },
            {
              "name": "description",
              "type": "String",
              "description": "The description of the workbook.",
              "required": false
            }
          ]
        }
      },
      "delete": {
        "method": "DELETE",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "The ID of the workbook.",
              "required": true
            }
          ]
        },
        "headers": {
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": [
      {
        "event": "workbook_created",
        "path": "/webhooks/tableau/workbook/created",
        "payload": [
          {
            "name": "workbook_id",
            "type": "String",
            "selector": ["workbook", "id"],
            "meta": {
              "description": "The ID of the created workbook."
            }
          },
          {
            "name": "workbook_name",
            "type": "String",
            "selector": ["workbook", "name"],
            "meta": {
              "description": "The name of the created workbook."
            }
          }
        ]
      },
      {
        "event": "workbook_updated",
        "path": "/webhooks/tableau/workbook/updated",
        "payload": [
          {
            "name": "workbook_id",
            "type": "String",
            "selector": ["workbook", "id"],
            "meta": {
              "description": "The ID of the updated workbook."
            }
          },
          {
            "name": "workbook_name",
            "type": "String",
            "selector": ["workbook", "name"],
            "meta": {
              "description": "The name of the updated workbook."
            }
          }
        ]
      },
      {
        "event": "workbook_deleted",
        "path": "/webhooks/tableau/workbook/deleted",
        "payload": [
          {
            "name": "workbook_id",
            "type": "String",
            "selector": ["workbook", "id"],
            "meta": {
              "description": "The ID of the deleted workbook."
            }
          }
        ]
      }
    ]
  },
  {
    "handle": "datasources",
    "meta": {
      "short": "Datasources",
      "description": "Manage and retrieve Tableau datasources."
    },
    "endpoint": {
      "value": "/api/3.12/sites/{{site_id}}/datasources",
      "placeholders": [
        {
          "name": "site_id",
          "type": "String",
          "description": "The ID of the site.",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": ["datasource", "id"],
        "meta": {
          "description": "The unique identifier for the datasource."
        }
      },
      {
        "name": "name",
        "type": "String",
        "selector": ["datasource", "name"],
        "meta": {
          "description": "The name of the datasource."
        }
      },
      {
        "name": "type",
        "type": "String",
        "selector": ["datasource", "type"],
        "meta": {
          "description": "The type of the datasource."
        }
      },
      {
        "name": "createdAt",
        "type": "String",
        "selector": ["datasource", "createdAt"],
        "meta": {
          "description": "The timestamp when the datasource was created."
        }
      },
      {
        "name": "updatedAt",
        "type": "String",
        "selector": ["datasource", "updatedAt"],
        "meta": {
          "description": "The timestamp when the datasource was last updated."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "The ID of the datasource.",
              "required": true
            }
          ]
        },
        "headers": {
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "create": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Content-Type": "application/json",
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"datasource\": {\"name\": \"{{name}}\", \"type\": \"{{type}}\"}}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "The name of the datasource.",
              "required": true
            },
            {
              "name": "type",
              "type": "String",
              "description": "The type of the datasource.",
              "required": true
            }
          ]
        }
      },
      "update": {
        "method": "PUT",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "The ID of the datasource.",
              "required": true
            }
          ]
        },
        "headers": {
          "Content-Type": "application/json",
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"datasource\": {\"name\": \"{{name}}\", \"type\": \"{{type}}\"}}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "The name of the datasource.",
              "required": false
            },
            {
              "name": "type",
              "type": "String",
              "description": "The type of the datasource.",
              "required": false
            }
          ]
        }
      },
      "delete": {
        "method": "DELETE",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "The ID of the datasource.",
              "required": true
            }
          ]
        },
        "headers": {
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": [
      {
        "event": "datasource_created",
        "path": "/webhooks/tableau/datasource/created",
        "payload": [
          {
            "name": "datasource_id",
            "type": "String",
            "selector": ["datasource", "id"],
            "meta": {
              "description": "The ID of the created datasource."
            }
          },
          {
            "name": "datasource_name",
            "type": "String",
            "selector": ["datasource", "name"],
            "meta": {
              "description": "The name of the created datasource."
            }
          }
        ]
      },
      {
        "event": "datasource_updated",
        "path": "/webhooks/tableau/datasource/updated",
        "payload": [
          {
            "name": "datasource_id",
            "type": "String",
            "selector": ["datasource", "id"],
            "meta": {
              "description": "The ID of the updated datasource."
            }
          },
          {
            "name": "datasource_name",
            "type": "String",
            "selector": ["datasource", "name"],
            "meta": {
              "description": "The name of the updated datasource."
            }
          }
        ]
      },
      {
        "event": "datasource_deleted",
        "path": "/webhooks/tableau/datasource/deleted",
        "payload": [
          {
            "name": "datasource_id",
            "type": "String",
            "selector": ["datasource", "id"],
            "meta": {
              "description": "The ID of the deleted datasource."
            }
          }
        ]
      }
    ]
  },
  {
    "handle": "projects",
    "meta": {
      "short": "Projects",
      "description": "Manage and retrieve Tableau projects."
    },
    "endpoint": {
      "value": "/api/3.12/sites/{{site_id}}/projects",
      "placeholders": [
        {
          "name": "site_id",
          "type": "String",
          "description": "The ID of the site.",
          "required": true
        }
      ]
    },
    "fields": [
      {
        "name": "id",
        "type": "String",
        "selector": ["project", "id"],
        "meta": {
          "description": "The unique identifier for the project."
        }
      },
      {
        "name": "name",
        "type": "String",
        "selector": ["project", "name"],
        "meta": {
          "description": "The name of the project."
        }
      },
      {
        "name": "description",
        "type": "String",
        "selector": ["project", "description"],
        "meta": {
          "description": "The description of the project."
        }
      },
      {
        "name": "createdAt",
        "type": "String",
        "selector": ["project", "createdAt"],
        "meta": {
          "description": "The timestamp when the project was created."
        }
      },
      {
        "name": "updatedAt",
        "type": "String",
        "selector": ["project", "updatedAt"],
        "meta": {
          "description": "The timestamp when the project was last updated."
        }
      }
    ],
    "operations": {
      "list": {
        "method": "GET",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "read": {
        "method": "GET",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "The ID of the project.",
              "required": true
            }
          ]
        },
        "headers": {
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": null
      },
      "create": {
        "method": "POST",
        "path": {
          "value": "",
          "placeholders": []
        },
        "headers": {
          "Content-Type": "application/json",
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"project\": {\"name\": \"{{name}}\", \"description\": \"{{description}}\"}}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "The name of the project.",
              "required": true
            },
            {
              "name": "description",
              "type": "String",
              "description": "The description of the project.",
              "required": false
            }
          ]
        }
      },
      "update": {
        "method": "PUT",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "The ID of the project.",
              "required": true
            }
          ]
        },
        "headers": {
          "Content-Type": "application/json",
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": {
          "value": "{\"project\": {\"name\": \"{{name}}\", \"description\": \"{{description}}\"}}",
          "placeholders": [
            {
              "name": "name",
              "type": "String",
              "description": "The name of the project.",
              "required": false
            },
            {
              "name": "description",
              "type": "String",
              "description": "The description of the project.",
              "required": false
            }
          ]
        }
      },
      "delete": {
        "method": "DELETE",
        "path": {
          "value": "/{{id}}",
          "placeholders": [
            {
              "name": "id",
              "type": "String",
              "description": "The ID of the project.",
              "required": true
            }
          ]
        },
        "headers": {
          "Accept": "application/json"
        },
        "queryParams": {},
        "bodyTemplate": null
      }
    },
    "webhooks": [
      {
        "event": "project_created",
        "path": "/webhooks/tableau/project/created",
        "payload": [
          {
            "name": "project_id",
            "type": "String",
            "selector": ["project", "id"],
            "meta": {
              "description": "The ID of the created project."
            }
          },
          {
            "name": "project_name",
            "type": "String",
            "selector": ["project", "name"],
            "meta": {
              "description": "The name of the created project."
            }
          }
        ]
      },
      {
        "event": "project_updated",
        "path": "/webhooks/tableau/project/updated",
        "payload": [
          {
            "name": "project_id",
            "type": "String",
            "selector": ["project", "id"],
            "meta": {
              "description": "The ID of the updated project."
            }
          },
          {
            "name": "project_name",
            "type": "String",
            "selector": ["project", "name"],
            "meta": {
              "description": "The name of the updated project."
            }
          }
        ]
      },
      {
        "event": "project_deleted",
        "path": "/webhooks/tableau/project/deleted",
        "payload": [
          {
            "

```

<p align="center"><a class="button primary" data-icon="square-caret-right">Try @Human</a><a class="button primary" data-icon="check">Buy @Human Subscription</a><a class="button primary" data-icon="comments">Join @Human Community</a></p>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.planetcrust.com/human-connections/tableau/tableau.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
