mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-28 18:01:36 +00:00
Compare commits
114 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8b182b7b37 | ||
|
|
e9d911b5cd | ||
|
|
c67a4c9147 | ||
|
|
e583b6e20c | ||
|
|
8c23cd8e06 | ||
|
|
75fa7155a0 | ||
|
|
90e11162a0 | ||
|
|
b11617c1ea | ||
|
|
cf59f9156e | ||
|
|
35c1e44568 | ||
|
|
5cc68247a3 | ||
|
|
906ee82417 | ||
|
|
3d13d4afd8 | ||
|
|
9d68ce1b46 | ||
|
|
bd0ba995e5 | ||
|
|
0ab4b6d5cd | ||
|
|
163433f15a | ||
|
|
3d6219b551 | ||
|
|
99e363b5d6 | ||
|
|
ed03da815f | ||
|
|
ef1a40afa8 | ||
|
|
cd56f353d8 | ||
|
|
3924722f1c | ||
|
|
3ce48a95c9 | ||
|
|
2dafbfbcfc | ||
|
|
e03086866a | ||
|
|
0422bf22ea | ||
|
|
f3d9f3d518 | ||
|
|
ea9fd3f363 | ||
|
|
bed9db37ad | ||
|
|
072dc4809a | ||
|
|
6db2309fc4 | ||
|
|
cbb0c81652 | ||
|
|
f68aca8361 | ||
|
|
d63fdb4ed9 | ||
|
|
226781766b | ||
|
|
434e30d57c | ||
|
|
2ab059926b | ||
|
|
5ae25495f7 | ||
|
|
20e226e57d | ||
|
|
b4677585bb | ||
|
|
3a1437872c | ||
|
|
602dce2f5a | ||
|
|
8ce930f01b | ||
|
|
9631882be0 | ||
|
|
32d2858e4b | ||
|
|
98370925e7 | ||
|
|
1ef5d030f6 | ||
|
|
d50b5fb61e | ||
|
|
e070e92be2 | ||
|
|
b3b6fff2f1 | ||
|
|
fea94fcc1c | ||
|
|
a0cd228110 | ||
|
|
acfcd8b723 | ||
|
|
a26494e5c6 | ||
|
|
5605e5d1b6 | ||
|
|
e0fdac6e17 | ||
|
|
53dc8e3265 | ||
|
|
993a0b403e | ||
|
|
2d7d118d32 | ||
|
|
f2bc704fd6 | ||
|
|
46e0c85308 | ||
|
|
9221d075fe | ||
|
|
12b84a5fcf | ||
|
|
6d411972ac | ||
|
|
d665a66d3e | ||
|
|
b2a340d99d | ||
|
|
c76164fbef | ||
|
|
3d22891052 | ||
|
|
48de06613f | ||
|
|
4d1879a9a8 | ||
|
|
454caa5a76 | ||
|
|
12ffa7e823 | ||
|
|
8fc41cbc64 | ||
|
|
dd16c29ee7 | ||
|
|
1a24b4c855 | ||
|
|
f9dfc7d094 | ||
|
|
bc64a292c3 | ||
|
|
524ef0df55 | ||
|
|
38f7f39b44 | ||
|
|
183e40ef4e | ||
|
|
ba43c4ea5f | ||
|
|
70c88dacf3 | ||
|
|
cc883b6bb7 | ||
|
|
4c320110b3 | ||
|
|
fe7c46e04d | ||
|
|
5b1c3a3a46 | ||
|
|
ce728a991f | ||
|
|
502bda4fe9 | ||
|
|
3f3d882c74 | ||
|
|
a1948eb3ca | ||
|
|
f0fb6336d1 | ||
|
|
71e5ef2399 | ||
|
|
9d9698a669 | ||
|
|
eeb180f1f2 | ||
|
|
6079ab20b3 | ||
|
|
6189ca92ab | ||
|
|
33b60c4b14 | ||
|
|
0c5f747c36 | ||
|
|
826619857c | ||
|
|
9a2880e411 | ||
|
|
95caeaba5e | ||
|
|
d8ad1b27a4 | ||
|
|
fefeae7c60 | ||
|
|
65f7b82d53 | ||
|
|
bebafb428d | ||
|
|
5e59363a0c | ||
|
|
4b2e0db720 | ||
|
|
938b2bf5a4 | ||
|
|
34ff0329c4 | ||
|
|
bed610405b | ||
|
|
1b0c8b75cb | ||
|
|
6eb7e59d56 | ||
|
|
5b4cf97702 |
102
.github/workflows/build.yml
vendored
102
.github/workflows/build.yml
vendored
@@ -41,78 +41,101 @@ jobs:
|
|||||||
include:
|
include:
|
||||||
- os: ubuntu-22.04
|
- os: ubuntu-22.04
|
||||||
jid: 1
|
jid: 1
|
||||||
|
freethreaded: false
|
||||||
goal: build
|
goal: build
|
||||||
name: Build Intel Ubuntu Jammy
|
name: Build Intel Ubuntu Jammy
|
||||||
- os: ubuntu-24.04
|
- os: ubuntu-24.04
|
||||||
jid: 2
|
jid: 2
|
||||||
|
freethreaded: false
|
||||||
goal: build
|
goal: build
|
||||||
name: Build Intel Ubuntu Noble
|
name: Build Intel Ubuntu Noble
|
||||||
- os: ubuntu-24.04-arm
|
- os: ubuntu-24.04-arm
|
||||||
jid: 3
|
jid: 3
|
||||||
|
freethreaded: false
|
||||||
goal: build
|
goal: build
|
||||||
name: Build Arm Ubuntu Noble
|
name: Build Arm Ubuntu Noble
|
||||||
- os: ubuntu-22.04-arm
|
- os: ubuntu-22.04-arm
|
||||||
jid: 4
|
jid: 4
|
||||||
|
freethreaded: false
|
||||||
goal: build
|
goal: build
|
||||||
name: Build Arm Ubuntu Jammy
|
name: Build Arm Ubuntu Jammy
|
||||||
- os: ubuntu-22.04
|
- os: ubuntu-22.04
|
||||||
jid: 5
|
jid: 5
|
||||||
|
freethreaded: false
|
||||||
goal: build
|
goal: build
|
||||||
staticx: yes
|
staticx: yes
|
||||||
name: Build Intel StaticX Legacy
|
name: Build Intel StaticX Legacy
|
||||||
- os: ubuntu-22.04-arm
|
- os: ubuntu-22.04-arm
|
||||||
jid: 6
|
jid: 6
|
||||||
|
freethreaded: false
|
||||||
goal: build
|
goal: build
|
||||||
staticx: yes
|
staticx: yes
|
||||||
name: Build Arm StaticX Legacy
|
name: Build Arm StaticX Legacy
|
||||||
- os: macos-13
|
- os: macos-13
|
||||||
jid: 7
|
jid: 7
|
||||||
|
freethreaded: false
|
||||||
goal: build
|
goal: build
|
||||||
name: Build Intel MacOS
|
name: Build Intel MacOS
|
||||||
- os: macos-14
|
- os: macos-14
|
||||||
jid: 8
|
jid: 8
|
||||||
|
freethreaded: false
|
||||||
goal: build
|
goal: build
|
||||||
name: Build Arm MacOS 14
|
name: Build Arm MacOS 14
|
||||||
- os: macos-15
|
- os: macos-15
|
||||||
jid: 9
|
jid: 9
|
||||||
|
freethreaded: false
|
||||||
goal: build
|
goal: build
|
||||||
name: Build Arm MacOS 15
|
name: Build Arm MacOS 15
|
||||||
- os: macos-15-intel
|
- os: macos-15-intel
|
||||||
jid: 10
|
jid: 10
|
||||||
|
freethreaded: false
|
||||||
goal: build
|
goal: build
|
||||||
name: Build x86_64 macOS 15
|
name: Build x86_64 macOS 15
|
||||||
- os: macos-26
|
- os: macos-26
|
||||||
jid: 11
|
jid: 11
|
||||||
|
freethreaded: false
|
||||||
goal: build
|
goal: build
|
||||||
name: Build Arm MacOS 26
|
name: Build Arm MacOS 26
|
||||||
- os: windows-2025
|
- os: windows-2025
|
||||||
jid: 12
|
jid: 12
|
||||||
|
freethreaded: false
|
||||||
goal: build
|
goal: build
|
||||||
name: Build Intel Windows
|
name: Build Intel Windows
|
||||||
- os: windows-11-arm
|
- os: windows-11-arm
|
||||||
jid: 13
|
jid: 13
|
||||||
|
freethreaded: false
|
||||||
goal: build
|
goal: build
|
||||||
name: Build Arm Windows
|
name: Build Arm Windows
|
||||||
- os: ubuntu-24.04
|
- os: ubuntu-24.04
|
||||||
goal: test
|
goal: test
|
||||||
python: "3.10"
|
python: "3.10"
|
||||||
|
freethreaded: false
|
||||||
jid: 14
|
jid: 14
|
||||||
name: Test Python 3.10
|
name: Test Python 3.10
|
||||||
- os: ubuntu-24.04
|
- os: ubuntu-24.04
|
||||||
goal: test
|
goal: test
|
||||||
python: "3.11"
|
python: "3.11"
|
||||||
|
freethreaded: false
|
||||||
jid: 15
|
jid: 15
|
||||||
name: Test Python 3.11
|
name: Test Python 3.11
|
||||||
#- os: ubuntu-24.04
|
- os: ubuntu-24.04
|
||||||
# goal: test
|
goal: test
|
||||||
# python: "3.12"
|
python: "3.12"
|
||||||
# jid: 16
|
freethreaded: false
|
||||||
# name: Test Python 3.12
|
jid: 16
|
||||||
#- os: ubuntu-24.04
|
name: Test Python 3.12
|
||||||
# goal: test
|
- os: ubuntu-24.04
|
||||||
# python: "3.14-dev"
|
goal: test
|
||||||
# jid: 16
|
python: "3.15-dev"
|
||||||
# name: Test Python 3.14-dev
|
freethreaded: false
|
||||||
|
jid: 17
|
||||||
|
name: Test Python 3.15-dev
|
||||||
|
- os: ubuntu-24.04
|
||||||
|
goal: test
|
||||||
|
python: "3.14"
|
||||||
|
freethreaded: true
|
||||||
|
jid: 18
|
||||||
|
name: Test Python 3.14 freethread
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
@@ -135,7 +158,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
cache.tar.xz
|
cache.tar.xz
|
||||||
key: gam-${{ matrix.jid }}-20250922
|
key: gam-${{ matrix.jid }}-20251007
|
||||||
|
|
||||||
- name: Untar Cache archive
|
- name: Untar Cache archive
|
||||||
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit == 'true'
|
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit == 'true'
|
||||||
@@ -145,17 +168,19 @@ jobs:
|
|||||||
|
|
||||||
- name: Use pre-compiled Python for testing
|
- name: Use pre-compiled Python for testing
|
||||||
if: matrix.python != ''
|
if: matrix.python != ''
|
||||||
uses: actions/setup-python@3d1e2d2ca0a067f27da6fec484fce7f5256def85 # v5.6.0
|
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python }}
|
python-version: ${{ matrix.python }}
|
||||||
allow-prereleases: true
|
allow-prereleases: true
|
||||||
check-latest: true
|
check-latest: true
|
||||||
|
freethreaded: ${{ matrix.freethreaded }}
|
||||||
|
|
||||||
- name: common variables for all runs
|
- name: common variables for all runs
|
||||||
env:
|
env:
|
||||||
JID: ${{ matrix.jid }}
|
JID: ${{ matrix.jid }}
|
||||||
ACTIONS_CACHE: ${{ steps.cache-python-ssl.outputs.cache-hit }}
|
ACTIONS_CACHE: ${{ steps.cache-python-ssl.outputs.cache-hit }}
|
||||||
ACTIONS_GOAL: ${{ matrix.goal }}
|
ACTIONS_GOAL: ${{ matrix.goal }}
|
||||||
|
freethreaded: ${{ matrix.freethreaded }}
|
||||||
run: |
|
run: |
|
||||||
case $RUNNER_ARCH in
|
case $RUNNER_ARCH in
|
||||||
X64)
|
X64)
|
||||||
@@ -169,6 +194,12 @@ jobs:
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
echo "JID=${JID}" >> $GITHUB_ENV
|
echo "JID=${JID}" >> $GITHUB_ENV
|
||||||
|
echo "freethreaded=${freethreaded}" >> $GITHUB_ENV
|
||||||
|
if "$freethreaded"; then
|
||||||
|
# Hush some warnings while we test
|
||||||
|
export PYTHON_GIL=0
|
||||||
|
echo "PYTHON_GIL=${PYTHON_GIL}" >> $GITHUB_ENV
|
||||||
|
fi
|
||||||
echo "ACTIONS_CACHE=${ACTIONS_CACHE}" >> $GITHUB_ENV
|
echo "ACTIONS_CACHE=${ACTIONS_CACHE}" >> $GITHUB_ENV
|
||||||
echo "ACTIONS_GOAL=${ACTIONS_GOAL}" >> $GITHUB_ENV
|
echo "ACTIONS_GOAL=${ACTIONS_GOAL}" >> $GITHUB_ENV
|
||||||
curl_version=$(curl --version | head -n 1 | awk '{ print $2 }')
|
curl_version=$(curl --version | head -n 1 | awk '{ print $2 }')
|
||||||
@@ -194,13 +225,9 @@ jobs:
|
|||||||
if: matrix.goal == 'test'
|
if: matrix.goal == 'test'
|
||||||
run: |
|
run: |
|
||||||
export PYTHON=$(which python3)
|
export PYTHON=$(which python3)
|
||||||
export PIP=$(which pip3)
|
|
||||||
export gam="${PYTHON} -m gam"
|
|
||||||
export gampath="$(readlink -e .)/gam"
|
export gampath="$(readlink -e .)/gam"
|
||||||
echo -e "PYTHON: ${PYTHON}\nPIP: ${PIP}\gam: ${gam}\ngampath: ${gampath}"
|
echo -e "PYTHON: ${PYTHON}\ngam: ${gam}\ngampath: ${gampath}"
|
||||||
echo "PYTHON=${PYTHON}" >> $GITHUB_ENV
|
echo "PYTHON=${PYTHON}" >> $GITHUB_ENV
|
||||||
echo "PIP=${PIP}" >> $GITHUB_ENV
|
|
||||||
echo "gam=${gam}" >> $GITHUB_ENV
|
|
||||||
echo "gampath=${gampath}" >> $GITHUB_ENV
|
echo "gampath=${gampath}" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Install necessary Github-hosted Linux packages
|
- name: Install necessary Github-hosted Linux packages
|
||||||
@@ -261,14 +288,15 @@ jobs:
|
|||||||
MAKEOPT=""
|
MAKEOPT=""
|
||||||
PERL="c:\strawberry\perl\bin\perl.exe"
|
PERL="c:\strawberry\perl\bin\perl.exe"
|
||||||
if [[ "$RUNNER_ARCH" == "ARM64" ]]; then
|
if [[ "$RUNNER_ARCH" == "ARM64" ]]; then
|
||||||
PYEXTERNALS_PATH="arm64"
|
PYEXTERNALS_ARCH="arm64"
|
||||||
WIX_ARCH="arm64"
|
WIX_ARCH="arm64"
|
||||||
elif [[ "$RUNNER_ARCH" == "X64" ]]; then
|
elif [[ "$RUNNER_ARCH" == "X64" ]]; then
|
||||||
PYEXTERNALS_PATH="amd64"
|
PYEXTERNALS_ARCH="amd64"
|
||||||
WIX_ARCH="x64"
|
WIX_ARCH="x64"
|
||||||
fi
|
fi
|
||||||
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${PYTHON_SOURCE_PATH}/PCbuild/${PYEXTERNALS_PATH}"
|
PYEXTERNALS_PATH=$(cygpath -u "${PYTHON_SOURCE_PATH}/PCbuild/${PYEXTERNALS_ARCH}")
|
||||||
echo "PYTHON=${PYTHON_SOURCE_PATH}/PCbuild/${PYEXTERNALS_PATH}/python.exe" >> $GITHUB_ENV
|
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${PYEXTERNALS_PATH}"
|
||||||
|
echo "PYTHON=${PYTHON_SOURCE_PATH}/PCbuild/${PYEXTERNALS_ARCH}/python.exe" >> $GITHUB_ENV
|
||||||
echo "WIX_ARCH=${WIX_ARCH}" >> $GITHUB_ENV
|
echo "WIX_ARCH=${WIX_ARCH}" >> $GITHUB_ENV
|
||||||
fi
|
fi
|
||||||
echo "We'll run make with: ${MAKEOPT}"
|
echo "We'll run make with: ${MAKEOPT}"
|
||||||
@@ -457,15 +485,36 @@ jobs:
|
|||||||
"$PYTHON" get-pip.py
|
"$PYTHON" get-pip.py
|
||||||
"$PYTHON" -m pip install --upgrade pip
|
"$PYTHON" -m pip install --upgrade pip
|
||||||
"$PYTHON" -m pip install --upgrade wheel
|
"$PYTHON" -m pip install --upgrade wheel
|
||||||
"$PYTHON" -m pip install setuptools
|
"$PYTHON" -m pip install --upgrade setuptools
|
||||||
"$PYTHON" -m pip install --upgrade importlib-metadata
|
"$PYTHON" -m pip install --upgrade importlib-metadata
|
||||||
"$PYTHON" -m pip install --upgrade setuptools-scm
|
"$PYTHON" -m pip install --upgrade setuptools-scm
|
||||||
"$PYTHON" -m pip list
|
"$PYTHON" -m pip list
|
||||||
|
|
||||||
|
- name: Create and use Python venv
|
||||||
|
run: |
|
||||||
|
cd "$GITHUB_WORKSPACE"
|
||||||
|
"$PYTHON" -m venv venv
|
||||||
|
if [[ "$RUNNER_OS" == "Windows" ]]; then
|
||||||
|
# hack till pyscard has a wheel for win arm64
|
||||||
|
"$PYTHON" -m pip install --upgrade --force-reinstall pyscard
|
||||||
|
export PYTHON="${GITHUB_WORKSPACE}/venv/scripts/python.exe"
|
||||||
|
else
|
||||||
|
export PYTHON="${GITHUB_WORKSPACE}/venv/bin/python3"
|
||||||
|
fi
|
||||||
|
echo "PYTHON=${PYTHON}" >> $GITHUB_ENV
|
||||||
|
if [[ "$ACTIONS_GOAL" == "test" ]]; then
|
||||||
|
export gam="${PYTHON} gam.py"
|
||||||
|
echo "gam=${gam}" >> $GITHUB_ENV
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Install pip requirements
|
- name: Install pip requirements
|
||||||
run: |
|
run: |
|
||||||
echo "before anything..."
|
echo "before anything..."
|
||||||
"$PYTHON" -m pip list
|
"$PYTHON" -m pip list
|
||||||
|
echo "--info--"
|
||||||
|
"$PYTHON" -m pip cache info
|
||||||
|
echo "--list--"
|
||||||
|
"$PYTHON" -m pip cache list
|
||||||
"$PYTHON" -m pip install --upgrade ..[yubikey]
|
"$PYTHON" -m pip install --upgrade ..[yubikey]
|
||||||
echo "after everything..."
|
echo "after everything..."
|
||||||
"$PYTHON" -m pip list
|
"$PYTHON" -m pip list
|
||||||
@@ -894,11 +943,11 @@ jobs:
|
|||||||
$gam calendar $gam_user printevents after -0d
|
$gam calendar $gam_user printevents after -0d
|
||||||
$gam config enable_dasa false save
|
$gam config enable_dasa false save
|
||||||
matterid=uid:$($gam create vaultmatter name "GHA matter $newbase" description "test matter" returnidonly)
|
matterid=uid:$($gam create vaultmatter name "GHA matter $newbase" description "test matter" returnidonly)
|
||||||
$gam create vaulthold matter $matterid name "GHA hold $newbase" corpus mail accounts $newuser
|
$gam create vaulthold matter $matterid name "GHA hold ${newbase}" corpus mail ou "$newou"
|
||||||
$gam print vaultmatters matterstate open
|
$gam print vaultmatters matterstate open
|
||||||
$gam print vaultholds matter $matterid
|
$gam print vaultholds matter $matterid
|
||||||
$gam print vaultcount matter $matterid corpus mail everyone todrive tdnobrowser
|
$gam print vaultcount matter $matterid corpus mail everyone todrive tdnobrowser
|
||||||
$gam create vaultexport matter $matterid name "GHA export $newbase" corpus mail accounts $newuser
|
$gam create vaultexport matter $matterid name "GHA export $newbase" corpus mail ou "$newou"
|
||||||
$gam print exports matter $matterid | $gam csv - gam info export $matterid id:~~id~~
|
$gam print exports matter $matterid | $gam csv - gam info export $matterid id:~~id~~
|
||||||
$gam config enable_dasa true save
|
$gam config enable_dasa true save
|
||||||
$gam csv sample.csv gam user ~email add calendar id:$newresource
|
$gam csv sample.csv gam user ~email add calendar id:$newresource
|
||||||
@@ -978,7 +1027,8 @@ jobs:
|
|||||||
else
|
else
|
||||||
tar_folders="bin/"
|
tar_folders="bin/"
|
||||||
fi
|
fi
|
||||||
tar cJvvf cache.tar.xz $tar_folders
|
echo '.git*' > ./excludes.txt
|
||||||
|
tar cJvvf cache.tar.xz --exclude-from=excludes.txt $tar_folders
|
||||||
|
|
||||||
merge:
|
merge:
|
||||||
if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
|
if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
|
||||||
@@ -1028,7 +1078,7 @@ jobs:
|
|||||||
echo "dateversion=${dateversion}" >> $GITHUB_OUTPUT
|
echo "dateversion=${dateversion}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Publish draft release
|
- name: Publish draft release
|
||||||
uses: softprops/action-gh-release@fbadcc90e88ecface60a0a0d123795b784ceb239 # v2.3.2
|
uses: softprops/action-gh-release@6cbd405e2c4e67a21c47fa9e383d020e4e28b836 # v2.3.3
|
||||||
with:
|
with:
|
||||||
draft: true
|
draft: true
|
||||||
prerelease: false
|
prerelease: false
|
||||||
|
|||||||
2
.github/workflows/pypi.yml
vendored
2
.github/workflows/pypi.yml
vendored
@@ -30,6 +30,6 @@ jobs:
|
|||||||
python -m build
|
python -m build
|
||||||
|
|
||||||
- name: Publish package distributions to PyPI
|
- name: Publish package distributions to PyPI
|
||||||
uses: pypa/gh-action-pypi-publish@release/v1
|
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
|
||||||
with:
|
with:
|
||||||
attestation: true
|
attestation: true
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
description = "CLI tool to manage Google Workspace"
|
description = "CLI tool to manage Google Workspace"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.9"
|
requires-python = ">=3.10"
|
||||||
classifiers = [
|
classifiers = [
|
||||||
"Programming Language :: Python :: 3",
|
"Programming Language :: Python :: 3",
|
||||||
"Programming Language :: Python :: 3 :: Only",
|
"Programming Language :: Python :: 3 :: Only",
|
||||||
|
|||||||
@@ -368,6 +368,7 @@ If an item contains spaces, it should be surrounded by ".
|
|||||||
## Named items
|
## Named items
|
||||||
|
|
||||||
<AccessToken> ::= <String>
|
<AccessToken> ::= <String>
|
||||||
|
<AdminAssigneeType> ::= group|user|serviceaccount|unknown
|
||||||
<AlertID> ::= <String>
|
<AlertID> ::= <String>
|
||||||
<APIScopeURL> ::= <String>
|
<APIScopeURL> ::= <String>
|
||||||
<APPID> ::= <String>
|
<APPID> ::= <String>
|
||||||
@@ -691,6 +692,7 @@ If an item contains spaces, it should be surrounded by ".
|
|||||||
|
|
||||||
## Lists of basic items
|
## Lists of basic items
|
||||||
|
|
||||||
|
<AdminAssigneeTypeList> ::= "<AdminAssigneeType>(,<AdminAssigneeType>)*"
|
||||||
<APIScopeURLList> ::= "<APIScopeURL>(,<APIScopeURL>)*"
|
<APIScopeURLList> ::= "<APIScopeURL>(,<APIScopeURL>)*"
|
||||||
<ASPIDList> ::= "<ASPID>(,<ASPID>)*"
|
<ASPIDList> ::= "<ASPID>(,<ASPID>)*"
|
||||||
<AssetTagList> ::= "<AssetTag>(,<AssetTag>)*"
|
<AssetTagList> ::= "<AssetTag>(,<AssetTag>)*"
|
||||||
@@ -729,6 +731,7 @@ If an item contains spaces, it should be surrounded by ".
|
|||||||
<DomainNameList> ::= "<DomainName>(,<DomainName>)*"
|
<DomainNameList> ::= "<DomainName>(,<DomainName>)*"
|
||||||
<DriveFileACLRoleList> ::= "<DriveFileACLRole>(,<DriveFileACLRole>)*"
|
<DriveFileACLRoleList> ::= "<DriveFileACLRole>(,<DriveFileACLRole>)*"
|
||||||
<DriveFileACLTypeList> ::= "<DriveFileACLType>(,<DriveFileACLType>)*"
|
<DriveFileACLTypeList> ::= "<DriveFileACLType>(,<DriveFileACLType>)*"
|
||||||
|
<DriveFileIDList> ::= "<DriveFileID>(,<DriveFileID>)*"
|
||||||
<DriveFileList> ::= "<DriveFileItem>(,<DriveFileItem>)*"
|
<DriveFileList> ::= "<DriveFileItem>(,<DriveFileItem>)*"
|
||||||
<DriveFilePermissionList> ::= "<DriveFilePermission>(,<DriveFilePermission>)*"
|
<DriveFilePermissionList> ::= "<DriveFilePermission>(,<DriveFilePermission>)*"
|
||||||
<DriveFilePermissionIDList> ::= "<DriveFilePermissionID>(,<DriveFilePermissionID>)*"
|
<DriveFilePermissionIDList> ::= "<DriveFilePermissionID>(,<DriveFilePermissionID>)*"
|
||||||
@@ -1550,11 +1553,17 @@ gam create|add admin <EmailAddress>|<UniqueID> <RoleItem> customer|(org_unit <Or
|
|||||||
[condition securitygroup|nonsecuritygroup]
|
[condition securitygroup|nonsecuritygroup]
|
||||||
gam delete admin <RoleAssignmentId>
|
gam delete admin <RoleAssignmentId>
|
||||||
|
|
||||||
|
<AdminAssigneeType> ::= group|user|serviceaccount|unknown
|
||||||
|
<AdminAssigneeTypeList> ::= "<AdminAssigneeType>(,<AdminAssigneeType>)*"
|
||||||
|
|
||||||
gam print admins [todrive <ToDriveAttribute>*]
|
gam print admins [todrive <ToDriveAttribute>*]
|
||||||
[user|group <EmailAddress>|<UniqueID>] [role <RoleItem>] [condition]
|
[user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
||||||
[privileges] [oneitemperrow]
|
[types <AdminAssigneeTypeList>]
|
||||||
|
[recursive] [condition] [privileges] [oneitemperrow]
|
||||||
gam show admins
|
gam show admins
|
||||||
[user|group <EmailAddress>|<UniqueID>] [role <RoleItem>] [condition] [privileges]
|
[user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
||||||
|
[types <AdminAssigneeTypeList>]
|
||||||
|
[recursive] [condition] [privileges]
|
||||||
|
|
||||||
# Alert Center
|
# Alert Center
|
||||||
|
|
||||||
@@ -1931,12 +1940,12 @@ gam calendar|calendars <CalendarEntity> info events [<EventEntity>] [maxinstance
|
|||||||
[formatjson]
|
[formatjson]
|
||||||
gam calendar|calendars <CalendarEntity> show events [<EventEntity>] <EventDisplayProperty>*
|
gam calendar|calendars <CalendarEntity> show events [<EventEntity>] <EventDisplayProperty>*
|
||||||
[fields <EventFieldNameList>] [showdayofweek]
|
[fields <EventFieldNameList>] [showdayofweek]
|
||||||
[countsonly]
|
[countsonly|formatjson]
|
||||||
[formatjson]
|
|
||||||
gam calendar|calendars <CalendarEntity> print events [<EventEntity>] <EventDisplayProperty>*
|
gam calendar|calendars <CalendarEntity> print events [<EventEntity>] <EventDisplayProperty>*
|
||||||
[fields <EventFieldNameList>] [showdayofweek]
|
[fields <EventFieldNameList>] [showdayofweek]
|
||||||
[countsonly [eventrowfilter]]
|
(addcsvdata <FieldName> <String>)*
|
||||||
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
[eventrowfilter]
|
||||||
|
[countsonly|(formatjson [quotechar <Character>])] [todrive <ToDriveAttribute>*]
|
||||||
|
|
||||||
gam calendar <CalendarEntity> addevent <EventAttribute>+ [<EventNotificationAttribute>]
|
gam calendar <CalendarEntity> addevent <EventAttribute>+ [<EventNotificationAttribute>]
|
||||||
[showdayofweek]
|
[showdayofweek]
|
||||||
@@ -2048,7 +2057,7 @@ gam create chatmessage <ChatSpace>
|
|||||||
[(thread <ChatThread>)|(threadkey <String>) [replyoption fail|fallbacktonew]]
|
[(thread <ChatThread>)|(threadkey <String>) [replyoption fail|fallbacktonew]]
|
||||||
[returnidonly]
|
[returnidonly]
|
||||||
gam update chatmessage name <ChatMessage>
|
gam update chatmessage name <ChatMessage>
|
||||||
<ChatContent>
|
[<ChatContent>] [clearattachments <String>]
|
||||||
gam delete chatmessage name <ChatMessage>
|
gam delete chatmessage name <ChatMessage>
|
||||||
|
|
||||||
<ChatMessageFieldName> ::=
|
<ChatMessageFieldName> ::=
|
||||||
@@ -3382,6 +3391,7 @@ gam print course-materials [todrive <ToDriveAttribute>*]
|
|||||||
(orderby <CourseMaterialOrderByFieldName> [ascending|descending])*)
|
(orderby <CourseMaterialOrderByFieldName> [ascending|descending])*)
|
||||||
[showcreatoremails|creatoremail] [showtopicnames] [fields <CourseMaterialFieldNameList>]
|
[showcreatoremails|creatoremail] [showtopicnames] [fields <CourseMaterialFieldNameList>]
|
||||||
[timefilter creationtime|updatetime|scheduledtime] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
[timefilter creationtime|updatetime|scheduledtime] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
||||||
|
[oneitemperrow]
|
||||||
[countsonly] [formatjson [quotechar <Character>]]
|
[countsonly] [formatjson [quotechar <Character>]]
|
||||||
gam print course-submissions [todrive <ToDriveAttribute>*]
|
gam print course-submissions [todrive <ToDriveAttribute>*]
|
||||||
(course|class <CourseEntity>)*|([teacher <UserItem>] [student <UserItem>] states <CourseStateList>])
|
(course|class <CourseEntity>)*|([teacher <UserItem>] [student <UserItem>] states <CourseStateList>])
|
||||||
@@ -3403,6 +3413,7 @@ gam print course-works [todrive <ToDriveAttribute>*]
|
|||||||
[showcreatoremails|creatoremail] [showtopicnames] [fields <CourseWorkFieldNameList>]
|
[showcreatoremails|creatoremail] [showtopicnames] [fields <CourseWorkFieldNameList>]
|
||||||
[showstudentsaslist [<Boolean>]] [delimiter <Character>]
|
[showstudentsaslist [<Boolean>]] [delimiter <Character>]
|
||||||
[timefilter creationtime|updatetime|scheduledtime] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
[timefilter creationtime|updatetime|scheduledtime] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
||||||
|
[oneitemperrow]
|
||||||
[countsonly] [formatjson [quotechar <Character>]]
|
[countsonly] [formatjson [quotechar <Character>]]
|
||||||
|
|
||||||
# Classroom - Student Groups
|
# Classroom - Student Groups
|
||||||
@@ -3742,16 +3753,14 @@ gam print domaincontacts|peoplecontacts [todrive <ToDriveAttribute>*]
|
|||||||
[sources <PeopleSourceName>]
|
[sources <PeopleSourceName>]
|
||||||
[query <String>]
|
[query <String>]
|
||||||
[mergesources <PeopleMergeSourceName>]
|
[mergesources <PeopleMergeSourceName>]
|
||||||
[coountsonly]
|
|
||||||
[allfields|(fields <PeopleFieldNameList>)] [showmetadata]
|
[allfields|(fields <PeopleFieldNameList>)] [showmetadata]
|
||||||
[formatjson [quotechar <Character>]]
|
[coountsonly|(formatjson [quotechar <Character>])]
|
||||||
gam show domaincontacts|peoplecontacts
|
gam show domaincontacts|peoplecontacts
|
||||||
[sources <PeopleSourceName>]
|
[sources <PeopleSourceName>]
|
||||||
[query <String>]
|
[query <String>]
|
||||||
[mergesources <PeopleMergeSourceName>]
|
[mergesources <PeopleMergeSourceName>]
|
||||||
[coountsonly]
|
|
||||||
[allfields|(fields <PeopleFieldNameList>)] [showmetadata]
|
[allfields|(fields <PeopleFieldNameList>)] [showmetadata]
|
||||||
[formatjson]
|
[coountsonly|formatjson]
|
||||||
|
|
||||||
gam info people|peopleprofile <PeopleResourceNameEntity>
|
gam info people|peopleprofile <PeopleResourceNameEntity>
|
||||||
[allfields|(fields <PeopleFieldNameList>)] [showmetadata]
|
[allfields|(fields <PeopleFieldNameList>)] [showmetadata]
|
||||||
@@ -3759,15 +3768,13 @@ gam info people|peopleprofile <PeopleResourceNameEntity>
|
|||||||
gam print people|peopleprofile [todrive <ToDriveAttribute>*]
|
gam print people|peopleprofile [todrive <ToDriveAttribute>*]
|
||||||
[query <String>]
|
[query <String>]
|
||||||
[mergesources <PeopleMergeSourceName>]
|
[mergesources <PeopleMergeSourceName>]
|
||||||
[coountsonly]
|
|
||||||
[allfields|(fields <PeopleFieldNameList>)] [showmetadata]
|
[allfields|(fields <PeopleFieldNameList>)] [showmetadata]
|
||||||
[formatjson [quotechar <Character>]]
|
[coountsonly|(formatjson [quotechar <Character>])]
|
||||||
gam show people|peopleprofile
|
gam show people|peopleprofile
|
||||||
[query <String>]
|
[query <String>]
|
||||||
[mergesources <PeopleMergeSourceName>]
|
[mergesources <PeopleMergeSourceName>]
|
||||||
[coountsonly]
|
|
||||||
[allfields|(fields <PeopleFieldNameList>)] [showmetadata]
|
[allfields|(fields <PeopleFieldNameList>)] [showmetadata]
|
||||||
[formatjson]
|
[coountsonly|formatjson]
|
||||||
|
|
||||||
# Email Audit Monitor
|
# Email Audit Monitor
|
||||||
|
|
||||||
@@ -5411,34 +5418,48 @@ gam show vaultmatters|matters [matterstate <MatterStateList>]
|
|||||||
[formatjson]
|
[formatjson]
|
||||||
|
|
||||||
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
||||||
matter <MatterItem> corpus mail|groups
|
matter <MatterItem> <QueryItem>
|
||||||
[(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone]
|
[wait <Integer>]
|
||||||
[(shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
||||||
(rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
|
matter <MatterItem>
|
||||||
(sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))]
|
corpus mail|groups
|
||||||
[scope [all_data|held_data|unprocessed_data]]
|
[scope [all_data|held_data|unprocessed_data]]
|
||||||
|
[(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone]
|
||||||
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
|
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
|
||||||
[excludedrafts <Boolean>]
|
[excludedrafts <Boolean>]
|
||||||
|
[<JSONData>]
|
||||||
[wait <Integer>]
|
[wait <Integer>]
|
||||||
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
||||||
matter <MatterItem> operation <String> [wait <Integer>]
|
matter <MatterItem> operation <String> [wait <Integer>]
|
||||||
|
|
||||||
gam create vaultexport|export matter <MatterItem> [name <String>] corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
|
gam create vaultexport|export matter <MatterItem> [name <String>]
|
||||||
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
vaultquery <QueryItem>
|
||||||
(shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
[driveclientsideencryption any|encrypted|unencrypted]
|
||||||
(rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
|
[includeaccessinfo <Boolean>]
|
||||||
(sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
|
[excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
||||||
|
[showconfidentialmodecontent <Boolean>] [usenewexport <Boolean>] [exportlinkeddrivefiles <Boolean>]
|
||||||
|
[format ics|mbox|pst|xml]
|
||||||
|
[region any|europe|us] [showdetails|returnidonly]
|
||||||
|
|
||||||
|
gam create vaultexport|export matter <MatterItem> [name <String>]
|
||||||
|
corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
|
||||||
[scope all_data|held_data|unprocessed_data]
|
[scope all_data|held_data|unprocessed_data]
|
||||||
|
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
||||||
|
(documentids (<DriveFileIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
(shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
[(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
|
||||||
|
(sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
|
||||||
|
[driveversiondate <Date>|<Time>]
|
||||||
|
[includerooms <Boolean>]
|
||||||
|
(rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
|
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
|
||||||
[locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
|
[locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
|
||||||
[responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
|
[responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
|
||||||
[(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
|
(covereddata calllogs|textmessages|voicemails)*
|
||||||
[driveversiondate <Date>|<Time>] [includeaccessinfo <Boolean>]
|
|
||||||
[driveclientsideencryption any|encrypted|unencrypted]
|
[driveclientsideencryption any|encrypted|unencrypted]
|
||||||
[includerooms <Boolean>]
|
[includeaccessinfo <Boolean>]
|
||||||
[excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
[excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
||||||
[showconfidentialmodecontent <Boolean>] [usenewexport <Boolean>] [exportlinkeddrivefiles <Boolean>]
|
[showconfidentialmodecontent <Boolean>] [usenewexport <Boolean>] [exportlinkeddrivefiles <Boolean>]
|
||||||
[covereddata calllogs|textmessages|voicemails]
|
|
||||||
[format ics|mbox|pst|xml]
|
[format ics|mbox|pst|xml]
|
||||||
[region any|europe|us] [showdetails|returnidonly]
|
[region any|europe|us] [showdetails|returnidonly]
|
||||||
gam delete vaultexport|export <ExportItem> matter <MatterItem>
|
gam delete vaultexport|export <ExportItem> matter <MatterItem>
|
||||||
@@ -5501,14 +5522,14 @@ gam create vaulthold|hold matter <MatterItem> [name <String>] corpus calendar|dr
|
|||||||
[(accounts|groups|users <EmailItemList>) | (orgunit|org|ou <OrgUnit>)]
|
[(accounts|groups|users <EmailItemList>) | (orgunit|org|ou <OrgUnit>)]
|
||||||
[query <QueryVaultCorpus>]
|
[query <QueryVaultCorpus>]
|
||||||
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
||||||
[includerooms <Boolean>] [covereddata calllogs|textmessages|voicemails]
|
[includerooms <Boolean>] (covereddata calllogs|textmessages|voicemails)*
|
||||||
[includeshareddrives <Boolean>]
|
[includeshareddrives <Boolean>]
|
||||||
[showdetails|returnidonly]
|
[showdetails|returnidonly]
|
||||||
gam update vaulthold|hold <HoldItem> matter <MatterItem>
|
gam update vaulthold|hold <HoldItem> matter <MatterItem>
|
||||||
[([addaccounts|addgroups|addusers <EmailItemList>] [removeaccounts|removegroups|removeusers <EmailItemList>]) | (orgunit|org|ou <OrgUnit>)]
|
[([addaccounts|addgroups|addusers <EmailItemList>] [removeaccounts|removegroups|removeusers <EmailItemList>]) | (orgunit|org|ou <OrgUnit>)]
|
||||||
[query <QueryVaultCorpus>]
|
[query <QueryVaultCorpus>]
|
||||||
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
||||||
[includerooms <Boolean>] [covereddata calllogs|textmessages|voicemails]
|
[includerooms <Boolean>] (covereddata calllogs|textmessages|voicemails)*
|
||||||
[includeshareddrives <Boolean>]
|
[includeshareddrives <Boolean>]
|
||||||
[showdetails]
|
[showdetails]
|
||||||
gam delete vaulthold|hold <HoldItem> matter <MatterItem>
|
gam delete vaulthold|hold <HoldItem> matter <MatterItem>
|
||||||
@@ -5548,6 +5569,32 @@ gam show vaultholds|holds [matters <MatterItemList>]
|
|||||||
gam <UserTypeEntity> print vaultholds|holds [todrive <ToDriveAttribute>*]
|
gam <UserTypeEntity> print vaultholds|holds [todrive <ToDriveAttribute>*]
|
||||||
gam <UserTypeEntity> show vaultholds|holds
|
gam <UserTypeEntity> show vaultholds|holds
|
||||||
|
|
||||||
|
gam create vaultquery <MatterItem> [name <String>]
|
||||||
|
corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
|
||||||
|
[scope all_data|held_data|unprocessed_data]
|
||||||
|
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
||||||
|
(documentids (<DriveFileIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
(shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
[(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
|
||||||
|
(sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
|
||||||
|
[driveversiondate <Date>|<Time>]
|
||||||
|
[includerooms <Boolean>]
|
||||||
|
(rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
|
||||||
|
[locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
|
||||||
|
[responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
|
||||||
|
(covereddata calllogs|textmessages|voicemails)*
|
||||||
|
[<JSONData>]
|
||||||
|
[shownames]
|
||||||
|
[showdetails|returnidonly|formatjson]
|
||||||
|
|
||||||
|
gam copy vaultquery <MatterItem> <QueryItem> [targetmatter <MatterItem>] [name <String>]
|
||||||
|
[shownames]
|
||||||
|
[showdetails|returnidonly|formatjson]
|
||||||
|
|
||||||
|
gam delete vaultquery <QueryItem> matter <MatterItem>
|
||||||
|
gam delete vaultquery <MatterItem> <QueryItem>
|
||||||
|
|
||||||
<VaultQueryFieldName> ::=
|
<VaultQueryFieldName> ::=
|
||||||
createtime |
|
createtime |
|
||||||
displayname |
|
displayname |
|
||||||
@@ -6272,12 +6319,11 @@ gam <UserTypeEntity> info events <UserCalendarEntity> [<EventEntity>] [maxinstan
|
|||||||
[formatjson]
|
[formatjson]
|
||||||
gam <UserTypeEntity> show events <UserCalendarEntity> [<EventEntity>] <EventDisplayProperty>*
|
gam <UserTypeEntity> show events <UserCalendarEntity> [<EventEntity>] <EventDisplayProperty>*
|
||||||
[fields <EventFieldNameList>] [showdayofweek]
|
[fields <EventFieldNameList>] [showdayofweek]
|
||||||
[countsonly]
|
[countsonly|formatjson]
|
||||||
[formatjson]
|
|
||||||
gam <UserTypeEntity> print events <UserCalendarEntity> [<EventEntity>] <EventDisplayProperty>*
|
gam <UserTypeEntity> print events <UserCalendarEntity> [<EventEntity>] <EventDisplayProperty>*
|
||||||
[fields <EventFieldNameList>] [showdayofweek]
|
[fields <EventFieldNameList>] [showdayofweek]
|
||||||
[countsonly [eventrowfilter]]
|
[eventrowfilter]]
|
||||||
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
[countsonly|(formatjson [quotechar <Character>])] [todrive <ToDriveAttribute>*]
|
||||||
|
|
||||||
gam <UserTypeEntity> update calattendees <UserCalendarEntity> <EventEntity> [anyorganizer]
|
gam <UserTypeEntity> update calattendees <UserCalendarEntity> <EventEntity> [anyorganizer]
|
||||||
[<EventNotificationAttribute>] [splitupdate] [dryrun|doit]
|
[<EventNotificationAttribute>] [splitupdate] [dryrun|doit]
|
||||||
@@ -6540,7 +6586,7 @@ gam <UserTypeEntity> create chatmessage <ChatSpace>
|
|||||||
[replyoption fail|fallback]
|
[replyoption fail|fallback]
|
||||||
[returnidonly]
|
[returnidonly]
|
||||||
gam <UserTypeEntity> update chatmessage name <ChatMessage>
|
gam <UserTypeEntity> update chatmessage name <ChatMessage>
|
||||||
<ChatContent>
|
[<ChatContent>] [clearattachments <String>]
|
||||||
gam <UserTypeEntity> delete chatmessage name <ChatMessage>
|
gam <UserTypeEntity> delete chatmessage name <ChatMessage>
|
||||||
|
|
||||||
<ChatMessageFieldName> ::=
|
<ChatMessageFieldName> ::=
|
||||||
@@ -8301,13 +8347,13 @@ gam <UserTypeEntity> info contacts
|
|||||||
gam <UserTypeEntity> show contacts
|
gam <UserTypeEntity> show contacts
|
||||||
<PeoplePrintShowUserContactSelection>
|
<PeoplePrintShowUserContactSelection>
|
||||||
[orderby firstname|lastname|(lastmodified ascending)|(lastnodified descending)
|
[orderby firstname|lastname|(lastmodified ascending)|(lastnodified descending)
|
||||||
[countsonly|allfields|(fields <PeopleFieldNameList>)] [showgroups] [showmetadata]
|
[allfields|(fields <PeopleFieldNameList>)] [showgroups] [showmetadata]
|
||||||
[formatjson]
|
[countsonly|formatjson]
|
||||||
gam <UserTypeEntity> print contacts [todrive <ToDriveAttribute>*]
|
gam <UserTypeEntity> print contacts [todrive <ToDriveAttribute>*]
|
||||||
<PeoplePrintShowUserContactSelection>
|
<PeoplePrintShowUserContactSelection>
|
||||||
[orderby firstname|lastname|(lastmodified ascending)|(lastnodified descending)
|
[orderby firstname|lastname|(lastmodified ascending)|(lastnodified descending)
|
||||||
[countsonly|allfields|(fields <PeopleFieldNameList>)] [[showgroups|showgroupnameslist] showmetadata]
|
[allfields|(fields <PeopleFieldNameList>)] [[showgroups|showgroupnameslist] showmetadata]
|
||||||
[formatjson [quotechar <Character>]]
|
[countsonly|(formatjson [quotechar <Character>])]
|
||||||
|
|
||||||
<OtherContactsFieldName> ::=
|
<OtherContactsFieldName> ::=
|
||||||
emailaddresses|
|
emailaddresses|
|
||||||
@@ -8541,7 +8587,7 @@ gam <UserTypeEntity> info tasklist <TasklistEntity>
|
|||||||
gam <UserTypeEntity> show tasklists
|
gam <UserTypeEntity> show tasklists
|
||||||
[countsonly|formatjson]
|
[countsonly|formatjson]
|
||||||
gam <UserTypeEntity> print tasklists [todrive <ToDriveAttribute>*]
|
gam <UserTypeEntity> print tasklists [todrive <ToDriveAttribute>*]
|
||||||
[countsonly | (formatjson [quotechar <Character>])]
|
[countsonly|(formatjson [quotechar <Character>])]
|
||||||
|
|
||||||
# Users - Shared Drives
|
# Users - Shared Drives
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,179 @@
|
|||||||
|
7.27.02
|
||||||
|
|
||||||
|
Added option `clearattachments <String>` to `gam [<UserTypeMessage>] update chatmessage`
|
||||||
|
that clears all attachments from a Chat message. If `<ChatContent>` is not specified,
|
||||||
|
the current message text is retained and `<String>` is appended; `<String>` must be specified
|
||||||
|
but can be empty in which case the current message test is preserved as-is.
|
||||||
|
|
||||||
|
7.27.01
|
||||||
|
|
||||||
|
Fixed bug in `gam <UserTypeEntity> claim ownership <DriveFileEntity> ... onlyUsers|skipusers <UserTypeEntity>`
|
||||||
|
where the email addresses in `onlyUsers|skipusers <UserTypeEntity>` were not normalized.
|
||||||
|
|
||||||
|
7.27.00
|
||||||
|
|
||||||
|
Added `debug_redaction` Boolean variable to `gam.cfg`. When True, the default,
|
||||||
|
sensitive data like access/refresh tokens, client secret and authorization codes
|
||||||
|
are redacted from debug output. This allows you to post debug output without
|
||||||
|
compromising your account information. Even with debug redaction,
|
||||||
|
anything shared publicly should be double-checked for sensitive content.
|
||||||
|
|
||||||
|
7.25.01
|
||||||
|
|
||||||
|
Fixed bug in `gam config timezone <String>` to handle timezone abbreviations correctly;
|
||||||
|
they were incorrectly shifted to lowercase.
|
||||||
|
|
||||||
|
7.25.00
|
||||||
|
|
||||||
|
Removed a capabilty added in 7.24.00 that allowed reading command data from Google Docs and Sheets
|
||||||
|
when a user's service account access to Drive and Sheets had been disabled. Jay was concerned
|
||||||
|
that this change could be exploited to give access to all user's files.
|
||||||
|
|
||||||
|
This capability has been replaced by issuing the following commands. The admin specified in `gam oauth create`
|
||||||
|
can read command data from Docs and Sheets to which it has access.
|
||||||
|
```
|
||||||
|
gam config commanddata_clientaccess true save
|
||||||
|
gam oauth create
|
||||||
|
Enable the following and proceed to authorization.
|
||||||
|
|
||||||
|
[*] 42) Drive API - commanddata_clientaccess
|
||||||
|
[*] 54) Sheets API - commanddata_clientaccess
|
||||||
|
```
|
||||||
|
|
||||||
|
Fixed in bug in `gam report` that caused a trap with either of the `thismonth` or `previousmonths` options were used.
|
||||||
|
|
||||||
|
Upgraded to Python 3.14.0.
|
||||||
|
|
||||||
|
7.24.01
|
||||||
|
|
||||||
|
Updated GAM to handle the following error that occurs when GAM tries to authenticate
|
||||||
|
as a user that has been disabled by Google.
|
||||||
|
```
|
||||||
|
ERROR: Authentication Token Error - invalid_account: Forbidden
|
||||||
|
```
|
||||||
|
|
||||||
|
7.24.00
|
||||||
|
|
||||||
|
If you want to disable a user's service account access to Drive and Sheets but still allow reading command data from Google Docs and Sheets,
|
||||||
|
issue the following command and make these settings:
|
||||||
|
```
|
||||||
|
gam user user@domain.com update serviceaccount
|
||||||
|
|
||||||
|
[ ] 20) Drive API (supports readonly)
|
||||||
|
[*] 21) Drive API - read command data
|
||||||
|
[ ] 42) Sheets API (supports readonly)
|
||||||
|
[*] 43) Sheets API - read command data
|
||||||
|
```
|
||||||
|
|
||||||
|
7.23.07
|
||||||
|
|
||||||
|
Fixed bug in `gam print|show admins` where all admin assignments were not displayed when
|
||||||
|
`types <AdminAssigneeTypeList>` was not specified, i.e., all assignments should be displayed.
|
||||||
|
|
||||||
|
7.23.06
|
||||||
|
|
||||||
|
Added option `types <AdminAssigneeTypeList>` to `gam print|show admins` that allows filtering
|
||||||
|
of admin assignments by the type of the assignee; by default, all assignee types are displayed.
|
||||||
|
```
|
||||||
|
<AdminAssigneeType> ::= group|user|serviceaccount|unknown
|
||||||
|
<AdminAssigneeTypeList> ::= "<AdminAssigneeType>(,<AdminAssigneeType>)*"
|
||||||
|
```
|
||||||
|
|
||||||
|
7.23.05
|
||||||
|
|
||||||
|
Added option `recursive` that will display assignments to the members
|
||||||
|
of security groups assigned to roles; the security group membership is recursively expanded.
|
||||||
|
|
||||||
|
7.23.04
|
||||||
|
|
||||||
|
Added option `addcsvdata <FieldName> <String>` to `gam <UserTypeEntity> print events`
|
||||||
|
and `gam calendars <CalendarEntity> print events` that adds additional columns of data to the CSV file output.
|
||||||
|
An example would be to get the calendar name in addition to the calendar ID when printing events.
|
||||||
|
```
|
||||||
|
gam redirect csv ./Resources.csv print resources fields email,name
|
||||||
|
gam redirect csv ./ResourceEventCounts.csv multiprocess redirect stderr - multiprocess csv Resources.csv gam calendar "~resourceEmail" print events starttime -1y countsonly addcsvdata calendarName "~resourceName"
|
||||||
|
```
|
||||||
|
|
||||||
|
Upgraded to OpenSSL 3.6.0.
|
||||||
|
|
||||||
|
7.23.03
|
||||||
|
|
||||||
|
Upgraded to OpenSSL 3.5.4.
|
||||||
|
|
||||||
|
7.23.02
|
||||||
|
|
||||||
|
Added option `oneitemperrow` to 'gam print course-materials|course-work` to have each of a
|
||||||
|
course's materials displayed on a separate row with all of the other course fields.
|
||||||
|
This produces a CSV file that can be used in subsequent commands to process the materials without further script processing.
|
||||||
|
|
||||||
|
7.23.00
|
||||||
|
|
||||||
|
Added `chat_max_results` variable to `gam.cfg`.
|
||||||
|
```
|
||||||
|
chat_max_results
|
||||||
|
When retrieving lists of Chat items from API,
|
||||||
|
how many should be retrieved in each API call
|
||||||
|
Default: 100
|
||||||
|
Range: 1 - 1000
|
||||||
|
```
|
||||||
|
Previously, this vaule was always set to 1000 which could cause errors.
|
||||||
|
|
||||||
|
7.22.07
|
||||||
|
|
||||||
|
Added options `showdetails` and `returnidonly` to `gam create|copy vaultquery`.
|
||||||
|
|
||||||
|
Added option `<JSONData>` to `gam create vaultexport|vaultquery` and `gam print vaultcounts`.
|
||||||
|
|
||||||
|
7.22.06
|
||||||
|
|
||||||
|
Added commands to create, copy and delete Vault saved queries.
|
||||||
|
```
|
||||||
|
gam create vaultquery <MatterItem> [name <String>]
|
||||||
|
corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
|
||||||
|
[scope all_data|held_data|unprocessed_data]
|
||||||
|
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
||||||
|
(documentids (<DriveFileIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
(shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
[(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
|
||||||
|
(sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
|
||||||
|
[driveversiondate <Date>|<Time>]
|
||||||
|
[includerooms <Boolean>]
|
||||||
|
(rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
|
||||||
|
[locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
|
||||||
|
[responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
|
||||||
|
(covereddata calllogs|textmessages|voicemails)*
|
||||||
|
[shownames] [formatjson]
|
||||||
|
|
||||||
|
gam copy vaultquery <MatterItem> <QueryItem> [targetmatter <MatterItem>] [name <String>]
|
||||||
|
[shownames] [formatjson]
|
||||||
|
|
||||||
|
gam delete vaultquery <QueryItem> matter <MatterItem>
|
||||||
|
gam delete vaultquery <MatterItem> <QueryItem>
|
||||||
|
```
|
||||||
|
|
||||||
|
Added a variant of `gam print vaultcounts` that gets its query parameters from a saved Vault query.
|
||||||
|
```
|
||||||
|
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
||||||
|
matter <MatterItem> <QueryItem>
|
||||||
|
[wait <Integer>]
|
||||||
|
```
|
||||||
|
|
||||||
|
7.22.05
|
||||||
|
|
||||||
|
Added a variant of `gam create vaultexport` that gets its query parameters from a saved Vault query.
|
||||||
|
|
||||||
|
```
|
||||||
|
gam create vaultexport|export matter <MatterItem> [name <String>]
|
||||||
|
vaultquery <QueryItem>
|
||||||
|
[driveclientsideencryption any|encrypted|unencrypted]
|
||||||
|
[includeaccessinfo <Boolean>]
|
||||||
|
[excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
||||||
|
[showconfidentialmodecontent <Boolean>] [usenewexport <Boolean>] [exportlinkeddrivefiles <Boolean>]
|
||||||
|
[format ics|mbox|pst|xml]
|
||||||
|
[region any|europe|us] [showdetails|returnidonly]
|
||||||
|
```
|
||||||
|
|
||||||
7.22.04
|
7.22.04
|
||||||
|
|
||||||
Added a variant of `gam create vaulthold` that gets its parameters from a saved Vault query.
|
Added a variant of `gam create vaulthold` that gets its parameters from a saved Vault query.
|
||||||
@@ -45,7 +221,7 @@ GAM now builds on macOS 26 Tahoe and properly identifies the OS.
|
|||||||
|
|
||||||
A custom build of the cryptography library is no longer needed for Windows arm64 builds as the project now releases their own build for the OS.
|
A custom build of the cryptography library is no longer needed for Windows arm64 builds as the project now releases their own build for the OS.
|
||||||
|
|
||||||
Upgrade to OpenSSL 3.5.3 latest
|
Upgraded to OpenSSL 3.5.3.
|
||||||
|
|
||||||
7.21.01
|
7.21.01
|
||||||
|
|
||||||
|
|||||||
@@ -83,13 +83,8 @@ echo -e '\x1B[0m'
|
|||||||
|
|
||||||
version_gt()
|
version_gt()
|
||||||
{
|
{
|
||||||
# MacOS < 10.13 doesn't support sort -V
|
|
||||||
echo "" | sort -V > /dev/null 2>&1
|
|
||||||
vsort_failed=$?
|
|
||||||
if [ "${1}" = "${2}" ]; then
|
if [ "${1}" = "${2}" ]; then
|
||||||
true
|
true
|
||||||
elif (( $vsort_failed != 0 )); then
|
|
||||||
false
|
|
||||||
else
|
else
|
||||||
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"
|
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"
|
||||||
fi
|
fi
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -34,7 +34,12 @@ def main():
|
|||||||
|
|
||||||
# Run from command line
|
# Run from command line
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
if platform.system() != 'Linux':
|
if getattr(sys, 'frozen', False): # we're frozen:
|
||||||
multiprocessing.freeze_support()
|
multiprocessing.freeze_support()
|
||||||
|
if platform.system() == 'Linux':
|
||||||
|
# set explictly since it's not default in Python < 3.14, forkserver should
|
||||||
|
# be safer than fork and less likely to see bulk command hangs.
|
||||||
|
multiprocessing.set_start_method('forkserver')
|
||||||
|
else:
|
||||||
multiprocessing.set_start_method('spawn')
|
multiprocessing.set_start_method('spawn')
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -105,6 +105,8 @@ YOUTUBE = 'youtube'
|
|||||||
BUSINESSACCOUNTMANAGEMENT_SCOPE = 'https://www.googleapis.com/auth/business.manage'
|
BUSINESSACCOUNTMANAGEMENT_SCOPE = 'https://www.googleapis.com/auth/business.manage'
|
||||||
CHROMEVERSIONHISTORY_URL = 'https://versionhistory.googleapis.com/v1/chrome/platforms'
|
CHROMEVERSIONHISTORY_URL = 'https://versionhistory.googleapis.com/v1/chrome/platforms'
|
||||||
DRIVE_SCOPE = 'https://www.googleapis.com/auth/drive'
|
DRIVE_SCOPE = 'https://www.googleapis.com/auth/drive'
|
||||||
|
DRIVE_FILE_SCOPE = 'https://www.googleapis.com/auth/drive.file'
|
||||||
|
DRIVE_READONLY_SCOPE = 'https://www.googleapis.com/auth/drive.readonly'
|
||||||
GMAIL_SEND_SCOPE = 'https://www.googleapis.com/auth/gmail.send'
|
GMAIL_SEND_SCOPE = 'https://www.googleapis.com/auth/gmail.send'
|
||||||
GOOGLE_AUTH_PROVIDER_X509_CERT_URL = 'https://www.googleapis.com/oauth2/v1/certs'
|
GOOGLE_AUTH_PROVIDER_X509_CERT_URL = 'https://www.googleapis.com/oauth2/v1/certs'
|
||||||
GOOGLE_OAUTH2_ENDPOINT = 'https://accounts.google.com/o/oauth2/v2/auth'
|
GOOGLE_OAUTH2_ENDPOINT = 'https://accounts.google.com/o/oauth2/v2/auth'
|
||||||
@@ -156,6 +158,7 @@ OAUTH2_TOKEN_ERRORS = [
|
|||||||
'access_denied: Account restricted',
|
'access_denied: Account restricted',
|
||||||
'internal_failure: Backend Error',
|
'internal_failure: Backend Error',
|
||||||
'internal_failure: None',
|
'internal_failure: None',
|
||||||
|
'invalid_account: Forbidden',
|
||||||
'invalid_grant',
|
'invalid_grant',
|
||||||
'invalid_grant: Bad Request',
|
'invalid_grant: Bad Request',
|
||||||
'invalid_grant: Invalid email or User ID',
|
'invalid_grant: Invalid email or User ID',
|
||||||
@@ -253,7 +256,7 @@ _INFO = {
|
|||||||
DOCS: {'name': 'Docs API', 'version': 'v1', 'v2discovery': True},
|
DOCS: {'name': 'Docs API', 'version': 'v1', 'v2discovery': True},
|
||||||
DRIVE2: {'name': 'Drive API v2', 'version': 'v2', 'v2discovery': False, 'mappedAPI': 'drive'},
|
DRIVE2: {'name': 'Drive API v2', 'version': 'v2', 'v2discovery': False, 'mappedAPI': 'drive'},
|
||||||
DRIVE3: {'name': 'Drive API v3', 'version': 'v3', 'v2discovery': False, 'mappedAPI': 'drive'},
|
DRIVE3: {'name': 'Drive API v3', 'version': 'v3', 'v2discovery': False, 'mappedAPI': 'drive'},
|
||||||
DRIVETD: {'name': 'Drive API v3 - todrive', 'version': 'v3', 'v2discovery': False, 'mappedAPI': 'drive'},
|
DRIVETD: {'name': 'Drive API v3 - write todrive data', 'version': 'v3', 'v2discovery': False, 'mappedAPI': 'drive'},
|
||||||
DRIVEACTIVITY: {'name': 'Drive Activity API v2', 'version': 'v2', 'v2discovery': True},
|
DRIVEACTIVITY: {'name': 'Drive Activity API v2', 'version': 'v2', 'v2discovery': True},
|
||||||
DRIVELABELS_ADMIN: {'name': 'Drive Labels API - Admin', 'version': 'v2', 'v2discovery': True, 'mappedAPI': DRIVELABELS},
|
DRIVELABELS_ADMIN: {'name': 'Drive Labels API - Admin', 'version': 'v2', 'v2discovery': True, 'mappedAPI': DRIVELABELS},
|
||||||
DRIVELABELS_USER: {'name': 'Drive Labels API - User', 'version': 'v2', 'v2discovery': True, 'mappedAPI': DRIVELABELS},
|
DRIVELABELS_USER: {'name': 'Drive Labels API - User', 'version': 'v2', 'v2discovery': True, 'mappedAPI': DRIVELABELS},
|
||||||
@@ -283,7 +286,7 @@ _INFO = {
|
|||||||
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},
|
||||||
SHEETS: {'name': 'Sheets API', 'version': 'v4', 'v2discovery': True},
|
SHEETS: {'name': 'Sheets API', 'version': 'v4', 'v2discovery': True},
|
||||||
SHEETSTD: {'name': 'Sheets API - todrive', 'version': 'v4', 'v2discovery': True, 'mappedAPI': SHEETS},
|
SHEETSTD: {'name': 'Sheets API - write todrive data', 'version': 'v4', 'v2discovery': True, 'mappedAPI': SHEETS},
|
||||||
SITEVERIFICATION: {'name': 'Site Verification API', 'version': 'v1', 'v2discovery': True},
|
SITEVERIFICATION: {'name': 'Site Verification API', 'version': 'v1', 'v2discovery': True},
|
||||||
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},
|
||||||
@@ -530,6 +533,17 @@ _CLIENT_SCOPES = [
|
|||||||
'scope': 'https://www.googleapis.com/auth/ediscovery'},
|
'scope': 'https://www.googleapis.com/auth/ediscovery'},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
_COMMANDDATA_CLIENT_SCOPES = [
|
||||||
|
{'name': 'Drive API - commanddata_clientaccess',
|
||||||
|
'api': DRIVE3,
|
||||||
|
'subscopes': [],
|
||||||
|
'scope': DRIVE_READONLY_SCOPE},
|
||||||
|
{'name': 'Sheets API - commanddata_clientaccess',
|
||||||
|
'api': SHEETS,
|
||||||
|
'subscopes': [],
|
||||||
|
'scope': 'https://www.googleapis.com/auth/spreadsheets.readonly'},
|
||||||
|
]
|
||||||
|
|
||||||
_TODRIVE_CLIENT_SCOPES = [
|
_TODRIVE_CLIENT_SCOPES = [
|
||||||
{'name': 'Drive API - todrive_clientaccess',
|
{'name': 'Drive API - todrive_clientaccess',
|
||||||
'api': DRIVE3,
|
'api': DRIVE3,
|
||||||
@@ -538,7 +552,7 @@ _TODRIVE_CLIENT_SCOPES = [
|
|||||||
{'name': 'Drive File API - todrive_clientaccess',
|
{'name': 'Drive File API - todrive_clientaccess',
|
||||||
'api': DRIVE3,
|
'api': DRIVE3,
|
||||||
'subscopes': [],
|
'subscopes': [],
|
||||||
'scope': 'https://www.googleapis.com/auth/drive.file'},
|
'scope': DRIVE_FILE_SCOPE},
|
||||||
{'name': 'Gmail API - todrive_clientaccess',
|
{'name': 'Gmail API - todrive_clientaccess',
|
||||||
'api': GMAIL,
|
'api': GMAIL,
|
||||||
'subscopes': [],
|
'subscopes': [],
|
||||||
@@ -643,7 +657,8 @@ _SVCACCT_SCOPES = [
|
|||||||
{'name': 'Drive Activity API v2 - must pair with Drive API',
|
{'name': 'Drive Activity API v2 - must pair with Drive API',
|
||||||
'api': DRIVEACTIVITY,
|
'api': DRIVEACTIVITY,
|
||||||
'subscopes': [],
|
'subscopes': [],
|
||||||
'scope': 'https://www.googleapis.com/auth/drive.activity'},
|
'scope': [DRIVE_READONLY_SCOPE,
|
||||||
|
'https://www.googleapis.com/auth/drive.activity']},
|
||||||
{'name': 'Drive Labels API - Admin',
|
{'name': 'Drive Labels API - Admin',
|
||||||
'api': DRIVELABELS_ADMIN,
|
'api': DRIVELABELS_ADMIN,
|
||||||
'subscopes': READONLY,
|
'subscopes': READONLY,
|
||||||
@@ -656,10 +671,12 @@ _SVCACCT_SCOPES = [
|
|||||||
'api': DOCS,
|
'api': DOCS,
|
||||||
'subscopes': READONLY,
|
'subscopes': READONLY,
|
||||||
'scope': 'https://www.googleapis.com/auth/documents'},
|
'scope': 'https://www.googleapis.com/auth/documents'},
|
||||||
{'name': 'Forms API',
|
{'name': 'Forms API - must pair with Drive API',
|
||||||
'api': FORMS,
|
'api': FORMS,
|
||||||
'subscopes': [],
|
'subscopes': [],
|
||||||
'scope': DRIVE_SCOPE},
|
'scope': [DRIVE_READONLY_SCOPE,
|
||||||
|
'https://www.googleapis.com/auth/forms.body',
|
||||||
|
'https://www.googleapis.com/auth/forms.responses.readonly']},
|
||||||
{'name': 'Gmail API - Full Access (Labels, Messages)',
|
{'name': 'Gmail API - Full Access (Labels, Messages)',
|
||||||
'api': GMAIL,
|
'api': GMAIL,
|
||||||
'subscopes': [],
|
'subscopes': [],
|
||||||
@@ -750,9 +767,10 @@ _SVCACCT_SCOPES = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
_SVCACCT_SPECIAL_SCOPES = [
|
_SVCACCT_SPECIAL_SCOPES = [
|
||||||
{'name': 'Drive API - todrive',
|
{'name': 'Drive API - write todrive data - has access to all Drive',
|
||||||
'api': DRIVETD,
|
'api': DRIVETD,
|
||||||
'subscopes': [],
|
'subscopes': [],
|
||||||
|
'offByDefault': True,
|
||||||
'scope': DRIVE_SCOPE},
|
'scope': DRIVE_SCOPE},
|
||||||
{'name': 'Gmail API - Full Access - read only',
|
{'name': 'Gmail API - Full Access - read only',
|
||||||
'api': GMAIL,
|
'api': GMAIL,
|
||||||
@@ -764,8 +782,9 @@ _SVCACCT_SPECIAL_SCOPES = [
|
|||||||
'subscopes': [],
|
'subscopes': [],
|
||||||
'offByDefault': True,
|
'offByDefault': True,
|
||||||
'scope': GMAIL_SEND_SCOPE},
|
'scope': GMAIL_SEND_SCOPE},
|
||||||
{'name': 'Sheets API - todrive',
|
{'name': 'Sheets API - write todrive data - has access to all Sheets',
|
||||||
'api': SHEETSTD,
|
'api': SHEETSTD,
|
||||||
|
'offByDefault': True,
|
||||||
'subscopes': [],
|
'subscopes': [],
|
||||||
'scope': 'https://www.googleapis.com/auth/spreadsheets'},
|
'scope': 'https://www.googleapis.com/auth/spreadsheets'},
|
||||||
]
|
]
|
||||||
@@ -789,14 +808,18 @@ def getVersion(api):
|
|||||||
def getClientScopesSet(api):
|
def getClientScopesSet(api):
|
||||||
return {scope['scope'] for scope in _CLIENT_SCOPES if scope['api'] == api}
|
return {scope['scope'] for scope in _CLIENT_SCOPES if scope['api'] == api}
|
||||||
|
|
||||||
def getClientScopesList(todriveClientAccess):
|
def getClientScopesList(commanddataClientAccess, todriveClientAccess):
|
||||||
caScopes = _CLIENT_SCOPES[:]
|
caScopes = _CLIENT_SCOPES[:]
|
||||||
|
if commanddataClientAccess:
|
||||||
|
caScopes.extend(_COMMANDDATA_CLIENT_SCOPES)
|
||||||
if todriveClientAccess:
|
if todriveClientAccess:
|
||||||
caScopes.extend(_TODRIVE_CLIENT_SCOPES)
|
caScopes.extend(_TODRIVE_CLIENT_SCOPES)
|
||||||
return sorted(caScopes, key=lambda k: k['name'])
|
return sorted(caScopes, key=lambda k: k['name'])
|
||||||
|
|
||||||
def getClientScopesURLs(todriveClientAccess):
|
def getClientScopesURLs(commanddataClientAccess, todriveClientAccess):
|
||||||
caScopes = _CLIENT_SCOPES[:]
|
caScopes = _CLIENT_SCOPES[:]
|
||||||
|
if commanddataClientAccess:
|
||||||
|
caScopes.extend(_COMMANDDATA_CLIENT_SCOPES)
|
||||||
if todriveClientAccess:
|
if todriveClientAccess:
|
||||||
caScopes.extend(_TODRIVE_CLIENT_SCOPES)
|
caScopes.extend(_TODRIVE_CLIENT_SCOPES)
|
||||||
return sorted({scope['scope'] for scope in _CLIENT_SCOPES})
|
return sorted({scope['scope'] for scope in _CLIENT_SCOPES})
|
||||||
|
|||||||
@@ -69,6 +69,8 @@ CACHE_DISCOVERY_ONLY = 'cache_discovery_only'
|
|||||||
CHANNEL_CUSTOMER_ID = 'channel_customer_id'
|
CHANNEL_CUSTOMER_ID = 'channel_customer_id'
|
||||||
# Character set of batch, csv, data files
|
# Character set of batch, csv, data files
|
||||||
CHARSET = 'charset'
|
CHARSET = 'charset'
|
||||||
|
# When retrieving lists of Chat items from API, how many should be retrieved in each chunk
|
||||||
|
CHAT_MAX_RESULTS = 'chat_max_results'
|
||||||
# When retrieving lists of Google Classroom items from API, how many should be retrieved in each chunk
|
# When retrieving lists of Google Classroom items from API, how many should be retrieved in each chunk
|
||||||
CLASSROOM_MAX_RESULTS = 'classroom_max_results'
|
CLASSROOM_MAX_RESULTS = 'classroom_max_results'
|
||||||
# Path to client_secrets.json
|
# Path to client_secrets.json
|
||||||
@@ -83,6 +85,8 @@ CMDLOG_MAX__BACKUPS = 'cmdlog_max__backups'
|
|||||||
CMDLOG_MAX_BACKUPS = 'cmdlog_max_backups'
|
CMDLOG_MAX_BACKUPS = 'cmdlog_max_backups'
|
||||||
# Command logging max kilo bytes per log file
|
# Command logging max kilo bytes per log file
|
||||||
CMDLOG_MAX_KILO_BYTES = 'cmdlog_max_kilo_bytes'
|
CMDLOG_MAX_KILO_BYTES = 'cmdlog_max_kilo_bytes'
|
||||||
|
# Use client access for command data from Google Docs/Sheets
|
||||||
|
COMMANDDATA_CLIENTACCESS = 'commanddata_clientaccess'
|
||||||
# GAM config directory containing client_secrets.json, oauth2.txt, oauth2service.json, extra_args.txt
|
# GAM config directory containing client_secrets.json, oauth2.txt, oauth2service.json, extra_args.txt
|
||||||
CONFIG_DIR = 'config_dir'
|
CONFIG_DIR = 'config_dir'
|
||||||
# When retrieving lists of Google Contacts from API, how many should be retrieved in each chunk
|
# When retrieving lists of Google Contacts from API, how many should be retrieved in each chunk
|
||||||
@@ -145,6 +149,8 @@ CSV_OUTPUT_USERS_AUDIT = 'csv_output_users_audit'
|
|||||||
CUSTOMER_ID = 'customer_id'
|
CUSTOMER_ID = 'customer_id'
|
||||||
# If debug_level > 0: extra_args['prettyPrint'] = True, httplib2.debuglevel = gam_debug_level, appsObj.debug = True
|
# If debug_level > 0: extra_args['prettyPrint'] = True, httplib2.debuglevel = gam_debug_level, appsObj.debug = True
|
||||||
DEBUG_LEVEL = 'debug_level'
|
DEBUG_LEVEL = 'debug_level'
|
||||||
|
# redact sensitive credentials from debug output
|
||||||
|
DEBUG_REDACTION = 'debug_redaction'
|
||||||
# Developer Preview API Key
|
# Developer Preview API Key
|
||||||
DEVELOPER_PREVIEW_API_KEY = 'developer_preview_api_key'
|
DEVELOPER_PREVIEW_API_KEY = 'developer_preview_api_key'
|
||||||
# When retrieving lists of ChromeOS devices from API, how many should be retrieved in each chunk
|
# When retrieving lists of ChromeOS devices from API, how many should be retrieved in each chunk
|
||||||
@@ -335,12 +341,14 @@ Defaults = {
|
|||||||
CACHE_DISCOVERY_ONLY: TRUE,
|
CACHE_DISCOVERY_ONLY: TRUE,
|
||||||
CHARSET: DEFAULT_CHARSET,
|
CHARSET: DEFAULT_CHARSET,
|
||||||
CHANNEL_CUSTOMER_ID: '',
|
CHANNEL_CUSTOMER_ID: '',
|
||||||
|
CHAT_MAX_RESULTS: '100',
|
||||||
CLASSROOM_MAX_RESULTS: '0',
|
CLASSROOM_MAX_RESULTS: '0',
|
||||||
CLIENT_SECRETS_JSON: FN_CLIENT_SECRETS_JSON,
|
CLIENT_SECRETS_JSON: FN_CLIENT_SECRETS_JSON,
|
||||||
CLOCK_SKEW_IN_SECONDS: '10',
|
CLOCK_SKEW_IN_SECONDS: '10',
|
||||||
CMDLOG: '',
|
CMDLOG: '',
|
||||||
CMDLOG_MAX_BACKUPS: 5,
|
CMDLOG_MAX_BACKUPS: 5,
|
||||||
CMDLOG_MAX_KILO_BYTES: 1000,
|
CMDLOG_MAX_KILO_BYTES: 1000,
|
||||||
|
COMMANDDATA_CLIENTACCESS: FALSE,
|
||||||
CONFIG_DIR: '',
|
CONFIG_DIR: '',
|
||||||
CONTACT_MAX_RESULTS: '100',
|
CONTACT_MAX_RESULTS: '100',
|
||||||
CSV_INPUT_COLUMN_DELIMITER: ',',
|
CSV_INPUT_COLUMN_DELIMITER: ',',
|
||||||
@@ -372,6 +380,7 @@ Defaults = {
|
|||||||
CSV_OUTPUT_USERS_AUDIT: FALSE,
|
CSV_OUTPUT_USERS_AUDIT: FALSE,
|
||||||
CUSTOMER_ID: MY_CUSTOMER,
|
CUSTOMER_ID: MY_CUSTOMER,
|
||||||
DEBUG_LEVEL: '0',
|
DEBUG_LEVEL: '0',
|
||||||
|
DEBUG_REDACTION: TRUE,
|
||||||
DEVELOPER_PREVIEW_API_KEY: '',
|
DEVELOPER_PREVIEW_API_KEY: '',
|
||||||
DEVICE_MAX_RESULTS: '200',
|
DEVICE_MAX_RESULTS: '200',
|
||||||
DOMAIN: '',
|
DOMAIN: '',
|
||||||
@@ -502,12 +511,14 @@ VAR_INFO = {
|
|||||||
CACHE_DISCOVERY_ONLY: {VAR_TYPE: TYPE_BOOLEAN, VAR_SIGFILE: 'allcache.txt', VAR_SFFT: (TRUE, FALSE)},
|
CACHE_DISCOVERY_ONLY: {VAR_TYPE: TYPE_BOOLEAN, VAR_SIGFILE: 'allcache.txt', VAR_SFFT: (TRUE, FALSE)},
|
||||||
CHARSET: {VAR_TYPE: TYPE_STRING, VAR_ENVVAR: 'GAM_CHARSET', VAR_LIMITS: (1, None)},
|
CHARSET: {VAR_TYPE: TYPE_STRING, VAR_ENVVAR: 'GAM_CHARSET', VAR_LIMITS: (1, None)},
|
||||||
CHANNEL_CUSTOMER_ID: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
|
CHANNEL_CUSTOMER_ID: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
|
||||||
|
CHAT_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 1000)},
|
||||||
CLASSROOM_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (0, 1000)},
|
CLASSROOM_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (0, 1000)},
|
||||||
CLIENT_SECRETS_JSON: {VAR_TYPE: TYPE_FILE, VAR_ENVVAR: 'CLIENTSECRETS', VAR_ACCESS: os.R_OK},
|
CLIENT_SECRETS_JSON: {VAR_TYPE: TYPE_FILE, VAR_ENVVAR: 'CLIENTSECRETS', VAR_ACCESS: os.R_OK},
|
||||||
CLOCK_SKEW_IN_SECONDS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (10, 3600)},
|
CLOCK_SKEW_IN_SECONDS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (10, 3600)},
|
||||||
CMDLOG: {VAR_TYPE: TYPE_FILE, VAR_ACCESS: os.W_OK},
|
CMDLOG: {VAR_TYPE: TYPE_FILE, VAR_ACCESS: os.W_OK},
|
||||||
CMDLOG_MAX_BACKUPS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 10)},
|
CMDLOG_MAX_BACKUPS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 10)},
|
||||||
CMDLOG_MAX_KILO_BYTES: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (100, 10000)},
|
CMDLOG_MAX_KILO_BYTES: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (100, 10000)},
|
||||||
|
COMMANDDATA_CLIENTACCESS: {VAR_TYPE: TYPE_BOOLEAN},
|
||||||
CONFIG_DIR: {VAR_TYPE: TYPE_DIRECTORY, VAR_ENVVAR: 'GAMUSERCONFIGDIR'},
|
CONFIG_DIR: {VAR_TYPE: TYPE_DIRECTORY, VAR_ENVVAR: 'GAMUSERCONFIGDIR'},
|
||||||
CONTACT_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 10000)},
|
CONTACT_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 10000)},
|
||||||
CSV_INPUT_COLUMN_DELIMITER: {VAR_TYPE: TYPE_CHARACTER},
|
CSV_INPUT_COLUMN_DELIMITER: {VAR_TYPE: TYPE_CHARACTER},
|
||||||
@@ -539,6 +550,7 @@ VAR_INFO = {
|
|||||||
CSV_OUTPUT_USERS_AUDIT: {VAR_TYPE: TYPE_BOOLEAN},
|
CSV_OUTPUT_USERS_AUDIT: {VAR_TYPE: TYPE_BOOLEAN},
|
||||||
CUSTOMER_ID: {VAR_TYPE: TYPE_STRING, VAR_ENVVAR: 'CUSTOMER_ID', VAR_LIMITS: (0, None)},
|
CUSTOMER_ID: {VAR_TYPE: TYPE_STRING, VAR_ENVVAR: 'CUSTOMER_ID', VAR_LIMITS: (0, None)},
|
||||||
DEBUG_LEVEL: {VAR_TYPE: TYPE_INTEGER, VAR_SIGFILE: 'debug.gam', VAR_LIMITS: (0, None), VAR_SFFT: ('0', '4')},
|
DEBUG_LEVEL: {VAR_TYPE: TYPE_INTEGER, VAR_SIGFILE: 'debug.gam', VAR_LIMITS: (0, None), VAR_SFFT: ('0', '4')},
|
||||||
|
DEBUG_REDACTION: {VAR_TYPE: TYPE_BOOLEAN},
|
||||||
DEVELOPER_PREVIEW_API_KEY: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
|
DEVELOPER_PREVIEW_API_KEY: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
|
||||||
DEVICE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 200)},
|
DEVICE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 200)},
|
||||||
DOMAIN: {VAR_TYPE: TYPE_STRING, VAR_ENVVAR: 'GA_DOMAIN', VAR_LIMITS: (0, None)},
|
DOMAIN: {VAR_TYPE: TYPE_STRING, VAR_ENVVAR: 'GA_DOMAIN', VAR_LIMITS: (0, None)},
|
||||||
|
|||||||
@@ -1138,6 +1138,7 @@ class GamCLArgs():
|
|||||||
OB_ARGUMENT = 'argument'
|
OB_ARGUMENT = 'argument'
|
||||||
OB_ASP_ID_LIST = 'ASPIDList'
|
OB_ASP_ID_LIST = 'ASPIDList'
|
||||||
OB_ASSET_ID = 'AssetID'
|
OB_ASSET_ID = 'AssetID'
|
||||||
|
OB_ADMIN_ASSIGNEE_TYPE_LIST = 'AdminAssigneeTypeList'
|
||||||
OB_BROWSER_ENROLLEMNT_TOKEN_ID = 'BrowserEnrollmentTokenID'
|
OB_BROWSER_ENROLLEMNT_TOKEN_ID = 'BrowserEnrollmentTokenID'
|
||||||
OB_BROWSER_ENTITY = 'BrowserEntity'
|
OB_BROWSER_ENTITY = 'BrowserEntity'
|
||||||
OB_BUILDING_ID = 'BuildingID'
|
OB_BUILDING_ID = 'BuildingID'
|
||||||
@@ -1216,6 +1217,7 @@ class GamCLArgs():
|
|||||||
OB_DOMAIN_NAME_LIST = 'DomainNameList'
|
OB_DOMAIN_NAME_LIST = 'DomainNameList'
|
||||||
OB_DRIVE_FILE_ENTITY = 'DriveFileEntity'
|
OB_DRIVE_FILE_ENTITY = 'DriveFileEntity'
|
||||||
OB_DRIVE_FILE_ID = 'DriveFileID'
|
OB_DRIVE_FILE_ID = 'DriveFileID'
|
||||||
|
OB_DRIVE_FILE_ID_LIST = 'DriveFileIDList'
|
||||||
OB_DRIVE_FILE_NAME = 'DriveFileName'
|
OB_DRIVE_FILE_NAME = 'DriveFileName'
|
||||||
OB_DRIVE_FILE_PERMISSION_ENTITY = 'DriveFilePermissionEntity'
|
OB_DRIVE_FILE_PERMISSION_ENTITY = 'DriveFilePermissionEntity'
|
||||||
OB_DRIVE_FILE_PERMISSION_ID = 'DriveFilePermissionID'
|
OB_DRIVE_FILE_PERMISSION_ID = 'DriveFilePermissionID'
|
||||||
|
|||||||
@@ -96,6 +96,7 @@ class GamEntity():
|
|||||||
CHAT_MEMBER_USER = 'chmu'
|
CHAT_MEMBER_USER = 'chmu'
|
||||||
CHAT_MESSAGE = 'chms'
|
CHAT_MESSAGE = 'chms'
|
||||||
CHAT_MESSAGE_ID = 'chmi'
|
CHAT_MESSAGE_ID = 'chmi'
|
||||||
|
CHAT_OWNER_USER = 'chou'
|
||||||
CHAT_SPACE = 'chsp'
|
CHAT_SPACE = 'chsp'
|
||||||
CHAT_THREAD = 'chth'
|
CHAT_THREAD = 'chth'
|
||||||
CHILD_ORGANIZATIONAL_UNIT = 'corg'
|
CHILD_ORGANIZATIONAL_UNIT = 'corg'
|
||||||
@@ -462,6 +463,7 @@ class GamEntity():
|
|||||||
CHAT_MEMBER: ['Chat Members', 'Chat Member'],
|
CHAT_MEMBER: ['Chat Members', 'Chat Member'],
|
||||||
CHAT_MEMBER_GROUP: ['Chat Group Members', 'Chat Group Member'],
|
CHAT_MEMBER_GROUP: ['Chat Group Members', 'Chat Group Member'],
|
||||||
CHAT_MEMBER_USER: ['Chat User Members', 'Chat User Member'],
|
CHAT_MEMBER_USER: ['Chat User Members', 'Chat User Member'],
|
||||||
|
CHAT_OWNER_USER: ['Chat User Owners', 'Chat User Owner'],
|
||||||
CHAT_SPACE: ['Chat Spaces', 'Chat Space'],
|
CHAT_SPACE: ['Chat Spaces', 'Chat Space'],
|
||||||
CHAT_THREAD: ['Chat Threads', 'Chat Thread'],
|
CHAT_THREAD: ['Chat Threads', 'Chat Thread'],
|
||||||
CHILD_ORGANIZATIONAL_UNIT: ['Child Organizational Units', 'Child Organizational Unit'],
|
CHILD_ORGANIZATIONAL_UNIT: ['Child Organizational Units', 'Child Organizational Unit'],
|
||||||
|
|||||||
@@ -107,6 +107,8 @@ CURRENT_SVCACCT_USER = 'csa'
|
|||||||
DATETIME_NOW = 'dtno'
|
DATETIME_NOW = 'dtno'
|
||||||
# If debug_level > 0: extra_args['prettyPrint'] = True, httplib2.debuglevel = gam_debug_level, appsObj.debug = True
|
# If debug_level > 0: extra_args['prettyPrint'] = True, httplib2.debuglevel = gam_debug_level, appsObj.debug = True
|
||||||
DEBUG_LEVEL = 'dbgl'
|
DEBUG_LEVEL = 'dbgl'
|
||||||
|
# Whether debug output should redact sensitive credentials
|
||||||
|
DEBUG_REDACTION = 'dbrd'
|
||||||
# Decoded ID token
|
# Decoded ID token
|
||||||
DECODED_ID_TOKEN = 'didt'
|
DECODED_ID_TOKEN = 'didt'
|
||||||
# Index of start of <UserTypeEntity> in command line
|
# Index of start of <UserTypeEntity> in command line
|
||||||
@@ -263,6 +265,7 @@ Globals = {
|
|||||||
CURRENT_SVCACCT_USER: None,
|
CURRENT_SVCACCT_USER: None,
|
||||||
DATETIME_NOW: None,
|
DATETIME_NOW: None,
|
||||||
DEBUG_LEVEL: 0,
|
DEBUG_LEVEL: 0,
|
||||||
|
DEBUG_REDACTION: True,
|
||||||
DECODED_ID_TOKEN: None,
|
DECODED_ID_TOKEN: None,
|
||||||
ENTITY_CL_DELAY_START: 1,
|
ENTITY_CL_DELAY_START: 1,
|
||||||
ENTITY_CL_START: 1,
|
ENTITY_CL_START: 1,
|
||||||
|
|||||||
@@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
## Definitions
|
## Definitions
|
||||||
```
|
```
|
||||||
|
<AdminAssigneeType> ::= group|user|serviceaccount|unknown
|
||||||
|
<AdminAssigneeTypeList> ::= "<AdminAssigneeType>(,<AdminAssigneeType>)*"
|
||||||
<DomainName> ::= <String>(.<String>)+
|
<DomainName> ::= <String>(.<String>)+
|
||||||
<EmailAddress> ::= <String>@<DomainName>
|
<EmailAddress> ::= <String>@<DomainName>
|
||||||
<GroupItem> ::= <EmailAddress>|<UniqueID>|<String>
|
<GroupItem> ::= <EmailAddress>|<UniqueID>|<String>
|
||||||
@@ -1475,16 +1477,25 @@ gam delete admin <RoleAssignmentId>
|
|||||||
## Display administrators
|
## Display administrators
|
||||||
```
|
```
|
||||||
gam print admins [todrive <ToDriveAttribute>*]
|
gam print admins [todrive <ToDriveAttribute>*]
|
||||||
[user|group <EmailAddress>|<UniqueID>] [role <RoleItem>] [condition]
|
[user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
||||||
[privileges] [oneitemperrow]
|
[types <AdminAssigneeTypeList>]
|
||||||
|
[recursive] [condition] [privileges] [oneitemperrow]
|
||||||
gam show admins
|
gam show admins
|
||||||
[user|group <EmailAddress>|<UniqueID>] [role <RoleItem>] [condition] [privileges]
|
[user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
||||||
|
[types <AdminAssigneeTypeList>]
|
||||||
|
[recursive] [condition] [privileges]
|
||||||
```
|
```
|
||||||
By default, all administrators and roles are displayed; choose from the following
|
By default, all administrators and roles are displayed; choose from the following
|
||||||
options to limit the display:
|
options to limit the display:
|
||||||
* `user <UserItem>` - Display only this administrator
|
* `user|group <EmailAddress>|<UniqueID>` - Display assignments to this administrator
|
||||||
* `role <RoleItem>` - Display only administrators with this role
|
* `role <RoleItem>` - Display only administrators with this role
|
||||||
|
|
||||||
|
By default, all admin assignee types are displayed. use `types <AdminAssigneeTypeList>` to filter
|
||||||
|
admin assignments by the type of the assignee.
|
||||||
|
|
||||||
|
By default, assignments to security groups are displayed as a single item; use `recursive`
|
||||||
|
to display assignments to the members of the security groups; the security group membershop is recursively expanded.
|
||||||
|
|
||||||
* `condition` - Display any conditions associated with a role assignment
|
* `condition` - Display any conditions associated with a role assignment
|
||||||
* `privileges` - Display privileges associated with each role assignment
|
* `privileges` - Display privileges associated with each role assignment
|
||||||
|
|
||||||
|
|||||||
@@ -265,6 +265,7 @@
|
|||||||
## Named items
|
## Named items
|
||||||
```
|
```
|
||||||
<AccessToken> ::= <String>
|
<AccessToken> ::= <String>
|
||||||
|
<AdminAssigneeType> ::= group|user|serviceaccount|unknown
|
||||||
<AlertID> ::= <String>
|
<AlertID> ::= <String>
|
||||||
<APIScopeURL> ::= <String>
|
<APIScopeURL> ::= <String>
|
||||||
<APPID> ::= <String>
|
<APPID> ::= <String>
|
||||||
@@ -462,6 +463,7 @@
|
|||||||
See: https://support.google.com/mail/answer/7190
|
See: https://support.google.com/mail/answer/7190
|
||||||
<QueryGroup> ::= <String>
|
<QueryGroup> ::= <String>
|
||||||
See: https://developers.google.com/admin-sdk/directory/v1/guides/search-groups
|
See: https://developers.google.com/admin-sdk/directory/v1/guides/search-groups
|
||||||
|
<QueryItem> ::= <UniqueID>|<String>
|
||||||
<QueryMemberRestrictions> ::= <String>
|
<QueryMemberRestrictions> ::= <String>
|
||||||
See: https://cloud.google.com/identity/docs/reference/rest/v1beta1/SecuritySettings#MemberRestriction
|
See: https://cloud.google.com/identity/docs/reference/rest/v1beta1/SecuritySettings#MemberRestriction
|
||||||
<QueryMobile> ::= <String>
|
<QueryMobile> ::= <String>
|
||||||
|
|||||||
@@ -567,7 +567,7 @@ By default, Gam displays the information as an indented list of keys and values.
|
|||||||
```
|
```
|
||||||
gam calendar <CalendarEntity> show events [<EventEntity>] <EventDisplayProperty>*
|
gam calendar <CalendarEntity> show events [<EventEntity>] <EventDisplayProperty>*
|
||||||
[fields <EventFieldNameList>] [showdayofweek]
|
[fields <EventFieldNameList>] [showdayofweek]
|
||||||
[countsly] [formatjson]
|
[countsly|formatjson]
|
||||||
```
|
```
|
||||||
In `<EventEntity>`, any `<EventSelectProperty>` options must precede all other options.
|
In `<EventEntity>`, any `<EventSelectProperty>` options must precede all other options.
|
||||||
|
|
||||||
@@ -586,8 +586,9 @@ By default, Gam displays event details, use `countsonly` to display only the num
|
|||||||
```
|
```
|
||||||
gam calendar <CalendarEntity> print events [<EventEntity>] <EventDisplayProperty>*
|
gam calendar <CalendarEntity> print events [<EventEntity>] <EventDisplayProperty>*
|
||||||
[fields <EventFieldNameList>] [showdayofweek]
|
[fields <EventFieldNameList>] [showdayofweek]
|
||||||
[countsonly [eventrowfilter]]
|
(addcsvdata <FieldName> <String>)*
|
||||||
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
[eventrowfilter]
|
||||||
|
[countsonly|(formatjson [quotechar <Character>])] [todrive <ToDriveAttribute>*]
|
||||||
```
|
```
|
||||||
In `<EventEntity>`, any `<EventSelectProperty>` options must precede all other options.
|
In `<EventEntity>`, any `<EventSelectProperty>` options must precede all other options.
|
||||||
|
|
||||||
@@ -598,6 +599,9 @@ option `singleevents` to display all instances of a recurring event.
|
|||||||
|
|
||||||
`showdayofweek` displays columns `start.dayOfWeek` and `end.dayOfWeek` when event start and end times are displayed.
|
`showdayofweek` displays columns `start.dayOfWeek` and `end.dayOfWeek` when event start and end times are displayed.
|
||||||
|
|
||||||
|
Add additional columns of data from the command line to the output after the calendarId.
|
||||||
|
* `addcsvdata <FieldName> <String>`
|
||||||
|
|
||||||
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
|
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
|
||||||
* `formatjson` - Display the fields in JSON format.
|
* `formatjson` - Display the fields in JSON format.
|
||||||
|
|
||||||
|
|||||||
@@ -570,6 +570,7 @@ gam print course-materials [todrive <ToDriveAttribute>*]
|
|||||||
(orderby <CourseMaterialOrderByFieldName> [ascending|descending])*)
|
(orderby <CourseMaterialOrderByFieldName> [ascending|descending])*)
|
||||||
[showcreatoremails|creatoremail] [showtopicnames] [fields <CourseMaterialFieldNameList>]
|
[showcreatoremails|creatoremail] [showtopicnames] [fields <CourseMaterialFieldNameList>]
|
||||||
[timefilter creationtime|updatetime|scheduledtime] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
[timefilter creationtime|updatetime|scheduledtime] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
||||||
|
[oneitemperrow]
|
||||||
[countsonly] [formatjson [quotechar <Character>]]
|
[countsonly] [formatjson [quotechar <Character>]]
|
||||||
```
|
```
|
||||||
By default, the `print course-materials` command displays course materials information for all courses.
|
By default, the `print course-materials` command displays course materials information for all courses.
|
||||||
@@ -600,6 +601,10 @@ By default, all course materials fields are displayed; use the following options
|
|||||||
* `showtopicnames` - Display topic names; requires and additional API call per course.
|
* `showtopicnames` - Display topic names; requires and additional API call per course.
|
||||||
* `fields <CourseMaterialsFieldNameList>` - Select specific fields to display.
|
* `fields <CourseMaterialsFieldNameList>` - Select specific fields to display.
|
||||||
|
|
||||||
|
With `print course-materials`, the materials selected for display are all output on one row/line as a repeating item with the other course fields.
|
||||||
|
When `oneitemperrow` is specified, each material is output on a separate row/line with the other course fields.
|
||||||
|
This simplifies processing the materials in the CSV file with subsequent Gam commands.
|
||||||
|
|
||||||
Use the `countsonly` option to display the number of course materials in a course but not their details.
|
Use the `countsonly` option to display the number of course materials in a course but not their details.
|
||||||
|
|
||||||
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
|
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
|
||||||
@@ -662,6 +667,7 @@ gam print course-work [todrive <ToDriveAttribute>*]
|
|||||||
[showcreatoremails] [showtopicnames] [fields <CourseWorkFieldNameList>]
|
[showcreatoremails] [showtopicnames] [fields <CourseWorkFieldNameList>]
|
||||||
[showstudentsaslist [<Boolean>]] [delimiter <Character>]
|
[showstudentsaslist [<Boolean>]] [delimiter <Character>]
|
||||||
[timefilter creationtime|updatetime|scheduledtime] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
[timefilter creationtime|updatetime|scheduledtime] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
||||||
|
[oneitemperrow]
|
||||||
[countsonly] [formatjson [quotechar <Character>]]
|
[countsonly] [formatjson [quotechar <Character>]]
|
||||||
```
|
```
|
||||||
By default, the `print course-work` command displays course work information for all courses.
|
By default, the `print course-work` command displays course work information for all courses.
|
||||||
@@ -695,6 +701,10 @@ By default, all course work fields are displayed; use the following options to m
|
|||||||
By default, when course work is assigned to individual students, the student IDs are displayed in multiple indexed columns.
|
By default, when course work is assigned to individual students, the student IDs are displayed in multiple indexed columns.
|
||||||
Use options `showstudentsaslist [<Boolean>]` and `delimiter <Character>` to display the student IDs is a single column as a delimited list.
|
Use options `showstudentsaslist [<Boolean>]` and `delimiter <Character>` to display the student IDs is a single column as a delimited list.
|
||||||
|
|
||||||
|
With `print course-work`, any materials are all output on one row/line as a repeating item with the other course fields.
|
||||||
|
When `oneitemperrow` is specified, each material is output on a separate row/line with the other course fields.
|
||||||
|
This simplifies processing the materials in the CSV file with subsequent Gam commands.
|
||||||
|
|
||||||
Use the `countsonly` option to display the number of course works in a course but not their details.
|
Use the `countsonly` option to display the number of course works in a course but not their details.
|
||||||
|
|
||||||
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
|
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
|
||||||
|
|||||||
@@ -53,286 +53,7 @@ You must enable access to policies in the GCP cloud console.
|
|||||||
These are the supported policies GAM can show today.
|
These are the supported policies GAM can show today.
|
||||||
|
|
||||||
See: https://cloud.google.com/identity/docs/concepts/supported-policy-api-settings
|
See: https://cloud.google.com/identity/docs/concepts/supported-policy-api-settings
|
||||||
```
|
|
||||||
user_takeout_status (is takeout enabled for service)
|
|
||||||
blogger.user_takeout
|
|
||||||
books.user_takeout
|
|
||||||
location_history.user_takeout
|
|
||||||
maps.user_takeout
|
|
||||||
pay.user_takeout
|
|
||||||
photos.user_takeout
|
|
||||||
play.user_takeout
|
|
||||||
play_console.user_takeout
|
|
||||||
youtube.user_takeout
|
|
||||||
service_status (is service enabled)
|
|
||||||
ad_manager
|
|
||||||
ads
|
|
||||||
adsense
|
|
||||||
alerts
|
|
||||||
analytics
|
|
||||||
applied_digital_skills
|
|
||||||
appsheet
|
|
||||||
arts_and_culture
|
|
||||||
beyondcorp_enterprise
|
|
||||||
blogger
|
|
||||||
bookmarks
|
|
||||||
books
|
|
||||||
calendar
|
|
||||||
campaign_manager
|
|
||||||
chat
|
|
||||||
chrome_canvas
|
|
||||||
chrome_remote_desktop
|
|
||||||
chrome_sync
|
|
||||||
chrome_web_store
|
|
||||||
classroom
|
|
||||||
cloud
|
|
||||||
cloud_search
|
|
||||||
colab
|
|
||||||
cs_first
|
|
||||||
data_studio
|
|
||||||
developers
|
|
||||||
domains
|
|
||||||
drive_and_docs
|
|
||||||
earth
|
|
||||||
enterprise_service_restrictions
|
|
||||||
experimental_apps
|
|
||||||
feedburner
|
|
||||||
fi
|
|
||||||
gmail
|
|
||||||
groups
|
|
||||||
groups_for_business
|
|
||||||
jamboard
|
|
||||||
keep
|
|
||||||
location_history
|
|
||||||
managed_play
|
|
||||||
maps
|
|
||||||
material_gallery
|
|
||||||
meet
|
|
||||||
merchant_center
|
|
||||||
messages
|
|
||||||
migrate
|
|
||||||
my_business
|
|
||||||
my_maps
|
|
||||||
news
|
|
||||||
partner_dash
|
|
||||||
pay
|
|
||||||
pay_for_business
|
|
||||||
photos
|
|
||||||
pinpoint
|
|
||||||
play
|
|
||||||
play_books_partner_center
|
|
||||||
play_console
|
|
||||||
public_data
|
|
||||||
question_hub
|
|
||||||
scholar_profiles
|
|
||||||
search_ads_360
|
|
||||||
search_and_assistant
|
|
||||||
search_console
|
|
||||||
sites
|
|
||||||
socratic
|
|
||||||
takeout
|
|
||||||
tasks
|
|
||||||
third_party_app_backups
|
|
||||||
translate
|
|
||||||
trips
|
|
||||||
vault
|
|
||||||
voice
|
|
||||||
work_insights
|
|
||||||
youtube
|
|
||||||
calendar.appointment_schedules
|
|
||||||
enablePayments
|
|
||||||
chat.chat_apps_access
|
|
||||||
enableApps
|
|
||||||
enableWebhooks
|
|
||||||
chat.chat_file_sharing
|
|
||||||
externalFileSharing
|
|
||||||
internalFileSharing
|
|
||||||
chat.chat_history
|
|
||||||
enableChatHistory
|
|
||||||
historyOnByDefault
|
|
||||||
allowUserModification
|
|
||||||
chat.external_chat_restriction
|
|
||||||
allowExternalChat
|
|
||||||
chat.space_history
|
|
||||||
historyState
|
|
||||||
classroom.api_data_access
|
|
||||||
enableApiAccess
|
|
||||||
classroom.class_membership
|
|
||||||
whoCanJoinClasses
|
|
||||||
whichClassesCanUsersJoin
|
|
||||||
classroom.guardian_access
|
|
||||||
allowAccess
|
|
||||||
whoCanManageGuardianAccess
|
|
||||||
classroom.originality_reports
|
|
||||||
enableOriginalityReportsSchoolMatches
|
|
||||||
classroom.roster_import
|
|
||||||
rosterImportOption
|
|
||||||
classroom.student_unenrollment
|
|
||||||
whoCanUnenrollStudents
|
|
||||||
classroom.teacher_permissions
|
|
||||||
whoCanCreateClasses
|
|
||||||
cloud_sharing_options.cloud_data_sharing
|
|
||||||
sharingOptions
|
|
||||||
detector.regular_expression
|
|
||||||
displayName
|
|
||||||
regularExpression
|
|
||||||
createTime
|
|
||||||
updateTime
|
|
||||||
detector.word_list
|
|
||||||
displayName
|
|
||||||
wordList
|
|
||||||
createTime
|
|
||||||
updateTime
|
|
||||||
description
|
|
||||||
drive_and_docs.drive_for_desktop
|
|
||||||
allowDriveForDesktop
|
|
||||||
restrictToAuthorizedDevices
|
|
||||||
showDownloadLink
|
|
||||||
allowRealTimePresence
|
|
||||||
drive_and_docs.external_sharing
|
|
||||||
externalSharingMode
|
|
||||||
allowReceivingExternalFiles
|
|
||||||
warnForSharingOutsideAllowlistedDomains
|
|
||||||
allowReceivingFilesOutsideAllowlistedDomains
|
|
||||||
allowNonGoogleInvitesInAllowlistedDomains
|
|
||||||
warnForExternalSharing
|
|
||||||
allowNonGoogleInvites
|
|
||||||
allowPublishingFiles
|
|
||||||
accessCheckerSuggestions
|
|
||||||
allowedPartiesForDistributingContent
|
|
||||||
drive_and_docs.file_security_update
|
|
||||||
securityUpdate
|
|
||||||
allowUsersToManageUpdate
|
|
||||||
drive_and_docs.shared_drive_creation
|
|
||||||
allowSharedDriveCreation
|
|
||||||
orgUnitForNewSharedDrives
|
|
||||||
customOrgUnit
|
|
||||||
allowManagersToOverrideSettings
|
|
||||||
allowExternalUserAccess
|
|
||||||
allowNonMemberAccess
|
|
||||||
allowedPartiesForDownloadPrintCopy
|
|
||||||
allowContentManagersToShareFolders
|
|
||||||
gmail.auto_forwarding
|
|
||||||
enableAutoForwarding
|
|
||||||
gmail.confidential_mode
|
|
||||||
enableConfidentialMode
|
|
||||||
gmail.email_attachment_safety
|
|
||||||
enableEncryptedAttachmentProtection
|
|
||||||
encryptedAttachmentProtectionConsequence
|
|
||||||
enableAttachmentWithScriptsProtection
|
|
||||||
attachmentWithScriptsProtectionConsequence
|
|
||||||
enableAnomalousAttachmentProtection
|
|
||||||
anomalousAttachmentProtectionConsequence
|
|
||||||
allowedAnomalousAttachmentFiletypes
|
|
||||||
applyFutureRecommendedSettingsAutomatically
|
|
||||||
encryptedAttachmentProtectionQuarantineId
|
|
||||||
attachmentWithScriptsProtectionQuarantineId
|
|
||||||
anomalousAttachmentProtectionQuarantineId
|
|
||||||
gmail.email_image_proxy_bypass
|
|
||||||
imageProxyBypassPattern
|
|
||||||
enableImageProxy
|
|
||||||
gmail.enhanced_pre_delivery_message_scanning
|
|
||||||
enableImprovedSuspiciousContentDetection
|
|
||||||
gmail.enhanced_smime_encryption
|
|
||||||
enableSmimeEncryption
|
|
||||||
allowUserToUploadCertificates
|
|
||||||
gmail.gmail_name_format
|
|
||||||
allowCustomDisplayNames
|
|
||||||
defaultDisplayNameFormat
|
|
||||||
gmail.imap_access
|
|
||||||
enableImapAccess
|
|
||||||
gmail.links_and_external_images
|
|
||||||
enableShortenerScanning
|
|
||||||
enableExternalImageScanning
|
|
||||||
enableAggressiveWarningsOnUntrustedLinks
|
|
||||||
applyFutureSettingsAutomatically
|
|
||||||
gmail.per_user_outbound_gateway
|
|
||||||
allowUsersToUseExternalSmtpServers
|
|
||||||
gmail.pop_access
|
|
||||||
enablePopAccess
|
|
||||||
gmail.spoofing_and_authentication
|
|
||||||
detectDomainNameSpoofing
|
|
||||||
detectEmployeeNameSpoofing
|
|
||||||
detectDomainSpoofingFromUnauthenticatedSenders
|
|
||||||
detectUnauthenticatedEmails
|
|
||||||
domainNameSpoofingConsequence
|
|
||||||
employeeNameSpoofingConsequence
|
|
||||||
domainSpoofingConsequence
|
|
||||||
unauthenticatedEmailConsequence
|
|
||||||
detectGroupsSpoofing
|
|
||||||
groupsSpoofingVisibilityType
|
|
||||||
groupsSpoofingConsequence
|
|
||||||
applyFutureSettingsAutomatically
|
|
||||||
domainNameSpoofingQuarantineId
|
|
||||||
employeeNameSpoofingQuarantineId
|
|
||||||
domainSpoofingQuarantineId
|
|
||||||
unauthenticatedEmailQuarantineId
|
|
||||||
groupsSpoofingQuarantineId
|
|
||||||
gmail.user_email_uploads
|
|
||||||
enableMailAndContactsImport
|
|
||||||
gmail.workspace_sync_for_outlook
|
|
||||||
enableGoogleWorkspaceSyncForMicrosoftOutlook
|
|
||||||
groups_for_business.groups_sharing
|
|
||||||
ownersCanAllowIncomingMailFromPublic
|
|
||||||
collaborationCapability
|
|
||||||
createGroupsAccessLevel
|
|
||||||
ownersCanAllowExternalMembers
|
|
||||||
ownersCanHideGroups
|
|
||||||
newGroupsAreHidden
|
|
||||||
viewTopicsDefaultAccessLevel
|
|
||||||
meet.safety_access
|
|
||||||
meetingsAllowedToJoin
|
|
||||||
meet.safety_domain
|
|
||||||
usersAllowedToJoin
|
|
||||||
meet.safety_external_participants
|
|
||||||
enableExternalLabel
|
|
||||||
meet.safety_host_management
|
|
||||||
enableHostManagement
|
|
||||||
meet.video_recording
|
|
||||||
enableRecording
|
|
||||||
rule.dlp
|
|
||||||
displayName
|
|
||||||
description
|
|
||||||
triggers
|
|
||||||
condition
|
|
||||||
action
|
|
||||||
state
|
|
||||||
createTime
|
|
||||||
updateTime
|
|
||||||
ruleTypeMetadata
|
|
||||||
rule.system_defined_alerts
|
|
||||||
displayName
|
|
||||||
description
|
|
||||||
action
|
|
||||||
state
|
|
||||||
createTime
|
|
||||||
updateTime
|
|
||||||
security.advanced_protection_program
|
|
||||||
enableAdvancedProtectionSelfEnrollment
|
|
||||||
securityCodeOption
|
|
||||||
security.less_secure_apps
|
|
||||||
allowLessSecureApps
|
|
||||||
security.login_challenges
|
|
||||||
enableEmployeeIdChallenge
|
|
||||||
security.password
|
|
||||||
allowedStrength
|
|
||||||
minimumLength
|
|
||||||
maximumLength
|
|
||||||
enforceRequirementsAtLogin
|
|
||||||
allowReuse
|
|
||||||
expirationDuration
|
|
||||||
security.session_controls
|
|
||||||
webSessionDuration
|
|
||||||
security.super_admin_account_recovery
|
|
||||||
enableAccountRecovery
|
|
||||||
security.user_account_recovery
|
|
||||||
enableAccountRecovery
|
|
||||||
sites.sites_creation_and_modification
|
|
||||||
allowSitesCreation
|
|
||||||
allowSitesModification
|
|
||||||
workspace_marketplace.apps_allowlist
|
|
||||||
apps
|
|
||||||
```
|
|
||||||
## Display Cloud Identity Policies
|
## Display Cloud Identity Policies
|
||||||
Display selected policies.
|
Display selected policies.
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
- [Plain Text](#plain-text)
|
- [Plain Text](#plain-text)
|
||||||
- [HTML](#html)
|
- [HTML](#html)
|
||||||
- [Read data from a Google Sheet](#read-data-from-a-google-sheet)
|
- [Read data from a Google Sheet](#read-data-from-a-google-sheet)
|
||||||
|
- [Limited Service Account Access](#limited-service-account-access)
|
||||||
- [Read data from a Google Cloud Storage File](#read-data-from-a-google-cloud-storage-file)
|
- [Read data from a Google Cloud Storage File](#read-data-from-a-google-cloud-storage-file)
|
||||||
- [Plain Text](#plain-text)
|
- [Plain Text](#plain-text)
|
||||||
- [CSV](#csv)
|
- [CSV](#csv)
|
||||||
@@ -79,6 +80,25 @@ Example:
|
|||||||
```
|
```
|
||||||
gam csv gsheet you@exmaple.com <DriveFileIDEntity> "Sheet 1" gam create user firstname "~FirstName" lastname "~lastName" email "~email"
|
gam csv gsheet you@exmaple.com <DriveFileIDEntity> "Sheet 1" gam create user firstname "~FirstName" lastname "~lastName" email "~email"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Limited Service Account Access
|
||||||
|
If you want to disable a user's service account access to Drive and Sheets but still allow reading command data from Google Docs and Sheets,
|
||||||
|
issue the following commands. The admin specified in `gam oauth create` can read command data from Docs and Sheets to which it has access.
|
||||||
|
```
|
||||||
|
gam config commanddata_clientaccess true save
|
||||||
|
gam oauth create
|
||||||
|
Enable the following and proceed to authorization.
|
||||||
|
|
||||||
|
[*] 42) Drive API - commanddata_clientaccess
|
||||||
|
[*] 54) Sheets API - commanddata_clientaccess
|
||||||
|
```
|
||||||
|
In these options, the `<EmailAddress> is not used, but for clarity you may want to specify the
|
||||||
|
email address of the admin specified in `gam oauth create`.
|
||||||
|
```
|
||||||
|
gdoc <EmailAddress> <DriveFileIDEntity>|<DriveFileNameEntity>|(<SharedDriveEntity> <SharedDriveFileNameEntity>)
|
||||||
|
gsheet <EmailAddress> <DriveFileIDEntity>|<DriveFileNameEntity>|(<SharedDriveEntity> <SharedDriveFileNameEntity>) <SheetEntity>
|
||||||
|
```
|
||||||
|
|
||||||
## Read data from a Google Cloud Storage File
|
## Read data from a Google Cloud Storage File
|
||||||
```
|
```
|
||||||
<StorageBucketName> ::= <String>
|
<StorageBucketName> ::= <String>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
- [Delete duplicate email addresses from contacts](#delete-duplicate-email-addresses-from-contacts)
|
- [Delete duplicate email addresses from contacts](#delete-duplicate-email-addresses-from-contacts)
|
||||||
- [Manage domain contact photos](#manage-domain-contact-photos)
|
- [Manage domain contact photos](#manage-domain-contact-photos)
|
||||||
- [Display domain shared contacts](#display-domain-shared-contacts)
|
- [Display domain shared contacts](#display-domain-shared-contacts)
|
||||||
- [Display global address list](#display-global-address-list)
|
- [Display global address list](Global-Address-List)
|
||||||
|
|
||||||
## API documentation
|
## API documentation
|
||||||
* [Domain Shared Contacts API](https://developers.google.com/admin-sdk/domain-shared-contacts)
|
* [Domain Shared Contacts API](https://developers.google.com/admin-sdk/domain-shared-contacts)
|
||||||
|
|||||||
@@ -25,14 +25,14 @@ start a new terminal session and reissue the command from above.
|
|||||||
## Executable, Manual
|
## Executable, Manual
|
||||||
|
|
||||||
* Executable Archive, Manual, Linux/Google Cloud Shell
|
* Executable Archive, Manual, Linux/Google Cloud Shell
|
||||||
- `gam-7.wx.yz-linux-x86_64-glibc2.35.tar.xz`
|
- `gam-7.wx.yz-linux-x86_64-glibc2.36.tar.xz`
|
||||||
- `gam-7.wx.yz-linux-x86_64-glibc2.39.tar.xz`
|
- `gam-7.wx.yz-linux-x86_64-glibc2.39.tar.xz`
|
||||||
- `gam-7.wx.yz-linux-x86_64-legacy.tar.xz`
|
- `gam-7.wx.yz-linux-x86_64-legacy.tar.xz`
|
||||||
- Download the archive, extract the contents into some directory.
|
- Download the archive, extract the contents into some directory.
|
||||||
- Start a terminal session.
|
- Start a terminal session.
|
||||||
|
|
||||||
* Executable Archive, Manual, Raspberry Pi/ChromeOS ARM devices
|
* Executable Archive, Manual, Raspberry Pi/ChromeOS ARM devices
|
||||||
- `gam-7.wx.yz-linux-arm64-glibc2.35.tar.xz`
|
- `gam-7.wx.yz-linux-arm64-glibc2.36.tar.xz`
|
||||||
- `gam-7.wx.yz-linux-arm64-glibc2.39.tar.xz`
|
- `gam-7.wx.yz-linux-arm64-glibc2.39.tar.xz`
|
||||||
- `gam-7.wx.yz-linux-arm64-legacy.tar.xz`
|
- `gam-7.wx.yz-linux-arm64-legacy.tar.xz`
|
||||||
- Download the archive, extract the contents into some directory.
|
- Download the archive, extract the contents into some directory.
|
||||||
@@ -43,16 +43,26 @@ start a new terminal session and reissue the command from above.
|
|||||||
- Download the archive, extract the contents into some directory.
|
- Download the archive, extract the contents into some directory.
|
||||||
- Start a terminal session.
|
- Start a terminal session.
|
||||||
|
|
||||||
* Executable Archive, Manual, Mac OS versions Sequoia - M3
|
* Executable Archive, Manual, Mac OS versions Sequoia - M2/M3
|
||||||
- `gam-7.wx.yz-macos15.4-arm64.tar.xz`
|
- `gam-7.wx.yz-macos15.6-arm64.tar.xz`
|
||||||
- Download the archive, extract the contents into some directory.
|
- Download the archive, extract the contents into some directory.
|
||||||
- Start a terminal session.
|
- Start a terminal session.
|
||||||
|
|
||||||
* Executable Archive, Manual, Mac OS, versions Ventura, Sonoma, Sequoia - Intel
|
* Executable Archive, Manual, Mac OS versions Tahoe - M2/M3/M4
|
||||||
|
- `gam-7.wx.yz-macos26.0-arm64.tar.xz`
|
||||||
|
- Download the archive, extract the contents into some directory.
|
||||||
|
- Start a terminal session.
|
||||||
|
|
||||||
|
* Executable Archive, Manual, Mac OS, versions Ventura, Sonoma - Intel
|
||||||
- `gam-7.wx.yz-macos13.7-x86_64.tar.xz`
|
- `gam-7.wx.yz-macos13.7-x86_64.tar.xz`
|
||||||
- Download the archive, extract the contents into some directory.
|
- Download the archive, extract the contents into some directory.
|
||||||
- Start a terminal session.
|
- Start a terminal session.
|
||||||
|
|
||||||
|
* Executable Archive, Manual, Mac OS, versions Sequoia, Tahoe - Intel
|
||||||
|
- `gam-7.wx.yz-macos15.6-x86_64.tar.xz`
|
||||||
|
- Download the archive, extract the contents into some directory.
|
||||||
|
- Start a terminal session.
|
||||||
|
|
||||||
* Executable Archive, Manual, Windows 64 bit
|
* Executable Archive, Manual, Windows 64 bit
|
||||||
- `gam-7.wx.yz-windows-x86_64.zip`
|
- `gam-7.wx.yz-windows-x86_64.zip`
|
||||||
- Download the archive, extract the contents into some directory.
|
- Download the archive, extract the contents into some directory.
|
||||||
|
|||||||
@@ -10,6 +10,186 @@ 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.27.01
|
||||||
|
|
||||||
|
Fixed bug in `gam <UserTypeEntity> claim ownership <DriveFileEntity> ... onlyUsers|skipusers <UserTypeEntity>`
|
||||||
|
where the email addresses in `onlyUsers|skipusers <UserTypeEntity>` were not normalized.
|
||||||
|
|
||||||
|
### 7.27.00
|
||||||
|
|
||||||
|
Added `debug_redaction` Boolean variable to `gam.cfg`. When True, the default,
|
||||||
|
sensitive data like access/refresh tokens, client secret and authorization codes
|
||||||
|
are redacted from debug output. This allows you to post debug output without
|
||||||
|
compromising your account information. Even with debug redaction,
|
||||||
|
anything shared publicly should be double-checked for sensitive content.
|
||||||
|
|
||||||
|
### 7.25.01
|
||||||
|
|
||||||
|
Fixed bug in `gam config timezone <String>` to handle timezone abbreviations correctly;
|
||||||
|
they were incorrectly shifted to lowercase.
|
||||||
|
|
||||||
|
### 7.25.00
|
||||||
|
|
||||||
|
Removed a capabilty added in 7.24.00 that allowed reading command data from Google Docs and Sheets
|
||||||
|
when a user's service account access to Drive and Sheets had been disabled. Jay was concerned
|
||||||
|
that this change could be exploited to give access to all user's files.
|
||||||
|
|
||||||
|
This capability has been replaced by issuing the following commands. The admin specified in `gam oauth create`
|
||||||
|
can read command data from Docs and Sheets to which it has access.
|
||||||
|
```
|
||||||
|
gam config commanddata_clientaccess true save
|
||||||
|
gam oauth create
|
||||||
|
Enable the following and proceed to authorization.
|
||||||
|
|
||||||
|
[*] 42) Drive API - commanddata_clientaccess
|
||||||
|
[*] 54) Sheets API - commanddata_clientaccess
|
||||||
|
```
|
||||||
|
|
||||||
|
* See: https://github.com/GAM-team/GAM/wiki/Command-Data-From-Google-Docs-Sheets-Storage#limited-service-account-access
|
||||||
|
|
||||||
|
Fixed in bug in `gam report` that caused a trap with either of the `thismonth` or `previousmonths` options were used.
|
||||||
|
|
||||||
|
Upgraded to Python 3.14.0.
|
||||||
|
|
||||||
|
### 7.24.01
|
||||||
|
|
||||||
|
Updated GAM to handle the following error that occurs when GAM tries to authenticate
|
||||||
|
as a user that has been disabled by Google.
|
||||||
|
```
|
||||||
|
ERROR: Authentication Token Error - invalid_account: Forbidden
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.24.00
|
||||||
|
|
||||||
|
If you want to disable a user's service account access to Drive and Sheets but still allow reading command data from Google Docs and Sheets,
|
||||||
|
issue the following command and make these settings:
|
||||||
|
```
|
||||||
|
gam user user@domain.com update serviceaccount
|
||||||
|
|
||||||
|
[ ] 20) Drive API (supports readonly)
|
||||||
|
[*] 21) Drive API - read command data
|
||||||
|
[ ] 42) Sheets API (supports readonly)
|
||||||
|
[*] 43) Sheets API - read command data
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.23.07
|
||||||
|
|
||||||
|
Fixed bug in `gam print|show admins` where all admin assignments were not displayed when
|
||||||
|
`types <AdminAssigneeTypeList>` was not specified, i.e., all assignments should be displayed.
|
||||||
|
|
||||||
|
### 7.23.06
|
||||||
|
|
||||||
|
Added option `types <AdminAssigneeTypeList>` to `gam print|show admins` that allows filtering
|
||||||
|
of admin assignments by the type of the assignee; by default, all assignee types are displayed.
|
||||||
|
```
|
||||||
|
<AdminAssigneeType> ::= group|user|serviceaccount|unknown
|
||||||
|
<AdminAssigneeTypeList> ::= "<AdminAssigneeType>(,<AdminAssigneeType>)*"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.23.05
|
||||||
|
|
||||||
|
Added option `recursive` to `gam print|show admins` that will display assignments to the members
|
||||||
|
of security groups assigned to roles; the security group membership is recursively expanded.
|
||||||
|
|
||||||
|
### 7.23.04
|
||||||
|
|
||||||
|
Added option `addcsvdata <FieldName> <String>` to `gam <UserTypeEntity> print events`
|
||||||
|
and `gam calendars <CalendarEntity> print events` that adds additional columns of data to the CSV file output.
|
||||||
|
An example would be to get the calendar name in addition to the calendar ID when printing events.
|
||||||
|
```
|
||||||
|
gam redirect csv ./Resources.csv print resources fields email,name
|
||||||
|
gam redirect csv ./ResourceEventCounts.csv multiprocess redirect stderr - multiprocess csv Resources.csv gam calendar "~resourceEmail" print events starttime -1y countsonly addcsvdata calendarName "~resourceName"
|
||||||
|
```
|
||||||
|
|
||||||
|
Upgraded to OpenSSL 3.6.0.
|
||||||
|
|
||||||
|
### 7.23.03
|
||||||
|
|
||||||
|
Upgraded to OpenSSL 3.5.4.
|
||||||
|
|
||||||
|
### 7.23.02
|
||||||
|
|
||||||
|
Added option `oneitemperrow` to 'gam print course-materials|course-work` to have each of a
|
||||||
|
course's materials displayed on a separate row with all of the other course fields.
|
||||||
|
This produces a CSV file that can be used in subsequent commands to process the materials without further script processing.
|
||||||
|
|
||||||
|
### 7.23.00
|
||||||
|
|
||||||
|
Added `chat_max_results` variable to `gam.cfg`.
|
||||||
|
```
|
||||||
|
chat_max_results
|
||||||
|
When retrieving lists of Chat items from API,
|
||||||
|
how many should be retrieved in each API call
|
||||||
|
Default: 100
|
||||||
|
Range: 1 - 1000
|
||||||
|
```
|
||||||
|
Previously, this vaule was always set to 1000 which could cause errors.
|
||||||
|
|
||||||
|
### 7.22.07
|
||||||
|
|
||||||
|
Added options `showdetails` and `returnidonly` to `gam create|copy vaultquery`.
|
||||||
|
|
||||||
|
Added option `<JSONData>` to `gam create vaultexport|vaultquery and `gam print vaultcounts``.
|
||||||
|
|
||||||
|
### 7.22.06
|
||||||
|
|
||||||
|
Added commands to create, copy and delete Vault saved queries.
|
||||||
|
```
|
||||||
|
gam create vaultquery <MatterItem> [name <String>]
|
||||||
|
corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
|
||||||
|
[scope all_data|held_data|unprocessed_data]
|
||||||
|
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
||||||
|
(documentids (<DriveFileIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
(shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
[(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
|
||||||
|
(sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
|
||||||
|
[driveversiondate <Date>|<Time>]
|
||||||
|
[includerooms <Boolean>]
|
||||||
|
(rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
|
||||||
|
[locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
|
||||||
|
[responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
|
||||||
|
(covereddata calllogs|textmessages|voicemails)*
|
||||||
|
[shownames] [formatjson]
|
||||||
|
|
||||||
|
gam copy vaultquery <MatterItem> <QueryItem> [targetmatter <MatterItem"] [name <String>]
|
||||||
|
[shownames] [formatjson]
|
||||||
|
|
||||||
|
gam delete vaultquery <QueryItem> matter <MatterItem>
|
||||||
|
gam delete vaultquery <MatterItem> <QueryItem>
|
||||||
|
```
|
||||||
|
|
||||||
|
Added a variant of `gam print vaultcounts` that gets its query parameters from a saved Vault query.
|
||||||
|
```
|
||||||
|
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
||||||
|
matter <MatterItem> <QueryItem>
|
||||||
|
[wait <Integer>]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.22.05
|
||||||
|
|
||||||
|
Added a variant of `gam create vaultexport` that gets its query parameters from a saved Vault query.
|
||||||
|
|
||||||
|
```
|
||||||
|
gam create vaultexport|export matter <MatterItem> [name <String>]
|
||||||
|
vaultquery <QueryItem>
|
||||||
|
[driveclientsideencryption any|encrypted|unencrypted]
|
||||||
|
[includeaccessinfo <Boolean>]
|
||||||
|
[excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
||||||
|
[showconfidentialmodecontent <Boolean>] [usenewexport <Boolean>] [exportlinkeddrivefiles <Boolean>]
|
||||||
|
[format ics|mbox|pst|xml]
|
||||||
|
[region any|europe|us] [showdetails|returnidonly]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.22.04
|
||||||
|
|
||||||
|
Added a variant of `gam create vaulthold` that gets its parameters from a saved Vault query.
|
||||||
|
```
|
||||||
|
gam create vaulthold matter <MatterItem> [name <String>]
|
||||||
|
vaultquery <QueryItem>
|
||||||
|
[showdetails|returnidonly]
|
||||||
|
```
|
||||||
|
|
||||||
### 7.22.03
|
### 7.22.03
|
||||||
|
|
||||||
Fix backwards compatability bug introduced in 7.22.00 for `gam print users` that changed `suspended`
|
Fix backwards compatability bug introduced in 7.22.00 for `gam print users` that changed `suspended`
|
||||||
|
|||||||
@@ -252,10 +252,10 @@ 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.22.03 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.27.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.7 64-bit final
|
Python 3.14.0 64-bit final
|
||||||
MacOS Sequoia 15.6.1 x86_64
|
macOS Tahoe 26.0.1 x86_64
|
||||||
Path: /Users/admin/bin/gam7
|
Path: /Users/admin/bin/gam7
|
||||||
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
||||||
|
|
||||||
@@ -990,9 +990,9 @@ 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.22.00 - https://github.com/GAM-team/GAM - pythonsource
|
GAM 7.27.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.7 64-bit final
|
Python 3.14.0 64-bit final
|
||||||
Windows-10-10.0.17134 AMD64
|
Windows-10-10.0.17134 AMD64
|
||||||
Path: C:\GAM7
|
Path: C:\GAM7
|
||||||
Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
## Lists of basic items
|
## Lists of basic items
|
||||||
```
|
```
|
||||||
|
<AdminAssigneeTypeList> ::= "<AdminAssigneeType>(,<AdminAssigneeType>)*"
|
||||||
<APIScopeURLList> ::= "<APIScopeURL>(,<APIScopeURL>)*"
|
<APIScopeURLList> ::= "<APIScopeURL>(,<APIScopeURL>)*"
|
||||||
<ASPIDList> ::= "<ASPID>(,<ASPID>)*"
|
<ASPIDList> ::= "<ASPID>(,<ASPID>)*"
|
||||||
<AssetTagList> ::= "<AssetTag>(,<AssetTag>)*"
|
<AssetTagList> ::= "<AssetTag>(,<AssetTag>)*"
|
||||||
@@ -43,6 +44,7 @@
|
|||||||
<DomainNameList> ::= "<DomainName>(,<DomainName>)*"
|
<DomainNameList> ::= "<DomainName>(,<DomainName>)*"
|
||||||
<DriveFileACLRoleList> ::= "<DriveFileACLRole>(,<DriveFileACLRole>)*"
|
<DriveFileACLRoleList> ::= "<DriveFileACLRole>(,<DriveFileACLRole>)*"
|
||||||
<DriveFileACLTypeList> ::= "<DriveFileACLType>(,<DriveFileACLType>)*"
|
<DriveFileACLTypeList> ::= "<DriveFileACLType>(,<DriveFileACLType>)*"
|
||||||
|
<DriveFileIDList> ::= "<DriveFileID>(,<DriveFileID>)*"
|
||||||
<DriveFileList> ::= "<DriveFileItem>(,<DriveFileItem>)*"
|
<DriveFileList> ::= "<DriveFileItem>(,<DriveFileItem>)*"
|
||||||
<DriveFilePermissionList> ::= "<DriveFilePermission>(,<DriveFilePermission>)*"
|
<DriveFilePermissionList> ::= "<DriveFilePermission>(,<DriveFilePermission>)*"
|
||||||
<DriveFilePermissionIDList> ::= "<DriveFilePermissionID>(,<DriveFilePermissionID>)*"
|
<DriveFilePermissionIDList> ::= "<DriveFilePermissionID>(,<DriveFilePermissionID>)*"
|
||||||
|
|||||||
@@ -378,7 +378,7 @@ Select the users for whom information is desired.
|
|||||||
* `showorgunit` - Add a column labelled `orgUnitPath` to the output; an additional API call is made to get the email addresses of the users in `<OrgUnitPath>`
|
* `showorgunit` - Add a column labelled `orgUnitPath` to the output; an additional API call is made to get the email addresses of the users in `<OrgUnitPath>`
|
||||||
* `select <UserTypeEntity>` - A selected collection of users, e.g., `select group staff@domain.com`; there is one API call per user
|
* `select <UserTypeEntity>` - A selected collection of users, e.g., `select group staff@domain.com`; there is one API call per user
|
||||||
|
|
||||||
By default, when `user all` is specified (or no user specification in supplied), GAM backs up looking for data with a (basically) random user. If the randaom
|
By default, when `user all` is specified (or no user specification in supplied), GAM backs up looking for data with a (basically) random user. If the random
|
||||||
doesn't have any data, the command reports that no data was found. Use `allverifyuser <UserItem>` to specify a specific user to use to search for data.
|
doesn't have any data, the command reports that no data was found. Use `allverifyuser <UserItem>` to specify a specific user to use to search for data.
|
||||||
|
|
||||||
Specify the report date; the default is today's date.
|
Specify the report date; the default is today's date.
|
||||||
|
|||||||
@@ -330,16 +330,16 @@ you want the updated data copied to `Latest` so you don't have to remember what
|
|||||||
gam redirect csv - todrive tdfileid <DriveFileID> tdupdatesheet tdsheet Tuesday tdbackupsheet "Backup Tuesday" tdcopysheet "Latest" ...
|
gam redirect csv - todrive tdfileid <DriveFileID> tdupdatesheet tdsheet Tuesday tdbackupsheet "Backup Tuesday" tdcopysheet "Latest" ...
|
||||||
```
|
```
|
||||||
## Limited Service Account Access
|
## Limited Service Account Access
|
||||||
If you want to limit a user's service account access but still allow `todrive',
|
If you want to limit a user's service account access to Drive, Gmail and Sheets but still allow `todrive`,
|
||||||
issue the following command and authorize the additional service account APIs:
|
issue the following command and make these settings:
|
||||||
```
|
```
|
||||||
gam user user@domain.com update serviceaccount`
|
gam user user@domain.com update serviceaccount
|
||||||
|
|
||||||
Authorize these APIs:
|
[ ] 20) Drive API (supports readonly)
|
||||||
|
[*] 22) Drive API - write todrive data - has access to all Drive
|
||||||
Drive API - todrive
|
[*] 31) Gmail API - Send Messages - including todrive
|
||||||
Gmail API - Send Messages - including todrive
|
[ ] 42) Sheets API (supports readonly)
|
||||||
Sheets API - todrive
|
[*] 44) Sheets API - write todrive data - has access to all Sheets
|
||||||
```
|
```
|
||||||
|
|
||||||
## No Service Account Access
|
## No Service Account Access
|
||||||
|
|||||||
@@ -653,7 +653,7 @@ By default, Gam displays the information as an indented list of keys and values.
|
|||||||
```
|
```
|
||||||
gam <UserTypeEntity> show events <UserCalendarEntity> [<EventEntity>] <EventDisplayProperty>*
|
gam <UserTypeEntity> show events <UserCalendarEntity> [<EventEntity>] <EventDisplayProperty>*
|
||||||
[fields <EventFieldNameList>] [showdayofweek]
|
[fields <EventFieldNameList>] [showdayofweek]
|
||||||
[countsonly] [formatjson]
|
[countsonly|formatjson]
|
||||||
```
|
```
|
||||||
In `<EventEntity>`, any `<EventSelectProperty>` options must precede all other options.
|
In `<EventEntity>`, any `<EventSelectProperty>` options must precede all other options.
|
||||||
|
|
||||||
@@ -672,8 +672,8 @@ By default, Gam displays event details, use `countsonly` to display only the num
|
|||||||
```
|
```
|
||||||
gam <UserTypeEntity> print events <UserCalendarEntity> [<EventEntity>] <EventDisplayProperty>*
|
gam <UserTypeEntity> print events <UserCalendarEntity> [<EventEntity>] <EventDisplayProperty>*
|
||||||
[fields <EventFieldNameList>] [showdayofweek]
|
[fields <EventFieldNameList>] [showdayofweek]
|
||||||
[countsonly]
|
(addcsvdata <FieldName> <String>)*
|
||||||
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
[eventrowfilter] [countsonly|(formatjson [quotechar <Character>])] [todrive <ToDriveAttribute>*]
|
||||||
```
|
```
|
||||||
In `<EventEntity>`, any `<EventSelectProperty>` options must precede all other options.
|
In `<EventEntity>`, any `<EventSelectProperty>` options must precede all other options.
|
||||||
|
|
||||||
@@ -684,6 +684,9 @@ option `singleevents` to display all instances of a recurring event.
|
|||||||
|
|
||||||
`showdayofweek` displays columns `start.dayOfWeek` and `end.dayOfWeek` when event start and end times are displayed.
|
`showdayofweek` displays columns `start.dayOfWeek` and `end.dayOfWeek` when event start and end times are displayed.
|
||||||
|
|
||||||
|
Add additional columns of data from the command line to the output after the calendarId.
|
||||||
|
* `addcsvdata <FieldName> <String>`
|
||||||
|
|
||||||
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
|
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
|
||||||
* `formatjson` - Display the fields in JSON format.
|
* `formatjson` - Display the fields in JSON format.
|
||||||
|
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ gam <UserTypeEntity> show chatspaces
|
|||||||
By default, chat spaces of all types are displayed.
|
By default, chat spaces of all types are displayed.
|
||||||
* `types <ChatSpaceTypeList>` - Display specific types of spaces.
|
* `types <ChatSpaceTypeList>` - Display specific types of spaces.
|
||||||
|
|
||||||
When listing Chat Spaces, the Chat API does not return the `accessSettings` field; if you need to see this fieldf,
|
When listing Chat Spaces, the Chat API does not return the `accessSettings` field; if you need to see this field,
|
||||||
add `showaccesssettings` to the command. This requires an additional Chat API call per chat space of type `SPACE`
|
add `showaccesssettings` to the command. This requires an additional Chat API call per chat space of type `SPACE`
|
||||||
to get the `accessSettings` field.
|
to get the `accessSettings` field.
|
||||||
|
|
||||||
@@ -343,7 +343,7 @@ gam <UserTypeEntity> print chatspaces [todrive <ToDriveAttribute>*]
|
|||||||
By default, chat spaces of all types are displayed.
|
By default, chat spaces of all types are displayed.
|
||||||
* `types <ChatSpaceTypeList>` - Display specific types of spaces.
|
* `types <ChatSpaceTypeList>` - Display specific types of spaces.
|
||||||
|
|
||||||
When listing Chat Spaces, the Chat API does not return the `accessSettings` field; if you need to see this fieldf,
|
When listing Chat Spaces, the Chat API does not return the `accessSettings` field; if you need to see this field,
|
||||||
add `showaccesssettings` to the command. This requires an additional Chat API call per chat space of type `SPACE`
|
add `showaccesssettings` to the command. This requires an additional Chat API call per chat space of type `SPACE`
|
||||||
to get the `accessSettings` field.
|
to get the `accessSettings` field.
|
||||||
|
|
||||||
@@ -401,7 +401,7 @@ By default, all chat spaces of type SPACE are displayed.
|
|||||||
* `query <String> [querytime<String> <Time>]` - Display selected chat spaces
|
* `query <String> [querytime<String> <Time>]` - Display selected chat spaces
|
||||||
* See: https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/search
|
* See: https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/search
|
||||||
|
|
||||||
When listing Chat Spaces, the Chat API does not return the `accessSettings` field; if you need to see this fieldf,
|
When listing Chat Spaces, the Chat API does not return the `accessSettings` field; if you need to see this field,
|
||||||
add `showaccesssettings` to the command. This requires an additional Chat API call per chat space of type `SPACE`
|
add `showaccesssettings` to the command. This requires an additional Chat API call per chat space of type `SPACE`
|
||||||
to get the `accessSettings` field.
|
to get the `accessSettings` field.
|
||||||
|
|
||||||
@@ -419,7 +419,7 @@ By default, all chat spaces of type SPACE are displayed.
|
|||||||
* `query <String> [querytime<String> <Time>]` - Display selected chat spaces
|
* `query <String> [querytime<String> <Time>]` - Display selected chat spaces
|
||||||
* See: https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/search
|
* See: https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/search
|
||||||
|
|
||||||
When listing Chat Spaces, the Chat API does not return the `accessSettings` field; if you need to see this fieldf,
|
When listing Chat Spaces, the Chat API does not return the `accessSettings` field; if you need to see this field,
|
||||||
add `showaccesssettings` to the command. This requires an additional Chat API call per chat space of type `SPACE`
|
add `showaccesssettings` to the command. This requires an additional Chat API call per chat space of type `SPACE`
|
||||||
to get the `accessSettings` field.
|
to get the `accessSettings` field.
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
```
|
```
|
||||||
<DomainName> ::= <String>(.<String>)+
|
<DomainName> ::= <String>(.<String>)+
|
||||||
<EmailAddress> ::= <String>@<DomainName>
|
<EmailAddress> ::= <String>@<DomainName>
|
||||||
|
<JSONData> ::= (json [charset <Charset>] <String>) | (json file <FileName> [charset <Charset>]) |
|
||||||
<UniqueID> ::= id:<String>
|
<UniqueID> ::= id:<String>
|
||||||
<UserItem> ::= <EmailAddress>|<UniqueID>|<String>
|
<UserItem> ::= <EmailAddress>|<UniqueID>|<String>
|
||||||
|
|
||||||
|
|||||||
@@ -398,8 +398,8 @@ By default, Gam displays the information as an indented list of keys and values.
|
|||||||
gam <UserTypeEntity> show contacts
|
gam <UserTypeEntity> show contacts
|
||||||
<PeoplePrintShowUserContactSelection>
|
<PeoplePrintShowUserContactSelection>
|
||||||
[orderby firstname|lastname|(lastmodified ascending)|(lastnodified descending)
|
[orderby firstname|lastname|(lastmodified ascending)|(lastnodified descending)
|
||||||
[countsonly|allfields|(fields <PeopleFieldNameList>)] [showgroups] [showmetadata]
|
[allfields|(fields <PeopleFieldNameList>)] [showgroups] [showmetadata]
|
||||||
[formatjson]
|
[countsonly|formatjson]
|
||||||
```
|
```
|
||||||
By default, Gam displays all of a user's people contacts.
|
By default, Gam displays all of a user's people contacts.
|
||||||
* `query <String>` - Display contacts based on the data in their fields
|
* `query <String>` - Display contacts based on the data in their fields
|
||||||
@@ -416,8 +416,8 @@ By default, Gam displays the information as an indented list of keys and values.
|
|||||||
gam <UserTypeEntity> print contacts [todrive <ToDriveAttribute>*]
|
gam <UserTypeEntity> print contacts [todrive <ToDriveAttribute>*]
|
||||||
<PeoplePrintShowUserContactSelection>
|
<PeoplePrintShowUserContactSelection>
|
||||||
[orderby firstname|lastname|(lastmodified ascending)|(lastnodified descending)
|
[orderby firstname|lastname|(lastmodified ascending)|(lastnodified descending)
|
||||||
[countsonly|allfields|(fields <PeopleFieldNameList>)] [showgroups] [showmetadata]
|
[allfields|(fields <PeopleFieldNameList>)] [showgroups] [showmetadata]
|
||||||
[formatjson [quotechar <Character>]]
|
[countsonly|(formatjson [quotechar <Character>])]
|
||||||
```
|
```
|
||||||
By default, Gam displays all of a user's people contacts.
|
By default, Gam displays all of a user's people contacts.
|
||||||
* `query <String>` - Display contacts based on the data in their fields
|
* `query <String>` - Display contacts based on the data in their fields
|
||||||
@@ -547,8 +547,8 @@ User: user@domain.com, Delete maximum of 15 Other Contacts
|
|||||||
```
|
```
|
||||||
gam <UserTypeEntity> show othercontacts
|
gam <UserTypeEntity> show othercontacts
|
||||||
[<OtherContactsSelection>]
|
[<OtherContactsSelection>]
|
||||||
[countsonly|allfields|(fields <OtherContactsFieldNameList>)] [showmetadata]
|
[allfields|(fields <OtherContactsFieldNameList>)] [showmetadata]
|
||||||
[formatjson]
|
[countsonly|formatjson]
|
||||||
```
|
```
|
||||||
By default, Gam displays all of a user's Other Contacts; use
|
By default, Gam displays all of a user's Other Contacts; use
|
||||||
`<OtherContactsSelection>` to display a selection of Other Contacts.
|
`<OtherContactsSelection>` to display a selection of Other Contacts.
|
||||||
@@ -563,8 +563,8 @@ By default, Gam displays the information as an indented list of keys and values.
|
|||||||
```
|
```
|
||||||
gam <UserTypeEntity> print othercontacts [todrive <ToDriveAttribute>*]
|
gam <UserTypeEntity> print othercontacts [todrive <ToDriveAttribute>*]
|
||||||
[<OtherContactsSelection>]
|
[<OtherContactsSelection>]
|
||||||
[countsonly|allfields|(fields <OtherContactsFieldNameList>)] [showmetadata]
|
[allfields|(fields <OtherContactsFieldNameList>)] [showmetadata]
|
||||||
[formatjson [quotechar <Character>]]
|
[countsonly|(formatjson [quotechar <Character>])]
|
||||||
```
|
```
|
||||||
By default, Gam displays all of a user's Other Contacts; use
|
By default, Gam displays all of a user's Other Contacts; use
|
||||||
`<OtherContactsSelection>` to display a selection of Other Contacts.
|
`<OtherContactsSelection>` to display a selection of Other Contacts.
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ gam <UserTypeEntity> show tasks [tasklists <TasklistEntity>]
|
|||||||
[updatedmin <Time>]
|
[updatedmin <Time>]
|
||||||
[showcompleted [<Boolean>]] [showdeleted [<Boolean>]] [showhidden [<Boolean>]] [showall]
|
[showcompleted [<Boolean>]] [showdeleted [<Boolean>]] [showhidden [<Boolean>]] [showall]
|
||||||
[orderby completed|due|updated]
|
[orderby completed|due|updated]
|
||||||
[countsonly|compact|formatjson]
|
[compact|countsonly|formatjson]
|
||||||
```
|
```
|
||||||
The API only supports dates in `duemin` and `duemax' but you must supply a null time:
|
The API only supports dates in `duemin` and `duemax' but you must supply a null time:
|
||||||
* `duemin YYYY-MM-DDT00:00:00Z` - Specify the starting due date
|
* `duemin YYYY-MM-DDT00:00:00Z` - Specify the starting due date
|
||||||
@@ -152,7 +152,7 @@ gam <UserTypeEntity> print tasks [tasklists <TasklistEntity>] [todrive <ToDriveA
|
|||||||
[updatedmin <Time>]
|
[updatedmin <Time>]
|
||||||
[showcompleted [<Boolean>]] [showdeleted [<Boolean>]] [showhidden [<Boolean>]] [showall]
|
[showcompleted [<Boolean>]] [showdeleted [<Boolean>]] [showhidden [<Boolean>]] [showall]
|
||||||
[orderby completed|due|updated]
|
[orderby completed|due|updated]
|
||||||
[countsonly | (formatjson [quotechar <Character>])]
|
[countsonly|(formatjson [quotechar <Character>])]
|
||||||
```
|
```
|
||||||
The API only supports dates in `duemin` and `duemax' but you must supply a null time:
|
The API only supports dates in `duemin` and `duemax' but you must supply a null time:
|
||||||
* `duemin YYYY-MM-DDT00:00:00Z` - Specify the starting due date
|
* `duemin YYYY-MM-DDT00:00:00Z` - Specify the starting due date
|
||||||
@@ -230,7 +230,7 @@ By default, Gam displays the task lists as an indented list of keys and values.
|
|||||||
|
|
||||||
```
|
```
|
||||||
gam <UserTypeEntity> print tasklists [todrive <ToDriveAttribute>*]
|
gam <UserTypeEntity> print tasklists [todrive <ToDriveAttribute>*]
|
||||||
[countsonly | (formatjson [quotechar <Character>])]
|
[countsonly|(formatjson [quotechar <Character>])]
|
||||||
```
|
```
|
||||||
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
|
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
|
||||||
* `formatjson` - Display the fields in JSON format.
|
* `formatjson` - Display the fields in JSON format.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
- [Query documentation](#query-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)
|
||||||
|
- [Special quoting](#special-quoting)
|
||||||
- [Vault Matters](#vault-matters)
|
- [Vault Matters](#vault-matters)
|
||||||
- [Create Vault Matters](#create-vault-matters)
|
- [Create Vault Matters](#create-vault-matters)
|
||||||
- [Manage Vault Matters](#manage-vault-matters)
|
- [Manage Vault Matters](#manage-vault-matters)
|
||||||
@@ -21,9 +22,12 @@
|
|||||||
- [Display Vault Holds](#display-vault-holds)
|
- [Display Vault Holds](#display-vault-holds)
|
||||||
- [Display Vault Holds Affecting a User](#display-vault-holds-affecting-a-user)
|
- [Display Vault Holds Affecting a User](#display-vault-holds-affecting-a-user)
|
||||||
- [Vault Saved Queries](#vault-saved-queries)
|
- [Vault Saved Queries](#vault-saved-queries)
|
||||||
|
- [Create Vault Saved Queries](#create-vault-saved-queries)
|
||||||
|
- [Copy Vault Saved Queries](#copy-vault-saved-queries)
|
||||||
|
- [Delete Vault Saved Queries](#delete-vault-saved-queries)
|
||||||
- [Display Vault Saved Queries](#display-vault-saved-queries)
|
- [Display Vault Saved Queries](#display-vault-saved-queries)
|
||||||
- [Takeout](#takeout)
|
- [Takeout](#takeout)
|
||||||
- [Copy a Takeout Bucket](#copy-a-takeoutbucket)
|
- [Copy a Takeout Bucket](#copy-a-takeout-bucket)
|
||||||
- [Download a Takeout Bucket](#download-a-takeout-bucket)
|
- [Download a Takeout Bucket](#download-a-takeout-bucket)
|
||||||
|
|
||||||
## API documentation
|
## API documentation
|
||||||
@@ -54,6 +58,7 @@
|
|||||||
<EmailAddressList> ::= "<EmailAddess>(,<EmailAddress>)*"
|
<EmailAddressList> ::= "<EmailAddess>(,<EmailAddress>)*"
|
||||||
<EmailAddressEntity> ::= <EmailAddressList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
<EmailAddressEntity> ::= <EmailAddressList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||||
See: https://github.com/GAM-team/GAM/wiki/Collections-of-Items
|
See: https://github.com/GAM-team/GAM/wiki/Collections-of-Items
|
||||||
|
<JSONData> ::= (json [charset <Charset>] <String>) | (json file <FileName> [charset <Charset>]) |
|
||||||
<TimeZone> ::= <String>
|
<TimeZone> ::= <String>
|
||||||
See: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
See: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
||||||
<UniqueID> ::= id:<String>
|
<UniqueID> ::= id:<String>
|
||||||
@@ -66,13 +71,17 @@
|
|||||||
|
|
||||||
<ChatSpace> ::= spaces/<String> | space/<String> | <String>
|
<ChatSpace> ::= spaces/<String> | space/<String> | <String>
|
||||||
<ChatSpaceList> ::= "<ChatSpace>(,<ChatSpace>)*"
|
<ChatSpaceList> ::= "<ChatSpace>(,<ChatSpace>)*"
|
||||||
|
<DriveFileID> ::= <String>
|
||||||
|
<DriveFileIDList> ::= "<DriveFileID>(,<DriveFileID>)*"
|
||||||
<ExportItem> ::= <UniqueID>|<String>
|
<ExportItem> ::= <UniqueID>|<String>
|
||||||
<ExportStatus> ::= completed|failed|inprogrsss
|
<ExportStatus> ::= completed|failed|inprogrsss
|
||||||
<ExportStatusList> ::= "<ExportStatus>(,<ExportStatus>)*"
|
<ExportStatusList> ::= "<ExportStatus>(,<ExportStatus>)*"
|
||||||
<HoldItem> ::= <UniqueID>|<String>
|
<HoldItem> ::= <UniqueID>|<String>
|
||||||
<MatterItem> ::= <UniqueID>|<String>
|
<MatterItem> ::= <UniqueID>|<String>
|
||||||
|
<MatterItemList> ::= "<MatterItem>(,<MatterItem>)*"
|
||||||
<MatterState> ::= open|closed|deleted
|
<MatterState> ::= open|closed|deleted
|
||||||
<MatterStateList> ::= "<MatterState>(,<MatterState>)*"
|
<MatterStateList> ::= "<MatterState>(,<MatterState>)*"
|
||||||
|
<QueryItem> ::= <UniqueID>|<String>
|
||||||
<SharedDriveID> ::= <String>
|
<SharedDriveID> ::= <String>
|
||||||
<SharedDriveIDList> ::= "<SharedDriveID>(,<SharedDriveID>)*"
|
<SharedDriveIDList> ::= "<SharedDriveID>(,<SharedDriveID>)*"
|
||||||
<URL> ::= <String>
|
<URL> ::= <String>
|
||||||
@@ -135,9 +144,29 @@
|
|||||||
<VaultQueryFieldNameList> ::= "<VaultQueryFieldName>(,<VaultQueryFieldName>)*"
|
<VaultQueryFieldNameList> ::= "<VaultQueryFieldName>(,<VaultQueryFieldName>)*"
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
You specify matters, exports and holds by ID (`<UniqueID>`) or name (`<String>`). The API requires an ID, so if you specify a name,
|
You specify matters, exports and holds by ID (`<UniqueID>`) or name (`<String>`). The API requires an ID, so if you specify a name,
|
||||||
GAM has to make additional API calls to convert the name to an ID.
|
GAM has to make additional API calls to convert the name to an ID.
|
||||||
|
|
||||||
|
## Special quoting
|
||||||
|
You specify a single matter with `matter <MatterItem>` and a list of matters with `matters <MatterItemList>`.
|
||||||
|
|
||||||
|
As matter names can contain spaces, some care must be used when entering `<MatterItem>` and `<MatterItemList>` with names.
|
||||||
|
|
||||||
|
Suppose you have a matter `Foo Bar`. To get information about a specific export: `gam info vaultexport "Foo Bar" <ExportItem>`
|
||||||
|
|
||||||
|
The shell strips the `"` leaving a single argument `Foo Bar`; gam correctly processes the argument.
|
||||||
|
|
||||||
|
Suppose you enter the command: `gam show vaultexports matters "Foo Bar"`
|
||||||
|
|
||||||
|
The shell strips the `"` leaving a single argument `Foo Bar`; gam splits the argument on space leaving two items and then tries to process `Foo` and `Bar`, not what you want.
|
||||||
|
|
||||||
|
You must enter: `gam info show vaultexports matters "'Foo Bar'"`
|
||||||
|
|
||||||
|
The shell strips the `"` leaving a single argument `'Foo Bar'`; gam splits the argument on space while honoring the `'` leaving one item `Foo Bar` and correctly processes the item.
|
||||||
|
|
||||||
|
For quoting rules, see: [List Quoting Rules](Command-Line-Parsing)
|
||||||
|
|
||||||
## Vault Matters
|
## Vault Matters
|
||||||
## Create Vault Matters
|
## Create Vault Matters
|
||||||
Create a Google Vault matter.
|
Create a Google Vault matter.
|
||||||
@@ -201,11 +230,18 @@ Select fields to display:
|
|||||||
* `fields <VaultMatterFieldNameList>` - Display selected fields; `matterId` and `name` are always displayed
|
* `fields <VaultMatterFieldNameList>` - Display selected fields; `matterId` and `name` are always displayed
|
||||||
|
|
||||||
## Display Vault Counts
|
## Display Vault Counts
|
||||||
Display item counts retained in Vault for the given users or groups.
|
### Display item counts retained in Vault using a saved Vault query.
|
||||||
|
```
|
||||||
|
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
||||||
|
matter <MatterItem> <QueryItem>
|
||||||
|
[wait <Integer>]
|
||||||
|
```
|
||||||
|
|
||||||
|
### Display item counts retained in Vault for the given users or groups.
|
||||||
* The required argument `matter` specifies the matter name or ID (prefix with id:) where the count should be performed.
|
* The required argument `matter` specifies the matter name or ID (prefix with id:) where the count should be performed.
|
||||||
* The required argument `corpus` specifies whether Gmail mailbox data or Google Groups archives are queried.
|
* The required argument `corpus` specifies whether Gmail mailbox data or Google Groups archives are queried.
|
||||||
* You need to specify one argument of accounts, orgunit or everyone to determine which users/groups to query.
|
|
||||||
* The `scope` argument specifies the data to be queried, `all_data` is the default and is recommended.
|
* The `scope` argument specifies the data to be queried, `all_data` is the default and is recommended.
|
||||||
|
* You need to specify one argument of accounts, orgunit or everyone to determine which users/groups to query.
|
||||||
|
|
||||||
The command may take some time to complete; GAM makes repeated API calls until the operation is complete. By default,
|
The command may take some time to complete; GAM makes repeated API calls until the operation is complete. By default,
|
||||||
GAM waits 15 seconds between API calls; use the `wait <Integer>` option to specify a different wait period.
|
GAM waits 15 seconds between API calls; use the `wait <Integer>` option to specify a different wait period.
|
||||||
@@ -213,26 +249,28 @@ GAM waits 15 seconds between API calls; use the `wait <Integer>` option to speci
|
|||||||
This command can be useful for discovering legacy former employee accounts which no longer have any mail data retained by Vault.
|
This command can be useful for discovering legacy former employee accounts which no longer have any mail data retained by Vault.
|
||||||
```
|
```
|
||||||
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
||||||
matter <MatterItem> corpus mail|groups
|
matter <MatterItem>
|
||||||
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
corpus mail|groups
|
||||||
[(shareddrives|teamdrives (<TeamDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
[scope all_data|held_data|unprocessed_data]
|
||||||
(rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
|
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone|entireorg
|
||||||
(sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))]
|
|
||||||
[scope <all_data|held_data|unprocessed_data>]
|
|
||||||
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
|
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
|
||||||
[excludedrafts <Boolean>]
|
[excludedrafts <Boolean>]
|
||||||
|
[<JSONData>]
|
||||||
[wait <Integer>]
|
[wait <Integer>]
|
||||||
```
|
```
|
||||||
Specify the search method, this is optional:
|
Specify the search method, this is optional:
|
||||||
* `accounts <EmailAddressEntity>` - Search all accounts specified in `<EmailAddressEntity>`
|
* `accounts <EmailAddressEntity>` - Search all accounts specified in `<EmailAddressEntity>`
|
||||||
* `orgunit|org|ou <OrgUnitPath>` - Search all accounts in the OU `<OrgUnitPath>`
|
* `orgunit|org|ou <OrgUnitPath>` - Search all accounts in the OU `<OrgUnitPath>`
|
||||||
* `everyone` - Search for all accounts in the organization
|
* `everyone|entireorg` - Search for all accounts in the organization
|
||||||
* `shareddrives|teamdrives <SharedDriveIDList>` - Search for all accounts in the Shared Drives specified in `<SharedDriveIDList>`
|
|
||||||
* `shareddrives|teamdrives select <FileSelector>|<CSVFileSelector>` - Search for all accounts in the Shared Drives specified in `<FileSelector>|<CSVFileSelector>`
|
For `corpus mail|group`, you can specify search terms to limit the search.
|
||||||
* `rooms <ChatSpaceList>` - Search in the Room specified in the chat rooms specified in `<ChatSpaceList>`
|
* `terms <String>` - [Vault search](https://support.google.com/vault/answer/2474474)
|
||||||
* `rooms <ChatSpaceList>` - Search in the Room specified in the chat rooms specified in `<FileSelector>|<CSVFileSelector>`
|
|
||||||
* `sitesurl <URLList>` - Search the published site URLs of new Google Sites in `<URLList>`
|
For `corpus mail|group`, you can specify time limits on the search:
|
||||||
* `sitesurl <URLList>` - Search the published site URLs of new Google Sites specified in `<FileSelector>|<CSVFileSelector>`
|
* `start|starttime <Date>|<Time>` - The start time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
|
||||||
|
* `end|endtime <Date>|<Time>` - The end time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
|
||||||
|
|
||||||
|
You can specify query options with `<JSONData>`.
|
||||||
|
|
||||||
Check the status of a previous count operation with the name from a previous command.
|
Check the status of a previous count operation with the name from a previous command.
|
||||||
```
|
```
|
||||||
@@ -242,32 +280,48 @@ gam print vaultcounts [todrive <ToDriveAttributes>*]
|
|||||||
|
|
||||||
## Vault Exports
|
## Vault Exports
|
||||||
## Create Vault Exports
|
## Create Vault Exports
|
||||||
Create a Google Vault export request.
|
### Create a Google Vault export request using a saved Vault query.
|
||||||
```
|
```
|
||||||
gam create vaultexport|export matter <MatterItem> [name <String>] corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
|
gam create vaultexport|export matter <MatterItem> [name <String>]
|
||||||
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
vaultquery <QueryItem>
|
||||||
(shareddrives|teamdrives (<TeamDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
[driveclientsideencryption any|encrypted|unencrypted]
|
||||||
(rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
|
[includeaccessinfo <Boolean>]
|
||||||
(sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
|
[excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
||||||
|
[showconfidentialmodecontent <Boolean>] [usenewexport <Boolean>] [exportlinkeddrivefiles <Boolean>]
|
||||||
|
[format ics|mbox|pst|xml]
|
||||||
|
[region any|europe|us] [showdetails|returnidonly]
|
||||||
|
```
|
||||||
|
|
||||||
|
Create a Google Vault export request by specifying the query parameters.
|
||||||
|
```
|
||||||
|
gam create vaultexport|export matter <MatterItem> [name <String>]
|
||||||
|
corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
|
||||||
[scope all_data|held_data|unprocessed_data]
|
[scope all_data|held_data|unprocessed_data]
|
||||||
|
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
||||||
|
(documentids (<DriveFileIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
(shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
[(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
|
||||||
|
(sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
|
||||||
|
[driveversiondate <Date>|<Time>]
|
||||||
|
[includerooms <Boolean>]
|
||||||
|
(rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
|
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
|
||||||
[locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
|
[locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
|
||||||
[responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
|
[responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
|
||||||
[(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
|
(covereddata calllogs|textmessages|voicemails)*
|
||||||
[driveversiondate <Date>|<Time>] [includeaccessinfo <Boolean>]
|
[<JSONData>]
|
||||||
[driveclientsideencryption any|encrypted|unencrypted]
|
[driveclientsideencryption any|encrypted|unencrypted]
|
||||||
[includerooms <Boolean>]
|
[includeaccessinfo <Boolean>]
|
||||||
[excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
[excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
||||||
[showconfidentialmodecontent <Boolean>] [usenewexport <Boolean>] [exportlinkeddrivefiles <Boolean>]
|
[showconfidentialmodecontent <Boolean>] [usenewexport <Boolean>] [exportlinkeddrivefiles <Boolean>]
|
||||||
[covereddata calllogs|textmessages|voicemails]
|
|
||||||
[format ics|mbox|pst|xml]
|
[format ics|mbox|pst|xml]
|
||||||
[region any|europe|us] [showdetails|returnidonly]
|
[region any|europe|us] [showdetails|returnidonly]
|
||||||
```
|
```
|
||||||
<MatterItem> specifies the matter name or ID the export should be associated with.
|
<MatterItem> specifies the matter name or ID the export should be associated with.
|
||||||
|
|
||||||
Specify the name of the export:
|
If `name <String>` is omitted, the export will be named `GAM <corpus> Export - <Time>`
|
||||||
* `name <String>` - The export will be named `<String>`
|
|
||||||
* `default` - The export will be named `GAM <corpus> Export - <Time>`
|
## Vault Query options
|
||||||
|
|
||||||
Specify the corpus of data, this option is required:
|
Specify the corpus of data, this option is required:
|
||||||
* `calendar`
|
* `calendar`
|
||||||
@@ -281,13 +335,15 @@ Specify the corpus of data, this option is required:
|
|||||||
Specify the search method, this option is required:
|
Specify the search method, this option is required:
|
||||||
* `accounts <EmailAddressEntity>` - Search all accounts specified in `<EmailAddressEntity>`
|
* `accounts <EmailAddressEntity>` - Search all accounts specified in `<EmailAddressEntity>`
|
||||||
* `orgunit|org|ou <OrgUnitPath>` - Search all accounts in the OU `<OrgUnitPath>`
|
* `orgunit|org|ou <OrgUnitPath>` - Search all accounts in the OU `<OrgUnitPath>`
|
||||||
* `everyone` - Search for all accounts in the organization
|
* `everyone|entireorg` - Search for all accounts in the organization
|
||||||
|
* `documentids <DriveFileIDList>` - Search for all drive files specified in `<DriveFileIDList>`
|
||||||
|
* `documentids select <FileSelector>|<CSVFileSelector>` - Search for all drive files specified in `<FileSelector>|<CSVFileSelector>`
|
||||||
* `shareddrives|teamdrives <SharedDriveIDList>` - Search for all accounts in the Shared Drives specified in `<SharedDriveIDList>`
|
* `shareddrives|teamdrives <SharedDriveIDList>` - Search for all accounts in the Shared Drives specified in `<SharedDriveIDList>`
|
||||||
* `shareddrives|teamdrives select <FileSelector>|<CSVFileSelector>` - Search for all accounts in the Shared Drives specified in `<FileSelector>|<CSVFileSelector>`
|
* `shareddrives|teamdrives select <FileSelector>|<CSVFileSelector>` - Search for all accounts in the Shared Drives specified in `<FileSelector>|<CSVFileSelector>`
|
||||||
* `rooms <ChatSpaceList>` - Search in the Room specified in the chat rooms specified in `<ChatSpaceList>`
|
|
||||||
* `rooms <ChatSpaceList>` - Search in the Room specified in the chat rooms specified in `<FileSelector>|<CSVFileSelector>`
|
|
||||||
* `sitesurl <URLList>` - Search the published site URLs of new Google Sites in `<URLList>`
|
* `sitesurl <URLList>` - Search the published site URLs of new Google Sites in `<URLList>`
|
||||||
* `sitesurl <URLList>` - Search the published site URLs of new Google Sites specified in `<FileSelector>|<CSVFileSelector>`
|
* `sitesurl <URLList>` - Search the published site URLs of new Google Sites specified in `<FileSelector>|<CSVFileSelector>`
|
||||||
|
* `rooms <ChatSpaceList>` - Search in the Room specified in the chat rooms specified in `<ChatSpaceList>`
|
||||||
|
* `rooms <ChatSpaceList>` - Search in the Room specified in the chat rooms specified in `<FileSelector>|<CSVFileSelector>`
|
||||||
|
|
||||||
Specify the scope of data to include in the export:
|
Specify the scope of data to include in the export:
|
||||||
* `all_data` - All available data; this is the default
|
* `all_data` - All available data; this is the default
|
||||||
@@ -320,10 +376,6 @@ For `corpus calendar`, you can specify advanced search options:
|
|||||||
* Search the current version of the Calendar event, but export the contents of the last version saved before 12:00 AM UTC on the specified date.
|
* Search the current version of the Calendar event, but export the contents of the last version saved before 12:00 AM UTC on the specified date.
|
||||||
* Enter the date in UTC.
|
* Enter the date in UTC.
|
||||||
|
|
||||||
For `corpus calendar`, you can specify the format of the exported data:
|
|
||||||
* `format ics` - Export in ICS format, this is the default
|
|
||||||
* `format pst` - Export in PST format
|
|
||||||
|
|
||||||
For `corpus drive`, you can specify advanced search options:
|
For `corpus drive`, you can specify advanced search options:
|
||||||
* `driveversiondate <Date>|<Time>` - Search the versions of the Drive file as of the reference date. These timestamps are in GMT and rounded down to the given date.
|
* `driveversiondate <Date>|<Time>` - Search the versions of the Drive file as of the reference date. These timestamps are in GMT and rounded down to the given date.
|
||||||
* `includeshareddrives False` - Mapped to `sharedrivesoption included_if_account_is_not_a_member`
|
* `includeshareddrives False` - Mapped to `sharedrivesoption included_if_account_is_not_a_member`
|
||||||
@@ -331,6 +383,16 @@ For `corpus drive`, you can specify advanced search options:
|
|||||||
* `sharedrivesoption included` - Resources in shared drives are included in the search
|
* `sharedrivesoption included` - Resources in shared drives are included in the search
|
||||||
* `sharedrivesoption included_if_account_is_not_a_member` - Resources in shared drives where account is not a member are included in the search, this is the default
|
* `sharedrivesoption included_if_account_is_not_a_member` - Resources in shared drives where account is not a member are included in the search, this is the default
|
||||||
* `sharedrivesoption not_included` - Resources in shared drives are not included in the search
|
* `sharedrivesoption not_included` - Resources in shared drives are not included in the search
|
||||||
|
|
||||||
|
For `corpus hangouts_chat` you can specify advanced search options:
|
||||||
|
* `includerooms False` - Do not include rooms, this is the default
|
||||||
|
* `includerooms True` - Include rooms
|
||||||
|
|
||||||
|
You can specify query options with `<JSONData>`.
|
||||||
|
|
||||||
|
## Vault Export options
|
||||||
|
|
||||||
|
For `corpus drive`, you can specify advanced search options:
|
||||||
* `driveclientsideencryption any` - Include both client-side encrypted and unencrypted content in search, this is the default.
|
* `driveclientsideencryption any` - Include both client-side encrypted and unencrypted content in search, this is the default.
|
||||||
* `driveclientsideencryption encrypted` - Include client-side encrypted content only in search.
|
* `driveclientsideencryption encrypted` - Include client-side encrypted content only in search.
|
||||||
* `driveclientsideencryption unencrypted` - Include client-side unencrypted content only in search.
|
* `driveclientsideencryption unencrypted` - Include client-side unencrypted content only in search.
|
||||||
@@ -339,10 +401,6 @@ For `corpus drive`, you can specify whether to include access information for us
|
|||||||
* `includeaccessinfo False` - Do not include access information for users with indirect access, this is the default
|
* `includeaccessinfo False` - Do not include access information for users with indirect access, this is the default
|
||||||
* `includeaccessinfo True` - Include access information for users with indirect access
|
* `includeaccessinfo True` - Include access information for users with indirect access
|
||||||
|
|
||||||
For `corpus hangouts_chat` you can specify advanced search options:
|
|
||||||
* `includerooms False` - Do not include rooms, this is the default
|
|
||||||
* `includerooms True` - Include rooms
|
|
||||||
|
|
||||||
For `corpus mail`, you can specify advanced search options:
|
For `corpus mail`, you can specify advanced search options:
|
||||||
* `excludedrafts False` - Do not exclude drafts, this is the default
|
* `excludedrafts False` - Do not exclude drafts, this is the default
|
||||||
* `excludedrafts True` - Exclude drafts
|
* `excludedrafts True` - Exclude drafts
|
||||||
@@ -365,18 +423,18 @@ For `corpus mail`, you can specify whether to enable exporting linked Drive file
|
|||||||
See: https://support.google.com/vault/answer/4388708#new_gmail_export&zippy=%2Cfebruary-new-gmail-export-system-available
|
See: https://support.google.com/vault/answer/4388708#new_gmail_export&zippy=%2Cfebruary-new-gmail-export-system-available
|
||||||
|
|
||||||
For `corpus calendar`, you can specify the format of the exported data:
|
For `corpus calendar`, you can specify the format of the exported data:
|
||||||
* `format ics - Export in ICS format, this is the default
|
* `format ics` - Export in ICS format, this is the default
|
||||||
* `format pst` - Export in PST format
|
* `format pst` - Export in PST format
|
||||||
|
|
||||||
For `corpus drive`, you can not specify the format of the exported data,
|
For `corpus drive`, you can not specify the format of the exported data,
|
||||||
|
|
||||||
For `corpus gemini`, `format xml` is the only format of the exported data,
|
For `corpus gemini`, `format xml` is the only supported format of the exported data,
|
||||||
|
|
||||||
For `corpus groups`, `corpus hangouts_chat`, `corpus mail` and `corpus voice`, you can specify the format of the exported data:
|
For `corpus groups`, `corpus hangouts_chat`, `corpus mail` and `corpus voice`, you can specify the format of the exported data:
|
||||||
* `format mbox` - Export in MBOX format, this is the default
|
* `format mbox` - Export in MBOX format, this is the default
|
||||||
* `format pst` - Export in PST format
|
* `format pst` - Export in PST format
|
||||||
|
|
||||||
For `corpus voice` you can specify thet data covered by the export:
|
For `corpus voice` you can specify the data covered by the export, multiple values are allowed.:
|
||||||
* `covereddata calllogs` - Call logs
|
* `covereddata calllogs` - Call logs
|
||||||
* `covereddata textmessages` - Voice text messages
|
* `covereddata textmessages` - Voice text messages
|
||||||
* `covereddata voicemail` - Voicemail
|
* `covereddata voicemail` - Voicemail
|
||||||
@@ -606,13 +664,29 @@ The `shownames` argument controls whether account and org unit names are display
|
|||||||
|
|
||||||
## Vault Holds
|
## Vault Holds
|
||||||
## Create Vault Holds
|
## Create Vault Holds
|
||||||
|
### Create a hold from a saved Vault query.
|
||||||
```
|
```
|
||||||
gam create vaulthold|hold matter <MatterItem> [name <String>] corpus calendar|drive|mail|groups|hangouts_chat|voice
|
gam create vaulthold|hold matter <MatterItem> [name <String>]
|
||||||
|
vaultquery <QueryItem>
|
||||||
|
[showdetails|returnidonly]
|
||||||
|
```
|
||||||
|
Specify the name of the hold:
|
||||||
|
* `name <String>` - The hold will be named `<String>`
|
||||||
|
* `default` - The hold will be named `GAM <corpus> Hold - <Time>`
|
||||||
|
|
||||||
|
Use the `showdetails` option to have the full details of the hold displayed.
|
||||||
|
|
||||||
|
Use the `returnidonly` option to have only the hold ID displayed.
|
||||||
|
|
||||||
|
### Create a hold from parameters.
|
||||||
|
```
|
||||||
|
gam create vaulthold|hold matter <MatterItem> [name <String>]
|
||||||
|
corpus calendar|drive|mail|groups|hangouts_chat|voice
|
||||||
[(accounts|groups|users <EmailItemList>) | (orgunit|org|ou <OrgUnit>)]
|
[(accounts|groups|users <EmailItemList>) | (orgunit|org|ou <OrgUnit>)]
|
||||||
[query <QueryVaultCorpus>]
|
[query <QueryVaultCorpus>]
|
||||||
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
||||||
[includerooms <Boolean>]
|
[includerooms <Boolean>]
|
||||||
[covereddata calllogs|textmessages|voicemails]
|
(covereddata calllogs|textmessages|voicemails)*
|
||||||
[includeshareddrives <Boolean>]
|
[includeshareddrives <Boolean>]
|
||||||
[showdetails|returnidonly]
|
[showdetails|returnidonly]
|
||||||
```
|
```
|
||||||
@@ -638,10 +712,10 @@ For `corpus drive`, you can specify advanced search options:
|
|||||||
* `includeshareddrives False` - Files in shared drives are not included in the hold, this is the default
|
* `includeshareddrives False` - Files in shared drives are not included in the hold, this is the default
|
||||||
* `includeshareddrives True` - Files in shared drives are included in the hold
|
* `includeshareddrives True` - Files in shared drives are included in the hold
|
||||||
|
|
||||||
For `corpus mail`, you can specify search terms to limit the search.
|
For `corpus mail|group`, you can specify search terms to limit the search.
|
||||||
* `terms <String>` - [Vault search](https://support.google.com/vault/answer/2474474)
|
* `terms <String>` - [Vault search](https://support.google.com/vault/answer/2474474)
|
||||||
|
|
||||||
For `corpus mail`, you can specify time limits on the search:
|
For `corpus mail|group`, you can specify time limits on the search:
|
||||||
* `start|starttime <Date>|<Time>` - The start time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
|
* `start|starttime <Date>|<Time>` - The start time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
|
||||||
* `end|endtime <Date>|<Time>` - The end time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
|
* `end|endtime <Date>|<Time>` - The end time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
|
||||||
|
|
||||||
@@ -649,7 +723,8 @@ For `corpus hangouts_chat` you can specify advanced search options:
|
|||||||
* `includerooms False` - Do not include rooms, this is the default
|
* `includerooms False` - Do not include rooms, this is the default
|
||||||
* `includerooms True` - Include rooms
|
* `includerooms True` - Include rooms
|
||||||
|
|
||||||
For `corpus voice` you can specify the data covered by the hold:
|
For `corpus voice` you can specify the data covered by the hold,
|
||||||
|
multiple values are allowed.:
|
||||||
* `covereddata calllogs` - Call logs
|
* `covereddata calllogs` - Call logs
|
||||||
* `covereddata textmessages` - Voice text messages
|
* `covereddata textmessages` - Voice text messages
|
||||||
* `covereddata voicemail` - Voicemail
|
* `covereddata voicemail` - Voicemail
|
||||||
@@ -665,7 +740,7 @@ gam update vaulthold|hold <HoldItem> matter <MatterItem>
|
|||||||
[query <QueryVaultCorpus>]
|
[query <QueryVaultCorpus>]
|
||||||
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
||||||
[includerooms <Boolean>]
|
[includerooms <Boolean>]
|
||||||
[covereddata calllogs|textmessages|voicemails]
|
(covereddata calllogs|textmessages|voicemails)*
|
||||||
[includeshareddrives <Boolean>]
|
[includeshareddrives <Boolean>]
|
||||||
[showdetails]
|
[showdetails]
|
||||||
```
|
```
|
||||||
@@ -673,10 +748,10 @@ For a hold with `corpus drive`, you can specify advanced search options:
|
|||||||
* `includeshareddrives False` - Files in shared drives are not included in the hold, this is the default
|
* `includeshareddrives False` - Files in shared drives are not included in the hold, this is the default
|
||||||
* `includeshareddrives True` - Files in shared drives are included in the hold
|
* `includeshareddrives True` - Files in shared drives are included in the hold
|
||||||
|
|
||||||
For a hold with `corpus mail`, you can specify search terms to limit the search.
|
For a hold with `corpus mail|groups`, you can specify search terms to limit the search.
|
||||||
* `terms <String>` - [Vault search](https://support.google.com/vault/answer/2474474)
|
* `terms <String>` - [Vault search](https://support.google.com/vault/answer/2474474)
|
||||||
|
|
||||||
For a hold with `corpus mail`, you can specify time limits on the search:
|
For a hold with `corpus mai|groupsl`, you can specify time limits on the search:
|
||||||
* `start|starttime <Date>|<Time>` - The start time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
|
* `start|starttime <Date>|<Time>` - The start time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
|
||||||
* `end|endtime <Date>|<Time>` - The end time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
|
* `end|endtime <Date>|<Time>` - The end time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
|
||||||
|
|
||||||
@@ -684,7 +759,8 @@ For a hold with `corpus hangouts_chat` you can specify advanced search options:
|
|||||||
* `includerooms False` - Do not include rooms, this is the default
|
* `includerooms False` - Do not include rooms, this is the default
|
||||||
* `includerooms True` - Include rooms
|
* `includerooms True` - Include rooms
|
||||||
|
|
||||||
For a hold with `corpus voice` you can specify the data covered by the hold:
|
For a hold with `corpus voice` you can specify the data covered by the hold,
|
||||||
|
multiple values are allowed.:
|
||||||
* `covereddata calllogs` - Call logs
|
* `covereddata calllogs` - Call logs
|
||||||
* `covereddata textmessages` - Voice text messages
|
* `covereddata textmessages` - Voice text messages
|
||||||
* `covereddata voicemail` - Voicemail
|
* `covereddata voicemail` - Voicemail
|
||||||
@@ -752,6 +828,67 @@ gam <UserTypeEntity> show vaultholds|holds
|
|||||||
```
|
```
|
||||||
|
|
||||||
## Vault Saved Queries
|
## Vault Saved Queries
|
||||||
|
## Create Vault Saved Queries
|
||||||
|
```
|
||||||
|
gam create vaultquery <MatterItem> [name <String>]
|
||||||
|
corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
|
||||||
|
[scope all_data|held_data|unprocessed_data]
|
||||||
|
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
||||||
|
(documentids (<DriveFileIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
(shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
[(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
|
||||||
|
(sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
|
||||||
|
[driveversiondate <Date>|<Time>]
|
||||||
|
[includerooms <Boolean>]
|
||||||
|
(rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
|
||||||
|
[locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
|
||||||
|
[responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
|
||||||
|
(covereddata calllogs|textmessages|voicemails)*
|
||||||
|
[<JSONData>]
|
||||||
|
[shownames]
|
||||||
|
[showdetails|returnidonly|formatjson]
|
||||||
|
```
|
||||||
|
|
||||||
|
If `name <String>` is omitted, the query is named `GAM <corpus> Query - <Time>`
|
||||||
|
|
||||||
|
The `shownames` argument controls whether org unit and shared drive names are displayed in queries; additional API calls are required to get the names.
|
||||||
|
|
||||||
|
See: [Vault Query options](#vault-query-options)
|
||||||
|
|
||||||
|
Use the `showdetails` option to have the full details of the saved query displayed.
|
||||||
|
|
||||||
|
Use the `returnidonly` option to have only the saved query ID displayed.
|
||||||
|
|
||||||
|
Use the `formatjson` option to have only the saved query JSON displayed.
|
||||||
|
|
||||||
|
## Copy Vault Saved Queries
|
||||||
|
```
|
||||||
|
gam copy vaultquery <MatterItem> <QueryItem> [targetmatter <MatterItem>] [name <String>]
|
||||||
|
[shownames]
|
||||||
|
[showdetails|returnidonly|formatjson]
|
||||||
|
```
|
||||||
|
|
||||||
|
If `targetmatter <MatterItem>` is omitted, the query is copied in the source matter.
|
||||||
|
|
||||||
|
If `name <String>` is omitted:
|
||||||
|
* `targetmatter <MatterItem>` specified - The copied query has the same name as the source query
|
||||||
|
* `targetmatter <MatterItem>` omitted - The copied query is named `Copy of Source Query name`
|
||||||
|
|
||||||
|
The `shownames` argument controls whether org unit and shared drive names are displayed in queries; additional API calls are required to get the names.
|
||||||
|
|
||||||
|
Use the `showdetails` option to have the full details of the saved query displayed.
|
||||||
|
|
||||||
|
Use the `returnidonly` option to have only the saved query ID displayed.
|
||||||
|
|
||||||
|
Use the `formatjson` option to have only the saved query JSON displayed.
|
||||||
|
|
||||||
|
## Delete Vault Saved Queries
|
||||||
|
```
|
||||||
|
gam delete vaultquery <QueryItem> matter <MatterItem>
|
||||||
|
gam delete vaultquery <MatterItem> <QueryItem>
|
||||||
|
```
|
||||||
|
|
||||||
## Display Vault Saved Queries
|
## Display Vault Saved Queries
|
||||||
```
|
```
|
||||||
gam info vaultquery <QueryItem> matter <MatterItem>
|
gam info vaultquery <QueryItem> matter <MatterItem>
|
||||||
@@ -791,7 +928,7 @@ Select fields to display:
|
|||||||
|
|
||||||
The `shownames` argument controls whether org unit and shared drive names are displayed in queries; additional API calls are required to get the names.
|
The `shownames` argument controls whether org unit and shared drive names are displayed in queries; additional API calls are required to get the names.
|
||||||
|
|
||||||
# Takeout
|
## Takeout
|
||||||
Many thanks to Jay for these commands and documentation.
|
Many thanks to Jay for these commands and documentation.
|
||||||
|
|
||||||
GAM 6.42.00 and newer support copying and downloading Google Cloud Storage (GCS) buckets generated by [organization-wide Takeout](https://support.google.com/a/answer/100458?hl=en).
|
GAM 6.42.00 and newer support copying and downloading Google Cloud Storage (GCS) buckets generated by [organization-wide Takeout](https://support.google.com/a/answer/100458?hl=en).
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
Print the current version of Gam with details
|
Print the current version of Gam with details
|
||||||
```
|
```
|
||||||
gam version
|
gam version
|
||||||
GAM 7.22.03 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.27.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.7 64-bit final
|
Python 3.14.0 64-bit final
|
||||||
macOS Sequoia 15.7 x86_64
|
macOS Tahoe 26.0.1 x86_64
|
||||||
Path: /Users/Admin/bin/gam7
|
Path: /Users/Admin/bin/gam7
|
||||||
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
||||||
Time: 2023-06-02T21:10:00-07:00
|
Time: 2023-06-02T21:10:00-07:00
|
||||||
@@ -15,10 +15,10 @@ 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.22.03 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.27.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.7 64-bit final
|
Python 3.14.0 64-bit final
|
||||||
macOS Sequoia 15.7 x86_64
|
macOS Tahoe 26.0.1 x86_64
|
||||||
Path: /Users/Admin/bin/gam7
|
Path: /Users/Admin/bin/gam7
|
||||||
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
||||||
Your system time differs from www.googleapis.com by less than 1 second
|
Your system time differs from www.googleapis.com by less than 1 second
|
||||||
@@ -27,10 +27,10 @@ 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.22.03 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.27.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.7 64-bit final
|
Python 3.14.0 64-bit final
|
||||||
macOS Sequoia 15.7 x86_64
|
macOS Tahoe 26.0.1 x86_64
|
||||||
Path: /Users/Admin/bin/gam7
|
Path: /Users/Admin/bin/gam7
|
||||||
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
||||||
Time: 2023-06-02T21:10:00-07:00
|
Time: 2023-06-02T21:10:00-07:00
|
||||||
@@ -68,7 +68,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.22.00
|
Latest: 7.27.01
|
||||||
echo $?
|
echo $?
|
||||||
1
|
1
|
||||||
```
|
```
|
||||||
@@ -76,7 +76,7 @@ echo $?
|
|||||||
Print the current version number without details
|
Print the current version number without details
|
||||||
```
|
```
|
||||||
gam version simple
|
gam version simple
|
||||||
7.22.00
|
7.27.01
|
||||||
```
|
```
|
||||||
In Linux/MacOS you can do:
|
In Linux/MacOS you can do:
|
||||||
```
|
```
|
||||||
@@ -86,10 +86,10 @@ 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.22.00 - https://github.com/GAM-team/GAM
|
GAM 7.27.01 - https://github.com/GAM-team/GAM
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.7 64-bit final
|
Python 3.14.0 64-bit final
|
||||||
macOS Sequoia 15.7 x86_64
|
macOS Tahoe 26.0.1 x86_64
|
||||||
Path: /Users/Admin/bin/gam7
|
Path: /Users/Admin/bin/gam7
|
||||||
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
||||||
Time: 2023-06-02T21:10:00-07:00
|
Time: 2023-06-02T21:10:00-07:00
|
||||||
|
|||||||
@@ -109,6 +109,11 @@ charset
|
|||||||
Character set of gam batch, gam csv, gam loop files.
|
Character set of gam batch, gam csv, gam loop files.
|
||||||
Default: utf-8
|
Default: utf-8
|
||||||
Environment variable: GAM_CHARSET
|
Environment variable: GAM_CHARSET
|
||||||
|
chat_max_results
|
||||||
|
When retrieving lists of Chat items from API,
|
||||||
|
how many should be retrieved in each API call
|
||||||
|
Default: 100
|
||||||
|
Range: 1 - 1000
|
||||||
classroom_max_results
|
classroom_max_results
|
||||||
When retrieving lists of Google Classroom items from API,
|
When retrieving lists of Google Classroom items from API,
|
||||||
how many should be retrieved in each API call
|
how many should be retrieved in each API call
|
||||||
@@ -135,6 +140,11 @@ cmdlog_max_kilo_bytes
|
|||||||
Maximum kilobytes per log file
|
Maximum kilobytes per log file
|
||||||
Default: 1000
|
Default: 1000
|
||||||
Range: 100 - 10000
|
Range: 100 - 10000
|
||||||
|
commanddata_clientaccess
|
||||||
|
Enable/disable use of client access rather than service account access for the
|
||||||
|
admin specified in `gam oauth create` when reading command data from Docs and Sheets
|
||||||
|
to which it has access.
|
||||||
|
Default: False
|
||||||
config_dir
|
config_dir
|
||||||
GAM config directory containing client_secrets.json, oauth2.txt, oauth2service.json
|
GAM config directory containing client_secrets.json, oauth2.txt, oauth2service.json
|
||||||
and extra_args.txt
|
and extra_args.txt
|
||||||
@@ -293,6 +303,9 @@ debug_level
|
|||||||
If debug_level > 0, turn on API debugging output.
|
If debug_level > 0, turn on API debugging output.
|
||||||
Default: 0
|
Default: 0
|
||||||
Signal file: OldGamPath/debug.gam
|
Signal file: OldGamPath/debug.gam
|
||||||
|
debug_redaction
|
||||||
|
Enable/disable redaction of sensitive data from API debugging output
|
||||||
|
Default: True
|
||||||
device_max_results
|
device_max_results
|
||||||
When retrieving lists of ChromeOS devices from API,
|
When retrieving lists of ChromeOS devices from API,
|
||||||
how many should be retrieved in each API call
|
how many should be retrieved in each API call
|
||||||
|
|||||||
Reference in New Issue
Block a user