From 88e00a0de099bdef6eaa72388d053d4b56fdffe5 Mon Sep 17 00:00:00 2001 From: Jac Fitzgerald Date: Thu, 30 Jul 2026 15:23:40 -0700 Subject: [PATCH 1/2] docs: add Known server-side limitations section Add a new user-facing section to docs/api-ref.md that lists behaviors users may hit that are constrained by the Tableau Server REST API rather than by TSC. Each entry links its tracking issue and notes where the fix is expected to land. Cross-link the new section from the top-of-page note, and point at the `Server-Side Enhancement` label as the live tracker maintained by this repo. Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/api-ref.md | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/docs/api-ref.md b/docs/api-ref.md index b34e946f9..cd8159f27 100644 --- a/docs/api-ref.md +++ b/docs/api-ref.md @@ -15,7 +15,7 @@ The Tableau Server Client (TSC) is a Python library for the Tableau Server REST The TSC API reference is organized by resource. The TSC library is modeled after the REST API. The methods, for example, `workbooks.get()`, correspond to the endpoints for resources, such as [workbooks](#workbooks), [users](#users), [views](#views), and [data sources](#data-sources). The model classes (for example, the [WorkbookItem class](#workbookitem-class) have attributes that represent the fields (`name`, `id`, `owner_id`) that are in the REST API request and response packages, or payloads. |:--- | -| **Note:** Some methods and features provided in the REST API might not be currently available in the TSC library (and in some cases, the opposite is true). In addition, the same limitations apply to the TSC library that apply to the REST API with respect to resources on Tableau Server and Tableau Cloud. For more information, see the [Tableau Server REST API Reference](https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_ref.htm).| +| **Note:** Some methods and features provided in the REST API might not be currently available in the TSC library (and in some cases, the opposite is true). In addition, the same limitations apply to the TSC library that apply to the REST API with respect to resources on Tableau Server and Tableau Cloud. For more information, see the [Tableau Server REST API Reference](https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_ref.htm). See also [Known server-side limitations](#known-server-side-limitations) below for behaviors that TSC cannot work around because they are constrained by the Tableau Server REST API itself.| @@ -10957,3 +10957,45 @@ for wb in finance_workbooks:

+--- + +## Known server-side limitations + +Some behaviors you may hit while using TSC are not bugs in the TSC library. They are limitations of the Tableau Server REST API itself, and cannot be fixed in TSC alone. This section lists the currently-tracked server-side gaps so you can identify them quickly and follow the appropriate issues. + +For the live, maintainer-updated view of these issues, filter open issues in this repository by the [`Server-Side Enhancement`](https://github.com/tableau/server-client-python/labels/Server-Side%20Enhancement) label. + +Each entry below notes where the fix is expected to land (server-side vs. client-side). Items marked *server-side* require a change in Tableau Server / Tableau Cloud before TSC can expose the behavior. Internal Salesforce work-item numbers (`W-...`) are included as breadcrumbs for Tableau maintainers; external users are not expected to be able to resolve them. + +
+ +**View filter query parameters (`vf_`) support exact match only** +: The REST API's `vf_=` mechanism (used by `ImageRequestOptions.vf(...)`, `PDFRequestOptions.vf(...)`, `CSVRequestOptions.vf(...)`, and the `filter=` builder on view endpoints) accepts an exact value only. Operator prefixes (`gt:`, `lt:`, `in:`), wildcards, and range expressions are not supported by the server. Tracked in [#1431](https://github.com/tableau/server-client-python/issues/1431). *Fix expected: server-side.* + +
+ +**`vf_` view filter is silently dropped when the server-side view already has an operator-based filter** +: If the underlying view definition includes a filter that uses an operator (for example, a range filter), a client-supplied `vf_` value on that same field can be silently ignored rather than layered on top. There is no error surfaced through the REST API. Tracked internally as W-23617673. *Fix expected: server-side.* + +
+ +**Daily extract-refresh schedules cannot be created via the REST API on Tableau Cloud** +: Creating an extract-refresh task on a daily schedule fails through the REST API (returns a 500), and the underlying Cloud scheduler has a separate bug where daily executes hourly. Tracked in [#1508](https://github.com/tableau/server-client-python/issues/1508) and internally as W-23464657. *Fix expected: server-side.* + +
+ +**Subscriptions cannot use an "On Extract Refresh" schedule via the REST API** +: The "When data refreshes" (a.k.a. "On Extract Refresh") subscription trigger available in the Tableau UI has no equivalent in the REST API surface, so TSC cannot expose it. Tracked in [#1658](https://github.com/tableau/server-client-python/issues/1658). *Fix expected: server-side.* + +
+ +**Flow thumbnail image is not generated when a flow is published via the REST API** +: A flow published through the REST API (and therefore through TSC's `flows.publish(...)`) is stored without a thumbnail image, whereas the same flow uploaded through the Tableau Prep UI receives one. Tracked in [#1537](https://github.com/tableau/server-client-python/issues/1537). *Fix expected: server-side.* + +
+ +If you believe you have found another server-side limitation, please open an issue and mention this section so a maintainer can apply the `Server-Side Enhancement` label and add it to the list above. + +
+
+ From f37c911eab28f06027fa45ae7cef130d478d6192 Mon Sep 17 00:00:00 2001 From: Jac Fitzgerald Date: Thu, 30 Jul 2026 15:25:31 -0700 Subject: [PATCH 2/2] docs: drop internal work-item IDs and per-bullet fix-scope tag Public docs on gh-pages will be indexed, so remove the internal work-item numbers (W-...) from the Known server-side limitations section along with the paragraph that described what they were. Also strip the redundant per-bullet "Fix expected: server-side" tag: the section title already scopes the whole list to server-side gaps. Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/api-ref.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/api-ref.md b/docs/api-ref.md index cd8159f27..cd3096499 100644 --- a/docs/api-ref.md +++ b/docs/api-ref.md @@ -10965,32 +10965,32 @@ Some behaviors you may hit while using TSC are not bugs in the TSC library. They For the live, maintainer-updated view of these issues, filter open issues in this repository by the [`Server-Side Enhancement`](https://github.com/tableau/server-client-python/labels/Server-Side%20Enhancement) label. -Each entry below notes where the fix is expected to land (server-side vs. client-side). Items marked *server-side* require a change in Tableau Server / Tableau Cloud before TSC can expose the behavior. Internal Salesforce work-item numbers (`W-...`) are included as breadcrumbs for Tableau maintainers; external users are not expected to be able to resolve them. +Every item in this list requires a change in Tableau Server / Tableau Cloud before TSC can expose the behavior.
**View filter query parameters (`vf_`) support exact match only** -: The REST API's `vf_=` mechanism (used by `ImageRequestOptions.vf(...)`, `PDFRequestOptions.vf(...)`, `CSVRequestOptions.vf(...)`, and the `filter=` builder on view endpoints) accepts an exact value only. Operator prefixes (`gt:`, `lt:`, `in:`), wildcards, and range expressions are not supported by the server. Tracked in [#1431](https://github.com/tableau/server-client-python/issues/1431). *Fix expected: server-side.* +: The REST API's `vf_=` mechanism (used by `ImageRequestOptions.vf(...)`, `PDFRequestOptions.vf(...)`, `CSVRequestOptions.vf(...)`, and the `filter=` builder on view endpoints) accepts an exact value only. Operator prefixes (`gt:`, `lt:`, `in:`), wildcards, and range expressions are not supported by the server. Tracked in [#1431](https://github.com/tableau/server-client-python/issues/1431).
**`vf_` view filter is silently dropped when the server-side view already has an operator-based filter** -: If the underlying view definition includes a filter that uses an operator (for example, a range filter), a client-supplied `vf_` value on that same field can be silently ignored rather than layered on top. There is no error surfaced through the REST API. Tracked internally as W-23617673. *Fix expected: server-side.* +: If the underlying view definition includes a filter that uses an operator (for example, a range filter), a client-supplied `vf_` value on that same field can be silently ignored rather than layered on top. There is no error surfaced through the REST API.
**Daily extract-refresh schedules cannot be created via the REST API on Tableau Cloud** -: Creating an extract-refresh task on a daily schedule fails through the REST API (returns a 500), and the underlying Cloud scheduler has a separate bug where daily executes hourly. Tracked in [#1508](https://github.com/tableau/server-client-python/issues/1508) and internally as W-23464657. *Fix expected: server-side.* +: Creating an extract-refresh task on a daily schedule fails through the REST API (returns a 500), and the underlying Cloud scheduler has a separate bug where daily executes hourly. Tracked in [#1508](https://github.com/tableau/server-client-python/issues/1508).
**Subscriptions cannot use an "On Extract Refresh" schedule via the REST API** -: The "When data refreshes" (a.k.a. "On Extract Refresh") subscription trigger available in the Tableau UI has no equivalent in the REST API surface, so TSC cannot expose it. Tracked in [#1658](https://github.com/tableau/server-client-python/issues/1658). *Fix expected: server-side.* +: The "When data refreshes" (a.k.a. "On Extract Refresh") subscription trigger available in the Tableau UI has no equivalent in the REST API surface, so TSC cannot expose it. Tracked in [#1658](https://github.com/tableau/server-client-python/issues/1658).
**Flow thumbnail image is not generated when a flow is published via the REST API** -: A flow published through the REST API (and therefore through TSC's `flows.publish(...)`) is stored without a thumbnail image, whereas the same flow uploaded through the Tableau Prep UI receives one. Tracked in [#1537](https://github.com/tableau/server-client-python/issues/1537). *Fix expected: server-side.* +: A flow published through the REST API (and therefore through TSC's `flows.publish(...)`) is stored without a thumbnail image, whereas the same flow uploaded through the Tableau Prep UI receives one. Tracked in [#1537](https://github.com/tableau/server-client-python/issues/1537).