mirror of
https://github.com/GAM-team/GAM.git
synced 2026-07-04 04:41:35 +00:00
Compare commits
67 Commits
v7.13.03
...
20250731.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
56bc52aa28 | ||
|
|
416125abac | ||
|
|
904292ded3 | ||
|
|
5f55bcc812 | ||
|
|
b35de53f5d | ||
|
|
3c34948678 | ||
|
|
0be73db60b | ||
|
|
5b57b51384 | ||
|
|
139896ec3b | ||
|
|
9b52c0bf18 | ||
|
|
b9c9b59f7b | ||
|
|
0e0877e084 | ||
|
|
bdce13e97b | ||
|
|
9c4a17e12c | ||
|
|
a64f4d4a46 | ||
|
|
c396a3b901 | ||
|
|
78453a15af | ||
|
|
a0282ba775 | ||
|
|
7b708bfeea | ||
|
|
fedb49ca9d | ||
|
|
87b4917fb0 | ||
|
|
5a9486c08a | ||
|
|
e7074cb0bc | ||
|
|
f894e5ffd7 | ||
|
|
5d1379e830 | ||
|
|
aa1b373245 | ||
|
|
1bed2383ff | ||
|
|
332d6c0761 | ||
|
|
597bbe2db9 | ||
|
|
fcb50e1e93 | ||
|
|
048d88c7a0 | ||
|
|
bd4208607b | ||
|
|
7b510075e6 | ||
|
|
882d7b5833 | ||
|
|
d4f5495909 | ||
|
|
b132e789f7 | ||
|
|
701824d984 | ||
|
|
4c63de65a5 | ||
|
|
d1d1040ec3 | ||
|
|
fe4268230e | ||
|
|
bda51867c8 | ||
|
|
a913c8f128 | ||
|
|
89ac556933 | ||
|
|
48c23c2f98 | ||
|
|
3f2a261a99 | ||
|
|
beb76c5879 | ||
|
|
bd22dc1b8b | ||
|
|
2258cd69a5 | ||
|
|
a523f9c0f7 | ||
|
|
ea41cf52de | ||
|
|
aec92f19ae | ||
|
|
df99e6ea8e | ||
|
|
d16166ffac | ||
|
|
1bd75c31ae | ||
|
|
8830da9908 | ||
|
|
fdc6c34c91 | ||
|
|
c6be86946e | ||
|
|
920c9a344a | ||
|
|
ec9f3b9e79 | ||
|
|
326e83a05d | ||
|
|
61c2b06021 | ||
|
|
60093404c1 | ||
|
|
228d3bba95 | ||
|
|
9f5dfc1a0a | ||
|
|
2b5c4561d1 | ||
|
|
4bdce171af | ||
|
|
1f68c8db00 |
9
.github/workflows/build.yml
vendored
9
.github/workflows/build.yml
vendored
@@ -292,10 +292,10 @@ jobs:
|
|||||||
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd "${OPENSSL_SOURCE_PATH}"
|
cd "${OPENSSL_SOURCE_PATH}"
|
||||||
if ([ "$RUNNER_OS" == "Windows" ] && [ "$RUNNER_ARCH" == "ARM64" ]); then
|
#if ([ "$RUNNER_OS" == "Windows" ] && [ "$RUNNER_ARCH" == "ARM64" ]); then
|
||||||
# https://github.com/openssl/openssl/issues/26239
|
# https://github.com/openssl/openssl/issues/26239
|
||||||
export CFLAGS=-DNO_INTERLOCKEDOR64
|
export CFLAGS=-DNO_INTERLOCKEDOR64
|
||||||
fi
|
#fi
|
||||||
# --libdir=lib is needed so Python can find OpenSSL libraries
|
# --libdir=lib is needed so Python can find OpenSSL libraries
|
||||||
"${PERL}" ./Configure --libdir=lib --prefix="${OPENSSL_INSTALL_PATH}" $OPENSSL_CONFIG_OPTS
|
"${PERL}" ./Configure --libdir=lib --prefix="${OPENSSL_INSTALL_PATH}" $OPENSSL_CONFIG_OPTS
|
||||||
|
|
||||||
@@ -462,7 +462,7 @@ jobs:
|
|||||||
curl -O -L "$latest_crypt_whl"
|
curl -O -L "$latest_crypt_whl"
|
||||||
"$PYTHON" -m pip install cryptography*.whl
|
"$PYTHON" -m pip install cryptography*.whl
|
||||||
|
|
||||||
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
#- uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||||
|
|
||||||
# - name: Compile cryptography from source (no legacy)
|
# - name: Compile cryptography from source (no legacy)
|
||||||
# if: runner.os != 'Windows' || runner.arch != 'ARM64'
|
# if: runner.os != 'Windows' || runner.arch != 'ARM64'
|
||||||
@@ -473,8 +473,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo "before anything..."
|
echo "before anything..."
|
||||||
"$PYTHON" -m pip list
|
"$PYTHON" -m pip list
|
||||||
"$PYTHON" -m pip install --upgrade -r requirements.txt
|
"$PYTHON" -m pip install --upgrade ..[yubikey]
|
||||||
echo "after requirements..."
|
|
||||||
"$PYTHON" -m pip list
|
"$PYTHON" -m pip list
|
||||||
#"$PYTHON" -m pip install --force-reinstall --no-deps --upgrade cryptography
|
#"$PYTHON" -m pip install --force-reinstall --no-deps --upgrade cryptography
|
||||||
echo "after everything..."
|
echo "after everything..."
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ authors = [
|
|||||||
{ name="Jay Lee", email="jay0lee@gmail.com" },
|
{ name="Jay Lee", email="jay0lee@gmail.com" },
|
||||||
{ name="Ross Scroggs", email="Ross.Scroggs@gmail.com" },
|
{ name="Ross Scroggs", email="Ross.Scroggs@gmail.com" },
|
||||||
]
|
]
|
||||||
# # The following files should be edited to match: setup.cfg, requirements.txt
|
# notice that yubikey-manager remains optional further down since it is less command and adds
|
||||||
|
#significant compile dependencies.
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"chardet>=5.2.0",
|
"chardet>=5.2.0",
|
||||||
"cryptography>=44.0.2",
|
"cryptography>=44.0.2",
|
||||||
@@ -22,7 +23,6 @@ dependencies = [
|
|||||||
"passlib>=1.7.4",
|
"passlib>=1.7.4",
|
||||||
"pathvalidate>=3.2.3",
|
"pathvalidate>=3.2.3",
|
||||||
"python-dateutil",
|
"python-dateutil",
|
||||||
"yubikey-manager>=5.6.1",
|
|
||||||
]
|
]
|
||||||
description = "CLI tool to manage Google Workspace"
|
description = "CLI tool to manage Google Workspace"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|||||||
@@ -622,6 +622,14 @@ If an item contains spaces, it should be surrounded by ".
|
|||||||
gs://<StorageBucketName>/<StorageObjectName>|
|
gs://<StorageBucketName>/<StorageObjectName>|
|
||||||
<StorageBucketName>/<StorageObjectName>
|
<StorageBucketName>/<StorageObjectName>
|
||||||
<Tag> ::= <String>
|
<Tag> ::= <String>
|
||||||
|
<TagManagerAccountID> ::= <String>
|
||||||
|
<TagManagerAccountPath> ::= accounts/<TagManagerAccountID>
|
||||||
|
<TagManagerContainerID> ::= <String>
|
||||||
|
<TagManagerContainerPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>
|
||||||
|
<TagManagerWorkspaceID> ::= <String>
|
||||||
|
<TagManagerWorkspacePath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>
|
||||||
|
<TagManagerTagID> ::= <String>
|
||||||
|
<TagManagerTagPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>/tags/<TagManagerTagID>
|
||||||
<TakeoutBucketName> ::= takeout-export-[a-f,0-9,-]*
|
<TakeoutBucketName> ::= takeout-export-[a-f,0-9,-]*
|
||||||
<TaskID> ::= <String>
|
<TaskID> ::= <String>
|
||||||
<TaskListID> ::= <String>
|
<TaskListID> ::= <String>
|
||||||
@@ -771,6 +779,9 @@ If an item contains spaces, it should be surrounded by ".
|
|||||||
<SharedDriveACLRoleList> ::= "<SharedDriveACLRole>(,<SharedDriveACLRole>)*"
|
<SharedDriveACLRoleList> ::= "<SharedDriveACLRole>(,<SharedDriveACLRole>)*"
|
||||||
<SharedDriveIDList> ::= "<SharedDriveID>(,<SharedDriveID>)*"
|
<SharedDriveIDList> ::= "<SharedDriveID>(,<SharedDriveID>)*"
|
||||||
<StringList> ::= "<String>(,<String>)*"
|
<StringList> ::= "<String>(,<String>)*"
|
||||||
|
<TagManagerAccountPathList> ::= "<TagManagerAccountPath>(,<TagManagerAccountPath>)*"
|
||||||
|
<TagManagerContainerPathList> ::= "<TagManagerContainerPath>(,<TagManagerContainerPath>)*"
|
||||||
|
<TagManagerWorkspacePathList> ::= "<TagManagerWorkspacePath>(,<TagManagerWorkspacePath>)*"
|
||||||
<TasklistIDList> ::= "<TasklistID>(,<TasklistID>)*"
|
<TasklistIDList> ::= "<TasklistID>(,<TasklistID>)*"
|
||||||
<TasklistTitleList> ::= "'<TasklistTitle>'(,'<TasklistTitle>')*"
|
<TasklistTitleList> ::= "'<TasklistTitle>'(,'<TasklistTitle>')*"
|
||||||
<TasklistIDTaskIDList> ::= "<TasklistIDTaskID>(,<TasklistIDTaskID>)*"
|
<TasklistIDTaskIDList> ::= "<TasklistIDTaskID>(,<TasklistIDTaskID>)*"
|
||||||
@@ -1026,7 +1037,10 @@ Specify a collection of items by directly specifying them; the item type is dete
|
|||||||
<CalendarEntity> ::=
|
<CalendarEntity> ::=
|
||||||
<CalendarList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
<CalendarList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||||
<ChromeProfileNameEntity> ::=
|
<ChromeProfileNameEntity> ::=
|
||||||
<ChromeProfileNameList> | <FileSelector> | <CSVFileSelector>
|
<ChromeProfileNameList> |
|
||||||
|
(select <FileSelector>|<CSVFileSelector>) |
|
||||||
|
(filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]) |
|
||||||
|
(commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>)
|
||||||
<CIPolicyNameEntity> ::=
|
<CIPolicyNameEntity> ::=
|
||||||
<CIPolicyNameList> | <FileSelector> | <CSVFileSelector>
|
<CIPolicyNameList> | <FileSelector> | <CSVFileSelector>
|
||||||
<ClassificationLabelNameEntity> ::=
|
<ClassificationLabelNameEntity> ::=
|
||||||
@@ -1229,6 +1243,15 @@ Specify a collection of items by directly specifying them; the item type is dete
|
|||||||
<SiteACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
<SiteACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||||
<SiteEntity> ::=
|
<SiteEntity> ::=
|
||||||
<SiteList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
<SiteList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||||
|
<TagManagerAccountPathEntity> ::=
|
||||||
|
<TagManagerAccountPathList> |
|
||||||
|
(select <FileSelector>|<CSVFileSelector>) |
|
||||||
|
<TagManagerContainerPathEntity> ::=
|
||||||
|
<TagManagerContainerPathList> |
|
||||||
|
(select <FileSelector>|<CSVFileSelector>) |
|
||||||
|
<TagManagerWorkspacePathEntity> ::=
|
||||||
|
<TagManagerWorkspacePathList> |
|
||||||
|
(select <FileSelector>|<CSVFileSelector>) |
|
||||||
<TasklistEntity> ::=
|
<TasklistEntity> ::=
|
||||||
<TasklistIDList> | <TaskListTitleList> | <FileSelector> | <CSVFileSelector>
|
<TasklistIDList> | <TaskListTitleList> | <FileSelector> | <CSVFileSelector>
|
||||||
<TasklistIDTaskIDEntity> ::=
|
<TasklistIDTaskIDEntity> ::=
|
||||||
@@ -4837,8 +4860,8 @@ gam <UserTypeEntity> sendemail from <EmailAddress>
|
|||||||
allowcontentmanagerstosharefolders|
|
allowcontentmanagerstosharefolders|
|
||||||
copyrequireswriterpermission|
|
copyrequireswriterpermission|
|
||||||
domainusersonly|
|
domainusersonly|
|
||||||
downloadrestrictedforreaders|
|
downloadrestrictedforreaders|downloadrestrictions.restrictedforreaders|
|
||||||
downloadrestrictedforwriters|
|
downloadrestrictedforwriters|downloadrestrictions.restrictedforwriters|
|
||||||
drivemembersonly|teammembersonly|
|
drivemembersonly|teammembersonly|
|
||||||
sharingfoldersrequiresorganizerpermission
|
sharingfoldersrequiresorganizerpermission
|
||||||
|
|
||||||
@@ -4855,7 +4878,7 @@ In these commands, the Google administrator named in oauth2.txt is used.
|
|||||||
gam show shareddrivethemes
|
gam show shareddrivethemes
|
||||||
gam create shareddrive <Name>
|
gam create shareddrive <Name>
|
||||||
[(theme|themeid <String>) | ([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
[(theme|themeid <String>) | ([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
||||||
(<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
([restrictions.]<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
||||||
[hide|hidden <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
[hide|hidden <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
||||||
[errorretries <Integer>] [updateinitialdelay <Integer>] [updateretrydelay <Integer>]
|
[errorretries <Integer>] [updateinitialdelay <Integer>] [updateretrydelay <Integer>]
|
||||||
[movetoorgunitdelay <Integer>]
|
[movetoorgunitdelay <Integer>]
|
||||||
@@ -4909,7 +4932,7 @@ In these commands, you specify an administrator and then indicate that you want
|
|||||||
|
|
||||||
gam <UserTypeEntity> create shareddrive <Name> adminaccess
|
gam <UserTypeEntity> create shareddrive <Name> adminaccess
|
||||||
[(theme|themeid <String>) | ([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
[(theme|themeid <String>) | ([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
||||||
(<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
([restrictions.]<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
||||||
[hide|hidden <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
[hide|hidden <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
||||||
[errorretries <Integer>] [updateinitialdelay <Integer>] [updateretrydelay <Integer>]
|
[errorretries <Integer>] [updateinitialdelay <Integer>] [updateretrydelay <Integer>]
|
||||||
[movetoorgunitdelay <Integer>]
|
[movetoorgunitdelay <Integer>]
|
||||||
@@ -4943,7 +4966,7 @@ In these commands, you specify a user, administrator access is not used.
|
|||||||
|
|
||||||
gam <UserTypeEntity> create shareddrive <Name>
|
gam <UserTypeEntity> create shareddrive <Name>
|
||||||
[(theme|themeid <String>) | ([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
[(theme|themeid <String>) | ([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
||||||
(<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
([restrictions.]<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
||||||
[hide|hidden <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
[hide|hidden <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
||||||
[errorretries <Integer>] [updateinitialdelay <Integer>] [updateretrydelay <Integer>]
|
[errorretries <Integer>] [updateinitialdelay <Integer>] [updateretrydelay <Integer>]
|
||||||
[movetoorgunitdelay <Integer>]
|
[movetoorgunitdelay <Integer>]
|
||||||
@@ -6574,6 +6597,7 @@ gam <UserTypeEntity> print chatemojis [todrive <ToDriveAttribute>*]
|
|||||||
(folderColorRgb <ColorValue>)|
|
(folderColorRgb <ColorValue>)|
|
||||||
(indexabletext <String>)|
|
(indexabletext <String>)|
|
||||||
(inheritedpermissionsdisabled [<Boolean>])|
|
(inheritedpermissionsdisabled [<Boolean>])|
|
||||||
|
(itemdownloadrestriction restrictedforreaders|restrictedforwriters [<Boolean>])|
|
||||||
(keeprevisionforever|pinned)|
|
(keeprevisionforever|pinned)|
|
||||||
(lastviewedbyme <Time>)|
|
(lastviewedbyme <Time>)|
|
||||||
(mimetype <MimeType>)|
|
(mimetype <MimeType>)|
|
||||||
@@ -7048,6 +7072,10 @@ gam <UserTypeEntity> collect orphans
|
|||||||
contentrestrictions.restrictiontime|
|
contentrestrictions.restrictiontime|
|
||||||
contentrestrictions.type
|
contentrestrictions.type
|
||||||
|
|
||||||
|
<DriveDownloadRestrictionsSubfieldName> ::=
|
||||||
|
downloadrestrictions.itemdownloadrestriction|
|
||||||
|
downloadrestrictions.effectivedownloadrestrictionwithcontext
|
||||||
|
|
||||||
<ClassificationLabelInfoSubfieldName> ::=
|
<ClassificationLabelInfoSubfieldName> ::=
|
||||||
labels.id| # modifiedByMe
|
labels.id| # modifiedByMe
|
||||||
labels.revisionid| # copyRequiresWriterPermission
|
labels.revisionid| # copyRequiresWriterPermission
|
||||||
@@ -7141,6 +7169,8 @@ gam <UserTypeEntity> collect orphans
|
|||||||
copyrequireswriterpermission|
|
copyrequireswriterpermission|
|
||||||
createddate|createdtime|
|
createddate|createdtime|
|
||||||
description|
|
description|
|
||||||
|
downloadrestictions|
|
||||||
|
<DriveDownloadRestrictionsSubfieldName>|
|
||||||
driveid|
|
driveid|
|
||||||
drivename|
|
drivename|
|
||||||
editable|
|
editable|
|
||||||
@@ -8337,6 +8367,59 @@ gam <UserTypeEntity> profile share|shared|unshare|unshared
|
|||||||
|
|
||||||
gam <UserTypeEntity> show profile
|
gam <UserTypeEntity> show profile
|
||||||
|
|
||||||
|
# Users - Tag Manager
|
||||||
|
|
||||||
|
<TagManagerAccountID> ::= <String>
|
||||||
|
<TagManagerAccountPath> ::= accounts/<TagManagerAccountID>
|
||||||
|
<TagManagerAccountPathList> ::= "<TagManagerAccountPath>(,<TagManagerAccountPath>)*"
|
||||||
|
<TagManagerAccountPathEntity> ::=
|
||||||
|
<TagManagerAccountPathList> |
|
||||||
|
(select <FileSelector>|<CSVFileSelector>) |
|
||||||
|
|
||||||
|
<TagManagerContainerID> ::= <String>
|
||||||
|
<TagManagerContainerPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>
|
||||||
|
<TagManagerContainerPathList> ::= "<TagManagerContainerPath>(,<TagManagerContainerPath>)*"
|
||||||
|
<TagManagerContainerPathEntity> ::=
|
||||||
|
<TagManagerContainerPathList> |
|
||||||
|
(select <FileSelector>|<CSVFileSelector>) |
|
||||||
|
|
||||||
|
<TagManagerWorkspaceID> ::= <String>
|
||||||
|
<TagManagerWorkspacePath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>
|
||||||
|
<TagManagerWorkspacePathList> ::= "<TagManagerWorkspacePath>(,<TagManagerWorkspacePath>)*"
|
||||||
|
<TagManagerWorkspacePathEntity> ::=
|
||||||
|
<TagManagerWorkspacePathList> |
|
||||||
|
(select <FileSelector>|<CSVFileSelector>) |
|
||||||
|
|
||||||
|
<TagManagerTagID> ::= <String>
|
||||||
|
<TagManagerTagPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>/tags/<TagManagerTagID>
|
||||||
|
|
||||||
|
gam <UserTypeEntity> show tagmanageraccounts
|
||||||
|
[includegoogletags [<Boolean>]]
|
||||||
|
[formatjson]
|
||||||
|
gam <UserTypeEntity> print tagmanagerccounts [todrive <ToDriveAttribute>*]
|
||||||
|
[includegoogletags [<Boolean>]]
|
||||||
|
[formatjson [quotechar <Character>]]
|
||||||
|
|
||||||
|
gam <UserTypeEntity> show tagmanagercontainers <TagManagerAccountPathEntity>
|
||||||
|
[formatjson]
|
||||||
|
gam <UserTypeEntity> print tagmanagercontainers <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
|
||||||
|
[formatjson [quotechar <Character>]]
|
||||||
|
|
||||||
|
gam <UserTypeEntity> show tagmanagerworkspaces <TagManagerContainerPathEntity>
|
||||||
|
[formatjson]
|
||||||
|
gam <UserTypeEntity> print tagmanagerworkspaces <TagManagerContainerPathEntity> [todrive <ToDriveAttribute>*]
|
||||||
|
[formatjson [quotechar <Character>]]
|
||||||
|
|
||||||
|
gam <UserTypeEntity> show tagmanagertags <TagManagerWorkspacePathEntity>
|
||||||
|
[formatjson]
|
||||||
|
gam <UserTypeEntity> print tagmanagertags <TagManagerWorkspacePathEntity> [todrive <ToDriveAttribute>*]
|
||||||
|
[formatjson [quotechar <Character>]]
|
||||||
|
|
||||||
|
gam <UserTypeEntity> show tagmanagerpermissions <TagManagerAccountPathEntity>
|
||||||
|
[formatjson]
|
||||||
|
gam <UserTypeEntity> print tagmanagerpermissions <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
|
||||||
|
[formatjson [quotechar <Character>]]
|
||||||
|
|
||||||
# Users - Tasks
|
# Users - Tasks
|
||||||
|
|
||||||
<TaskAttribute> ::=
|
<TaskAttribute> ::=
|
||||||
@@ -8399,8 +8482,8 @@ gam <UserTypeEntity> print tasklists [todrive <ToDriveAttribute>*]
|
|||||||
allowcontentmanagerstosharefolders|
|
allowcontentmanagerstosharefolders|
|
||||||
copyrequireswriterpermission|
|
copyrequireswriterpermission|
|
||||||
domainusersonly|
|
domainusersonly|
|
||||||
downloadrestrictedforreaders|
|
downloadrestrictedforreaders|downloadrestrictions.restrictedforreaders|
|
||||||
downloadrestrictedforwriters|
|
downloadrestrictedforwriters|downloadrestrictions.restrictedforwriters|
|
||||||
drivemembersonly|teammembersonly|
|
drivemembersonly|teammembersonly|
|
||||||
sharingfoldersrequiresorganizerpermission
|
sharingfoldersrequiresorganizerpermission
|
||||||
|
|
||||||
@@ -8415,13 +8498,13 @@ sharingfoldersrequiresorganizerpermission true
|
|||||||
gam <UserTypeEntity> show shareddrivethemes
|
gam <UserTypeEntity> show shareddrivethemes
|
||||||
gam <UserTypeEntity> create shareddrive <Name>
|
gam <UserTypeEntity> create shareddrive <Name>
|
||||||
[(theme|themeid <String>) | ([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
[(theme|themeid <String>) | ([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
||||||
(<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
([restrictions.]<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
||||||
[hide|hidden <Boolean>]
|
[hide|hidden <Boolean>]
|
||||||
[errorretries <Integer>] [updateinitialdelay <Integer>] [updateretrydelay <Integer>]
|
[errorretries <Integer>] [updateinitialdelay <Integer>] [updateretrydelay <Integer>]
|
||||||
[(csv [todrive <ToDriveAttribute>*] (addcsvdata <FieldName> <String>)*) | returnidonly]
|
[(csv [todrive <ToDriveAttribute>*] (addcsvdata <FieldName> <String>)*) | returnidonly]
|
||||||
gam <UserTypeEntity> update shareddrive <SharedDriveEntity> [name <Name>]
|
gam <UserTypeEntity> update shareddrive <SharedDriveEntity> [name <Name>]
|
||||||
[(theme|themeid <String>) | ([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
[(theme|themeid <String>) | ([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
||||||
(<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
([restrictions.]<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
||||||
[hide|hidden <Boolean>]
|
[hide|hidden <Boolean>]
|
||||||
gam <UserTypeEntity> delete shareddrive <SharedDriveEntity>
|
gam <UserTypeEntity> delete shareddrive <SharedDriveEntity>
|
||||||
[allowitemdeletion]
|
[allowitemdeletion]
|
||||||
@@ -8620,3 +8703,11 @@ gam <UserTypeEntity> print youtubechannels [todrive <ToDriveAttribute>*]
|
|||||||
gam create|add verify|verification <DomainName>
|
gam create|add verify|verification <DomainName>
|
||||||
gam update verify|verification <DomainName> cname|txt|text|site|file
|
gam update verify|verification <DomainName> cname|txt|text|site|file
|
||||||
gam info verify|verification
|
gam info verify|verification
|
||||||
|
|
||||||
|
# Web Resourses and Sites
|
||||||
|
|
||||||
|
gam <UserTypeEntity> show webresources
|
||||||
|
gam <UserTypeEntity> print webresources [todrive <ToDriveAttribute>*]
|
||||||
|
gam <UserTypeEntity> show webmastersites
|
||||||
|
gam <UserTypeEntity> print webmastersites [todrive <ToDriveAttribute>*]
|
||||||
|
```
|
||||||
|
|||||||
@@ -1,3 +1,106 @@
|
|||||||
|
7.17.02
|
||||||
|
|
||||||
|
Updated `gam <UserTypeEntity> print|show webmastersites` to handle the following error
|
||||||
|
that occurs if you haven't updated your project to include the Google Search Console API.
|
||||||
|
```
|
||||||
|
ERROR: 403: permissionDenied - Google Search Console API has not been used in project 111055363999 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/searchconsole.googleapis.com/overview?project=111055363999 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
|
||||||
|
```
|
||||||
|
|
||||||
|
7.17.01
|
||||||
|
|
||||||
|
Fixed bug in `gam <UserTypeEntity> show webmastersites` that caused a trap.
|
||||||
|
|
||||||
|
7.17.00
|
||||||
|
|
||||||
|
Added commands to discover Sites and WebResources that managed users (previously unmanaged) may have access to for better governance and visibility.
|
||||||
|
These are special purpose commands and will not generally be used.
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> show webresources
|
||||||
|
gam <UserTypeEntity> print webresources [todrive <ToDriveAttribute>*]
|
||||||
|
gam <UserTypeEntity> show webmastersites
|
||||||
|
gam <UserTypeEntity> print webmastersites [todrive <ToDriveAttribute>*]
|
||||||
|
```
|
||||||
|
|
||||||
|
7.16.01
|
||||||
|
|
||||||
|
The Drive API now supports setting download restrictions on individual files.
|
||||||
|
|
||||||
|
Added `downloadrestictions` and `<DriveDownloadRestrictionsSubfieldName>` to `<DriveFieldName>`.
|
||||||
|
```
|
||||||
|
<DriveDownloadRestrictionsSubfieldName> ::=
|
||||||
|
downloadrestrictions.itemdownloadrestriction|
|
||||||
|
downloadrestrictions.effectivedownloadrestrictionwithcontext
|
||||||
|
```
|
||||||
|
|
||||||
|
Added `itemdownloadrestriction restrictedforreaders|restrictedforwriters [<Boolean>]`
|
||||||
|
to `<DriveFileAttribute>`.
|
||||||
|
|
||||||
|
From the Drive API documentation:
|
||||||
|
```
|
||||||
|
itemDownloadRestriction - The download restriction of the file applied directly by the owner or organizer. This does not take into account shared drive settings or DLP rules.
|
||||||
|
effectiveDownloadRestrictionWithContext - Output only. The effective download restriction applied to this file. This considers all restriction settings and DLP rules.
|
||||||
|
restrictedForReaders - Whether download and copy is restricted for readers.
|
||||||
|
restrictedForWriters - Whether download and copy is restricted for writers. If true, download is also restricted for readers.
|
||||||
|
```
|
||||||
|
|
||||||
|
7.16.00
|
||||||
|
|
||||||
|
Removed `drive_v3_native_names` from `gam.cfg`; GAM now only uses Drive API v3 fields names on output.
|
||||||
|
If you had `drive_v3_native_names = False` in `gam.cfg` or are updating from Legacy GAM:
|
||||||
|
|
||||||
|
* See: https://github.com/GAM-team/GAM/wiki/Drive-REST-API-v3
|
||||||
|
|
||||||
|
7.15.01
|
||||||
|
|
||||||
|
Added `downloadrestrictions.restrictedforreaders` and `downloadrestrictions.restrictedforwriters`
|
||||||
|
to `<SharedDriveRestrictionsSubfieldName>`; previously, only the abbreviations `downloadrestrictedforreaders`
|
||||||
|
and `downloadrestrictedforwriters` were supported (they are still supported).
|
||||||
|
|
||||||
|
Updated `gam <UserTypeEntity> copy drivefile` to handle unexpected data returned by Google that caused a trap.
|
||||||
|
|
||||||
|
7.15.00
|
||||||
|
|
||||||
|
Updated `gam print shareddriveorganizers` to make `shownoorganizerdrives` default to `True`
|
||||||
|
as documented; it was defaulting to `False`.
|
||||||
|
|
||||||
|
Cleaned up code for processing Python dictionary structures; this should have no noticable effect.
|
||||||
|
|
||||||
|
7.14.04
|
||||||
|
|
||||||
|
Fixed bug in `gam print|show cigroups cimember <UserItem>` that generated the following error:
|
||||||
|
```
|
||||||
|
ERROR: Cloud Identity Group: groups/-, Print Failed: Error(4013): Insufficient permissions to retrieve memberships.
|
||||||
|
```
|
||||||
|
|
||||||
|
Updated `gam <UserTypeEntity> update user suspended off` and `gam <UserTypeEntity> unsuspend users`
|
||||||
|
to handle the following error that occurs when trying to unsuspend a user that has been suspended for abuse.
|
||||||
|
```
|
||||||
|
ERROR: 412: adminCannotUnsuspend - Cannot restore a user suspended for abuse.
|
||||||
|
```
|
||||||
|
|
||||||
|
* See: https://support.google.com/a/answer/1110339
|
||||||
|
|
||||||
|
7.14.03
|
||||||
|
|
||||||
|
Fixed bug in `gam print cigroup-members includederivedmembership` that caused a trap.
|
||||||
|
|
||||||
|
7.14.02
|
||||||
|
|
||||||
|
Fixed bug in `gam print|show cigroups|cigroups-members cimember <UserItem>` that generated the following error:
|
||||||
|
```
|
||||||
|
Cloud Identity Group Print Failed: Request contains an invalid argument.
|
||||||
|
```
|
||||||
|
|
||||||
|
7.14.01
|
||||||
|
|
||||||
|
Don't install yubikey library via pip by default. To install with yubikey support use pip install gam7[yubikey]
|
||||||
|
|
||||||
|
7.14.00
|
||||||
|
|
||||||
|
Added commands to display Google Tag Manager accounts, containers, workspaces, tags and user permissions.
|
||||||
|
|
||||||
|
* See: https://github.com/GAM-team/GAM/wiki/Users-Tag-Manager
|
||||||
|
|
||||||
7.13.03
|
7.13.03
|
||||||
|
|
||||||
Added option `csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]]`
|
Added option `csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]]`
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -85,6 +85,7 @@ PRINTERS = 'printers'
|
|||||||
PUBSUB = 'pubsub'
|
PUBSUB = 'pubsub'
|
||||||
REPORTS = 'reports'
|
REPORTS = 'reports'
|
||||||
RESELLER = 'reseller'
|
RESELLER = 'reseller'
|
||||||
|
SEARCHCONSOLE = 'searchconsole'
|
||||||
SERVICEACCOUNTLOOKUP = 'serviceaccountlookup'
|
SERVICEACCOUNTLOOKUP = 'serviceaccountlookup'
|
||||||
SERVICEMANAGEMENT = 'servicemanagement'
|
SERVICEMANAGEMENT = 'servicemanagement'
|
||||||
SERVICEUSAGE = 'serviceusage'
|
SERVICEUSAGE = 'serviceusage'
|
||||||
@@ -94,6 +95,8 @@ SITEVERIFICATION = 'siteVerification'
|
|||||||
STORAGE = 'storage'
|
STORAGE = 'storage'
|
||||||
STORAGEREAD = 'storageread'
|
STORAGEREAD = 'storageread'
|
||||||
STORAGEWRITE = 'storagewrite'
|
STORAGEWRITE = 'storagewrite'
|
||||||
|
TAGMANAGER = 'tagmanager'
|
||||||
|
TAGMANAGER_USERS = 'tagmanagerusers'
|
||||||
TASKS = 'tasks'
|
TASKS = 'tasks'
|
||||||
VAULT = 'vault'
|
VAULT = 'vault'
|
||||||
YOUTUBE = 'youtube'
|
YOUTUBE = 'youtube'
|
||||||
@@ -196,9 +199,11 @@ PROJECT_APIS = [
|
|||||||
'people.googleapis.com',
|
'people.googleapis.com',
|
||||||
'pubsub.googleapis.com',
|
'pubsub.googleapis.com',
|
||||||
'reseller.googleapis.com',
|
'reseller.googleapis.com',
|
||||||
|
'searchconsole.googleapis.com',
|
||||||
'sheets.googleapis.com',
|
'sheets.googleapis.com',
|
||||||
'siteverification.googleapis.com',
|
'siteverification.googleapis.com',
|
||||||
'storage-api.googleapis.com',
|
'storage-api.googleapis.com',
|
||||||
|
'tagmanager.googleapis.com',
|
||||||
'tasks.googleapis.com',
|
'tasks.googleapis.com',
|
||||||
'vault.googleapis.com',
|
'vault.googleapis.com',
|
||||||
'youtube.googleapis.com',
|
'youtube.googleapis.com',
|
||||||
@@ -268,6 +273,7 @@ _INFO = {
|
|||||||
PUBSUB: {'name': 'Pub / Sub API', 'version': 'v1', 'v2discovery': True},
|
PUBSUB: {'name': 'Pub / Sub API', 'version': 'v1', 'v2discovery': True},
|
||||||
REPORTS: {'name': 'Reports API', 'version': 'reports_v1', 'v2discovery': True, 'mappedAPI': 'admin'},
|
REPORTS: {'name': 'Reports API', 'version': 'reports_v1', 'v2discovery': True, 'mappedAPI': 'admin'},
|
||||||
RESELLER: {'name': 'Reseller API', 'version': 'v1', 'v2discovery': True},
|
RESELLER: {'name': 'Reseller API', 'version': 'v1', 'v2discovery': True},
|
||||||
|
SEARCHCONSOLE: {'name': 'Search Console API', 'version': 'v1', 'v2discovery': True},
|
||||||
SERVICEACCOUNTLOOKUP: {'name': 'Service Account Lookup pseudo-API', 'version': 'v1', 'v2discovery': True, 'localjson': True},
|
SERVICEACCOUNTLOOKUP: {'name': 'Service Account Lookup pseudo-API', 'version': 'v1', 'v2discovery': True, 'localjson': True},
|
||||||
SERVICEMANAGEMENT: {'name': 'Service Management API', 'version': 'v1', 'v2discovery': True},
|
SERVICEMANAGEMENT: {'name': 'Service Management API', 'version': 'v1', 'v2discovery': True},
|
||||||
SERVICEUSAGE: {'name': 'Service Usage API', 'version': 'v1', 'v2discovery': True},
|
SERVICEUSAGE: {'name': 'Service Usage API', 'version': 'v1', 'v2discovery': True},
|
||||||
@@ -277,6 +283,8 @@ _INFO = {
|
|||||||
STORAGE: {'name': 'Cloud Storage API', 'version': 'v1', 'v2discovery': True},
|
STORAGE: {'name': 'Cloud Storage API', 'version': 'v1', 'v2discovery': True},
|
||||||
STORAGEREAD: {'name': 'Cloud Storage API - Read', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE},
|
STORAGEREAD: {'name': 'Cloud Storage API - Read', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE},
|
||||||
STORAGEWRITE: {'name': 'Cloud Storage API - Write', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE},
|
STORAGEWRITE: {'name': 'Cloud Storage API - Write', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE},
|
||||||
|
TAGMANAGER: {'name': 'Tag Manager API - Accounts, Containers, Workspaces, Tags', '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},
|
TASKS: {'name': 'Tasks API', 'version': 'v1', 'v2discovery': True},
|
||||||
VAULT: {'name': 'Vault API', 'version': 'v1', 'v2discovery': True},
|
VAULT: {'name': 'Vault API', 'version': 'v1', 'v2discovery': True},
|
||||||
YOUTUBE: {'name': 'Youtube API', 'version': 'v3', 'v2discovery': True},
|
YOUTUBE: {'name': 'Youtube API', 'version': 'v3', 'v2discovery': True},
|
||||||
@@ -692,10 +700,30 @@ _SVCACCT_SCOPES = [
|
|||||||
'api': PEOPLE_OTHERCONTACTS,
|
'api': PEOPLE_OTHERCONTACTS,
|
||||||
'subscopes': [],
|
'subscopes': [],
|
||||||
'scope': 'https://www.googleapis.com/auth/contacts.other.readonly'},
|
'scope': 'https://www.googleapis.com/auth/contacts.other.readonly'},
|
||||||
|
{'name': 'Search Console API - read only',
|
||||||
|
'api': SEARCHCONSOLE,
|
||||||
|
'subscopes': [],
|
||||||
|
'offByDefault': True,
|
||||||
|
'scope': 'https://www.googleapis.com/auth/webmasters.readonly'},
|
||||||
{'name': 'Sheets API',
|
{'name': 'Sheets API',
|
||||||
'api': SHEETS,
|
'api': SHEETS,
|
||||||
'subscopes': READONLY,
|
'subscopes': READONLY,
|
||||||
'scope': 'https://www.googleapis.com/auth/spreadsheets'},
|
'scope': 'https://www.googleapis.com/auth/spreadsheets'},
|
||||||
|
{'name': 'Site Verification API',
|
||||||
|
'api': SITEVERIFICATION,
|
||||||
|
'subscopes': [],
|
||||||
|
'offByDefault': True,
|
||||||
|
'scope': 'https://www.googleapis.com/auth/siteverification'},
|
||||||
|
{'name': 'Tag Manager API - Accounts, Containers, Workspaces, Tags - 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',
|
{'name': 'Tasks API',
|
||||||
'api': TASKS,
|
'api': TASKS,
|
||||||
'subscopes': READONLY,
|
'subscopes': READONLY,
|
||||||
@@ -735,56 +763,6 @@ _USER_SVCACCT_ONLY_SCOPES = [
|
|||||||
'scope': 'https://www.googleapis.com/auth/apps.groups.migration'},
|
'scope': 'https://www.googleapis.com/auth/apps.groups.migration'},
|
||||||
]
|
]
|
||||||
|
|
||||||
DRIVE3_TO_DRIVE2_ABOUT_FIELDS_MAP = {
|
|
||||||
'displayName': 'name',
|
|
||||||
'limit': 'quotaBytesTotal',
|
|
||||||
'usage': 'quotaBytesUsedAggregate',
|
|
||||||
'usageInDrive': 'quotaBytesUsed',
|
|
||||||
'usageInDriveTrash': 'quotaBytesUsedInTrash',
|
|
||||||
}
|
|
||||||
|
|
||||||
DRIVE3_TO_DRIVE2_CAPABILITIES_FIELDS_MAP = {
|
|
||||||
'canComment': 'canComment',
|
|
||||||
'canReadRevisions': 'canReadRevisions',
|
|
||||||
'canCopy': 'copyable',
|
|
||||||
'canEdit': 'editable',
|
|
||||||
'canShare': 'shareable',
|
|
||||||
}
|
|
||||||
|
|
||||||
DRIVE3_TO_DRIVE2_CAPABILITIES_NAMES_MAP = {
|
|
||||||
'canChangeViewersCanCopyContent': 'canChangeRestrictedDownload',
|
|
||||||
}
|
|
||||||
|
|
||||||
DRIVE3_TO_DRIVE2_FILES_FIELDS_MAP = {
|
|
||||||
'allowFileDiscovery': 'withLink',
|
|
||||||
'createdTime': 'createdDate',
|
|
||||||
'expirationTime': 'expirationDate',
|
|
||||||
'modifiedByMe': 'modified',
|
|
||||||
'modifiedByMeTime': 'modifiedByMeDate',
|
|
||||||
'modifiedTime': 'modifiedDate',
|
|
||||||
'name': 'title',
|
|
||||||
'restrictionTime': 'restrictionDate',
|
|
||||||
'sharedWithMeTime': 'sharedWithMeDate',
|
|
||||||
'size': 'fileSize',
|
|
||||||
'trashedTime': 'trashedDate',
|
|
||||||
'viewedByMe': 'viewed',
|
|
||||||
'viewedByMeTime': 'lastViewedByMeDate',
|
|
||||||
'webViewLink': 'alternateLink',
|
|
||||||
}
|
|
||||||
|
|
||||||
DRIVE3_TO_DRIVE2_LABELS_MAP = {
|
|
||||||
'modifiedByMe': 'modified',
|
|
||||||
'starred': 'starred',
|
|
||||||
'trashed': 'trashed',
|
|
||||||
'viewedByMe': 'viewed',
|
|
||||||
}
|
|
||||||
|
|
||||||
DRIVE3_TO_DRIVE2_REVISIONS_FIELDS_MAP = {
|
|
||||||
'modifiedTime': 'modifiedDate',
|
|
||||||
'keepForever': 'pinned',
|
|
||||||
'size': 'fileSize',
|
|
||||||
}
|
|
||||||
|
|
||||||
def getAPIName(api):
|
def getAPIName(api):
|
||||||
return _INFO[api]['name']
|
return _INFO[api]['name']
|
||||||
|
|
||||||
|
|||||||
@@ -155,8 +155,6 @@ DRIVE_DIR = 'drive_dir'
|
|||||||
DRIVE_MAX_RESULTS = 'drive_max_results'
|
DRIVE_MAX_RESULTS = 'drive_max_results'
|
||||||
# Use Drive V3 beta
|
# Use Drive V3 beta
|
||||||
DRIVE_V3_BETA = 'drive_v3_beta'
|
DRIVE_V3_BETA = 'drive_v3_beta'
|
||||||
# Use Drive V3 ntive names
|
|
||||||
DRIVE_V3_NATIVE_NAMES = 'drive_v3_native_names'
|
|
||||||
# When processing email messages in batches, how many should be processed in each batch
|
# When processing email messages in batches, how many should be processed in each batch
|
||||||
EMAIL_BATCH_SIZE = 'email_batch_size'
|
EMAIL_BATCH_SIZE = 'email_batch_size'
|
||||||
# Enable Delegated Admin Service Account
|
# Enable Delegated Admin Service Account
|
||||||
@@ -382,7 +380,6 @@ Defaults = {
|
|||||||
ENFORCE_EXPANSIVE_ACCESS: TRUE,
|
ENFORCE_EXPANSIVE_ACCESS: TRUE,
|
||||||
DRIVE_MAX_RESULTS: '1000',
|
DRIVE_MAX_RESULTS: '1000',
|
||||||
DRIVE_V3_BETA: FALSE,
|
DRIVE_V3_BETA: FALSE,
|
||||||
DRIVE_V3_NATIVE_NAMES: TRUE,
|
|
||||||
EMAIL_BATCH_SIZE: '50',
|
EMAIL_BATCH_SIZE: '50',
|
||||||
ENABLE_DASA: FALSE,
|
ENABLE_DASA: FALSE,
|
||||||
ENABLE_GCLOUD_REAUTH: FALSE,
|
ENABLE_GCLOUD_REAUTH: FALSE,
|
||||||
@@ -551,7 +548,6 @@ VAR_INFO = {
|
|||||||
ENFORCE_EXPANSIVE_ACCESS: {VAR_TYPE: TYPE_BOOLEAN},
|
ENFORCE_EXPANSIVE_ACCESS: {VAR_TYPE: TYPE_BOOLEAN},
|
||||||
DRIVE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 1000)},
|
DRIVE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 1000)},
|
||||||
DRIVE_V3_BETA: {VAR_TYPE: TYPE_BOOLEAN},
|
DRIVE_V3_BETA: {VAR_TYPE: TYPE_BOOLEAN},
|
||||||
DRIVE_V3_NATIVE_NAMES: {VAR_TYPE: TYPE_BOOLEAN},
|
|
||||||
EMAIL_BATCH_SIZE: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 100)},
|
EMAIL_BATCH_SIZE: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 100)},
|
||||||
ENABLE_DASA: {VAR_TYPE: TYPE_BOOLEAN, VAR_SIGFILE: 'enabledasa.txt', VAR_SFFT: (FALSE, TRUE)},
|
ENABLE_DASA: {VAR_TYPE: TYPE_BOOLEAN, VAR_SIGFILE: 'enabledasa.txt', VAR_SFFT: (FALSE, TRUE)},
|
||||||
ENABLE_GCLOUD_REAUTH: {VAR_TYPE: TYPE_BOOLEAN},
|
ENABLE_GCLOUD_REAUTH: {VAR_TYPE: TYPE_BOOLEAN},
|
||||||
|
|||||||
@@ -782,6 +782,16 @@ class GamCLArgs():
|
|||||||
ARG_SUSPENDED = 'suspended'
|
ARG_SUSPENDED = 'suspended'
|
||||||
ARG_SVCACCT = 'svcacct'
|
ARG_SVCACCT = 'svcacct'
|
||||||
ARG_SVCACCTS = 'svcaccts'
|
ARG_SVCACCTS = 'svcaccts'
|
||||||
|
ARG_TAGMANAGERACCOUNT = 'tagmanageraccount'
|
||||||
|
ARG_TAGMANAGERACCOUNTS = 'tagmanageraccounts'
|
||||||
|
ARG_TAGMANAGERCONTAINER = 'tagmanagercontainer'
|
||||||
|
ARG_TAGMANAGERCONTAINERS = 'tagmanagercontainers'
|
||||||
|
ARG_TAGMANAGERPERMISSION = 'tagmanagerpermission'
|
||||||
|
ARG_TAGMANAGERPERMISSIONS = 'tagmanagerpermissions'
|
||||||
|
ARG_TAGMANAGERTAG = 'tagmanagertag'
|
||||||
|
ARG_TAGMANAGERTAGS = 'tagmanagertags'
|
||||||
|
ARG_TAGMANAGERWORKSPACE = 'tagmanagerworkspace'
|
||||||
|
ARG_TAGMANAGERWORKSPACES = 'tagmanagerworkspaces'
|
||||||
ARG_TASK = 'task'
|
ARG_TASK = 'task'
|
||||||
ARG_TASKS = 'tasks'
|
ARG_TASKS = 'tasks'
|
||||||
ARG_TASKLIST = 'tasklist'
|
ARG_TASKLIST = 'tasklist'
|
||||||
@@ -820,6 +830,10 @@ class GamCLArgs():
|
|||||||
ARG_VERIFICATION = 'verification'
|
ARG_VERIFICATION = 'verification'
|
||||||
ARG_VERIFICATIONCODES = 'verificationcodes'
|
ARG_VERIFICATIONCODES = 'verificationcodes'
|
||||||
ARG_VERIFY = 'verify'
|
ARG_VERIFY = 'verify'
|
||||||
|
ARG_WEBMASTERSITE = 'webmastersite'
|
||||||
|
ARG_WEBMASTERSITES = 'webmastersites'
|
||||||
|
ARG_WEBRESOURCE = 'webresource'
|
||||||
|
ARG_WEBRESOURCES = 'webresources'
|
||||||
ARG_WORKINGLOCATION = 'workinglocation'
|
ARG_WORKINGLOCATION = 'workinglocation'
|
||||||
ARG_WORKINGLOCATIONS = 'workinglocations'
|
ARG_WORKINGLOCATIONS = 'workinglocations'
|
||||||
ARG_YOUTUBECHANNEL = 'youtubechannel'
|
ARG_YOUTUBECHANNEL = 'youtubechannel'
|
||||||
@@ -1039,6 +1053,7 @@ class GamCLArgs():
|
|||||||
OB_STRING_LIST = 'StringList'
|
OB_STRING_LIST = 'StringList'
|
||||||
OB_STUDENT_ITEM = 'StudentItem'
|
OB_STUDENT_ITEM = 'StudentItem'
|
||||||
OB_TAG = 'Tag'
|
OB_TAG = 'Tag'
|
||||||
|
OB_TAGMANAGER_PATH_LIST = 'TagManagerPathList'
|
||||||
OB_TASK_ID = 'TaskID'
|
OB_TASK_ID = 'TaskID'
|
||||||
OB_TASKLIST_ID = 'TaskListID'
|
OB_TASKLIST_ID = 'TaskListID'
|
||||||
OB_TASKLIST_ID_ENTITY = 'TaskListIDEntity'
|
OB_TASKLIST_ID_ENTITY = 'TaskListIDEntity'
|
||||||
|
|||||||
@@ -358,6 +358,11 @@ class GamEntity():
|
|||||||
SUBSCRIPTION = 'subs'
|
SUBSCRIPTION = 'subs'
|
||||||
SVCACCT = 'svac'
|
SVCACCT = 'svac'
|
||||||
SVCACCT_KEY = 'svky'
|
SVCACCT_KEY = 'svky'
|
||||||
|
TAGMANAGER_ACCOUNT = 'tmac'
|
||||||
|
TAGMANAGER_CONTAINER = 'tmco'
|
||||||
|
TAGMANAGER_PERMISSION = 'tmpm'
|
||||||
|
TAGMANAGER_TAG = 'tmtg'
|
||||||
|
TAGMANAGER_WORKSPACE = 'tmws'
|
||||||
TARGET_USER = 'tgt '
|
TARGET_USER = 'tgt '
|
||||||
TASK = 'task'
|
TASK = 'task'
|
||||||
TASKLIST = 'tali'
|
TASKLIST = 'tali'
|
||||||
@@ -389,6 +394,8 @@ class GamEntity():
|
|||||||
VAULT_MATTER_ID = 'vlmi'
|
VAULT_MATTER_ID = 'vlmi'
|
||||||
VAULT_OPERATION = 'vlto'
|
VAULT_OPERATION = 'vlto'
|
||||||
VAULT_QUERY = 'vltq'
|
VAULT_QUERY = 'vltq'
|
||||||
|
WEB_MASTERSITE = 'wems'
|
||||||
|
WEB_RESOURCE = 'were'
|
||||||
WEBCLIPS_ENABLED = 'webc'
|
WEBCLIPS_ENABLED = 'webc'
|
||||||
YOUTUBE_CHANNEL = 'ytch'
|
YOUTUBE_CHANNEL = 'ytch'
|
||||||
# _NAMES[0] is plural, _NAMES[1] is singular unless the item name is explicitly plural (Calendar Settings)
|
# _NAMES[0] is plural, _NAMES[1] is singular unless the item name is explicitly plural (Calendar Settings)
|
||||||
@@ -710,6 +717,11 @@ class GamEntity():
|
|||||||
SUBSCRIPTION: ['Subscriptions', 'Subscription'],
|
SUBSCRIPTION: ['Subscriptions', 'Subscription'],
|
||||||
SVCACCT: ['Service Accounts', 'Service Account'],
|
SVCACCT: ['Service Accounts', 'Service Account'],
|
||||||
SVCACCT_KEY: ['Service Account Keys', 'Service Account Key'],
|
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_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'],
|
TARGET_USER: ['Target Users', 'Target User'],
|
||||||
TASK: ['Tasks', 'Task'],
|
TASK: ['Tasks', 'Task'],
|
||||||
TASKLIST: ['Tasklists', 'Tasklist'],
|
TASKLIST: ['Tasklists', 'Tasklist'],
|
||||||
@@ -742,6 +754,8 @@ class GamEntity():
|
|||||||
VAULT_OPERATION: ['Vault Operations', 'Vault Operation'],
|
VAULT_OPERATION: ['Vault Operations', 'Vault Operation'],
|
||||||
VAULT_QUERY: ['Vault Queries', 'Vault Query'],
|
VAULT_QUERY: ['Vault Queries', 'Vault Query'],
|
||||||
WEBCLIPS_ENABLED: ['Web Clips Enabled', 'Web Clips Enabled'],
|
WEBCLIPS_ENABLED: ['Web Clips Enabled', 'Web Clips Enabled'],
|
||||||
|
WEB_MASTERSITE: ['Web Master Sites', 'Web Master Site'],
|
||||||
|
WEB_RESOURCE: ['Web Resources', 'Web Resource'],
|
||||||
YOUTUBE_CHANNEL: ['YouTube Channels', 'YouTube Channel'],
|
YOUTUBE_CHANNEL: ['YouTube Channels', 'YouTube Channel'],
|
||||||
ROLE_MANAGER: ['Managers', 'Manager'],
|
ROLE_MANAGER: ['Managers', 'Manager'],
|
||||||
ROLE_MEMBER: ['Members', 'Member'],
|
ROLE_MEMBER: ['Members', 'Member'],
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
ABORTED = 'aborted'
|
ABORTED = 'aborted'
|
||||||
ABUSIVE_CONTENT_RESTRICTION = 'abusiveContentRestriction'
|
ABUSIVE_CONTENT_RESTRICTION = 'abusiveContentRestriction'
|
||||||
ACCESS_NOT_CONFIGURED = 'accessNotConfigured'
|
ACCESS_NOT_CONFIGURED = 'accessNotConfigured'
|
||||||
|
ADMIN_CANNOT_UNSUSPEND = 'adminCannotUnsuspend'
|
||||||
ALREADY_EXISTS = 'alreadyExists'
|
ALREADY_EXISTS = 'alreadyExists'
|
||||||
APPLY_LABEL_FORBIDDEN = 'applyLabelForbidden'
|
APPLY_LABEL_FORBIDDEN = 'applyLabelForbidden'
|
||||||
AUTH_ERROR = 'authError'
|
AUTH_ERROR = 'authError'
|
||||||
@@ -287,6 +288,7 @@ PEOPLE_ACCESS_THROW_REASONS = [SERVICE_NOT_AVAILABLE, FORBIDDEN, PERMISSION_DENI
|
|||||||
RESELLER_THROW_REASONS = [BAD_REQUEST, RESOURCE_NOT_FOUND, FORBIDDEN, INVALID]
|
RESELLER_THROW_REASONS = [BAD_REQUEST, RESOURCE_NOT_FOUND, FORBIDDEN, INVALID]
|
||||||
SHEETS_ACCESS_THROW_REASONS = DRIVE_USER_THROW_REASONS+[NOT_FOUND, PERMISSION_DENIED, FORBIDDEN, INTERNAL_ERROR, INSUFFICIENT_FILE_PERMISSIONS,
|
SHEETS_ACCESS_THROW_REASONS = DRIVE_USER_THROW_REASONS+[NOT_FOUND, PERMISSION_DENIED, FORBIDDEN, INTERNAL_ERROR, INSUFFICIENT_FILE_PERMISSIONS,
|
||||||
BAD_REQUEST, INVALID, INVALID_ARGUMENT, FAILED_PRECONDITION]
|
BAD_REQUEST, INVALID, INVALID_ARGUMENT, FAILED_PRECONDITION]
|
||||||
|
TAGMANAGER_THROW_REASONS = [BAD_REQUEST, PERMISSION_DENIED, INVALID, NOT_FOUND, ACCESS_NOT_CONFIGURED]
|
||||||
TASK_THROW_REASONS = [BAD_REQUEST, PERMISSION_DENIED, INVALID, NOT_FOUND, ACCESS_NOT_CONFIGURED]
|
TASK_THROW_REASONS = [BAD_REQUEST, PERMISSION_DENIED, INVALID, NOT_FOUND, ACCESS_NOT_CONFIGURED]
|
||||||
TASKLIST_THROW_REASONS = [BAD_REQUEST, PERMISSION_DENIED, INVALID, NOT_FOUND, ACCESS_NOT_CONFIGURED]
|
TASKLIST_THROW_REASONS = [BAD_REQUEST, PERMISSION_DENIED, INVALID, NOT_FOUND, ACCESS_NOT_CONFIGURED]
|
||||||
USER_GET_THROW_REASONS = [USER_NOT_FOUND, DOMAIN_NOT_FOUND, DOMAIN_CANNOT_USE_APIS, FORBIDDEN, BAD_REQUEST, SYSTEM_ERROR]
|
USER_GET_THROW_REASONS = [USER_NOT_FOUND, DOMAIN_NOT_FOUND, DOMAIN_CANNOT_USE_APIS, FORBIDDEN, BAD_REQUEST, SYSTEM_ERROR]
|
||||||
@@ -367,6 +369,8 @@ class abusiveContentRestriction(Exception):
|
|||||||
pass
|
pass
|
||||||
class accessNotConfigured(Exception):
|
class accessNotConfigured(Exception):
|
||||||
pass
|
pass
|
||||||
|
class adminCannotUnsuspend(Exception):
|
||||||
|
pass
|
||||||
class alreadyExists(Exception):
|
class alreadyExists(Exception):
|
||||||
pass
|
pass
|
||||||
class applyLabelForbidden(Exception):
|
class applyLabelForbidden(Exception):
|
||||||
@@ -688,6 +692,7 @@ REASON_EXCEPTION_MAP = {
|
|||||||
ABORTED: aborted,
|
ABORTED: aborted,
|
||||||
ABUSIVE_CONTENT_RESTRICTION: abusiveContentRestriction,
|
ABUSIVE_CONTENT_RESTRICTION: abusiveContentRestriction,
|
||||||
ACCESS_NOT_CONFIGURED: accessNotConfigured,
|
ACCESS_NOT_CONFIGURED: accessNotConfigured,
|
||||||
|
ADMIN_CANNOT_UNSUSPEND: adminCannotUnsuspend,
|
||||||
ALREADY_EXISTS: alreadyExists,
|
ALREADY_EXISTS: alreadyExists,
|
||||||
APPLY_LABEL_FORBIDDEN: applyLabelForbidden,
|
APPLY_LABEL_FORBIDDEN: applyLabelForbidden,
|
||||||
AUTH_ERROR: authError,
|
AUTH_ERROR: authError,
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
chardet>=5.2.0
|
|
||||||
cryptography>=44.0.2
|
|
||||||
distro; sys_platform=='linux'
|
|
||||||
filelock>=3.18.0
|
|
||||||
google-api-python-client>=2.167.0
|
|
||||||
google-auth-httplib2>=0.2.0
|
|
||||||
google-auth-oauthlib>=1.2.2
|
|
||||||
google-auth>=2.39.0
|
|
||||||
httplib2>=0.22.0
|
|
||||||
lxml>=5.4.0
|
|
||||||
passlib>=1.7.4
|
|
||||||
pathvalidate>=3.2.3
|
|
||||||
python-dateutil
|
|
||||||
yubikey-manager>=5.6.1
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
[metadata]
|
|
||||||
name = GAM for Google Workspace
|
|
||||||
#version = attr: gam.var.GAM_VERSION
|
|
||||||
version = 7.13.02
|
|
||||||
description = Command line management for Google Workspaces
|
|
||||||
long_description = file: readme.md
|
|
||||||
long_description_content_type = text/markdown
|
|
||||||
url = https://github.com/GAM-team/GAM
|
|
||||||
author = GAM Team
|
|
||||||
author_email = google-apps-manager@googlegroups.com
|
|
||||||
license = Apache
|
|
||||||
license_files = LICENSE
|
|
||||||
keywords = google, oauth2, gsuite, google-apps, google-admin-sdk, google-drive, google-cloud, google-calendar, gam, google-api, oauth2-client, google-workspace
|
|
||||||
classifiers =
|
|
||||||
Programming Language :: Python :: 3
|
|
||||||
Programming Language :: Python :: 3 :: Only
|
|
||||||
Programming Language :: Python :: 3.9
|
|
||||||
Programming Language :: Python :: 3.10
|
|
||||||
Programming Language :: Python :: 3.11
|
|
||||||
Programming Language :: Python :: 3.12
|
|
||||||
Programming Language :: Python :: 3.13
|
|
||||||
License :: OSI Approved :: Apache License
|
|
||||||
|
|
||||||
[options]
|
|
||||||
packages = find:
|
|
||||||
python_requires = >= 3.9
|
|
||||||
# The following files should be edited to match: pyproject.toml, requirements.txt
|
|
||||||
install_requires =
|
|
||||||
chardet >= 5.2.0
|
|
||||||
cryptography >= 44.0.2
|
|
||||||
distro; sys_platform == 'linux'
|
|
||||||
filelock >= 3.18.0
|
|
||||||
google-api-python-client >= 2.167.0
|
|
||||||
google-auth-httplib2 >= 0.2.0
|
|
||||||
google-auth-oauthlib >= 1.2.2
|
|
||||||
google-auth >= 2.39.0
|
|
||||||
httplib2 >= 0.22.0
|
|
||||||
lxml >= 5.4.0
|
|
||||||
passlib >= 1.7.4
|
|
||||||
pathvalidate >= 3.2.3
|
|
||||||
python-dateutil
|
|
||||||
yubikey-manager >= 5.6.1
|
|
||||||
|
|
||||||
[options.package_data]
|
|
||||||
* = *.pem
|
|
||||||
|
|
||||||
# used during pip install .[test]
|
|
||||||
[options.extras_require]
|
|
||||||
test = pre-commit
|
|
||||||
|
|
||||||
[options.entry_points]
|
|
||||||
console_scripts =
|
|
||||||
gam = gam.__main__:main
|
|
||||||
|
|
||||||
[bdist_wheel]
|
|
||||||
universal = True
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
from setuptools import setup
|
|
||||||
|
|
||||||
setup()
|
|
||||||
@@ -519,6 +519,14 @@
|
|||||||
gs://<StorageBucketName>/<StorageObjectName>|
|
gs://<StorageBucketName>/<StorageObjectName>|
|
||||||
<StorageBucketName>/<StorageObjectName>
|
<StorageBucketName>/<StorageObjectName>
|
||||||
<Tag> ::= <String>
|
<Tag> ::= <String>
|
||||||
|
<TagManagerAccountID> ::= <String>
|
||||||
|
<TagManagerAccountPath> ::= accounts/<TagManagerAccountID>
|
||||||
|
<TagManagerContainerID> ::= <String>
|
||||||
|
<TagManagerContainerPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>
|
||||||
|
<TagManagerWorkspaceID> ::= <String>
|
||||||
|
<TagManagerWorkspacePath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>
|
||||||
|
<TagManagerTagID> ::= <String>
|
||||||
|
<TagManagerTagPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>/tags/<TagManagerTagID>
|
||||||
<TakeoutBucketName> ::= takeout-export-[a-f,0-9,-]*
|
<TakeoutBucketName> ::= takeout-export-[a-f,0-9,-]*
|
||||||
<TaskID> ::= <String>
|
<TaskID> ::= <String>
|
||||||
<TaskListID> ::= <String>
|
<TaskListID> ::= <String>
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ GAM is capable of acting as a Chat Bot and sending messages to Chat Rooms or dir
|
|||||||
Even if you're not going to use GAM as a Chat Bot, you have to configure a Chat Bot as it is required by the Chat API in [Users - Chat](Users-Chat).
|
Even if you're not going to use GAM as a Chat Bot, you have to configure a Chat Bot as it is required by the Chat API in [Users - Chat](Users-Chat).
|
||||||
|
|
||||||
* Run the command `gam setup chat`; it will point you to a URL to configure your Chat Bot.
|
* Run the command `gam setup chat`; it will point you to a URL to configure your Chat Bot.
|
||||||
|
* Uncheck "Build this Chat app as a Workspace add-on."
|
||||||
* Enter an App name and Description of your choosing.
|
* Enter an App name and Description of your choosing.
|
||||||
* For the Avatar URL you can use `https://dummyimage.com/384x256/4d4d4d/0011ff.png&text=+GAM` or a public URL to an image of your own choosing.
|
* For the Avatar URL you can use `https://dummyimage.com/384x256/4d4d4d/0011ff.png&text=+GAM` or a public URL to an image of your own choosing.
|
||||||
* In Functionality, uncheck both "Receive 1:1 messages" and "Join spaces and group conversations"
|
* In Functionality, uncheck both "Receive 1:1 messages" and "Join spaces and group conversations"
|
||||||
|
|||||||
@@ -34,12 +34,14 @@ Follow instructions at: Turn on managed profile reporting
|
|||||||
<CustomerID> ::= <String>
|
<CustomerID> ::= <String>
|
||||||
<ChromeProfilePermanentID> ::= <String>
|
<ChromeProfilePermanentID> ::= <String>
|
||||||
<ChromeProfileName> ::= customers/<CustomerID>/profiles/<ChromeProfilePermanentID> | <ChromeProfilePermanentID>
|
<ChromeProfileName> ::= customers/<CustomerID>/profiles/<ChromeProfilePermanentID> | <ChromeProfilePermanentID>
|
||||||
<ChromeProfileCommandName> ::= <ChomeProfileName>/commands/<String>
|
|
||||||
<ChromeProfileNameList> ::= "<ChromeProfileName>(,<ChromeProfileName>)*"
|
<ChromeProfileNameList> ::= "<ChromeProfileName>(,<ChromeProfileName>)*"
|
||||||
|
<ChromeProfileCommandName> ::= <ChomeProfileName>/commands/<String>
|
||||||
|
<ChromeProfileCommandNameList> ::= "<ChromeProfileCommandName>(,<ChromeProfileCommandName>)*"
|
||||||
<ChromeProfileNameEntity> ::=
|
<ChromeProfileNameEntity> ::=
|
||||||
<ChromeProfileNameList> |
|
<ChromeProfileNameList> |
|
||||||
(select <FileSelector>|<CSVFileSelector>) |
|
(select <FileSelector>|<CSVFileSelector>) |
|
||||||
(filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]])
|
(filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]) |
|
||||||
|
(commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>)
|
||||||
|
|
||||||
<ChromeProfileFieldName> ::=
|
<ChromeProfileFieldName> ::=
|
||||||
affiliationstate|
|
affiliationstate|
|
||||||
@@ -209,12 +211,16 @@ gam print chromeprofiles filter "osPlatformType=WINDOWS"
|
|||||||
```
|
```
|
||||||
<ChromeProfileNameEntity> ::=
|
<ChromeProfileNameEntity> ::=
|
||||||
<ChromeProfileNameList> |
|
<ChromeProfileNameList> |
|
||||||
(select <FileSelector>|<CSVFileSelector>) |
|
(select <ChromeProfileNameList>|<FileSelector>|<CSVFileSelector>) |
|
||||||
(filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]])
|
(filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]) |
|
||||||
|
(commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>)
|
||||||
```
|
```
|
||||||
* `<ChromeProfileNameList>` - List of Chrome profile names
|
* `<ChromeProfileNameList>` - A list of Chrome profile names
|
||||||
|
* `select <ChromeProfileNameList>` - A list of Chrome profile names
|
||||||
* `select <FileSelector>|<CSVFileSelector>` - A flat or CSV file containing Chrome profile names
|
* `select <FileSelector>|<CSVFileSelector>` - A flat or CSV file containing Chrome profile names
|
||||||
* `filter <String> (filtertime<String> <Time>)*` - A filter to select Chrome profiles
|
* `filter <String> (filtertime<String> <Time>)*` - A filter to select Chrome profiles
|
||||||
|
* `commands <ChromeProfileCommandNameList>` - A list of Chrome profile command names
|
||||||
|
* `commands <FileSelector>|<CSVFileSelector>` - A flat or CSV file containing Chrome profile command names
|
||||||
|
|
||||||
Use the `filtertime<String> <Time>` option to allow times, usually relative, to be substituted into the `filter <String>` option.
|
Use the `filtertime<String> <Time>` option to allow times, usually relative, to be substituted into the `filter <String>` option.
|
||||||
The `filtertime<String> <Time>` value replaces the string `#filtertime<String>#` in the `filter <String>`.
|
The `filtertime<String> <Time>` value replaces the string `#filtertime<String>#` in the `filter <String>`.
|
||||||
@@ -225,8 +231,12 @@ Clear a Chrome Browser profile cache and/or cookies.
|
|||||||
```
|
```
|
||||||
gam create chromeprofilecommand <ChromeProfileNameEntity>
|
gam create chromeprofilecommand <ChromeProfileNameEntity>
|
||||||
[clearcache [<Boolean>]] [clearcookies [<Boolean>]]
|
[clearcache [<Boolean>]] [clearcookies [<Boolean>]]
|
||||||
[formatjson]
|
[csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]]
|
||||||
```
|
```
|
||||||
|
By default, when a Chrome profile command is created, GAM outputs details of the command as indented keywords and values.
|
||||||
|
* `formatjson` - Display the details in JSON format.
|
||||||
|
* `csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]` - Output the details in CSV format.
|
||||||
|
|
||||||
## Display Chrome Profile commands
|
## Display Chrome Profile commands
|
||||||
Display the status of a specific Chrome Browser profile command.
|
Display the status of a specific Chrome Browser profile command.
|
||||||
```
|
```
|
||||||
@@ -266,7 +276,7 @@ Clear cache and cookies for two specific Chrome profiles:
|
|||||||
gam create chromeprofilecommand 4c6c0a9f-de78-4285-be86-713fca8cffff,aa03151c-7c1d-41fe-b793-5753e167ffff clearcache clearcookies
|
gam create chromeprofilecommand 4c6c0a9f-de78-4285-be86-713fca8cffff,aa03151c-7c1d-41fe-b793-5753e167ffff clearcache clearcookies
|
||||||
```
|
```
|
||||||
|
|
||||||
Display the status for those Chrome profiles:
|
Display the command status for those Chrome profiles:
|
||||||
```
|
```
|
||||||
gam show chromeprofilecommand 4c6c0a9f-de78-4285-be86-713fca8cffff,aa03151c-7c1d-41fe-b793-5753e167ffff
|
gam show chromeprofilecommand 4c6c0a9f-de78-4285-be86-713fca8cffff,aa03151c-7c1d-41fe-b793-5753e167ffff
|
||||||
gam print chromeprofilecommand 4c6c0a9f-de78-4285-be86-713fca8cffff,aa03151c-7c1d-41fe-b793-5753e167ffff
|
gam print chromeprofilecommand 4c6c0a9f-de78-4285-be86-713fca8cffff,aa03151c-7c1d-41fe-b793-5753e167ffff
|
||||||
@@ -277,7 +287,7 @@ Clear cache and cookies for Chrome profiles in a CSV file named `ChromeProfiles.
|
|||||||
gam create chromeprofilecommand select csvfile ChromeProfiles.csv:name clearcache clearcookies
|
gam create chromeprofilecommand select csvfile ChromeProfiles.csv:name clearcache clearcookies
|
||||||
```
|
```
|
||||||
|
|
||||||
Display the status for those Chrome profiles:
|
Display the command status for those Chrome profiles:
|
||||||
```
|
```
|
||||||
gam show chromeprofilecommand select csvfile ChromeProfiles.csv:name
|
gam show chromeprofilecommand select csvfile ChromeProfiles.csv:name
|
||||||
gam print chromeprofilecommand select csvfile ChromeProfiles.csv:name
|
gam print chromeprofilecommand select csvfile ChromeProfiles.csv:name
|
||||||
@@ -288,8 +298,19 @@ Clear cache and cookies for Chrome profiles with last activity more that 60 days
|
|||||||
gam create chromeprofilecommand filter "lastActivityTime < \"#filtertime1#\"" filtertime1 -60d clearcache clearcookies
|
gam create chromeprofilecommand filter "lastActivityTime < \"#filtertime1#\"" filtertime1 -60d clearcache clearcookies
|
||||||
```
|
```
|
||||||
|
|
||||||
Display the status for those Chrome profiles:
|
Display the command status for those Chrome profiles:
|
||||||
```
|
```
|
||||||
gam show chromeprofilecommand filter "lastActivityTime < \"#filtertime1#\"" filtertime1 -60d
|
gam show chromeprofilecommand filter "lastActivityTime < \"#filtertime1#\"" filtertime1 -60d
|
||||||
gam print chromeprofilecommand filter "lastActivityTime < \"#filtertime1#\"" filtertime1 -60d
|
gam print chromeprofilecommand filter "lastActivityTime < \"#filtertime1#\"" filtertime1 -60d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Clear cache and cookies for Chrome profiles with last activity more that 60 days ago:
|
||||||
|
```
|
||||||
|
gam redirect csv ./ChromeProfileCmds.csv create chromeprofilecommand filter "lastActivityTime < \"#filtertime1#\"" filtertime1 -60d clearcache clearcookies csv
|
||||||
|
```
|
||||||
|
|
||||||
|
Display the command status for those Chrome profile commands
|
||||||
|
```
|
||||||
|
gam show chromeprofilecommand commands ChromeProfileCmds.csv:name
|
||||||
|
gam print chromeprofilecommand commands ChromeProfileCmds.csv:name
|
||||||
|
```
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
# Cloud Identity Groups - Membership
|
# Cloud Identity Groups - Membership
|
||||||
- [API documentation](#api-documentation)
|
- [API documentation](#api-documentation)
|
||||||
- [Query documentation](#query-documentation)
|
|
||||||
- [Python Regular Expressions](Python-Regular-Expressions) Match function
|
- [Python Regular Expressions](Python-Regular-Expressions) Match function
|
||||||
- [Definitions](#definitions)
|
- [Definitions](#definitions)
|
||||||
- [Notes](#Notes)
|
- [Notes](#Notes)
|
||||||
@@ -22,10 +21,6 @@
|
|||||||
* [Cloud Identity Groups](https://gsuiteupdates.googleblog.com/2020/08/new-api-cloud-identity-groups-google.html)
|
* [Cloud Identity Groups](https://gsuiteupdates.googleblog.com/2020/08/new-api-cloud-identity-groups-google.html)
|
||||||
* [Security Groups](https://gsuiteupdates.googleblog.com/2020/09/security-groups-beta.html)
|
* [Security Groups](https://gsuiteupdates.googleblog.com/2020/09/security-groups-beta.html)
|
||||||
|
|
||||||
## Query documentation
|
|
||||||
* [Cloud Identity Groups API - Search Dynamic Groups](https://cloud.google.com/identity/docs/reference/rest/v1/groups#dynamicgroupquery)
|
|
||||||
* [Member Restrictions](https://cloud.google.com/identity/docs/reference/rest/v1/SecuritySettings#MemberRestriction)
|
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
In the Admin Directory API a group has the following characteristics:
|
In the Admin Directory API a group has the following characteristics:
|
||||||
@@ -45,7 +40,7 @@ Dynamic Groups require Cloud Identity Premium accounts.
|
|||||||
* https://cloud.google.com/identity/docs/how-to/create-dynamic-groups
|
* https://cloud.google.com/identity/docs/how-to/create-dynamic-groups
|
||||||
|
|
||||||
The `cimember <UserItem>` option of `gam print|show cigroup-members` requires a Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education;
|
The `cimember <UserItem>` option of `gam print|show cigroup-members` requires a Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education;
|
||||||
and Cloud Identity Premium accounts. Unfortunately, even if you have the required account, the API call that supports the query doesn't work.
|
and Cloud Identity Premium accounts.
|
||||||
|
|
||||||
* https://cloud.google.com/identity/docs/reference/rest/v1/groups.memberships/searchTransitiveGroups
|
* https://cloud.google.com/identity/docs/reference/rest/v1/groups.memberships/searchTransitiveGroups
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,8 @@
|
|||||||
* [Security Groups](https://gsuiteupdates.googleblog.com/2020/09/security-groups-beta.html)
|
* [Security Groups](https://gsuiteupdates.googleblog.com/2020/09/security-groups-beta.html)
|
||||||
|
|
||||||
## Query documentation
|
## Query documentation
|
||||||
* [Cloud Identity Groups API - Search Dynamic Groups](https://cloud.google.com/identity/docs/reference/rest/v1/groups#dynamicgroupquery)
|
* [Cloud Identity Groups API - Search](https://cloud.google.com/identity/docs/reference/rest/v1/groups/search)
|
||||||
|
* [Cloud Identity Groups API - Dynamic Group Query](https://cloud.google.com/identity/docs/reference/rest/v1/groups#dynamicgroupquery)
|
||||||
* [Dynamic Groups Member Attributes](https://cloud.google.com/identity/docs/how-to/dynamic-groups-attributes)
|
* [Dynamic Groups Member Attributes](https://cloud.google.com/identity/docs/how-to/dynamic-groups-attributes)
|
||||||
* [Member Restrictions](https://cloud.google.com/identity/docs/reference/rest/v1/SecuritySettings#MemberRestriction)
|
* [Member Restrictions](https://cloud.google.com/identity/docs/reference/rest/v1/SecuritySettings#MemberRestriction)
|
||||||
|
|
||||||
@@ -51,7 +52,7 @@ Dynamic Groups require Cloud Identity Premium accounts.
|
|||||||
* https://cloud.google.com/identity/docs/how-to/create-dynamic-groups
|
* https://cloud.google.com/identity/docs/how-to/create-dynamic-groups
|
||||||
|
|
||||||
The `cimember <UserItem>` option of `gam print cigroups` requires a Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education;
|
The `cimember <UserItem>` option of `gam print cigroups` requires a Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education;
|
||||||
and Cloud Identity Premium accounts. Unfortunately, even if you have the required account, the API call that supports the query doesn't work.
|
and Cloud Identity Premium accounts.
|
||||||
|
|
||||||
* https://cloud.google.com/identity/docs/reference/rest/v1/groups.memberships/searchTransitiveGroups
|
* https://cloud.google.com/identity/docs/reference/rest/v1/groups.memberships/searchTransitiveGroups
|
||||||
|
|
||||||
|
|||||||
@@ -147,7 +147,8 @@ Data fields identified in a `csvkmd` argument.
|
|||||||
<ChromeProfileNameEntity> ::=
|
<ChromeProfileNameEntity> ::=
|
||||||
<ChromeProfileNameList> |
|
<ChromeProfileNameList> |
|
||||||
(select <FileSelector>|<CSVFileSelector>) |
|
(select <FileSelector>|<CSVFileSelector>) |
|
||||||
(filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]])
|
(filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]) |
|
||||||
|
(commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>)
|
||||||
<CIPolicyNameEntity> ::=
|
<CIPolicyNameEntity> ::=
|
||||||
<CIPolicyNameList> | <FileSelector> | <CSVFileSelector>
|
<CIPolicyNameList> | <FileSelector> | <CSVFileSelector>
|
||||||
<ClassificationLabelNameEntity> ::=
|
<ClassificationLabelNameEntity> ::=
|
||||||
@@ -350,6 +351,15 @@ Data fields identified in a `csvkmd` argument.
|
|||||||
<SiteACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
<SiteACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||||
<SiteEntity> ::=
|
<SiteEntity> ::=
|
||||||
<SiteList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
<SiteList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||||
|
<TagManagerAccountPathEntity> ::=
|
||||||
|
<TagManagerAccountPathList> |
|
||||||
|
(select <FileSelector>|<CSVFileSelector>) |
|
||||||
|
<TagManagerContainerPathEntity> ::=
|
||||||
|
<TagManagerContainerPathList> |
|
||||||
|
(select <FileSelector>|<CSVFileSelector>) |
|
||||||
|
<TagManagerWorkspacePathEntity> ::=
|
||||||
|
<TagManagerWorkspacePathList> |
|
||||||
|
(select <FileSelector>|<CSVFileSelector>) |
|
||||||
<TasklistEntity> ::=
|
<TasklistEntity> ::=
|
||||||
<TasklistIDList> | <TaskListTitleList> | <FileSelector> | <CSVFileSelector>
|
<TasklistIDList> | <TaskListTitleList> | <FileSelector> | <CSVFileSelector>
|
||||||
<TasklistIDTaskIDEntity> ::=
|
<TasklistIDTaskIDEntity> ::=
|
||||||
|
|||||||
@@ -308,12 +308,3 @@ the quote character itself, the column delimiter (comma by default) and new-line
|
|||||||
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
|
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
|
||||||
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
|
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
|
||||||
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
|
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
|
||||||
|
|
||||||
## Display global address list
|
|
||||||
As of mid-October 2024, Google deprecated the API that retrieved the Global Address List.
|
|
||||||
|
|
||||||
These commands are a work-around.
|
|
||||||
```
|
|
||||||
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" redirect csv ./UserGAL.csv print users fields name,gal
|
|
||||||
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" batch_size 25 redirect csv ./GroupGAL.csv print groups fields name,gal
|
|
||||||
```
|
|
||||||
|
|||||||
@@ -1,15 +1,13 @@
|
|||||||
!All Google Drive API calls have been converted from v2 to v3, see: https://developers.google.com/drive/v3/web/migration
|
Legacy GAM used Drive API v2, GAM7 uses Drive API v3. See: https://developers.google.com/drive/v3/web/migration
|
||||||
Many of the changes are internal to Gam and have no visible effect. Google has modified/renamed many field names and these will affect scripts that parse the output from `gam print/show drivesettings/drivefileacls/fileinfo/filelist/filerevisions`. Additionally, Google has dropped some fields and their values are no longer available. On input, Gam accepts both the old and new field names.
|
Many of the changes are internal to GAM7 and have no visible effect.
|
||||||
|
Google has modified/renamed many field names and these will affect scripts that parse the output from `gam print/show drivesettings/drivefileacls/fileinfo/filelist/filerevisions`.
|
||||||
|
Additionally, Google has dropped some fields and their values are no longer available. On input, GAM7 accepts both the old and new field names where applicable.
|
||||||
|
|
||||||
A variable, `drive_v3_native_names` (default value is True), has been added to `gam.cfg` to control the field names on output: when True, the v3 native field names are used; when False, the v3 native field names are mapped to the v2 field names.
|
If you use Legacy GAM and have scripts that process the output from these print commands, you may have to make modifications to your scripts when you upgrade to GAM7.
|
||||||
|
Run your print/show commands with a version of Legacy GAM and save the output.
|
||||||
If you have scripts that process the output from these print commands, you may have to make modifications to your scripts.
|
Run your print/show commands with GAM7 and compare the output to that saved in the previous run;
|
||||||
Run your print/show commands with a version of Legacy Gam and save the output.
|
|
||||||
With drive_v3_native_names = False, run your print/show commands with this version of Gam and compare the output to that saved in the previous run;
|
|
||||||
modify your scripts that process the output as appropriate.
|
modify your scripts that process the output as appropriate.
|
||||||
|
|
||||||
There is a cost to mapping the v3 field names back to the v2 field names; you can avoid this cost by setting drive_v3_native_names = True,
|
|
||||||
running your print/show commands, comparing the output and making the appropriate script modifications.
|
|
||||||
```
|
```
|
||||||
print/show drivesettings
|
print/show drivesettings
|
||||||
Dropped fields:
|
Dropped fields:
|
||||||
@@ -30,7 +28,7 @@ Dropped fields:
|
|||||||
authKey
|
authKey
|
||||||
Renamed fields (Old->New):
|
Renamed fields (Old->New):
|
||||||
name->displayName
|
name->displayName
|
||||||
withLink->allowFileDiscovery
|
withLink->allowFileDiscovery - value is complemented
|
||||||
|
|
||||||
print/show fileinfo/filelist
|
print/show fileinfo/filelist
|
||||||
Dropped fields:
|
Dropped fields:
|
||||||
@@ -40,19 +38,20 @@ Dropped fields:
|
|||||||
labels(hidden)
|
labels(hidden)
|
||||||
markedViewedByMeDate
|
markedViewedByMeDate
|
||||||
openWithLinks
|
openWithLinks
|
||||||
selfLink
|
ownerNames
|
||||||
parents(isRoot)
|
parents(isRoot)
|
||||||
parents(parentLink)
|
parents(parentLink)
|
||||||
parents(selfLink)
|
parents(selfLink)
|
||||||
permissions(selfLink)
|
permissions(selfLink)
|
||||||
selfLink
|
selfLink
|
||||||
userPermission(selfLink)
|
userPermission
|
||||||
Renamed fields (Old->New):
|
Renamed fields (Old->New):
|
||||||
alternateLink->webViewLink
|
alternateLink->webViewLink
|
||||||
capabilities(canChangeRestrictedDownload)->capabilities(canChangeViewersCanCopyContent)
|
capabilities(canChangeRestrictedDownload)->capabilities(canChangeViewersCanCopyContent)
|
||||||
createdDate->createdTime
|
createdDate->createdTime
|
||||||
expirationDate->expirationTime
|
expirationDate->expirationTime
|
||||||
fileSize->size
|
fileSize->size
|
||||||
|
lastModifyingUserName->lastModifyingUser(displayName)
|
||||||
lastViewedByMeDate->viewedByMeTime
|
lastViewedByMeDate->viewedByMeTime
|
||||||
modified->modifiedByMe
|
modified->modifiedByMe
|
||||||
modifiedByMeDate->modifiedByMeTime
|
modifiedByMeDate->modifiedByMeTime
|
||||||
@@ -76,18 +75,3 @@ Renamed fields (Old->New):
|
|||||||
picture.url->photoLink
|
picture.url->photoLink
|
||||||
pinned->keepForever
|
pinned->keepForever
|
||||||
```
|
```
|
||||||
The parents field of a file has undergone the most change. In Drive v2 it was a list of compound items with three sub-fields per item: id, isRoot, parentLink.
|
|
||||||
In Drive v3 the parents field is a list of simple items, the parent ids. The following examples show how the parents field is output in a CSV file for a file with two parents.
|
|
||||||
```
|
|
||||||
Previous versions of Gam:
|
|
||||||
Owner,title,parents,parents.0.isRoot,parents.0.id,parents.0.parentLink,parents.1.isRoot,parents.1.id,parents.1.parentLink
|
|
||||||
testuser@domain.com,TestFile,2,True,PPPP1111,https://www.googleapis.com/drive/v2/files/PPPP1111,False,PPPP2222,https://www.googleapis.com/drive/v2/files/PPPP2222
|
|
||||||
|
|
||||||
Current version of Gam with drive_v3_name_names = false
|
|
||||||
Owner,title,parents,parents.0.id,parents.1.id
|
|
||||||
testuser@domain.com,TestFile,2,PPPP1111,PPPP2222
|
|
||||||
|
|
||||||
Current version of Gam with drive_v3_name_names = true
|
|
||||||
Owner,name,parents
|
|
||||||
testuser@domain.com,TestFile,PPPP1111 PPPP2222
|
|
||||||
```
|
|
||||||
|
|||||||
@@ -10,6 +10,110 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
|
|||||||
|
|
||||||
See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation
|
See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation
|
||||||
|
|
||||||
|
### 7.17.01
|
||||||
|
|
||||||
|
Fixed bug in `gam <UserTypeEntity> show webmastersites` that caused a trap.
|
||||||
|
|
||||||
|
### 7.17.00
|
||||||
|
|
||||||
|
Added commands to discover Sites and WebResources that managed users (previously unmanaged) may have access to for better governance and visibility.
|
||||||
|
These are special purpose commands and will not generally be used.
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> show webresources
|
||||||
|
gam <UserTypeEntity> print webresources [todrive <ToDriveAttribute>*]
|
||||||
|
gam <UserTypeEntity> show webmastersites
|
||||||
|
gam <UserTypeEntity> print webmastersites [todrive <ToDriveAttribute>*]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.16.01
|
||||||
|
|
||||||
|
The Drive API now supports setting download restrictions on individual files.
|
||||||
|
|
||||||
|
Added `downloadrestictions` and `<DriveDownloadRestrictionsSubfieldName>` to `<DriveFieldName>`.
|
||||||
|
```
|
||||||
|
<DriveDownloadRestrictionsSubfieldName> ::=
|
||||||
|
downloadrestrictions.itemdownloadrestriction|
|
||||||
|
downloadrestrictions.effectivedownloadrestrictionwithcontext
|
||||||
|
```
|
||||||
|
|
||||||
|
Added `itemdownloadrestriction (restrictedforreaders [<Boolean>]) (restrictedforwriters [<Boolean>])`
|
||||||
|
to `<DriveFileAttribute>`.
|
||||||
|
|
||||||
|
From the Drive API documentation:
|
||||||
|
```
|
||||||
|
itemDownloadRestriction - The download restriction of the file applied directly by the owner or organizer. This does not take into account shared drive settings or DLP rules.
|
||||||
|
effectiveDownloadRestrictionWithContext - Output only. The effective download restriction applied to this file. This considers all restriction settings and DLP rules.
|
||||||
|
restrictedForReaders - Whether download and copy is restricted for readers.
|
||||||
|
restrictedForWriters - Whether download and copy is restricted for writers. If true, download is also restricted for readers.
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.16.00
|
||||||
|
|
||||||
|
Removed `drive_v3_native_names` from `gam.cfg`; GAM now only uses Drive API v3 fields names on output.
|
||||||
|
If you had `drive_v3_native_names = False` in `gam.cfg` or are updating from Legacy GAM:
|
||||||
|
|
||||||
|
* See: https://github.com/GAM-team/GAM/wiki/Drive-REST-API-v3
|
||||||
|
|
||||||
|
### 7.15.01
|
||||||
|
|
||||||
|
Added `downloadrestrictions.restrictedforreaders` and `downloadrestrictions.restrictedforwriters`
|
||||||
|
to `<SharedDriveRestrictionsSubfieldName>`; previously, only the abbreviations `downloadrestrictedforreaders`
|
||||||
|
and `downloadrestrictedforwriters` were supported (they are still supported).
|
||||||
|
|
||||||
|
Updated `gam <UserTypeEntity> copy drivefile` to handle unexpected data returned by Google that caused a trap.
|
||||||
|
|
||||||
|
### 7.15.00
|
||||||
|
|
||||||
|
Updated `gam print shareddriveorganizers` to make `shownoorganizerdrives` default to `True`
|
||||||
|
as documented; it was defaulting to `False`.
|
||||||
|
|
||||||
|
Cleaned up code for processing Python dictionary structures; this should have no noticable effect.
|
||||||
|
|
||||||
|
### 7.14.04
|
||||||
|
|
||||||
|
Fixed bug in `gam print|show cigroups cimember <UserItem>` that generated the following error:
|
||||||
|
```
|
||||||
|
ERROR: Cloud Identity Group: groups/-, Print Failed: Error(4013): Insufficient permissions to retrieve memberships.
|
||||||
|
```
|
||||||
|
|
||||||
|
Updated `gam <UserTypeEntity> update user suspended off` and `gam <UserTypeEntity> unsuspend users`
|
||||||
|
to handle the following error that occurs when trying to unsuspend a user that has been suspended for abuse.
|
||||||
|
```
|
||||||
|
ERROR: 412: adminCannotUnsuspend - Cannot restore a user suspended for abuse.
|
||||||
|
```
|
||||||
|
|
||||||
|
* See: https://support.google.com/a/answer/1110339
|
||||||
|
|
||||||
|
### 7.14.03
|
||||||
|
|
||||||
|
Fixed bug in `gam print cigroup-members includederivedmembership` that caused a trap.
|
||||||
|
|
||||||
|
### 7.14.02
|
||||||
|
|
||||||
|
Fixed bug in `gam print|show cigroups|cigroups-members cimember <UserItem>` that generated the following error:
|
||||||
|
```
|
||||||
|
Cloud Identity Group Print Failed: Request contains an invalid argument.
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.14.01
|
||||||
|
|
||||||
|
Don't install yubikey library via pip by default. To install with yubikey support use pip install gam7[yubikey]
|
||||||
|
|
||||||
|
### 7.14.00
|
||||||
|
|
||||||
|
Added commands to display Google Tag Manager accounts, containers, workspaces, tags and user permissions.
|
||||||
|
|
||||||
|
* See: https://github.com/GAM-team/GAM/wiki/Users-Tag-Manager
|
||||||
|
|
||||||
|
### 7.13.03
|
||||||
|
|
||||||
|
Added option `csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]]`
|
||||||
|
to `gam create chromeprofilecommand` so that command details are displayed in CSV format.
|
||||||
|
|
||||||
|
Added option `commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>` to `<ChromeProfileNameEntity>`
|
||||||
|
so that `gam print|show chromeprofilecommands` can directly display the commands generated by
|
||||||
|
`gam create chromeprofilecommand` with the `csv` option.
|
||||||
|
|
||||||
### 7.13.02
|
### 7.13.02
|
||||||
|
|
||||||
Fixed bug in `gam create chromeprofilecommand` where `select|filter` were not recognized.
|
Fixed bug in `gam create chromeprofilecommand` where `select|filter` were not recognized.
|
||||||
|
|||||||
17
wiki/Global-Address-List.md
Normal file
17
wiki/Global-Address-List.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# Global Address List
|
||||||
|
|
||||||
|
As of mid-October 2024, Google deprecated the API that retrieved the Global Address List.
|
||||||
|
|
||||||
|
These commands are a work-around.
|
||||||
|
|
||||||
|
Display users/groups in GAL.
|
||||||
|
```
|
||||||
|
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" redirect csv ./UserGAL.csv print users fields name,gal
|
||||||
|
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" batch_size 25 redirect csv ./GroupGAL.csv print groups fields name,gal
|
||||||
|
```
|
||||||
|
|
||||||
|
Display users/groups not in GAL.
|
||||||
|
```
|
||||||
|
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:false" redirect csv ./UserNotGAL.csv print users fields name,gal
|
||||||
|
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:false" batch_size 25 redirect csv ./GroupNotGAL.csv print groups fields name,gal
|
||||||
|
```
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
Use these steps if you have used any version of GAM in your domain. They will update your GAM project
|
Use these steps if you have used any version of GAM in your domain. They will update your GAM project
|
||||||
and all necessary authentications.
|
and all necessary authentications.
|
||||||
|
|
||||||
|
- [Drive API v2 to Drive API v3](Drive-REST-v3)
|
||||||
- [Downloads-Installs](Downloads-Installs)
|
- [Downloads-Installs](Downloads-Installs)
|
||||||
- [Linux and MacOS and Google Cloud Shell](#linux-and-mac-os-and-google-cloud-shell)
|
- [Linux and MacOS and Google Cloud Shell](#linux-and-mac-os-and-google-cloud-shell)
|
||||||
- [Windows](#windows)
|
- [Windows](#windows)
|
||||||
@@ -251,7 +252,7 @@ writes the credentials into the file oauth2.txt.
|
|||||||
admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
|
admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
|
||||||
admin@server:/Users/admin$ gam version
|
admin@server:/Users/admin$ gam version
|
||||||
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
|
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
|
||||||
GAM 7.13.02 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.17.01 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.5 64-bit final
|
Python 3.13.5 64-bit final
|
||||||
MacOS Sequoia 15.5 x86_64
|
MacOS Sequoia 15.5 x86_64
|
||||||
@@ -989,7 +990,7 @@ writes the credentials into the file oauth2.txt.
|
|||||||
C:\>del C:\GAMConfig\oauth2.txt
|
C:\>del C:\GAMConfig\oauth2.txt
|
||||||
C:\>gam version
|
C:\>gam version
|
||||||
WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
|
WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
|
||||||
GAM 7.13.02 - https://github.com/GAM-team/GAM - pythonsource
|
GAM 7.17.01 - https://github.com/GAM-team/GAM - pythonsource
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.5 64-bit final
|
Python 3.13.5 64-bit final
|
||||||
Windows-10-10.0.17134 AMD64
|
Windows-10-10.0.17134 AMD64
|
||||||
|
|||||||
@@ -1,20 +1,14 @@
|
|||||||
# Install GAM as Python Library
|
# Install GAM as Python Library
|
||||||
|
|
||||||
Thanks to Jay Lee for showing me how to do this.
|
|
||||||
|
|
||||||
On Windows, you need to install Git to use the pip command.
|
|
||||||
* See: https://pythoninoffice.com/python-pip-install-from-github/
|
|
||||||
|
|
||||||
Scroll down to Install Git
|
|
||||||
|
|
||||||
You can install GAM as a Python library with pip.
|
You can install GAM as a Python library with pip.
|
||||||
```
|
```
|
||||||
pip install git+https://github.com/GAM-team/GAM.git#subdirectory=src
|
pip install gam7
|
||||||
```
|
```
|
||||||
|
|
||||||
Or as a PEP 508 Requirement Specifier, e.g. in requirements.txt file:
|
Or as a PEP 508 Requirement Specifier, e.g. in requirements.txt file:
|
||||||
```
|
```
|
||||||
gam-for-google-workspace @ git+https://github.com/GAM-team/GAM.git#subdirectory=src
|
gam7
|
||||||
```
|
```
|
||||||
|
|
||||||
Or a pyproject.toml file:
|
Or a pyproject.toml file:
|
||||||
@@ -23,13 +17,13 @@ Or a pyproject.toml file:
|
|||||||
name = "your-project"
|
name = "your-project"
|
||||||
# ...
|
# ...
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"gam-for-google-workspace @ git+https://github.com/GAM-team/GAM.git#subdirectory=src"
|
"gam7"
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
Target a specific revision or tag:
|
Target a specific version:
|
||||||
```
|
```
|
||||||
gam-for-google-workspace @ git+https://github.com/GAM-team/GAM.git@v7.12.01#subdirectory=src
|
gam7==/7.13.3
|
||||||
```
|
```
|
||||||
|
|
||||||
## Using the library
|
## Using the library
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
<CalendarList> ::= "<CalendarItem>(,<CalendarItem>)*"
|
<CalendarList> ::= "<CalendarItem>(,<CalendarItem>)*"
|
||||||
<ChatSpaceList> ::= "<ChatSpace>(,<ChatSpace>)*"
|
<ChatSpaceList> ::= "<ChatSpace>(,<ChatSpace>)*"
|
||||||
<ChromeProfileNameList> ::= "<ChromeProfileName>(,<ChromeProfileName>)*"
|
<ChromeProfileNameList> ::= "<ChromeProfileName>(,<ChromeProfileName>)*"
|
||||||
|
<ChromeProfileCommandNameList> ::= "<ChromeProfileCommandName>(,<ChromeProfileCommandName>)*"
|
||||||
<CIGroupAliasList> ::= "<CIGroupAlias>(,<CIGroupAlias>)*"
|
<CIGroupAliasList> ::= "<CIGroupAlias>(,<CIGroupAlias>)*"
|
||||||
<CIGroupMemberTypeList> ::= "<CIGroupMemberType>(,<CIGroupMemberType>)*"
|
<CIGroupMemberTypeList> ::= "<CIGroupMemberType>(,<CIGroupMemberType>)*"
|
||||||
<CIPolicyNameList> ::= "<CIPolicyName>(,<CIPolicyName>)*"
|
<CIPolicyNameList> ::= "<CIPolicyName>(,<CIPolicyName>)*"
|
||||||
@@ -97,6 +98,9 @@
|
|||||||
<SharedDriveACLRoleList> ::= "<SharedDriveACLRole>(,<SharedDriveACLRole>)*"
|
<SharedDriveACLRoleList> ::= "<SharedDriveACLRole>(,<SharedDriveACLRole>)*"
|
||||||
<SharedDriveIDList> ::= "<SharedDriveID>(,<SharedDriveID>)*"
|
<SharedDriveIDList> ::= "<SharedDriveID>(,<SharedDriveID>)*"
|
||||||
<StringList> ::= "<String>(,<String>)*"
|
<StringList> ::= "<String>(,<String>)*"
|
||||||
|
<TagManagerAccountPathList> ::= "<TagManagerAccountPath>(,<TagManagerAccountPath>)*"
|
||||||
|
<TagManagerContainerPathList> ::= "<TagManagerContainerPath>(,<TagManagerContainerPath>)*"
|
||||||
|
<TagManagerWorkspacePathList> ::= "<TagManagerWorkspacePath>(,<TagManagerWorkspacePath>)*"
|
||||||
<TasklistIDList> ::= "<TasklistID>(,<TasklistID>)*"
|
<TasklistIDList> ::= "<TasklistID>(,<TasklistID>)*"
|
||||||
<TasklistTitleList> ::= "'<TasklistTitle>'(,'<TasklistTitle>')*"
|
<TasklistTitleList> ::= "'<TasklistTitle>'(,'<TasklistTitle>')*"
|
||||||
<TasklistIDTaskIDList> ::= "<TasklistIDTaskID>(,<TasklistIDTaskID>)*"
|
<TasklistIDTaskIDList> ::= "<TasklistIDTaskID>(,<TasklistIDTaskID>)*"
|
||||||
|
|||||||
@@ -203,8 +203,8 @@
|
|||||||
allowcontentmanagerstosharefolders|
|
allowcontentmanagerstosharefolders|
|
||||||
copyrequireswriterpermission|
|
copyrequireswriterpermission|
|
||||||
domainusersonly|
|
domainusersonly|
|
||||||
downloadrestrictedforreaders|
|
downloadrestrictedforreaders|downloadrestrictions.restrictedforreaders|
|
||||||
downloadrestrictedforwriters|
|
downloadrestrictedforwriters|downloadrestrictions.restrictedforwriters|
|
||||||
drivemembersonly|teammembersonly|
|
drivemembersonly|teammembersonly|
|
||||||
sharingfoldersrequiresorganizerpermission
|
sharingfoldersrequiresorganizerpermission
|
||||||
|
|
||||||
@@ -247,7 +247,7 @@ The user that creates a Shared Drive is given the permission role organizer for
|
|||||||
gam [<UserTypeEntity>] create shareddrive <Name>
|
gam [<UserTypeEntity>] create shareddrive <Name>
|
||||||
[(theme|themeid <String>)|
|
[(theme|themeid <String>)|
|
||||||
([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
||||||
(<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
([restrictions.]<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
||||||
[hide <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
[hide <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
||||||
[errorretries <Integer>] [updateinitialdelay <Integer>] [updateretrydelay <Integer>]
|
[errorretries <Integer>] [updateinitialdelay <Integer>] [updateretrydelay <Integer>]
|
||||||
[(csv [todrive <ToDriveAttribute>*] (addcsvdata <FieldName> <String>)*) | returnidonly]
|
[(csv [todrive <ToDriveAttribute>*] (addcsvdata <FieldName> <String>)*) | returnidonly]
|
||||||
@@ -259,7 +259,7 @@ gam [<UserTypeEntity>] create shareddrive <Name>
|
|||||||
* `<Float>` - Y coordinate, typically 0.0
|
* `<Float>` - Y coordinate, typically 0.0
|
||||||
* `<Float>` - width, typically 1.0
|
* `<Float>` - width, typically 1.0
|
||||||
* `color` - set the Shared Drive color
|
* `color` - set the Shared Drive color
|
||||||
* `<SharedDriveRestrictionsSubfieldName> <Boolean>` - Set Shared Drive Restrictions
|
* `[restrictions.]<SharedDriveRestrictionsSubfieldName> <Boolean>` - Set Shared Drive Restrictions
|
||||||
* `hide <Boolean>` - Set Shared Drive visibility
|
* `hide <Boolean>` - Set Shared Drive visibility
|
||||||
|
|
||||||
If any attributes other than `themeid` are specified, GAM must create the Drive and then update the Drive attributes.
|
If any attributes other than `themeid` are specified, GAM must create the Drive and then update the Drive attributes.
|
||||||
@@ -333,13 +333,13 @@ gam [<UserTypeEntity>] update shareddrive <SharedDriveEntity> [name <Name>]
|
|||||||
[adminaccess|asadmin]
|
[adminaccess|asadmin]
|
||||||
[(theme|themeid <String>)|
|
[(theme|themeid <String>)|
|
||||||
([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
||||||
(<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
([restrictions.]<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
||||||
[hide|hidden <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
[hide|hidden <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
||||||
```
|
```
|
||||||
* `themeid` - a Shared Drive themeId obtained from `show shareddrivethemes`
|
* `themeid` - a Shared Drive themeId obtained from `show shareddrivethemes`
|
||||||
* `customtheme` - set the backgroundImageFile property described here: https://developers.google.com/drive/v3/reference/teamdrives
|
* `customtheme` - set the backgroundImageFile property described here: https://developers.google.com/drive/v3/reference/teamdrives
|
||||||
* `color` - set the Shared Drive color
|
* `color` - set the Shared Drive color
|
||||||
* `<SharedDriveRestrictionsSubfieldName> <Boolean>` - Set Shared Drive Restrictions
|
* `[restrictions.]<SharedDriveRestrictionsSubfieldName> <Boolean>` - Set Shared Drive Restrictions
|
||||||
* `hidden <Boolean>` - Set Shared Drive visibility
|
* `hidden <Boolean>` - Set Shared Drive visibility
|
||||||
|
|
||||||
* `ou|org|orgunit <OrgUnitItem>` - See: https://workspaceupdates.googleblog.com/2022/05/shared-drives-in-organizational-units-open-beta.html
|
* `ou|org|orgunit <OrgUnitItem>` - See: https://workspaceupdates.googleblog.com/2022/05/shared-drives-in-organizational-units-open-beta.html
|
||||||
|
|||||||
@@ -157,12 +157,16 @@
|
|||||||
contentrestrictions.restrictiontime|
|
contentrestrictions.restrictiontime|
|
||||||
contentrestrictions.type
|
contentrestrictions.type
|
||||||
|
|
||||||
<DriveLabelInfoSubfieldName> ::=
|
<DriveDownloadRestrictionsSubfieldName> ::=
|
||||||
|
downloadrestrictions.itemdownloadrestriction|
|
||||||
|
downloadrestrictions.effectivedownloadrestrictionwithcontext
|
||||||
|
|
||||||
|
<ClassificationLabelInfoSubfieldName> ::=
|
||||||
labels.id| # modifiedByMe
|
labels.id| # modifiedByMe
|
||||||
labels.revisionid| # copyRequiresWriterPermission
|
labels.revisionid| # copyRequiresWriterPermission
|
||||||
labels.fields # viewedByMe
|
labels.fields # viewedByMe
|
||||||
|
|
||||||
<DriveLabelsSubfieldName> ::=
|
<ClassificationLabelsSubfieldName~> ::=
|
||||||
labels.modified| # modifiedByMe
|
labels.modified| # modifiedByMe
|
||||||
labels.restricted| # copyRequiresWriterPermission
|
labels.restricted| # copyRequiresWriterPermission
|
||||||
labels.starred| # starred
|
labels.starred| # starred
|
||||||
@@ -251,6 +255,8 @@
|
|||||||
copyrequireswriterpermission|
|
copyrequireswriterpermission|
|
||||||
createddate|createdtime|
|
createddate|createdtime|
|
||||||
description|
|
description|
|
||||||
|
downloadrestictions|
|
||||||
|
<DriveDownloadRestrictionsSubfieldName>|
|
||||||
driveid|
|
driveid|
|
||||||
drivename|
|
drivename|
|
||||||
editable|
|
editable|
|
||||||
@@ -269,9 +275,9 @@
|
|||||||
inheritedpermissionsdisabled|
|
inheritedpermissionsdisabled|
|
||||||
isappauthorized|
|
isappauthorized|
|
||||||
labelinfo|
|
labelinfo|
|
||||||
<DriveLabelInfoSubfieldName>|
|
<ClassificationLabelInfoSubfieldName>|
|
||||||
labels|
|
labels|
|
||||||
<DriveLabelsSubfieldName>|
|
<ClassificationLabelsSubfieldName>|
|
||||||
lastmodifyinguser|
|
lastmodifyinguser|
|
||||||
<DriveLastModifyingUserSubfieldName>|
|
<DriveLastModifyingUserSubfieldName>|
|
||||||
lastmodifyingusername|
|
lastmodifyingusername|
|
||||||
|
|||||||
@@ -125,6 +125,7 @@
|
|||||||
(folderColorRgb <ColorValue>)|
|
(folderColorRgb <ColorValue>)|
|
||||||
(indexabletext <String>)|
|
(indexabletext <String>)|
|
||||||
(inheritedpermissionsdisabled [<Boolean>])|
|
(inheritedpermissionsdisabled [<Boolean>])|
|
||||||
|
(itemdownloadrestriction restrictedforreaders|restrictedforwriters [<Boolean>])|
|
||||||
(keeprevisionforever|pinned)|
|
(keeprevisionforever|pinned)|
|
||||||
(lastviewedbyme <Time>)|
|
(lastviewedbyme <Time>)|
|
||||||
(mimetype <MimeType>)|
|
(mimetype <MimeType>)|
|
||||||
|
|||||||
@@ -214,6 +214,12 @@ The option `updatesheetprotectedranges` only applies to items in `<DriveFileEnti
|
|||||||
* ACLs with role reader or commenter will be removed from existing protected ranges
|
* ACLs with role reader or commenter will be removed from existing protected ranges
|
||||||
* ACLs with role writer or higher will be added to existing protected ranges
|
* ACLs with role writer or higher will be added to existing protected ranges
|
||||||
|
|
||||||
|
`
|
||||||
|
`enforceexpansiveaccess` defaults to the value of `gam.cfg/enforce_expansive_access` that controls
|
||||||
|
the ability to update inherited ACLs.
|
||||||
|
* False - Inherited ACLs can be updated
|
||||||
|
* True = Inherited ACLs can not be updated
|
||||||
|
|
||||||
By default, the file ID is displayed in the output; to see the file name, use the `showtitles`
|
By default, the file ID is displayed in the output; to see the file name, use the `showtitles`
|
||||||
option; this requires an additional API call per file.
|
option; this requires an additional API call per file.
|
||||||
|
|
||||||
@@ -234,6 +240,11 @@ The option `updatesheetprotectedranges` only applies to items in `<DriveFileEnti
|
|||||||
* Sheet Protected Ranges are updated to reflect the deleted ACL; additional API calls are required.
|
* Sheet Protected Ranges are updated to reflect the deleted ACL; additional API calls are required.
|
||||||
* ACLs with any role will be removed from existing protected ranges
|
* ACLs with any role will be removed from existing protected ranges
|
||||||
|
|
||||||
|
`enforceexpansiveaccess` defaults to the value of `gam.cfg/enforce_expansive_access` that controls
|
||||||
|
the ability to delete delete inherited ACLs.
|
||||||
|
* False - Inherited ACLs can be deleted
|
||||||
|
* True = Inherited ACLs can not be deleted
|
||||||
|
|
||||||
By default, the file ID is displayed in the output; to see the file name, use the `showtitles`
|
By default, the file ID is displayed in the output; to see the file name, use the `showtitles`
|
||||||
option; this requires an additional API call per file.
|
option; this requires an additional API call per file.
|
||||||
|
|
||||||
@@ -266,6 +277,11 @@ gam <UserTypeEntity> delete permissions <DriveFileEntity> <DriveFilePermissionID
|
|||||||
<PermissionMatch>* [<PermissionMatchAction>]
|
<PermissionMatch>* [<PermissionMatchAction>]
|
||||||
[enforceexpansiveaccess [<Boolean>]]
|
[enforceexpansiveaccess [<Boolean>]]
|
||||||
```
|
```
|
||||||
|
`enforceexpansiveaccess` defaults to the value of `gam.cfg/enforce_expansive_access` that controls
|
||||||
|
the ability to delete delete inherited ACLs.
|
||||||
|
* False - Inherited ACLs can be deleted
|
||||||
|
* True = Inherited ACLs can not be deleted
|
||||||
|
|
||||||
When deleting permissions from JSON data, permissions with role `owner` true are never processed.
|
When deleting permissions from JSON data, permissions with role `owner` true are never processed.
|
||||||
|
|
||||||
## Display file permissions/sharing
|
## Display file permissions/sharing
|
||||||
|
|||||||
@@ -80,8 +80,8 @@ All `<FilterAction>s` except `forward <EmailAddress>` involve adding/removing la
|
|||||||
* `label <LabelName>` - Add the user label `<LabelName>`; only one user label can be specified. It will be created if necessary.
|
* `label <LabelName>` - Add the user label `<LabelName>`; only one user label can be specified. It will be created if necessary.
|
||||||
|
|
||||||
In Gmail, you can have a multi-level label like `Top/Middle/Bottom`; you can also have a single-level label like `Top/Middle/Bottom`,
|
In Gmail, you can have a multi-level label like `Top/Middle/Bottom`; you can also have a single-level label like `Top/Middle/Bottom`,
|
||||||
* If `buildpath` is omitted or `<Boolean>` is set to False, a <labelName>` containing `/` will be created as single-level.
|
* If `buildpath` is omitted or `<Boolean>` is set to False, a `<labelName>` containing `/` will be created as single-level.
|
||||||
* If `buildpath` is present and `<Boolean>` is omitted or set to True, a <labelName>` containing `/` will be created as multi-level;
|
* If `buildpath` is present and `<Boolean>` is omitted or set to True, a `<labelName>` containing `/` will be created as multi-level;
|
||||||
all parent labels are created as necessary.
|
all parent labels are created as necessary.
|
||||||
|
|
||||||
If `forward <EmailAddress>` is specified, the filter creation will fail if the user has not defined `<EmailAddress>` as a forwarding address.
|
If `forward <EmailAddress>` is specified, the filter creation will fail if the user has not defined `<EmailAddress>` as a forwarding address.
|
||||||
|
|||||||
@@ -181,8 +181,8 @@
|
|||||||
allowcontentmanagerstosharefolders|
|
allowcontentmanagerstosharefolders|
|
||||||
copyrequireswriterpermission|
|
copyrequireswriterpermission|
|
||||||
domainusersonly|
|
domainusersonly|
|
||||||
downloadrestrictedforreaders|
|
downloadrestrictedforreaders|downloadrestrictions.restrictedforreaders|
|
||||||
downloadrestrictedforwriters|
|
downloadrestrictedforwriters|downloadrestrictions.restrictedforwriters|
|
||||||
drivemembersonly|teammembersonly|
|
drivemembersonly|teammembersonly|
|
||||||
sharingfoldersrequiresorganizerpermission
|
sharingfoldersrequiresorganizerpermission
|
||||||
|
|
||||||
@@ -217,7 +217,7 @@ The user that creates a Shared Drive is given the permission role organizer for
|
|||||||
gam <UserTypeEntity> create shareddrive <Name>
|
gam <UserTypeEntity> create shareddrive <Name>
|
||||||
[(theme|themeid <String>)|
|
[(theme|themeid <String>)|
|
||||||
([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
||||||
(<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
([restrictions.]<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
||||||
[hide <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
[hide <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
||||||
[errorretries <Integer>] [updateinitialdelay <Integer>] [updateretrydelay <Integer>]
|
[errorretries <Integer>] [updateinitialdelay <Integer>] [updateretrydelay <Integer>]
|
||||||
[(csv [todrive <ToDriveAttribute>*] (addcsvdata <FieldName> <String>)*) | returnidonly]
|
[(csv [todrive <ToDriveAttribute>*] (addcsvdata <FieldName> <String>)*) | returnidonly]
|
||||||
@@ -228,7 +228,7 @@ gam <UserTypeEntity> create shareddrive <Name>
|
|||||||
* `<Float>` - Y coordinate, typically 0.0
|
* `<Float>` - Y coordinate, typically 0.0
|
||||||
* `<Float>` - width, typically 1.0
|
* `<Float>` - width, typically 1.0
|
||||||
* `color` - set the Shared Drive color
|
* `color` - set the Shared Drive color
|
||||||
* `<SharedDriveRestrictionsSubfieldName> <Boolean>` - Set Shared Drive Restrictions
|
* `[restrictions.]<SharedDriveRestrictionsSubfieldName> <Boolean>` - Set Shared Drive Restrictions
|
||||||
* `hide <Boolean>` - Set Shared Drive visibility
|
* `hide <Boolean>` - Set Shared Drive visibility
|
||||||
|
|
||||||
If any attributes other than `themeid` are specified, GAM must create the Drive and then update the Drive attributes.
|
If any attributes other than `themeid` are specified, GAM must create the Drive and then update the Drive attributes.
|
||||||
@@ -284,13 +284,13 @@ This command is used to set basic Shared Drive settings.
|
|||||||
gam <UserTypeEntity> update shareddrive <SharedDriveEntity> [adminaccess|asadmin] [name <Name>]
|
gam <UserTypeEntity> update shareddrive <SharedDriveEntity> [adminaccess|asadmin] [name <Name>]
|
||||||
[(theme|themeid <String>)|
|
[(theme|themeid <String>)|
|
||||||
([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
||||||
(<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
([restrictions.]<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
||||||
[hide|hidden <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
[hide|hidden <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
||||||
```
|
```
|
||||||
* `themeid` - a Shared Drive themeId obtained from `show shareddrivethemes`
|
* `themeid` - a Shared Drive themeId obtained from `show shareddrivethemes`
|
||||||
* `customtheme` - set the backgroundImageFile property described here: https://developers.google.com/drive/v3/reference/teamdrives
|
* `customtheme` - set the backgroundImageFile property described here: https://developers.google.com/drive/v3/reference/teamdrives
|
||||||
* `color` - set the Shared Drive color
|
* `color` - set the Shared Drive color
|
||||||
* `<SharedDriveRestrictionsSubfieldName> <Boolean>` - Set Shared Drive Restrictions
|
* `[restrictions.]<SharedDriveRestrictionsSubfieldName> <Boolean>` - Set Shared Drive Restrictions
|
||||||
* `hidden <Boolean>` - Set Shared Drive visibility
|
* `hidden <Boolean>` - Set Shared Drive visibility
|
||||||
|
|
||||||
This option is only available when the command is run as an administrator.
|
This option is only available when the command is run as an administrator.
|
||||||
|
|||||||
213
wiki/Users-Tag-Manager.md
Normal file
213
wiki/Users-Tag-Manager.md
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
# Users - Tag Manager
|
||||||
|
- [API documentation](#api-documentation)
|
||||||
|
- [Notes](#notes)
|
||||||
|
- [Definitions](#definitions)
|
||||||
|
- [Display Tag Manager Accounts](#display-tag-manager-accounts)
|
||||||
|
- [Display Tag Manager Containers](#display-tag-manager-containers)
|
||||||
|
- [Display Tag Manager Workspaces](#display-tag-manager-workspaces)
|
||||||
|
- [Display Tag Manager Tags](#display-tag-manager-tags)
|
||||||
|
- [Display Tag Manager User Permissions](#display-tag-manager-user-permissions)
|
||||||
|
- [Examples](#examples)
|
||||||
|
|
||||||
|
## API documentation
|
||||||
|
* [Tag Manager API](https://developers.google.com/tag-manager/reference/rest)
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
To use these commands you must add the 'Tag Manager API' to your project and update your service account authorization.
|
||||||
|
```
|
||||||
|
gam update project
|
||||||
|
gam user user@domain.com update serviceaccount
|
||||||
|
|
||||||
|
[*] 41) Tag Manager API - Accounts, Containers, Workspaces, Tags - read only
|
||||||
|
[*] 42) Tag Manager API - Users
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Definitions
|
||||||
|
* [`<UserTypeEntity>`](Collections-of-Users)
|
||||||
|
* [`<FileSelector> | <CSVFileSelector>`](Collections-of-Items)
|
||||||
|
```
|
||||||
|
<TagManagerAccountID> ::= <String>
|
||||||
|
<TagManagerAccountPath> ::= accounts/<TagManagerAccountID>
|
||||||
|
<TagManagerAccountPathList> ::= "<TagManagerAccountPath>(,<TagManagerAccountPath>)*"
|
||||||
|
<TagManagerAccountPathEntity> ::=
|
||||||
|
<TagManagerAccountPathList> |
|
||||||
|
(select <FileSelector>|<CSVFileSelector>) |
|
||||||
|
|
||||||
|
<TagManagerContainerID> ::= <String>
|
||||||
|
<TagManagerContainerPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>
|
||||||
|
<TagManagerContainerPathList> ::= "<TagManagerContainerPath>(,<TagManagerContainerPath>)*"
|
||||||
|
<TagManagerContainerPathEntity> ::=
|
||||||
|
<TagManagerContainerPathList> |
|
||||||
|
(select <FileSelector>|<CSVFileSelector>) |
|
||||||
|
|
||||||
|
<TagManagerWorkspaceID> ::= <String>
|
||||||
|
<TagManagerWorkspacePath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>
|
||||||
|
<TagManagerWorkspacePathList> ::= "<TagManagerWorkspacePath>(,<TagManagerWorkspacePath>)*"
|
||||||
|
<TagManagerWorkspacePathEntity> ::=
|
||||||
|
<TagManagerWorkspacePathList> |
|
||||||
|
(select <FileSelector>|<CSVFileSelector>) |
|
||||||
|
|
||||||
|
<TagManagerTagID> ::= <String>
|
||||||
|
<TagManagerTagPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>/tags/<TagManagerTagID>
|
||||||
|
```
|
||||||
|
## Display Tag Manager Accounts
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> show tagmanageraccounts
|
||||||
|
[includegoogletags [<Boolean>]]
|
||||||
|
[formatjson]
|
||||||
|
```
|
||||||
|
By default, Gam displays the accounts as an indented list of keys and values.
|
||||||
|
* `formatjson` - Display the account in JSON format
|
||||||
|
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> print tagmanagerccounts [todrive <ToDriveAttribute>*]
|
||||||
|
[includegoogletags [<Boolean>]]
|
||||||
|
[formatjson [quotechar <Character>]]
|
||||||
|
```
|
||||||
|
By default, Gam displays the accounts as columns of fields; the following option causes the output to be in JSON format,
|
||||||
|
* `formatjson` - Display the fields in JSON format.
|
||||||
|
|
||||||
|
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
|
||||||
|
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
|
||||||
|
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
|
||||||
|
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
|
||||||
|
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
|
||||||
|
|
||||||
|
## Display Tag Manager Containers
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> show tagmanagercontainers <TagManagerAccountPathEntity>
|
||||||
|
[formatjson]
|
||||||
|
```
|
||||||
|
By default, Gam displays the containers as an indented list of keys and values.
|
||||||
|
* `formatjson` - Display the container in JSON format
|
||||||
|
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> print tagmanagercontainers <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
|
||||||
|
[formatjson [quotechar <Character>]]
|
||||||
|
```
|
||||||
|
By default, Gam displays the containers as columns of fields; the following option causes the output to be in JSON format,
|
||||||
|
* `formatjson` - Display the fields in JSON format.
|
||||||
|
|
||||||
|
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
|
||||||
|
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
|
||||||
|
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
|
||||||
|
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
|
||||||
|
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
|
||||||
|
|
||||||
|
## Display Tag Manager Workspaces
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> show tagmanagerworkspaces <TagManagerContainerPathEntity>
|
||||||
|
[formatjson]
|
||||||
|
```
|
||||||
|
By default, Gam displays the workspaces as an indented list of keys and values.
|
||||||
|
* `formatjson` - Display the workspace in JSON format
|
||||||
|
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> print tagmanagerworkspaces <TagManagerContainerPathEntity> [todrive <ToDriveAttribute>*]
|
||||||
|
[formatjson [quotechar <Character>]]
|
||||||
|
```
|
||||||
|
By default, Gam displays the workspaces as columns of fields; the following option causes the output to be in JSON format,
|
||||||
|
* `formatjson` - Display the fields in JSON format.
|
||||||
|
|
||||||
|
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
|
||||||
|
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
|
||||||
|
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
|
||||||
|
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
|
||||||
|
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
|
||||||
|
|
||||||
|
## Display Tag Manager Tags
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> show tagmanagertags <TagManagerWorkspacePathEntity>
|
||||||
|
[formatjson]
|
||||||
|
```
|
||||||
|
By default, Gam displays the tags as an indented list of keys and values.
|
||||||
|
* `formatjson` - Display the tag in JSON format
|
||||||
|
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> print tagmanagertags <TagManagerWorkspacePathEntity> [todrive <ToDriveAttribute>*]
|
||||||
|
[formatjson [quotechar <Character>]]
|
||||||
|
```
|
||||||
|
By default, Gam displays the tags as columns of fields; the following option causes the output to be in JSON format,
|
||||||
|
* `formatjson` - Display the fields in JSON format.
|
||||||
|
|
||||||
|
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
|
||||||
|
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
|
||||||
|
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
|
||||||
|
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
|
||||||
|
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
|
||||||
|
|
||||||
|
## Display Tag Manager User Permissions
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> show tagmanagerpermissions <TagManagerAccountPathEntity>
|
||||||
|
[formatjson]
|
||||||
|
```
|
||||||
|
By default, Gam displays the permissions as an indented list of keys and values.
|
||||||
|
* `formatjson` - Display the permission in JSON format
|
||||||
|
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> print tagmanagerpermissions <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
|
||||||
|
[formatjson [quotechar <Character>]]
|
||||||
|
```
|
||||||
|
By default, Gam displays the permissions as columns of fields; the following option causes the output to be in JSON format,
|
||||||
|
* `formatjson` - Display the fields in JSON format.
|
||||||
|
|
||||||
|
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
|
||||||
|
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
|
||||||
|
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
|
||||||
|
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
|
||||||
|
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
|
||||||
|
|
||||||
|
### Examples
|
||||||
|
Single user - Get CSV data.
|
||||||
|
```
|
||||||
|
$ gam redirect csv ./tmaccounts.csv user taguser@domain.com print tagmanageraccounts
|
||||||
|
|
||||||
|
$ gam redirect csv ./tmcontainers.csv user taguser@domain.com print tagmanagercontainers select csvfile tmaccounts.csv:path
|
||||||
|
|
||||||
|
$ gam redirect csv ./tmworkspaces.csv user taguser@domain.com print tagmanagerworkspaces select csvfile tmcontainers.csv:path
|
||||||
|
|
||||||
|
$ gam redirect csv ./tmtags.csv user taguser@domain.com print tagmanagertags select csvfile tmworkspaces.csv:path
|
||||||
|
|
||||||
|
$ gam redirect csv ./tmpermissions.csv user taguser@domain.com print tagmanagerpermissions select csvfile tmaccounts.csv:path
|
||||||
|
```
|
||||||
|
|
||||||
|
Single user - Get indented keys and values data from CSV data.
|
||||||
|
```
|
||||||
|
$ gam redirect stdout ./tmaccounts.txt user taguser@domain.com show tagmanageraccounts
|
||||||
|
|
||||||
|
$ gam redirect stdout ./tmcontainers.txt user taguser@domain.com show tagmanagercontainers select csvfile tmaccounts.csv:path
|
||||||
|
|
||||||
|
$ gam redirect stdout ./tmworkspaces.txt user taguser@domain.com show tagmanagerworkspaces select csvfile tmcontainers.csv:path
|
||||||
|
|
||||||
|
$ gam redirect stdout ./tmtags.txt user taguser@domain.com show tagmanagertags select csvfile tmworkspaces.csv:path
|
||||||
|
|
||||||
|
$ gam redirect stdout ./tmpermissions.txt user taguser@domain.com show tagmanagerpermissions select csvfile tmaccounts.csv:path
|
||||||
|
```
|
||||||
|
|
||||||
|
Multiple users - Get CSV data.
|
||||||
|
```
|
||||||
|
$ gam redirect csv ./tmaccounts.csv multiprocess redirect stderr - multiprocess csv Users.csv gam user "~User" print tagmanageraccounts
|
||||||
|
|
||||||
|
$ gam redirect csv ./tmcontainers.csv multiprocess redirect stderr - multiprocess csv tmaccounts.csv gam user "~User" print tagmanagercontainers "~path"
|
||||||
|
|
||||||
|
$ gam redirect csv ./tmworkspaces.csv multiprocess redirect stderr - multiprocess csv tmcontainers.csv gam user "~User" print tagmanagerworkspaces "~path"
|
||||||
|
|
||||||
|
$ gam redirect csv ./tmtags.csv multiprocess redirect stderr - multiprocess csv tmworkspaces.csv gam user "~User" print tagmanagertags "~path"
|
||||||
|
|
||||||
|
$ gam redirect csv ./tmpermissions.csv multiprocess redirect stderr - multiprocess csv tmaccounts.csv gam user "~User" print tagmanagerpermissions "~path"
|
||||||
|
```
|
||||||
|
|
||||||
|
Multiple users - Get indented keys and values data from CSV data.
|
||||||
|
```
|
||||||
|
$ gam redirect stdout ./tmaccounts.txt multiprocess redirect stderr - multiprocess csv Users.csv gam user "~User" show tagmanageraccounts
|
||||||
|
|
||||||
|
$ gam redirect stdout ./tmcontainers.txt multiprocess redirect stderr - multiprocess csv tmaccounts.csv gam user "~User" show tagmanagercontainers "~path"
|
||||||
|
|
||||||
|
$ gam redirect stdout ./tmworkspaces.txt multiprocess redirect stderr - multiprocess csv tmcontainers.csv gam user "~User" show tagmanagerworkspaces "~path"
|
||||||
|
|
||||||
|
$ gam redirect stdout ./tmtags.txt multiprocess redirect stderr - multiprocess csv tmworkspaces.csv gam user "~User" show tagmanagertags "~path"
|
||||||
|
|
||||||
|
$ gam redirect stdout ./tmpermissions.txt multiprocess redirect stderr - multiprocess csv tmaccounts.csv gam user "~User" show tagmanagerpermissions "~path"
|
||||||
|
|
||||||
|
```
|
||||||
48
wiki/Users-Web-Resources-and-Sites.md
Normal file
48
wiki/Users-Web-Resources-and-Sites.md
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# Users - Web Resources and Sites
|
||||||
|
- [API documentation](#api-documentation)
|
||||||
|
- [Introduction](#introduction)
|
||||||
|
- [Definitions](#definitions)
|
||||||
|
- [Display Web Resources](#display-web-resources)
|
||||||
|
- [Display Web Sites](#display-web-sites)
|
||||||
|
|
||||||
|
## API documentation
|
||||||
|
* [Web Resources](https://developers.google.com/site-verification/v1/webResource/list)
|
||||||
|
* [Web Sites](https://developers.google.com/webmaster-tools/v1/sites/list)
|
||||||
|
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
These features were added in version 7.17.00.
|
||||||
|
|
||||||
|
To use these commands you add the 'Search Console API' to your project and update your service account authorization.
|
||||||
|
```
|
||||||
|
gam update project
|
||||||
|
gam user user@domain.com update serviceaccount
|
||||||
|
...
|
||||||
|
[*] 39) Search Console API - read only
|
||||||
|
[*] 42) Site Verification API
|
||||||
|
|
||||||
|
```
|
||||||
|
## Definitions
|
||||||
|
* [`<UserTypeEntity>`](Collections-of-Users)
|
||||||
|
|
||||||
|
## Display Web Resources
|
||||||
|
```
|
||||||
|
gam <UserItem> show webresources
|
||||||
|
```
|
||||||
|
Gam displays the information as an indented list of keys and values.
|
||||||
|
|
||||||
|
```
|
||||||
|
gam <UserItem> print webresources [todrive <ToDriveAttribute>*]
|
||||||
|
```
|
||||||
|
Gam displays the information as columns of fields.
|
||||||
|
|
||||||
|
## Display Web Sites
|
||||||
|
```
|
||||||
|
gam <UserItem> show websites
|
||||||
|
```
|
||||||
|
Gam displays the information as an indented list of keys and values.
|
||||||
|
|
||||||
|
```
|
||||||
|
gam <UserItem> print websites [todrive <ToDriveAttribute>*]
|
||||||
|
```
|
||||||
|
Gam displays the information as columns of fields.
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
k
|
|
||||||
# Version and Help
|
# Version and Help
|
||||||
|
|
||||||
Print the current version of Gam with details
|
Print the current version of Gam with details
|
||||||
```
|
```
|
||||||
gam version
|
gam version
|
||||||
GAM 7.13.01 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.17.01 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.5 64-bit final
|
Python 3.13.5 64-bit final
|
||||||
MacOS Sequoia 15.5 x86_64
|
MacOS Sequoia 15.5 x86_64
|
||||||
@@ -16,7 +15,7 @@ Time: 2023-06-02T21:10:00-07:00
|
|||||||
Print the current version of Gam with details and time offset information
|
Print the current version of Gam with details and time offset information
|
||||||
```
|
```
|
||||||
gam version timeoffset
|
gam version timeoffset
|
||||||
GAM 7.13.02 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.17.01 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.5 64-bit final
|
Python 3.13.5 64-bit final
|
||||||
MacOS Sequoia 15.5 x86_64
|
MacOS Sequoia 15.5 x86_64
|
||||||
@@ -28,7 +27,7 @@ Your system time differs from www.googleapis.com by less than 1 second
|
|||||||
Print the current version of Gam with extended details and SSL information
|
Print the current version of Gam with extended details and SSL information
|
||||||
```
|
```
|
||||||
gam version extended
|
gam version extended
|
||||||
GAM 7.13.02 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.17.01 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.5 64-bit final
|
Python 3.13.5 64-bit final
|
||||||
MacOS Sequoia 15.5 x86_64
|
MacOS Sequoia 15.5 x86_64
|
||||||
@@ -65,7 +64,7 @@ MacOS High Sierra 10.13.6 x86_64
|
|||||||
Path: /Users/Admin/bin/gam7
|
Path: /Users/Admin/bin/gam7
|
||||||
Version Check:
|
Version Check:
|
||||||
Current: 5.35.08
|
Current: 5.35.08
|
||||||
Latest: 7.13.02
|
Latest: 7.17.01
|
||||||
echo $?
|
echo $?
|
||||||
1
|
1
|
||||||
```
|
```
|
||||||
@@ -73,7 +72,7 @@ echo $?
|
|||||||
Print the current version number without details
|
Print the current version number without details
|
||||||
```
|
```
|
||||||
gam version simple
|
gam version simple
|
||||||
7.13.02
|
7.17.01
|
||||||
```
|
```
|
||||||
In Linux/MacOS you can do:
|
In Linux/MacOS you can do:
|
||||||
```
|
```
|
||||||
@@ -83,7 +82,7 @@ echo $VER
|
|||||||
Print the current version of Gam and address of this Wiki
|
Print the current version of Gam and address of this Wiki
|
||||||
```
|
```
|
||||||
gam help
|
gam help
|
||||||
GAM 7.13.02 - https://github.com/GAM-team/GAM
|
GAM 7.17.01 - https://github.com/GAM-team/GAM
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.5 64-bit final
|
Python 3.13.5 64-bit final
|
||||||
MacOS Sequoia 15.5 x86_64
|
MacOS Sequoia 15.5 x86_64
|
||||||
|
|||||||
@@ -97,6 +97,7 @@ Client Access
|
|||||||
* [Domain Shared Contacts](Domain-SharedContacts)
|
* [Domain Shared Contacts](Domain-SharedContacts)
|
||||||
* [Email Audit Monitor](Email-Audit-Monitor)
|
* [Email Audit Monitor](Email-Audit-Monitor)
|
||||||
* [Find File Owner](Find-File-Owner)
|
* [Find File Owner](Find-File-Owner)
|
||||||
|
* [Global Address List](Global-Address-List)
|
||||||
* [Google Data Transfers](Google-Data-Transfers)
|
* [Google Data Transfers](Google-Data-Transfers)
|
||||||
* [Groups](Groups)
|
* [Groups](Groups)
|
||||||
* [Groups - Membership](Groups-Membership)
|
* [Groups - Membership](Groups-Membership)
|
||||||
@@ -170,8 +171,10 @@ Service Account Access
|
|||||||
* [Users - Profile Photo](Users-Profile-Photo)
|
* [Users - Profile Photo](Users-Profile-Photo)
|
||||||
* [Users - Shared Drives](Users-Shared-Drives)
|
* [Users - Shared Drives](Users-Shared-Drives)
|
||||||
* [Users - Spreadsheets](Users-Spreadsheets)
|
* [Users - Spreadsheets](Users-Spreadsheets)
|
||||||
|
* [Users - Tag Manager](Users-Tag-Manager)
|
||||||
* [Users - Tasks](Users-Tasks)
|
* [Users - Tasks](Users-Tasks)
|
||||||
* [Users - YouTube](Users-YouTube)
|
* [Users - YouTube](Users-YouTube)
|
||||||
|
* [Users - Web Resources and Sites](Users-Web-Resources-and-Sites)
|
||||||
|
|
||||||
GAM Tutorials
|
GAM Tutorials
|
||||||
* [Account Auditing](l-ExamplesAccountAuditing)
|
* [Account Auditing](l-ExamplesAccountAuditing)
|
||||||
|
|||||||
@@ -412,9 +412,8 @@ never_time
|
|||||||
has the value "1970-01-01T00:00:00.000Z"
|
has the value "1970-01-01T00:00:00.000Z"
|
||||||
Default: Never
|
Default: Never
|
||||||
no_browser
|
no_browser
|
||||||
If no_browser is True, GAM won't open a browser if todrive is set
|
If no_browser is True, GAM won't open a browser when it prints a link
|
||||||
when creating CSV files and GAM prints a link and waits for
|
and waits for the verification code when oauth2.txt is being created/updated
|
||||||
the verification code when oauth2.txt is being created
|
|
||||||
Signal file: OldGamPath/nobrowser.txt
|
Signal file: OldGamPath/nobrowser.txt
|
||||||
no_cache
|
no_cache
|
||||||
Disable GAM API caching
|
Disable GAM API caching
|
||||||
@@ -994,6 +993,7 @@ gam update project
|
|||||||
gam oauth create
|
gam oauth create
|
||||||
gam info domain
|
gam info domain
|
||||||
gam config customer_id <CustomerID> save
|
gam config customer_id <CustomerID> save
|
||||||
|
gam user user@xxx.com update serviceaccount
|
||||||
```
|
```
|
||||||
|
|
||||||
### New clients
|
### New clients
|
||||||
@@ -1015,7 +1015,7 @@ gam create project
|
|||||||
gam oauth create
|
gam oauth create
|
||||||
gam info domain
|
gam info domain
|
||||||
gam config customer_id <CustomerID> save
|
gam config customer_id <CustomerID> save
|
||||||
gam user user@foo.com check serviceaccount
|
gam user user@foo.com update serviceaccount
|
||||||
```
|
```
|
||||||
|
|
||||||
To get information about a client, select a section.
|
To get information about a client, select a section.
|
||||||
|
|||||||
Reference in New Issue
Block a user