Repository navigation
Conversation
populate_tables was gated with @api(version="99"), so it raised a
misleading EndpointUnavailableError on every server. It called
GET /databases/{id}/tables, which is not part of the REST API at any
version. Raise NotImplementedError pointing to the Metadata API and
tables.get_by_id instead, and make the DatabaseItem.tables error message
accurate.
Refs #735
Co-Authored-By: Claude Code <noreply@anthropic.com>
…missions Every other permissions method takes the item first and the rule second, but delete_table_default_permissions took (rule, item). Switch to (item, rule). Callers using the old order keep working: swapped argument types are detected, swapped back, and a DeprecationWarning pointing at the caller is emitted. Refs #735 Co-Authored-By: Claude Code <noreply@anthropic.com>
The update requests always sent isCertified, so an item whose certified value was never set sent isCertified="none". description and certificationNote were only sent when non-empty, so they could not be cleared. Send isCertified when certified is not None, and send description and certificationNote whenever they are not None so an empty string clears them. The Update Database REST method accepts contentPermissions and the docstring claims it can set permissions, but the value was never sent. Send it when set. Refs #735 Co-Authored-By: Claude Code <noreply@anthropic.com>
Neither DatabaseItem nor TableItem tracks tags, and the Query Database and Query Table responses do not include a tags element for tables, so update_tags cannot work as it does for workbooks and datasources. Both methods now share one explicit NotImplementedError that points to add_tags and delete_tags, and tables.update_tags carries the same @api(version="3.9") gate as the other tag methods. Refs #735 Co-Authored-By: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>
jacalata
added a commit
that referenced
this pull request
Nov 14, 2026
Revert the two passages that describe unmerged #1901 behavior: - databases.populate_tables is documented as not currently enabled (version 99 gate, EndpointUnavailableError), not as unsupported. - databases.delete_table_default_permissions is documented as (rule, item), not (item, rule), and the tables property row matches the populate_tables wording. Co-Authored-By: Claude Code <noreply@anthropic.com>
jacalata
added a commit
that referenced
this pull request
Nov 14, 2026
databases.update and tables.update send a value only when it is not empty on development, so the update docs say that empty strings do not clear description or certification_note. Revert the "only the values that are set" wording, which depends on unmerged #1901. Co-Authored-By: Claude Code <noreply@anthropic.com>
jacalata
added a commit
that referenced
this pull request
Nov 14, 2026
- DatabaseItem.content_permissions: drop the value list and the claim that databases.update sends it (not true on development; the write and the LockedToDatabase value come with #1901). - Drop the explore_databases_tables.py references (sample is in #1907). - Handle empty results in the databases.populate_tables example. Co-Authored-By: Claude Code <noreply@anthropic.com>
jacalata
added a commit
that referenced
this pull request
Nov 14, 2026
* Document the Databases and Tables endpoints The databases and tables endpoints, and the DatabaseItem, TableItem and ColumnItem classes, had no API reference entries. Add sections for every method, note that databases.populate_tables is not enabled and show the Metadata API alternative, and list the new explore_databases_tables sample. Closes #735 Co-Authored-By: Claude Code <noreply@anthropic.com> * Fix datasources.delete_dqw REST API link The link pointed at the delete_dqw_triggers anchor, which is not the method this call makes. Point it at delete_dqws, Delete Data Quality Warning by Content, and correct the link text. Co-Authored-By: Claude Code <noreply@anthropic.com> * Update Databases and Tables docs to match the fixed behavior populate_tables raises NotImplementedError rather than gating on a placeholder version. delete_table_default_permissions takes (item, rule), and the old order warns. Update requests send only the values that are set, so None leaves a property unchanged and an empty string clears it. Refs #735 Co-Authored-By: Claude Code <noreply@anthropic.com> * Correct databases and tables field and tag docs content_permissions and description are sent by update, and an empty description clears it. update_tags raises EndpointUnavailableError below REST API 3.9. Co-Authored-By: Claude Code <noreply@anthropic.com> * Match databases docs to the code on development Revert the two passages that describe unmerged #1901 behavior: - databases.populate_tables is documented as not currently enabled (version 99 gate, EndpointUnavailableError), not as unsupported. - databases.delete_table_default_permissions is documented as (rule, item), not (item, rule), and the tables property row matches the populate_tables wording. Co-Authored-By: Claude Code <noreply@anthropic.com> * Match database and table update docs to the code on development databases.update and tables.update send a value only when it is not empty on development, so the update docs say that empty strings do not clear description or certification_note. Revert the "only the values that are set" wording, which depends on unmerged #1901. Co-Authored-By: Claude Code <noreply@anthropic.com> * Remove docs that depend on other PRs; guard the metadata example - DatabaseItem.content_permissions: drop the value list and the claim that databases.update sends it (not true on development; the write and the LockedToDatabase value come with #1901). - Drop the explore_databases_tables.py references (sample is in #1907). - Handle empty results in the databases.populate_tables example. Co-Authored-By: Claude Code <noreply@anthropic.com> --------- Co-authored-by: Claude Code <noreply@anthropic.com>
jacalata
added a commit
that referenced
this pull request
Nov 14, 2026
Do not merge before both PRs land: - #1901 (databases and tables fixes): populate_tables raises NotImplementedError, delete_table_default_permissions takes (item, rule), update sends only the values that are set, content_permissions is sent and accepts LockedToDatabase. - #1907 (databases and tables sample): the explore_databases_tables.py references. Also guard the databases.populate_tables example against empty results, matching #1902. Co-Authored-By: Claude Code <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
databases.populate_tablesraisesNotImplementedErrorwith a pointer to the Metadata API, instead of gating on a placeholder version.databases.delete_table_default_permissionstakes(item, rule)like the other permission methods. The old(rule, item)order still works and emits aDeprecationWarning.databases.updateandtables.updatesend only the fields that are set, soNoneleaves a value unchanged and an empty string clearsdescriptionorcertification_note.contentPermissionsis sent when set, so a get-then-update round trip sends back the value the server returned.update_tagson databases and tables raises a clearNotImplementedErrorpointing toadd_tagsanddelete_tags. These items do not track their tags yet. Both methods keep their@api(version="3.9")gate, so on earlier REST API versions they raiseEndpointUnavailableErrorinstead.Refs #735
Verification
black --checkandmypy tableauserverclient/pass.update_tagserror.Related
DatabaseItem.tagssupport follows in a separate PR.🤖 Generated with Claude Code