Documentation
¶
Overview ¶
Package client provides a client for the Tableau REST API.
API Endpoints Used:
Authentication:
- POST /api/{version}/auth/signin - Sign in with Personal Access Token
Sites:
- GET /api/{version}/sites/{siteId} - Get site details
Users:
- GET /api/{version}/sites/{siteId}/users - List users (paginated)
- GET /api/{version}/sites/{siteId}/users/{userId} - Verify current user
- POST /api/{version}/sites/{siteId}/users - Add user to site
- PUT /api/{version}/sites/{siteId}/users/{userId} - Update user site role
- DELETE /api/{version}/sites/{siteId}/users/{userId} - Remove user from site
Groups:
- GET /api/{version}/sites/{siteId}/groups - List groups (paginated)
- GET /api/{version}/sites/{siteId}/groups/{groupId}/users - List group members (paginated)
- POST /api/{version}/sites/{siteId}/groups/{groupId}/users - Add user to group
- DELETE /api/{version}/sites/{siteId}/groups/{groupId}/users/{userId} - Remove user from group
Projects:
- GET /api/{version}/sites/{siteId}/projects - List projects (paginated, supports filter)
- GET /api/{version}/sites/{siteId}/projects?filter=id:eq:{projectId} - Get project by ID
- GET /api/{version}/sites/{siteId}/projects?filter=name:eq:{projectName} - Get project by name
- GET /api/{version}/sites/{siteId}/projects/{projectId}/permissions - Get project permissions
- PUT /api/{version}/sites/{siteId}/projects/{projectId}/permissions - Add project permission
- DELETE /api/{version}/sites/{siteId}/projects/{projectId}/permissions/users/{userId}/{cap}/{mode} - Delete user project permission
- DELETE /api/{version}/sites/{siteId}/projects/{projectId}/permissions/groups/{groupId}/{cap}/{mode} - Delete group project permission
- GET /api/{version}/sites/{siteId}/projects/{projectId}/default-permissions/workbooks - Get project default workbook permissions
- PUT /api/{version}/sites/{siteId}/projects/{projectId}/default-permissions/workbooks - Add project default workbook permission
- DELETE /api/{version}/sites/{siteId}/projects/{projectId}/default-permissions/workbooks/users/{userId}/{cap}/{mode} - Delete user default workbook permission
- DELETE /api/{version}/sites/{siteId}/projects/{projectId}/default-permissions/workbooks/groups/{groupId}/{cap}/{mode} - Delete group default workbook permission
Workbooks:
- GET /api/{version}/sites/{siteId}/workbooks - List workbooks (paginated)
- GET /api/{version}/sites/{siteId}/workbooks/{workbookId} - Get workbook details
- GET /api/{version}/sites/{siteId}/workbooks/{workbookId}/views - List workbook views
- GET /api/{version}/sites/{siteId}/workbooks/{workbookId}/permissions - Get workbook permissions
- PUT /api/{version}/sites/{siteId}/workbooks/{workbookId}/permissions - Add workbook permission
- DELETE /api/{version}/sites/{siteId}/workbooks/{workbookId}/permissions/users/{userId}/{cap}/{mode} - Delete user workbook permission
- DELETE /api/{version}/sites/{siteId}/workbooks/{workbookId}/permissions/groups/{groupId}/{cap}/{mode} - Delete group workbook permission
Views:
- GET /api/{version}/sites/{siteId}/views - List views (paginated)
- GET /api/{version}/sites/{siteId}/views/{viewId}/permissions - Get view permissions
- PUT /api/{version}/sites/{siteId}/views/{viewId}/permissions - Add view permission
- DELETE /api/{version}/sites/{siteId}/views/{viewId}/permissions/users/{userId}/{cap}/{mode} - Delete user view permission
- DELETE /api/{version}/sites/{siteId}/views/{viewId}/permissions/groups/{groupId}/{cap}/{mode} - Delete group view permission
IDP Configurations:
- GET /api/{version}/sites/{siteId}/site-auth-configurations - List IDP configurations
Authentication:
- Personal Access Token (PAT) via /auth/signin, then X-Tableau-Auth header
Pagination:
- Uses pageSize and pageNumber query parameters (1-based, default pageSize=100)
- Responses include pagination object with pageNumber, pageSize, totalAvailable
Index ¶
- func BuildBaseURL(serverPath, apiVersion string) (string, error)
- type Capabilities
- type Capability
- type Client
- func (c *Client) AddProjectDefaultWorkbookGroupPermission(ctx context.Context, projectID, groupID, capabilityName, capabilityMode string) (annotations.Annotations, error)
- func (c *Client) AddProjectDefaultWorkbookPermission(ctx context.Context, projectID, userID, capabilityName, capabilityMode string) (annotations.Annotations, error)
- func (c *Client) AddProjectGroupPermission(ctx context.Context, projectID, groupID, capabilityName, capabilityMode string) (annotations.Annotations, error)
- func (c *Client) AddProjectPermission(ctx context.Context, projectID, userID, capabilityName, capabilityMode string) (annotations.Annotations, error)
- func (c *Client) AddUserToGroup(ctx context.Context, groupId, userId string) (annotations.Annotations, error)
- func (c *Client) AddUserToSite(ctx context.Context, user CreateUserRequest) (*User, annotations.Annotations, error)
- func (c *Client) AddViewGroupPermission(ctx context.Context, viewID, groupID, capabilityName, capabilityMode string) (annotations.Annotations, error)
- func (c *Client) AddViewPermission(ctx context.Context, viewID, userID, capabilityName, capabilityMode string) (annotations.Annotations, error)
- func (c *Client) AddWorkbookGroupPermission(ctx context.Context, ...) (annotations.Annotations, error)
- func (c *Client) AddWorkbookPermission(ctx context.Context, workbookID, userID, capabilityName, capabilityMode string) (annotations.Annotations, error)
- func (c *Client) DeleteProjectDefaultWorkbookGroupPermission(ctx context.Context, projectID, groupID, capabilityName, capabilityMode string) (annotations.Annotations, error)
- func (c *Client) DeleteProjectDefaultWorkbookPermission(ctx context.Context, projectID, userID, capabilityName, capabilityMode string) (annotations.Annotations, error)
- func (c *Client) DeleteProjectGroupPermission(ctx context.Context, projectID, groupID, capabilityName, capabilityMode string) (annotations.Annotations, error)
- func (c *Client) DeleteProjectPermission(ctx context.Context, projectID, userID, capabilityName, capabilityMode string) (annotations.Annotations, error)
- func (c *Client) DeleteViewGroupPermission(ctx context.Context, viewID, groupID, capabilityName, capabilityMode string) (annotations.Annotations, error)
- func (c *Client) DeleteViewPermission(ctx context.Context, viewID, userID, capabilityName, capabilityMode string) (annotations.Annotations, error)
- func (c *Client) DeleteWorkbookGroupPermission(ctx context.Context, ...) (annotations.Annotations, error)
- func (c *Client) DeleteWorkbookPermission(ctx context.Context, workbookID, userID, capabilityName, capabilityMode string) (annotations.Annotations, error)
- func (c *Client) FindIdpConfigurationByName(ctx context.Context, name string) (*IdpConfiguration, annotations.Annotations, error)
- func (c *Client) GetGroupUsers(ctx context.Context, groupId, pageToken string) ([]*User, string, annotations.Annotations, error)
- func (c *Client) GetGroups(ctx context.Context, pageToken string) ([]*Group, string, annotations.Annotations, error)
- func (c *Client) GetProject(ctx context.Context, name string, id string) (*Project, annotations.Annotations, error)
- func (c *Client) GetProjectDefaultWorkbookPermissions(ctx context.Context, projectID string) ([]*GranteeCapabilities, annotations.Annotations, error)
- func (c *Client) GetProjectPermissions(ctx context.Context, projectID string) ([]*GranteeCapabilities, annotations.Annotations, error)
- func (c *Client) GetProjects(ctx context.Context, pageToken string, opts ...ReqOpt) ([]*Project, string, annotations.Annotations, error)
- func (c *Client) GetSite(ctx context.Context) (*Site, annotations.Annotations, error)
- func (c *Client) GetUsers(ctx context.Context, pageToken string, opts ...ReqOpt) ([]*User, string, annotations.Annotations, error)
- func (c *Client) GetViewPermissions(ctx context.Context, viewID string) ([]*GranteeCapabilities, annotations.Annotations, error)
- func (c *Client) GetWorkbook(ctx context.Context, workbookID string) (*Workbook, annotations.Annotations, error)
- func (c *Client) GetWorkbookPermissions(ctx context.Context, workbookID string) ([]*GranteeCapabilities, annotations.Annotations, error)
- func (c *Client) GetWorkbookViews(ctx context.Context, workbookID string) ([]*View, annotations.Annotations, error)
- func (c *Client) GetWorkbooks(ctx context.Context, pageToken string, opts ...ReqOpt) ([]*Workbook, string, annotations.Annotations, error)
- func (c *Client) ListEnabledIdpConfigurations(ctx context.Context) ([]*IdpConfiguration, annotations.Annotations, error)
- func (c *Client) ListIdpConfigurations(ctx context.Context) ([]*IdpConfiguration, annotations.Annotations, error)
- func (c *Client) RemoveUserFromGroup(ctx context.Context, groupId, userId string) (annotations.Annotations, error)
- func (c *Client) RemoveUserFromSite(ctx context.Context, userId string) (annotations.Annotations, error)
- func (c *Client) UpdateUserSiteRole(ctx context.Context, userId, siteRole string) (annotations.Annotations, error)
- type CreateUserRequest
- type Credentials
- type GranteeCapabilities
- type Group
- type GroupRef
- type IdpConfiguration
- type OwnerRef
- type Pagination
- type Project
- type ProjectRef
- type ReqOpt
- type Site
- type User
- type UserRef
- type View
- type Workbook
- type WorkbookRef
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BuildBaseURL ¶
BuildBaseURL constructs the Tableau REST API base URL from a server path and API version. It preserves the scheme if provided (useful for HTTP-based testing), otherwise defaults to HTTPS. The apiVersion parameter is expected to be non-empty; the caller (config layer) is responsible for providing a default via field.WithDefaultValue.
Types ¶
type Capabilities ¶
type Capabilities struct {
Capability []*Capability `json:"capability"`
}
type Capability ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is an HTTP client for the Tableau REST API.
func New ¶
func New(ctx context.Context, serverPath, siteID, accessTokenName, accessTokenSecret, apiVersion string) (*Client, error)
New creates an authenticated Tableau API client.
func (*Client) AddProjectDefaultWorkbookGroupPermission ¶
func (c *Client) AddProjectDefaultWorkbookGroupPermission(ctx context.Context, projectID, groupID, capabilityName, capabilityMode string) (annotations.Annotations, error)
AddProjectDefaultWorkbookGroupPermission adds a default workbook group permission to a project.
func (*Client) AddProjectDefaultWorkbookPermission ¶
func (c *Client) AddProjectDefaultWorkbookPermission(ctx context.Context, projectID, userID, capabilityName, capabilityMode string) (annotations.Annotations, error)
AddProjectDefaultWorkbookPermission adds a default workbook user permission to a project.
func (*Client) AddProjectGroupPermission ¶
func (c *Client) AddProjectGroupPermission(ctx context.Context, projectID, groupID, capabilityName, capabilityMode string) (annotations.Annotations, error)
AddProjectGroupPermission adds a group permission to a project.
func (*Client) AddProjectPermission ¶
func (c *Client) AddProjectPermission(ctx context.Context, projectID, userID, capabilityName, capabilityMode string) (annotations.Annotations, error)
AddProjectPermission adds a user permission to a project.
func (*Client) AddUserToGroup ¶
func (c *Client) AddUserToGroup(ctx context.Context, groupId, userId string) (annotations.Annotations, error)
AddUserToGroup adds a user to a group.
func (*Client) AddUserToSite ¶
func (c *Client) AddUserToSite(ctx context.Context, user CreateUserRequest) (*User, annotations.Annotations, error)
AddUserToSite creates a new user on the site.
func (*Client) AddViewGroupPermission ¶
func (c *Client) AddViewGroupPermission(ctx context.Context, viewID, groupID, capabilityName, capabilityMode string) (annotations.Annotations, error)
AddViewGroupPermission adds a group permission to a view.
func (*Client) AddViewPermission ¶
func (c *Client) AddViewPermission(ctx context.Context, viewID, userID, capabilityName, capabilityMode string) (annotations.Annotations, error)
AddViewPermission adds a user permission to a view.
func (*Client) AddWorkbookGroupPermission ¶
func (c *Client) AddWorkbookGroupPermission(ctx context.Context, workbookID, groupID, capabilityName, capabilityMode string) (annotations.Annotations, error)
AddWorkbookGroupPermission adds a group permission to a workbook.
func (*Client) AddWorkbookPermission ¶
func (c *Client) AddWorkbookPermission(ctx context.Context, workbookID, userID, capabilityName, capabilityMode string) (annotations.Annotations, error)
AddWorkbookPermission adds a user permission to a workbook.
func (*Client) DeleteProjectDefaultWorkbookGroupPermission ¶
func (c *Client) DeleteProjectDefaultWorkbookGroupPermission(ctx context.Context, projectID, groupID, capabilityName, capabilityMode string) (annotations.Annotations, error)
DeleteProjectDefaultWorkbookGroupPermission removes a default workbook group permission from a project.
func (*Client) DeleteProjectDefaultWorkbookPermission ¶
func (c *Client) DeleteProjectDefaultWorkbookPermission(ctx context.Context, projectID, userID, capabilityName, capabilityMode string) (annotations.Annotations, error)
DeleteProjectDefaultWorkbookPermission removes a default workbook user permission from a project.
func (*Client) DeleteProjectGroupPermission ¶
func (c *Client) DeleteProjectGroupPermission(ctx context.Context, projectID, groupID, capabilityName, capabilityMode string) (annotations.Annotations, error)
DeleteProjectGroupPermission removes a group permission from a project.
func (*Client) DeleteProjectPermission ¶
func (c *Client) DeleteProjectPermission(ctx context.Context, projectID, userID, capabilityName, capabilityMode string) (annotations.Annotations, error)
DeleteProjectPermission removes a user permission from a project.
func (*Client) DeleteViewGroupPermission ¶
func (c *Client) DeleteViewGroupPermission(ctx context.Context, viewID, groupID, capabilityName, capabilityMode string) (annotations.Annotations, error)
DeleteViewGroupPermission removes a group permission from a view.
func (*Client) DeleteViewPermission ¶
func (c *Client) DeleteViewPermission(ctx context.Context, viewID, userID, capabilityName, capabilityMode string) (annotations.Annotations, error)
DeleteViewPermission removes a user permission from a view.
func (*Client) DeleteWorkbookGroupPermission ¶
func (c *Client) DeleteWorkbookGroupPermission(ctx context.Context, workbookID, groupID, capabilityName, capabilityMode string) (annotations.Annotations, error)
DeleteWorkbookGroupPermission removes a group permission from a workbook.
func (*Client) DeleteWorkbookPermission ¶
func (c *Client) DeleteWorkbookPermission(ctx context.Context, workbookID, userID, capabilityName, capabilityMode string) (annotations.Annotations, error)
DeleteWorkbookPermission removes a user permission from a workbook.
func (*Client) FindIdpConfigurationByName ¶
func (c *Client) FindIdpConfigurationByName(ctx context.Context, name string) (*IdpConfiguration, annotations.Annotations, error)
FindIdpConfigurationByName returns the enabled IDP configuration matching the given name (case-insensitive). Searches all enabled configs, not just SAML/OPENID. Returns nil if no match is found.
func (*Client) GetGroupUsers ¶
func (c *Client) GetGroupUsers(ctx context.Context, groupId, pageToken string) ([]*User, string, annotations.Annotations, error)
GetGroupUsers returns a page of users in a group.
func (*Client) GetGroups ¶
func (c *Client) GetGroups(ctx context.Context, pageToken string) ([]*Group, string, annotations.Annotations, error)
GetGroups returns a page of groups on the site.
func (*Client) GetProject ¶
func (c *Client) GetProject(ctx context.Context, name string, id string) (*Project, annotations.Annotations, error)
GetProjectByName returns a single project by name using a server-side filter. Returns nil if no project with that name is found.
func (*Client) GetProjectDefaultWorkbookPermissions ¶
func (c *Client) GetProjectDefaultWorkbookPermissions(ctx context.Context, projectID string) ([]*GranteeCapabilities, annotations.Annotations, error)
GetProjectDefaultWorkbookPermissions returns the default workbook permissions for a project.
func (*Client) GetProjectPermissions ¶
func (c *Client) GetProjectPermissions(ctx context.Context, projectID string) ([]*GranteeCapabilities, annotations.Annotations, error)
GetProjectPermissions returns permissions for a project.
func (*Client) GetProjects ¶
func (c *Client) GetProjects(ctx context.Context, pageToken string, opts ...ReqOpt) ([]*Project, string, annotations.Annotations, error)
GetProjects returns a page of projects on the site, optionally filtered by query parameters.
func (*Client) GetSite ¶
func (c *Client) GetSite(ctx context.Context) (*Site, annotations.Annotations, error)
GetSite returns site details of the site the user is logged in to.
func (*Client) GetUsers ¶
func (c *Client) GetUsers(ctx context.Context, pageToken string, opts ...ReqOpt) ([]*User, string, annotations.Annotations, error)
GetUsers returns a page of users on the site, optionally filtered by query parameters.
func (*Client) GetViewPermissions ¶
func (c *Client) GetViewPermissions(ctx context.Context, viewID string) ([]*GranteeCapabilities, annotations.Annotations, error)
GetViewPermissions returns permissions for a view.
func (*Client) GetWorkbook ¶
func (c *Client) GetWorkbook(ctx context.Context, workbookID string) (*Workbook, annotations.Annotations, error)
GetWorkbook returns a single workbook by ID.
func (*Client) GetWorkbookPermissions ¶
func (c *Client) GetWorkbookPermissions(ctx context.Context, workbookID string) ([]*GranteeCapabilities, annotations.Annotations, error)
GetWorkbookPermissions returns permissions for a workbook.
func (*Client) GetWorkbookViews ¶
func (c *Client) GetWorkbookViews(ctx context.Context, workbookID string) ([]*View, annotations.Annotations, error)
GetWorkbookViews returns views for a specific workbook. This endpoint does not support pagination — it returns all views in a single response without a pagination object, so no page handling is needed.
func (*Client) GetWorkbooks ¶
func (c *Client) GetWorkbooks(ctx context.Context, pageToken string, opts ...ReqOpt) ([]*Workbook, string, annotations.Annotations, error)
GetWorkbooks returns a page of workbooks on the site, optionally filtered by query parameters.
func (*Client) ListEnabledIdpConfigurations ¶
func (c *Client) ListEnabledIdpConfigurations(ctx context.Context) ([]*IdpConfiguration, annotations.Annotations, error)
ListEnabledIdpConfigurations returns only enabled SAML/OIDC IDP configurations. The Tableau API does not support server-side filtering, so this lists all configurations and filters client-side.
func (*Client) ListIdpConfigurations ¶
func (c *Client) ListIdpConfigurations(ctx context.Context) ([]*IdpConfiguration, annotations.Annotations, error)
ListIdpConfigurations returns IDP configurations for the site. Returns an error (codes.NotFound) if the endpoint is unavailable, which can happen on older on-premises Tableau Server (<2023.3 / API <3.22). Callers are responsible for deciding how to handle the unavailable case.
func (*Client) RemoveUserFromGroup ¶
func (c *Client) RemoveUserFromGroup(ctx context.Context, groupId, userId string) (annotations.Annotations, error)
RemoveUserFromGroup removes a user from a group.
func (*Client) RemoveUserFromSite ¶
func (c *Client) RemoveUserFromSite(ctx context.Context, userId string) (annotations.Annotations, error)
RemoveUserFromSite removes a user from the site.
func (*Client) UpdateUserSiteRole ¶
func (c *Client) UpdateUserSiteRole(ctx context.Context, userId, siteRole string) (annotations.Annotations, error)
UpdateUserSiteRole updates a user's site role.
type CreateUserRequest ¶
type Credentials ¶
type GranteeCapabilities ¶
type GranteeCapabilities struct {
User *UserRef `json:"user,omitempty"`
Group *GroupRef `json:"group,omitempty"`
Capabilities Capabilities `json:"capabilities"`
}
type IdpConfiguration ¶
type Pagination ¶
type ProjectRef ¶
type ReqOpt ¶
ReqOpt is a function that modifies a URL with query parameters.
func WithFilter ¶
WithFilter adds a filter query parameter (e.g. "siteRole:eq:Viewer").
type View ¶
type View struct {
ID string `json:"id"`
Name string `json:"name"`
ContentURL string `json:"contentUrl"`
Workbook *WorkbookRef `json:"workbook,omitempty"`
}
type WorkbookRef ¶
type WorkbookRef struct {
ID string `json:"id"`
}