diff --git a/src/GamCommands.txt b/src/GamCommands.txt index e505f2eb..074e1236 100644 --- a/src/GamCommands.txt +++ b/src/GamCommands.txt @@ -8408,6 +8408,11 @@ gam show tagmanagertags gam print tagmanagertags [todrive *] [formatjson [quotechar ]] +gam show tagmanagerpermissions + [formatjson] +gam print tagmanagerpermissions [todrive *] + [formatjson [quotechar ]] + # Users - Tasks ::= diff --git a/src/gam/__init__.py b/src/gam/__init__.py index 6aafb483..8e0a0b6b 100755 --- a/src/gam/__init__.py +++ b/src/gam/__init__.py @@ -76492,18 +76492,20 @@ def importTasklist(users): parentIdMap[taskId] = result['id'] TAGMANAGER_PARAMETERS = { - Ent.TAGMANAGER_ACCOUNT: {'respType': 'account', 'parentEntityType': None, - 'idList': ['accountId']}, - Ent.TAGMANAGER_CONTAINER: {'respType': 'container', 'parentEntityType': Ent.TAGMANAGER_ACCOUNT, - 'idList': ['accountId', 'containerId']}, - Ent.TAGMANAGER_WORKSPACE: {'respType': 'workspace', 'parentEntityType': Ent.TAGMANAGER_CONTAINER, - 'idList': ['accountId', 'containerId', 'workspaceId']}, - Ent.TAGMANAGER_TAG: {'respType': 'tag', 'parentEntityType': Ent.TAGMANAGER_WORKSPACE, - 'idList': ['accountId', 'containerId', 'workspaceId', 'tagId']}, + Ent.TAGMANAGER_ACCOUNT: {'api': API.TAGMANAGER, 'respType': 'account', 'parentEntityType': None, + 'name': 'name', 'idList': ['accountId']}, + Ent.TAGMANAGER_CONTAINER: {'api': API.TAGMANAGER, 'respType': 'container', 'parentEntityType': Ent.TAGMANAGER_ACCOUNT, + 'name': 'name', 'idList': ['accountId', 'containerId']}, + Ent.TAGMANAGER_WORKSPACE: {'api': API.TAGMANAGER, 'respType': 'workspace', 'parentEntityType': Ent.TAGMANAGER_CONTAINER, + 'name': 'name', 'idList': ['accountId', 'containerId', 'workspaceId']}, + Ent.TAGMANAGER_TAG: {'api': API.TAGMANAGER, 'respType': 'tag', 'parentEntityType': Ent.TAGMANAGER_WORKSPACE, + 'name': 'name', 'idList': ['accountId', 'containerId', 'workspaceId', 'tagId']}, + Ent.TAGMANAGER_PERMISSION: {'api': API.TAGMANAGER_USERS, 'respType': 'userPermission', 'parentEntityType': Ent.TAGMANAGER_ACCOUNT, + 'name': 'emailAddress', 'idList': ['accountId']}, } def printShowTagManagerObjects(users, entityType): - csvPF = CSVPrintFile(['User', 'name', 'path']) if Act.csvFormat() else None + csvPF = CSVPrintFile(['User']) if Act.csvFormat() else None FJQC = FormatJSONQuoteChar(csvPF) if entityType == Ent.TAGMANAGER_ACCOUNT: kwargs = {'includeGoogleTags': False} @@ -76515,6 +76517,8 @@ def printShowTagManagerObjects(users, entityType): else: parentList = getEntityList(Cmd.OB_TAGMANAGER_PATH_LIST) parameters = TAGMANAGER_PARAMETERS[entityType] + if csvPF: + csvPF.AddTitles([parameters['name'], 'path']) while Cmd.ArgumentsRemaining(): myarg = getArgument() if csvPF and myarg == 'todrive': @@ -76526,7 +76530,7 @@ def printShowTagManagerObjects(users, entityType): i, count, users = getEntityArgument(users) for user in users: i += 1 - user, svc = buildGAPIServiceObject(API.TAGMANAGER, user, i, count) + user, svc = buildGAPIServiceObject(parameters['api'], user, i, count) if not svc: continue if entityType == Ent.TAGMANAGER_ACCOUNT: @@ -76535,8 +76539,10 @@ def printShowTagManagerObjects(users, entityType): svc = svc.accounts().containers() elif entityType == Ent.TAGMANAGER_WORKSPACE: svc = svc.accounts().containers().workspaces() - else: #elif entityType == Ent.TAGMANAGER_TAG: + elif entityType == Ent.TAGMANAGER_TAG: svc = svc.accounts().containers().workspaces().tags() + else: #elif entityType == Ent.TAGMANAGER_PERMISSION: + svc = svc.accounts().user_permissions() jcount = len(parentList) j = 0 for parent in parentList: @@ -76566,9 +76572,9 @@ def printShowTagManagerObjects(users, entityType): if not FJQC.formatJSON: printEntity([entityType, result['path']], k, kcount) Ind.Increment() + printKeyValueList([parameters['name'], result.pop(parameters['name'])]) for tmid in parameters['idList']: printKeyValueList([tmid, result.pop(tmid)]) - printKeyValueList(['name', result.pop('name')]) showJSON(None, result) Ind.Decrement() else: @@ -76583,7 +76589,7 @@ def printShowTagManagerObjects(users, entityType): if not FJQC.formatJSON: csvPF.WriteRowTitles(row) elif csvPF.CheckRowTitles(row): - row = {'User': user, 'name': result['name'], 'path': result['path']} + row = {'User': user, parameters['name']: result[parameters['name']], 'path': result['path']} row['JSON'] = json.dumps(cleanJSON(result), ensure_ascii=False, sort_keys=True) csvPF.WriteRowNoFilter(row) if csvPF: @@ -76619,6 +76625,13 @@ def printShowTagManagerWorkspaces(users): def printShowTagManagerTags(users): printShowTagManagerObjects(users, Ent.TAGMANAGER_TAG) +# gam show tagmanagerpermissions +# [formatjson] +# gam print tagmanagerpermissions [todrive *] +# [formatjson [quotechar ]] +def printShowTagManagerPermissions(users): + printShowTagManagerObjects(users, Ent.TAGMANAGER_PERMISSION) + def getCRMOrgId(): setTrueCustomerId() _, crm = buildGAPIServiceObject(API.CLOUDRESOURCEMANAGER, None) @@ -78349,8 +78362,9 @@ USER_COMMANDS_WITH_OBJECTS = { Cmd.ARG_SITEACTIVITY: deprecatedUserSites, Cmd.ARG_TAGMANAGERACCOUNT: printShowTagManagerAccounts, Cmd.ARG_TAGMANAGERCONTAINER: printShowTagManagerContainers, - Cmd.ARG_TAGMANAGERWORKSPACE: printShowTagManagerWorkspaces, + Cmd.ARG_TAGMANAGERPERMISSION: printShowTagManagerPermissions, Cmd.ARG_TAGMANAGERTAG: printShowTagManagerTags, + Cmd.ARG_TAGMANAGERWORKSPACE: printShowTagManagerWorkspaces, Cmd.ARG_TASK: printShowTasks, Cmd.ARG_TASKLIST: printShowTasklists, Cmd.ARG_THREAD: printShowThreads, @@ -78460,8 +78474,9 @@ USER_COMMANDS_WITH_OBJECTS = { Cmd.ARG_SMIME: printShowSmimes, Cmd.ARG_TAGMANAGERACCOUNT: printShowTagManagerAccounts, Cmd.ARG_TAGMANAGERCONTAINER: printShowTagManagerContainers, - Cmd.ARG_TAGMANAGERWORKSPACE: printShowTagManagerWorkspaces, + Cmd.ARG_TAGMANAGERPERMISSION: printShowTagManagerPermissions, Cmd.ARG_TAGMANAGERTAG: printShowTagManagerTags, + Cmd.ARG_TAGMANAGERWORKSPACE: printShowTagManagerWorkspaces, Cmd.ARG_TASK: printShowTasks, Cmd.ARG_TASKLIST: printShowTasklists, Cmd.ARG_THREAD: printShowThreads, @@ -78703,8 +78718,9 @@ USER_COMMANDS_OBJ_ALIASES = { Cmd.ARG_SMIMES: Cmd.ARG_SMIME, Cmd.ARG_TAGMANAGERACCOUNTS: Cmd.ARG_TAGMANAGERACCOUNT, Cmd.ARG_TAGMANAGERCONTAINERS: Cmd.ARG_TAGMANAGERCONTAINER, - Cmd.ARG_TAGMANAGERWORKSPACES: Cmd.ARG_TAGMANAGERWORKSPACE, + Cmd.ARG_TAGMANAGERPERMISSIONS: Cmd.ARG_TAGMANAGERPERMISSION, Cmd.ARG_TAGMANAGERTAGS: Cmd.ARG_TAGMANAGERTAG, + Cmd.ARG_TAGMANAGERWORKSPACES: Cmd.ARG_TAGMANAGERWORKSPACE, Cmd.ARG_TASKS: Cmd.ARG_TASK, Cmd.ARG_TASKLISTS: Cmd.ARG_TASKLIST, Cmd.ARG_TEAMDRIVE: Cmd.ARG_SHAREDDRIVE, diff --git a/src/gam/gamlib/glapi.py b/src/gam/gamlib/glapi.py index 962eff8e..c9dfbfb4 100644 --- a/src/gam/gamlib/glapi.py +++ b/src/gam/gamlib/glapi.py @@ -95,6 +95,7 @@ STORAGE = 'storage' STORAGEREAD = 'storageread' STORAGEWRITE = 'storagewrite' TAGMANAGER = 'tagmanager' +TAGMANAGER_USERS = 'tagmanagerusers' TASKS = 'tasks' VAULT = 'vault' YOUTUBE = 'youtube' @@ -280,6 +281,7 @@ _INFO = { STORAGEREAD: {'name': 'Cloud Storage API - Read', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE}, STORAGEWRITE: {'name': 'Cloud Storage API - Write', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE}, TAGMANAGER: {'name': 'Tag Manager API', 'version': 'v2', 'v2discovery': True}, + TAGMANAGER_USERS: {'name': 'Tag Manager API - Users', 'version': 'v2', 'v2discovery': True, 'mappedAPI': TAGMANAGER}, TASKS: {'name': 'Tasks API', 'version': 'v1', 'v2discovery': True}, VAULT: {'name': 'Vault API', 'version': 'v1', 'v2discovery': True}, YOUTUBE: {'name': 'Youtube API', 'version': 'v3', 'v2discovery': True}, @@ -702,7 +704,13 @@ _SVCACCT_SCOPES = [ {'name': 'Tag Manager API - read only', 'api': TAGMANAGER, 'subscopes': [], + 'offByDefault': True, 'scope': 'https://www.googleapis.com/auth/tagmanager.readonly'}, + {'name': 'Tag Manager API - Users', + 'api': TAGMANAGER_USERS, + 'subscopes': [], + 'offByDefault': True, + 'scope': 'https://www.googleapis.com/auth/tagmanager.manage.users'}, {'name': 'Tasks API', 'api': TASKS, 'subscopes': READONLY, diff --git a/src/gam/gamlib/glclargs.py b/src/gam/gamlib/glclargs.py index 9f669542..4353c27f 100644 --- a/src/gam/gamlib/glclargs.py +++ b/src/gam/gamlib/glclargs.py @@ -786,10 +786,12 @@ class GamCLArgs(): ARG_TAGMANAGERACCOUNTS = 'tagmanageraccounts' ARG_TAGMANAGERCONTAINER = 'tagmanagercontainer' ARG_TAGMANAGERCONTAINERS = 'tagmanagercontainers' - ARG_TAGMANAGERWORKSPACE = 'tagmanagerworkspace' - ARG_TAGMANAGERWORKSPACES = 'tagmanagerworkspaces' + ARG_TAGMANAGERPERMISSION = 'tagmanagerpermission' + ARG_TAGMANAGERPERMISSIONS = 'tagmanagerpermissions' ARG_TAGMANAGERTAG = 'tagmanagertag' ARG_TAGMANAGERTAGS = 'tagmanagertags' + ARG_TAGMANAGERWORKSPACE = 'tagmanagerworkspace' + ARG_TAGMANAGERWORKSPACES = 'tagmanagerworkspaces' ARG_TASK = 'task' ARG_TASKS = 'tasks' ARG_TASKLIST = 'tasklist' diff --git a/src/gam/gamlib/glentity.py b/src/gam/gamlib/glentity.py index 9619cb56..e156cef4 100644 --- a/src/gam/gamlib/glentity.py +++ b/src/gam/gamlib/glentity.py @@ -360,8 +360,9 @@ class GamEntity(): SVCACCT_KEY = 'svky' TAGMANAGER_ACCOUNT = 'tmac' TAGMANAGER_CONTAINER = 'tmco' - TAGMANAGER_WORKSPACE = 'tmws' + TAGMANAGER_PERMISSION = 'tmpm' TAGMANAGER_TAG = 'tmtg' + TAGMANAGER_WORKSPACE = 'tmws' TARGET_USER = 'tgt ' TASK = 'task' TASKLIST = 'tali' @@ -716,8 +717,9 @@ class GamEntity(): SVCACCT_KEY: ['Service Account Keys', 'Service Account Key'], TAGMANAGER_ACCOUNT: ['Tag Manager Accounts', 'Tag Manager Account'], TAGMANAGER_CONTAINER: ['Tag Manager Containers', 'Tag Manager Container'], - TAGMANAGER_WORKSPACE: ['Tag Manager Workspaces', 'Tag Manager Workspace'], + TAGMANAGER_PERMISSION: ['Tag Manager Permissions', 'Tag Manager Permission'], TAGMANAGER_TAG: ['Tag Manager Tags', 'Tag Manager Tag'], + TAGMANAGER_WORKSPACE: ['Tag Manager Workspaces', 'Tag Manager Workspace'], TARGET_USER: ['Target Users', 'Target User'], TASK: ['Tasks', 'Task'], TASKLIST: ['Tasklists', 'Tasklist'],