UserItem.Roles.UnlicensedWithPublish and UserItem.Roles.ViewerWithPublish are in the public API but have never worked as site role values against the Tableau server:
POST /users (XML path used by users.add): RestApiSiteRole.fromString accepts the modern site roles plus a handful of v2 legacy names (Publisher, Interactor, Guest, SupportUser, SiteAdministrator, ReadOnly). Neither UnlicensedWithPublish nor ViewerWithPublish is in that enum on any REST API version I can see in monolith git history (back to 2023 Perforce snapshot).
POST /users/import (CSV path used by users.bulk_add): CsvLicenseRoleTypeConverter accepts only creator/interactor/explorer/viewer/unlicensed/empty; any other value throws USER_CSV_INVALID_LICENSE. There is no site role → license translation before the license converter runs. UnlicensedWithPublish / ViewerWithPublish as literal license column values are rejected outright.
They've been in UserItem.Roles since the first commit of the library (2016-09-02) and have almost certainly been broken since Tableau Server 8.x/9.x-era licensing was replaced with the current Creator/Explorer/Viewer model.
Proposed fix:
- Emit a
DeprecationWarning when either is accessed as a class attribute (via __class_getattr__ on a metaclass, or a Roles.__getattribute__ shim).
- Update the docstring to note the constants are retained for historical compatibility but do not correspond to any accepted server-side site role.
- Remove in a future major version.
Alternatively, if there is any historical or planned server behavior that would accept these strings that I have not found, please point at it and this issue can be closed.
Related
UserItem.Roles.UnlicensedWithPublishandUserItem.Roles.ViewerWithPublishare in the public API but have never worked as site role values against the Tableau server:POST /users(XML path used byusers.add):RestApiSiteRole.fromStringaccepts the modern site roles plus a handful of v2 legacy names (Publisher,Interactor,Guest,SupportUser,SiteAdministrator,ReadOnly). NeitherUnlicensedWithPublishnorViewerWithPublishis in that enum on any REST API version I can see in monolith git history (back to 2023 Perforce snapshot).POST /users/import(CSV path used byusers.bulk_add):CsvLicenseRoleTypeConverteraccepts onlycreator/interactor/explorer/viewer/unlicensed/empty; any other value throwsUSER_CSV_INVALID_LICENSE. There is no site role → license translation before the license converter runs.UnlicensedWithPublish/ViewerWithPublishas literallicensecolumn values are rejected outright.They've been in
UserItem.Rolessince the first commit of the library (2016-09-02) and have almost certainly been broken since Tableau Server 8.x/9.x-era licensing was replaced with the current Creator/Explorer/Viewer model.Proposed fix:
DeprecationWarningwhen either is accessed as a class attribute (via__class_getattr__on a metaclass, or aRoles.__getattribute__shim).Alternatively, if there is any historical or planned server behavior that would accept these strings that I have not found, please point at it and this issue can be closed.
Related
_decompose_site_roleand initially defaulted unmapped site roles toUnlicensed, silently coercing these two roles to a valid-but-wrong user creation. That was changed to emitlicense="Invalid"(commit ac84fd3) so the server continues to reject the row instead of silently succeeding. This issue is the longer-term followup to properly deprecate the offending constants.