mirror of
https://github.com/GAM-team/GAM.git
synced 2026-07-06 13:51:36 +00:00
Compare commits
199 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0781e27993 | ||
|
|
a441dddc06 | ||
|
|
4a42581e00 | ||
|
|
de2bfb0d52 | ||
|
|
f418287e65 | ||
|
|
fccf6c1278 | ||
|
|
ee874858b4 | ||
|
|
dde1354bd0 | ||
|
|
c241c2744f | ||
|
|
5ee1fa1b61 | ||
|
|
f06944a1fa | ||
|
|
27d4c37be3 | ||
|
|
2f1a7eb347 | ||
|
|
a5818e144d | ||
|
|
4e6f1717fb | ||
|
|
9d347719c7 | ||
|
|
7235022a8e | ||
|
|
5db5dad576 | ||
|
|
72a6651a9f | ||
|
|
47f6dfc730 | ||
|
|
9e6c6138f8 | ||
|
|
c4ec856a58 | ||
|
|
2a32f6d2e4 | ||
|
|
afc6af68a4 | ||
|
|
80ec0a739b | ||
|
|
7a08fb0518 | ||
|
|
3006d8dfe4 | ||
|
|
f9ed16e2e3 | ||
|
|
9999adfb3a | ||
|
|
f09a1e1bd6 | ||
|
|
a95da4e2ea | ||
|
|
fce8704f87 | ||
|
|
4d3b72900b | ||
|
|
fd81d56675 | ||
|
|
762d8479a4 | ||
|
|
6f19ec4f8c | ||
|
|
8af3bc60e6 | ||
|
|
e636a69431 | ||
|
|
673460e91d | ||
|
|
9862ad446f | ||
|
|
67f21ce650 | ||
|
|
e82baccbac | ||
|
|
c51b06a6c3 | ||
|
|
b7415cd63f | ||
|
|
f0f5803698 | ||
|
|
575fdea526 | ||
|
|
f8ee94bad8 | ||
|
|
4b6c8fb518 | ||
|
|
4f8c80dcab | ||
|
|
12f5c5e670 | ||
|
|
a1216b6782 | ||
|
|
05f4795bc3 | ||
|
|
e1ff1ba378 | ||
|
|
5b2804643e | ||
|
|
3925166987 | ||
|
|
5dece6c719 | ||
|
|
b48d316bd9 | ||
|
|
1f2b33b805 | ||
|
|
a6773901c9 | ||
|
|
840784fa98 | ||
|
|
aecb17b9fe | ||
|
|
2d90c75f03 | ||
|
|
cd8691b438 | ||
|
|
e2f0afe891 | ||
|
|
65cd2439d5 | ||
|
|
652ab1dc6d | ||
|
|
88cad201a5 | ||
|
|
9f8100dfbf | ||
|
|
7fbafb2ba0 | ||
|
|
2c631af66c | ||
|
|
3b900ca56f | ||
|
|
4a1e19a753 | ||
|
|
4a0e61a385 | ||
|
|
10b874e2aa | ||
|
|
4c3821766d | ||
|
|
5225a36cbd | ||
|
|
ee64202233 | ||
|
|
25add7034a | ||
|
|
ba042229a8 | ||
|
|
6233bd8d9c | ||
|
|
c7a6ab536f | ||
|
|
39181a4329 | ||
|
|
2d9cb44d47 | ||
|
|
ad17eb5e77 | ||
|
|
3a90f0d92d | ||
|
|
0c360b0e9c | ||
|
|
e572126c76 | ||
|
|
06f1d8d246 | ||
|
|
4b83d13e74 | ||
|
|
b57b10b536 | ||
|
|
b7bd74c6d7 | ||
|
|
3a307cae80 | ||
|
|
d571207cce | ||
|
|
9a79834a12 | ||
|
|
d2f048a773 | ||
|
|
db74a6e22a | ||
|
|
e147ebb253 | ||
|
|
5674c58b81 | ||
|
|
74b62c5cb9 | ||
|
|
1375bde65b | ||
|
|
936406b1b0 | ||
|
|
b39a0efd83 | ||
|
|
bcd327a7f4 | ||
|
|
81ae789acc | ||
|
|
b6ac91b97d | ||
|
|
e05b2a3843 | ||
|
|
d8e69ff50d | ||
|
|
c29f379386 | ||
|
|
f8743e1b7f | ||
|
|
24db5cc886 | ||
|
|
e95fcbaa38 | ||
|
|
a7b31550f3 | ||
|
|
ed19f877a5 | ||
|
|
0ab08c968e | ||
|
|
02a7a1a106 | ||
|
|
170a2e593b | ||
|
|
8339b92537 | ||
|
|
ce16aa252e | ||
|
|
8a70470281 | ||
|
|
981301a878 | ||
|
|
13cfb77811 | ||
|
|
458e08645d | ||
|
|
98d4d3c06f | ||
|
|
2204c35193 | ||
|
|
87827badb8 | ||
|
|
319bedd338 | ||
|
|
b3e4541b9d | ||
|
|
9d17ea2d68 | ||
|
|
9c4b348909 | ||
|
|
a8fafd0dcc | ||
|
|
ac31042576 | ||
|
|
a0d695c57d | ||
|
|
bf742ec88a | ||
|
|
f2206d02e4 | ||
|
|
c3add48f2a | ||
|
|
119047bf2b | ||
|
|
662b7d857c | ||
|
|
3bb9724e50 | ||
|
|
b450716c23 | ||
|
|
73333f921d | ||
|
|
c5d194489f | ||
|
|
4d38b20cec | ||
|
|
f401e96dd4 | ||
|
|
5700c6bc31 | ||
|
|
164b999802 | ||
|
|
f60750a647 | ||
|
|
6d7913f6cf | ||
|
|
f050017771 | ||
|
|
f53c8086e8 | ||
|
|
7bf5d8879b | ||
|
|
c52ee7887d | ||
|
|
677de0867b | ||
|
|
58b17dd1d8 | ||
|
|
41b1ce50da | ||
|
|
613aff99e2 | ||
|
|
0f0eaa40b8 | ||
|
|
c7f9303f58 | ||
|
|
430d23b17b | ||
|
|
9eb5743283 | ||
|
|
7f72dad9b8 | ||
|
|
c866d2f4ab | ||
|
|
9e8c110f08 | ||
|
|
d261bcef40 | ||
|
|
38e96397a1 | ||
|
|
c9ca0a472c | ||
|
|
aa3a0330d1 | ||
|
|
cda74bd758 | ||
|
|
6b5e19b1de | ||
|
|
7cfa8836f8 | ||
|
|
c7ae9cdd6a | ||
|
|
126320e2fb | ||
|
|
46008d4155 | ||
|
|
34a3893676 | ||
|
|
16862a19a3 | ||
|
|
fb8442a5e3 | ||
|
|
d2b7e339ff | ||
|
|
742a6f14fe | ||
|
|
b33c9bc213 | ||
|
|
0af09f7517 | ||
|
|
6113acce66 | ||
|
|
97578029d5 | ||
|
|
f846c81c01 | ||
|
|
13cc34fde6 | ||
|
|
7f90a1a950 | ||
|
|
1b234d5aa7 | ||
|
|
32dc4c9de4 | ||
|
|
a150288a6f | ||
|
|
df053c36a6 | ||
|
|
0d01850356 | ||
|
|
6e9a68627b | ||
|
|
904f743f39 | ||
|
|
64c194e4d0 | ||
|
|
98c7ea08f8 | ||
|
|
a55f065cfb | ||
|
|
8eed07cb2e | ||
|
|
01af866c7b | ||
|
|
614ebd11c5 | ||
|
|
da1266e7cc | ||
|
|
06a6fff029 |
BIN
.github/actions/creds.tar.xz.gpg
vendored
BIN
.github/actions/creds.tar.xz.gpg
vendored
Binary file not shown.
43
.github/actions/decrypt.sh
vendored
43
.github/actions/decrypt.sh
vendored
@@ -1,38 +1,19 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
credspath="$3"
|
credspath="$1"
|
||||||
if [ ! -d "$credspath" ]; then
|
if [ ! -d "$credspath" ]; then
|
||||||
echo "creating ${credspath}"
|
echo "creating ${credspath}"
|
||||||
mkdir -p "$credspath"
|
mkdir -p "$credspath"
|
||||||
fi
|
fi
|
||||||
gpgfile="$1"
|
credsfile="${credspath}/oauth2.txt"
|
||||||
if [ -f "$gpgfile" ]; then
|
echo "$oa2" > "$credsfile"
|
||||||
echo "source file is ${gpgfile}"
|
echo "File size:"
|
||||||
|
wc -c "$credsfile"
|
||||||
|
echo "File type:"
|
||||||
|
file "$credsfile"
|
||||||
|
echo "Validation:"
|
||||||
|
jq -e . "$credsfile" > /dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Valid JSON"
|
||||||
else
|
else
|
||||||
echo "ERROR: ${gpgfile} does not exist"
|
echo "Invalid JSON"
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
credsfile="$2"
|
|
||||||
echo "target file is ${credsfile}"
|
|
||||||
if [ -z ${PASSCODE+x} ]; then
|
|
||||||
echo "ERROR: PASSCODE is unset";
|
|
||||||
exit 2
|
|
||||||
else
|
|
||||||
echo "PASSCODE is set";
|
|
||||||
fi
|
|
||||||
|
|
||||||
gpg --batch \
|
|
||||||
--yes \
|
|
||||||
--decrypt \
|
|
||||||
--passphrase="$PASSCODE" \
|
|
||||||
--output "$credsfile" \
|
|
||||||
"$gpgfile"
|
|
||||||
|
|
||||||
if [[ "$RUNNER_OS" == "macOS" ]]; then
|
|
||||||
tar="gtar"
|
|
||||||
else
|
|
||||||
tar="tar"
|
|
||||||
fi
|
|
||||||
|
|
||||||
"$tar" xlvvf "$credsfile" --directory "$credspath"
|
|
||||||
rm -rvf "$gpgfile"
|
|
||||||
rm -rvf "$credsfile"
|
|
||||||
|
|||||||
317
.github/workflows/build.yml
vendored
317
.github/workflows/build.yml
vendored
@@ -22,12 +22,14 @@ defaults:
|
|||||||
working-directory: src
|
working-directory: src
|
||||||
|
|
||||||
env:
|
env:
|
||||||
SCRATCH_COUNTER: 13
|
SCRATCH_COUNTER: 14
|
||||||
OPENSSL_CONFIG_OPTS: no-fips --api=3.0.0
|
OPENSSL_CONFIG_OPTS: no-fips --api=3.0.0
|
||||||
OPENSSL_INSTALL_PATH: ${{ github.workspace }}/bin/ssl
|
OPENSSL_INSTALL_PATH: ${{ github.workspace }}/bin/ssl
|
||||||
OPENSSL_SOURCE_PATH: ${{ github.workspace }}/src/openssl
|
OPENSSL_SOURCE_PATH: ${{ github.workspace }}/src/openssl
|
||||||
PYTHON_INSTALL_PATH: ${{ github.workspace }}/bin/python
|
PYTHON_INSTALL_PATH: ${{ github.workspace }}/bin/python
|
||||||
PYTHON_SOURCE_PATH: ${{ github.workspace }}/src/cpython
|
PYTHON_SOURCE_PATH: ${{ github.workspace }}/src/cpython
|
||||||
|
CRYPTOGRAPHY_BUILD_OPENSSL_NO_LEGACY: 1
|
||||||
|
CRYPTOGRAPHY_OPENSSL_NO_LEGACY: 1
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
@@ -39,79 +41,69 @@ jobs:
|
|||||||
- os: ubuntu-22.04
|
- os: ubuntu-22.04
|
||||||
jid: 1
|
jid: 1
|
||||||
goal: build
|
goal: build
|
||||||
arch: x86_64
|
name: Build Intel Ubuntu Jammy
|
||||||
openssl_archs: linux-x86_64
|
|
||||||
- os: ubuntu-24.04
|
- os: ubuntu-24.04
|
||||||
jid: 2
|
jid: 2
|
||||||
goal: build
|
goal: build
|
||||||
arch: x86_64
|
name: Build Intel Ubuntu Noble
|
||||||
openssl_archs: linux-x86_64
|
|
||||||
- os: ubuntu-24.04-arm
|
- os: ubuntu-24.04-arm
|
||||||
jid: 3
|
jid: 3
|
||||||
goal: build
|
goal: build
|
||||||
arch: aarch64
|
name: Build Arm Ubuntu Noble
|
||||||
openssl_archs: linux-aarch64
|
|
||||||
- os: ubuntu-22.04-arm
|
- os: ubuntu-22.04-arm
|
||||||
jid: 4
|
jid: 4
|
||||||
goal: build
|
goal: build
|
||||||
arch: aarch64
|
name: Build Arm Ubuntu Jammy
|
||||||
openssl_archs: linux-aarch64
|
|
||||||
- os: ubuntu-22.04
|
- os: ubuntu-22.04
|
||||||
jid: 5
|
jid: 5
|
||||||
goal: build
|
goal: build
|
||||||
arch: x86_64
|
|
||||||
openssl_archs: linux-x86_64
|
|
||||||
staticx: yes
|
staticx: yes
|
||||||
|
name: Build Intel StaticX Legacy
|
||||||
- os: ubuntu-22.04-arm
|
- os: ubuntu-22.04-arm
|
||||||
jid: 6
|
jid: 6
|
||||||
goal: build
|
goal: build
|
||||||
arch: aarch64
|
|
||||||
openssl_archs: linux-aarch64
|
|
||||||
staticx: yes
|
staticx: yes
|
||||||
|
name: Build Arm StaticX Legacy
|
||||||
- os: macos-13
|
- os: macos-13
|
||||||
jid: 7
|
jid: 7
|
||||||
goal: build
|
goal: build
|
||||||
arch: x86_64
|
name: Build Intel MacOS
|
||||||
openssl_archs: darwin64-x86_64
|
|
||||||
- os: macos-14
|
- os: macos-14
|
||||||
jid: 8
|
jid: 8
|
||||||
goal: build
|
goal: build
|
||||||
arch: aarch64
|
name: Build Arm MacOS 14
|
||||||
openssl_archs: darwin64-arm64
|
|
||||||
- os: macos-15
|
- os: macos-15
|
||||||
jid: 9
|
jid: 9
|
||||||
goal: build
|
goal: build
|
||||||
arch: aarch64
|
name: Build Arm MacOS 15
|
||||||
openssl_archs: darwin64-arm64
|
|
||||||
- os: windows-2022
|
- os: windows-2022
|
||||||
jid: 10
|
jid: 10
|
||||||
goal: build
|
goal: build
|
||||||
arch: Win64
|
name: Build Intel Windows
|
||||||
openssl_archs: VC-WIN64A
|
- os: windows-11-arm
|
||||||
# disable 3.9 test for now since it's oldest and due
|
jid: 11
|
||||||
# for removal in Oct 2025. We only have 13 jid accounts
|
goal: build
|
||||||
# so we need this one off but can re-enable at some point
|
name: Build Arm Windows
|
||||||
# if we feel the need.
|
|
||||||
#- os: ubuntu-24.04
|
|
||||||
# goal: test
|
|
||||||
# python: "3.9"
|
|
||||||
# jid: 11
|
|
||||||
# arch: x86_64
|
|
||||||
- os: ubuntu-24.04
|
- os: ubuntu-24.04
|
||||||
goal: test
|
goal: test
|
||||||
python: "3.10"
|
python: "3.10"
|
||||||
jid: 11
|
jid: 12
|
||||||
arch: x86_64
|
name: Test Python 3.10
|
||||||
- os: ubuntu-24.04
|
- os: ubuntu-24.04
|
||||||
goal: test
|
goal: test
|
||||||
python: "3.11"
|
python: "3.11"
|
||||||
jid: 12
|
jid: 13
|
||||||
arch: x86_64
|
name: Test Python 3.11
|
||||||
- os: ubuntu-24.04
|
- os: ubuntu-24.04
|
||||||
goal: test
|
goal: test
|
||||||
python: "3.12"
|
python: "3.12"
|
||||||
jid: 13
|
jid: 14
|
||||||
arch: x86_64
|
name: Test Python 3.12
|
||||||
|
- os: ubuntu-24.04
|
||||||
|
goal: test
|
||||||
|
python: "3.14-dev"
|
||||||
|
jid: 15
|
||||||
|
name: Test Python 3.14-dev
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
@@ -134,7 +126,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
cache.tar.xz
|
cache.tar.xz
|
||||||
key: gam-${{ matrix.jid }}-20250408-01
|
key: gam-${{ matrix.jid }}-20250603
|
||||||
|
|
||||||
- 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'
|
||||||
@@ -148,15 +140,25 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python }}
|
python-version: ${{ matrix.python }}
|
||||||
allow-prereleases: true
|
allow-prereleases: true
|
||||||
|
check-latest: true
|
||||||
|
|
||||||
- name: common variables for all runs
|
- name: common variables for all runs
|
||||||
env:
|
env:
|
||||||
arch: ${{ matrix.arch }}
|
|
||||||
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 }}
|
||||||
run: |
|
run: |
|
||||||
echo "arch=${arch}" >> $GITHUB_ENV
|
case $RUNNER_ARCH in
|
||||||
|
X64)
|
||||||
|
echo "arch=x86_64" >> $GITHUB_ENV
|
||||||
|
;;
|
||||||
|
ARM64)
|
||||||
|
echo "arch=arm64" >> $GITHUB_ENV
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "arch=${RUNNER_ARCH}" >> $GITHUB_ENV
|
||||||
|
;;
|
||||||
|
esac
|
||||||
echo "JID=${JID}" >> $GITHUB_ENV
|
echo "JID=${JID}" >> $GITHUB_ENV
|
||||||
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
|
||||||
@@ -170,20 +172,12 @@ jobs:
|
|||||||
echo "curl_retry=${curl_retry}" >> $GITHUB_ENV
|
echo "curl_retry=${curl_retry}" >> $GITHUB_ENV
|
||||||
# GAMCFGDIR should be recreated on every run
|
# GAMCFGDIR should be recreated on every run
|
||||||
GAMCFGDIR="${RUNNER_TEMP}/.gam"
|
GAMCFGDIR="${RUNNER_TEMP}/.gam"
|
||||||
if [ "$arch" == "Win64" ]; then
|
if [ "$RUNNER_OS" == "Windows" ]; then
|
||||||
GAMCFGDIR=$(cygpath -u "$GAMCFGDIR")
|
GAMCFGDIR=$(cygpath -u "$GAMCFGDIR")
|
||||||
fi
|
fi
|
||||||
echo "GAMCFGDIR=${GAMCFGDIR}" >> $GITHUB_ENV
|
echo "GAMCFGDIR=${GAMCFGDIR}" >> $GITHUB_ENV
|
||||||
echo "GAMCFGDIR is: ${GAMCFGDIR}"
|
echo "GAMCFGDIR is: ${GAMCFGDIR}"
|
||||||
if [[ "${RUNNER_OS}" == "macOS" ]]; then
|
export GAMOS=$(echo "$RUNNER_OS" | tr '[:upper:]' '[:lower:]')
|
||||||
GAMOS="macos"
|
|
||||||
elif [[ "${RUNNER_OS}" == "Linux" ]]; then
|
|
||||||
GAMOS="linux"
|
|
||||||
elif [[ "${RUNNER_OS}" == "Windows" ]]; then
|
|
||||||
GAMOS="windows"
|
|
||||||
else
|
|
||||||
GAMOS='unknown'
|
|
||||||
fi
|
|
||||||
echo "GAMOS=${GAMOS}" >> $GITHUB_ENV
|
echo "GAMOS=${GAMOS}" >> $GITHUB_ENV
|
||||||
echo "GAMOS is: ${GAMOS}"
|
echo "GAMOS is: ${GAMOS}"
|
||||||
|
|
||||||
@@ -205,7 +199,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo "RUNNING: apt update..."
|
echo "RUNNING: apt update..."
|
||||||
sudo apt-get -qq --yes update
|
sudo apt-get -qq --yes update
|
||||||
sudo apt-get -qq --yes install swig libpcsclite-dev libxslt1-dev libsqlite3-dev
|
sudo apt-get -qq --yes install swig libpcsclite-dev libxslt1-dev libsqlite3-dev libffi-dev pkg-config
|
||||||
|
|
||||||
- name: MacOS install tools
|
- name: MacOS install tools
|
||||||
if: runner.os == 'macOS'
|
if: runner.os == 'macOS'
|
||||||
@@ -232,23 +226,15 @@ jobs:
|
|||||||
uses: ilammy/msvc-dev-cmd@v1
|
uses: ilammy/msvc-dev-cmd@v1
|
||||||
if: runner.os == 'Windows' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
if: runner.os == 'Windows' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
||||||
with:
|
with:
|
||||||
arch: ${{ matrix.arch }}
|
arch: ${{ runner.arch }}
|
||||||
|
|
||||||
- name: Set Env Variables for build
|
- name: Set Env Variables for build
|
||||||
if: matrix.goal == 'build'
|
if: matrix.goal == 'build'
|
||||||
env:
|
env:
|
||||||
openssl_archs: ${{ matrix.openssl_archs }}
|
|
||||||
staticx: ${{ matrix.staticx }}
|
staticx: ${{ matrix.staticx }}
|
||||||
run: |
|
run: |
|
||||||
echo "We are running on ${RUNNER_OS}"
|
echo "We are running on ${RUNNER_OS}"
|
||||||
LD_LIBRARY_PATH="${OPENSSL_INSTALL_PATH}/lib:${PYTHON_INSTALL_PATH}/lib:/usr/local/lib"
|
LD_LIBRARY_PATH="${OPENSSL_INSTALL_PATH}/lib:${PYTHON_INSTALL_PATH}/lib:/usr/local/lib"
|
||||||
if [[ "${arch}" == "Win64" ]]; then
|
|
||||||
PYEXTERNALS_PATH="amd64"
|
|
||||||
PYBUILDRELEASE_ARCH="x64"
|
|
||||||
GAM_ARCHIVE_ARCH="x86_64"
|
|
||||||
WIX_ARCH="x64"
|
|
||||||
CHOC_OPS=""
|
|
||||||
fi
|
|
||||||
if [[ "${RUNNER_OS}" == "macOS" ]]; then
|
if [[ "${RUNNER_OS}" == "macOS" ]]; then
|
||||||
MAKE=make
|
MAKE=make
|
||||||
MAKEOPT="-j$(sysctl -n hw.logicalcpu)"
|
MAKEOPT="-j$(sysctl -n hw.logicalcpu)"
|
||||||
@@ -266,9 +252,15 @@ jobs:
|
|||||||
MAKE=nmake
|
MAKE=nmake
|
||||||
MAKEOPT=""
|
MAKEOPT=""
|
||||||
PERL="c:\strawberry\perl\bin\perl.exe"
|
PERL="c:\strawberry\perl\bin\perl.exe"
|
||||||
|
if [[ "$RUNNER_ARCH" == "ARM64" ]]; then
|
||||||
|
PYEXTERNALS_PATH="arm64"
|
||||||
|
WIX_ARCH="arm64"
|
||||||
|
elif [[ "$RUNNER_ARCH" == "X64" ]]; then
|
||||||
|
PYEXTERNALS_PATH="amd64"
|
||||||
|
WIX_ARCH="x64"
|
||||||
|
fi
|
||||||
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${PYTHON_SOURCE_PATH}/PCbuild/${PYEXTERNALS_PATH}"
|
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${PYTHON_SOURCE_PATH}/PCbuild/${PYEXTERNALS_PATH}"
|
||||||
echo "PYTHON=${PYTHON_SOURCE_PATH}/PCbuild/${PYEXTERNALS_PATH}/python.exe" >> $GITHUB_ENV
|
echo "PYTHON=${PYTHON_SOURCE_PATH}/PCbuild/${PYEXTERNALS_PATH}/python.exe" >> $GITHUB_ENV
|
||||||
echo "GAM_ARCHIVE_ARCH=${GAM_ARCHIVE_ARCH}" >> $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}"
|
||||||
@@ -278,8 +270,6 @@ jobs:
|
|||||||
echo "MAKEOPT=${MAKEOPT}" >> $GITHUB_ENV
|
echo "MAKEOPT=${MAKEOPT}" >> $GITHUB_ENV
|
||||||
echo "PERL=${PERL}" >> $GITHUB_ENV
|
echo "PERL=${PERL}" >> $GITHUB_ENV
|
||||||
echo "PYEXTERNALS_PATH=${PYEXTERNALS_PATH}" >> $GITHUB_ENV
|
echo "PYEXTERNALS_PATH=${PYEXTERNALS_PATH}" >> $GITHUB_ENV
|
||||||
echo "PYBUILDRELEASE_ARCH=${PYBUILDRELEASE_ARCH}" >> $GITHUB_ENV
|
|
||||||
echo "openssl_archs=${openssl_archs}" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Get latest stable OpenSSL source
|
- name: Get latest stable OpenSSL source
|
||||||
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
||||||
@@ -293,29 +283,21 @@ jobs:
|
|||||||
git checkout "${LATEST_STABLE_TAG}"
|
git checkout "${LATEST_STABLE_TAG}"
|
||||||
export COMPILED_OPENSSL_VERSION=${LATEST_STABLE_TAG:8} # Trim the openssl- prefix
|
export COMPILED_OPENSSL_VERSION=${LATEST_STABLE_TAG:8} # Trim the openssl- prefix
|
||||||
echo "COMPILED_OPENSSL_VERSION=${COMPILED_OPENSSL_VERSION}" >> $GITHUB_ENV
|
echo "COMPILED_OPENSSL_VERSION=${COMPILED_OPENSSL_VERSION}" >> $GITHUB_ENV
|
||||||
if ([ "${RUNNER_OS}" == "macOS" ] && [ "$arch" == "universal2" ]); then
|
|
||||||
for openssl_arch in $openssl_archs; do
|
|
||||||
ssldir="${OPENSSL_SOURCE_PATH}-${openssl_arch}"
|
|
||||||
mkdir -v "${ssldir}"
|
|
||||||
cp -vrf ${OPENSSL_SOURCE_PATH}/* "${ssldir}/"
|
|
||||||
done
|
|
||||||
rm -vrf "${OPENSSL_SOURCE_PATH}"
|
|
||||||
else
|
|
||||||
mv -v "${OPENSSL_SOURCE_PATH}" "${OPENSSL_SOURCE_PATH}-${openssl_archs}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Windows NASM Install
|
- name: Windows NASM Install
|
||||||
uses: ilammy/setup-nasm@v1
|
uses: ilammy/setup-nasm@v1
|
||||||
if: matrix.goal == 'build' && runner.os == 'Windows' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
if: matrix.goal == 'build' && runner.os == 'Windows' && runner.arch == 'X64' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
||||||
|
|
||||||
- name: Config OpenSSL
|
- name: Config OpenSSL
|
||||||
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
for openssl_arch in $openssl_archs; do
|
cd "${OPENSSL_SOURCE_PATH}"
|
||||||
cd "${GITHUB_WORKSPACE}/src/openssl-${openssl_arch}"
|
if ([ "$RUNNER_OS" == "Windows" ] && [ "$RUNNER_ARCH" == "ARM64" ]); then
|
||||||
# --libdir=lib is needed so Python can find OpenSSL libraries
|
# https://github.com/openssl/openssl/issues/26239
|
||||||
"${PERL}" ./Configure "${openssl_arch}" --libdir=lib --prefix="${OPENSSL_INSTALL_PATH}" $OPENSSL_CONFIG_OPTS
|
export CFLAGS=-DNO_INTERLOCKEDOR64
|
||||||
done
|
fi
|
||||||
|
# --libdir=lib is needed so Python can find OpenSSL libraries
|
||||||
|
"${PERL}" ./Configure --libdir=lib --prefix="${OPENSSL_INSTALL_PATH}" $OPENSSL_CONFIG_OPTS
|
||||||
|
|
||||||
- name: Rename GNU link on Windows
|
- name: Rename GNU link on Windows
|
||||||
if: matrix.goal == 'build' && runner.os == 'Windows' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
if: matrix.goal == 'build' && runner.os == 'Windows' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
||||||
@@ -326,53 +308,29 @@ jobs:
|
|||||||
- name: Make OpenSSL
|
- name: Make OpenSSL
|
||||||
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
for openssl_arch in $openssl_archs; do
|
cd "${OPENSSL_SOURCE_PATH}"
|
||||||
cd "${GITHUB_WORKSPACE}/src/openssl-${openssl_arch}"
|
# TODO: remove this once https://github.com/openssl/openssl/issues/26239 is fixed.
|
||||||
$MAKE "${MAKEOPT}"
|
if ([ "$RUNNER_OS" == "Windows" ] && [ "$RUNNER_ARCH" == "ARM64" ]); then
|
||||||
done
|
export CFLAGS=-DNO_INTERLOCKEDOR64
|
||||||
|
fi
|
||||||
|
$MAKE "$MAKEOPT"
|
||||||
|
|
||||||
- name: Install OpenSSL
|
- name: Install OpenSSL
|
||||||
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
if ([ "${RUNNER_OS}" == "macOS" ] && [ "$arch" == "universal2" ]); then
|
cd "${OPENSSL_SOURCE_PATH}"
|
||||||
for openssl_arch in $openssl_archs; do
|
# install_sw saves us ages processing man pages :-)
|
||||||
cd "${GITHUB_WORKSPACE}/src/openssl-${openssl_arch}"
|
$MAKE install_sw
|
||||||
# install_sw saves us ages processing man pages :-)
|
|
||||||
$MAKE install_sw
|
|
||||||
mv -v "${OPENSSL_INSTALL_PATH}" "${GITHUB_WORKSPACE}/bin/ssl-${openssl_arch}"
|
|
||||||
done
|
|
||||||
mkdir -vp "${OPENSSL_INSTALL_PATH}/lib"
|
|
||||||
mkdir -vp "${OPENSSL_INSTALL_PATH}/bin"
|
|
||||||
for archlib in libcrypto.3.dylib libssl.3.dylib libcrypto.a libssl.a; do
|
|
||||||
lipo -create "${GITHUB_WORKSPACE}/bin/ssl-darwin64-x86_64/lib/${archlib}" \
|
|
||||||
"${GITHUB_WORKSPACE}/bin/ssl-darwin64-arm64/lib/${archlib}" \
|
|
||||||
-output "${GITHUB_WORKSPACE}/bin/ssl/lib/${archlib}"
|
|
||||||
done
|
|
||||||
mv ${GITHUB_WORKSPACE}/bin/ssl-darwin64-x86_64/include ${GITHUB_WORKSPACE}/bin/ssl/
|
|
||||||
lipo -create "${GITHUB_WORKSPACE}/bin/ssl-darwin64-x86_64/bin/openssl" \
|
|
||||||
"${GITHUB_WORKSPACE}/bin/ssl-darwin64-arm64/bin/openssl" \
|
|
||||||
-output "${GITHUB_WORKSPACE}/bin/ssl/bin/openssl"
|
|
||||||
rm -rf ${GITHUB_WORKSPACE}/bin/ssl-darwin64-x86_64
|
|
||||||
rm -rf ${GITHUB_WORKSPACE}/bin/ssl-darwin64-arm64
|
|
||||||
else
|
|
||||||
cd "${GITHUB_WORKSPACE}/src/openssl-${openssl_archs}"
|
|
||||||
# install_sw saves us ages processing man pages :-)
|
|
||||||
$MAKE install_sw
|
|
||||||
fi
|
|
||||||
if [[ "${RUNNER_OS}" != "Windows" ]]; then
|
if [[ "${RUNNER_OS}" != "Windows" ]]; then
|
||||||
echo "LDFLAGS=-L${OPENSSL_INSTALL_PATH}/lib" >> $GITHUB_ENV
|
echo "LDFLAGS=-L${OPENSSL_INSTALL_PATH}/lib" >> $GITHUB_ENV
|
||||||
fi
|
fi
|
||||||
echo "CRYPTOGRAPHY_SUPPRESS_LINK_FLAGS=1" >> $GITHUB_ENV
|
echo "CRYPTOGRAPHY_SUPPRESS_LINK_FLAGS=1" >> $GITHUB_ENV
|
||||||
case $arch in
|
case $RUNNER_ARCH in
|
||||||
universal2)
|
X64)
|
||||||
echo "CFLAGS=-I${OPENSSL_INSTALL_PATH}/include -arch arm64 -arch x86_64 ${CFLAGS}" >> $GITHUB_ENV
|
|
||||||
echo "ARCHFLAGS=-arch x86_64 -arch arm64" >> $GITHUB_ENV
|
|
||||||
;;
|
|
||||||
x86_64)
|
|
||||||
echo "CFLAGS=-I${OPENSSL_INSTALL_PATH}/include ${CFLAGS}" >> $GITHUB_ENV
|
echo "CFLAGS=-I${OPENSSL_INSTALL_PATH}/include ${CFLAGS}" >> $GITHUB_ENV
|
||||||
echo "ARCHFLAGS=-arch x86_64" >> $GITHUB_ENV
|
echo "ARCHFLAGS=-arch x86_64" >> $GITHUB_ENV
|
||||||
;;
|
;;
|
||||||
aarch64)
|
ARM64)
|
||||||
echo "CFLAGS=-I${OPENSSL_INSTALL_PATH}/include ${CFLAGS}" >> $GITHUB_ENV
|
echo "CFLAGS=-I${OPENSSL_INSTALL_PATH}/include ${CFLAGS}" >> $GITHUB_ENV
|
||||||
echo "ARCHFLAGS=-arch arm64" >> $GITHUB_ENV
|
echo "ARCHFLAGS=-arch arm64" >> $GITHUB_ENV
|
||||||
;;
|
;;
|
||||||
@@ -399,18 +357,12 @@ jobs:
|
|||||||
if: matrix.goal == 'build' && runner.os != 'Windows' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
if: matrix.goal == 'build' && runner.os != 'Windows' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd "${PYTHON_SOURCE_PATH}"
|
cd "${PYTHON_SOURCE_PATH}"
|
||||||
if ([ "${RUNNER_OS}" == "macOS" ] && [ "$arch" == "universal2" ]); then
|
|
||||||
extra_args=( "--enable-universalsdk" "--with-universal-archs=universal2" )
|
|
||||||
else
|
|
||||||
extra_args=( )
|
|
||||||
fi
|
|
||||||
./configure --with-openssl="${OPENSSL_INSTALL_PATH}" \
|
./configure --with-openssl="${OPENSSL_INSTALL_PATH}" \
|
||||||
--prefix="${PYTHON_INSTALL_PATH}" \
|
--prefix="${PYTHON_INSTALL_PATH}" \
|
||||||
--enable-shared \
|
--enable-shared \
|
||||||
--with-ensurepip=upgrade \
|
--with-ensurepip=upgrade \
|
||||||
--enable-optimizations \
|
--enable-optimizations \
|
||||||
--with-lto \
|
--with-lto || : # exit 0
|
||||||
"${extra_args[@]}" || : # exit 0
|
|
||||||
cat config.log
|
cat config.log
|
||||||
|
|
||||||
- name: Windows Get External Python deps
|
- name: Windows Get External Python deps
|
||||||
@@ -430,10 +382,15 @@ jobs:
|
|||||||
Remove-Item -recurse -force "${env:OPENSSL_EXT_PATH}*"
|
Remove-Item -recurse -force "${env:OPENSSL_EXT_PATH}*"
|
||||||
# Emulate what this script does:
|
# Emulate what this script does:
|
||||||
# https://github.com/python/cpython/blob/main/PCbuild/openssl.vcxproj
|
# https://github.com/python/cpython/blob/main/PCbuild/openssl.vcxproj
|
||||||
$env:OPENSSL_EXT_TARGET_PATH = "${env:OPENSSL_EXT_PATH}${env:PYEXTERNALS_PATH}"
|
if (${env:RUNNER_ARCH} -eq "X64") {
|
||||||
|
$env:ossl_path = "amd64"
|
||||||
|
} elseif (${env:RUNNER_ARCH} -eq "ARM64") {
|
||||||
|
$env:ossl_path = "arm64"
|
||||||
|
}
|
||||||
|
$env:OPENSSL_EXT_TARGET_PATH = "${env:OPENSSL_EXT_PATH}${env:ossl_path}"
|
||||||
echo "Copying our OpenSSL to ${env:OPENSSL_EXT_TARGET_PATH}"
|
echo "Copying our OpenSSL to ${env:OPENSSL_EXT_TARGET_PATH}"
|
||||||
mkdir "${env:OPENSSL_EXT_TARGET_PATH}\include\openssl\"
|
mkdir "${env:OPENSSL_EXT_TARGET_PATH}\include\openssl\"
|
||||||
Copy-Item -Path "${env:GITHUB_WORKSPACE}/src/openssl-${env:openssl_archs}\LICENSE.txt" -Destination "${env:OPENSSL_EXT_TARGET_PATH}\LICENSE" -Verbose
|
Copy-Item -Path "${env:OPENSSL_SOURCE_PATH}\LICENSE.txt" -Destination "${env:OPENSSL_EXT_TARGET_PATH}\LICENSE"
|
||||||
cp -v "$env:OPENSSL_INSTALL_PATH\lib\*" "${env:OPENSSL_EXT_TARGET_PATH}"
|
cp -v "$env:OPENSSL_INSTALL_PATH\lib\*" "${env:OPENSSL_EXT_TARGET_PATH}"
|
||||||
cp -v "$env:OPENSSL_INSTALL_PATH\bin\*" "${env:OPENSSL_EXT_TARGET_PATH}"
|
cp -v "$env:OPENSSL_INSTALL_PATH\bin\*" "${env:OPENSSL_EXT_TARGET_PATH}"
|
||||||
cp -v "$env:OPENSSL_INSTALL_PATH\include\openssl\*" "${env:OPENSSL_EXT_TARGET_PATH}\include\openssl\"
|
cp -v "$env:OPENSSL_INSTALL_PATH\include\openssl\*" "${env:OPENSSL_EXT_TARGET_PATH}\include\openssl\"
|
||||||
@@ -454,8 +411,15 @@ jobs:
|
|||||||
cd "${env:PYTHON_SOURCE_PATH}"
|
cd "${env:PYTHON_SOURCE_PATH}"
|
||||||
# We need out custom openssl.props which uses OpenSSL 3 DLL names
|
# We need out custom openssl.props which uses OpenSSL 3 DLL names
|
||||||
Copy-Item -Path "${env:GITHUB_WORKSPACE}\src\tools\openssl.props" -Destination PCBuild\ -Verbose
|
Copy-Item -Path "${env:GITHUB_WORKSPACE}\src\tools\openssl.props" -Destination PCBuild\ -Verbose
|
||||||
echo "Building for ${env:PYBUILDRELEASE_ARCH}..."
|
if (${env:RUNNER_ARCH} -eq "X64") {
|
||||||
PCBuild\build.bat -m --pgo -c Release -p "${env:PYBUILDRELEASE_ARCH}"
|
$env:arch = "x64"
|
||||||
|
PCBuild\build.bat -c Release -p $env:arch --pgo
|
||||||
|
} elseif (${env:RUNNER_ARCH} -eq "ARM64") {
|
||||||
|
$env:arch = "ARM64"
|
||||||
|
# TODO: figure out why Windows ARM64 isn't compat with PGO optimiazation
|
||||||
|
# causes 10-20% slowdown in Python
|
||||||
|
PCBuild\build.bat -c Release -p $env:arch
|
||||||
|
}
|
||||||
|
|
||||||
- name: Mac/Linux Build Python
|
- name: Mac/Linux Build Python
|
||||||
if: matrix.goal == 'build' && runner.os != 'Windows' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
if: matrix.goal == 'build' && runner.os != 'Windows' && steps.cache-python-ssl.outputs.cache-hit != 'true'
|
||||||
@@ -482,46 +446,43 @@ jobs:
|
|||||||
- name: Upgrade pip, wheel, etc
|
- name: Upgrade pip, wheel, etc
|
||||||
run: |
|
run: |
|
||||||
curl $curl_retry -O https://bootstrap.pypa.io/get-pip.py
|
curl $curl_retry -O https://bootstrap.pypa.io/get-pip.py
|
||||||
"${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 --upgrade setuptools
|
"$PYTHON" -m pip install setuptools
|
||||||
|
"$PYTHON" -m pip install --upgrade importlib-metadata
|
||||||
|
"$PYTHON" -m pip install --upgrade setuptools-scm
|
||||||
|
"$PYTHON" -m pip list
|
||||||
|
|
||||||
|
- name: Custom wheels for Win arm64
|
||||||
|
if: runner.os == 'Windows' && runner.arch == 'ARM64'
|
||||||
|
run: |
|
||||||
|
latest_lxml_whl=$(curl https://api.github.com/repos/GAM-team/lxml-wheel/releases/latest -s | jq -r .assets.[0].browser_download_url)
|
||||||
|
echo "Downloading ${latest_lxml_whl}..."
|
||||||
|
curl -O -L "$latest_lxml_whl"
|
||||||
|
"$PYTHON" -m pip install lxml*.whl
|
||||||
|
latest_crypt_whl=$(curl https://api.github.com/repos/jay0lee/cryptography/releases/latest -s | jq -r .assets.[0].browser_download_url)
|
||||||
|
echo "Downloading ${latest_crypt_whl}..."
|
||||||
|
curl -O -L "$latest_crypt_whl"
|
||||||
|
"$PYTHON" -m pip install cryptography*.whl
|
||||||
|
|
||||||
|
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||||
|
|
||||||
|
# - name: Compile cryptography from source (no legacy)
|
||||||
|
# if: runner.os != 'Windows' || runner.arch != 'ARM64'
|
||||||
|
# run: |
|
||||||
|
# pip install --no-binary ":all:" --force cryptography
|
||||||
|
|
||||||
- name: Install pip requirements
|
- name: Install pip requirements
|
||||||
run: |
|
run: |
|
||||||
echo "before anything..."
|
echo "before anything..."
|
||||||
"${PYTHON}" -m pip list
|
"$PYTHON" -m pip list
|
||||||
if ([ "${RUNNER_OS}" == "macOS" ] && [ "$arch" == "universal2" ]); then
|
"$PYTHON" -m pip install --upgrade -r requirements.txt
|
||||||
# cffi is a dep of cryptography and doesn't ship
|
echo "after requirements..."
|
||||||
# a universal2 wheel so we must build one ourself :-/
|
"$PYTHON" -m pip list
|
||||||
export CFLAGS="-arch x86_64 -arch arm64"
|
#"$PYTHON" -m pip install --force-reinstall --no-deps --upgrade cryptography
|
||||||
export ARCHFLAGS="-arch x86_64 -arch arm64"
|
|
||||||
"${PYTHON}" -m pip install --upgrade --force-reinstall --no-binary :all: \
|
|
||||||
--no-cache-dir --no-deps --use-pep517 \
|
|
||||||
--use-feature=no-binary-enable-wheel-cache \
|
|
||||||
cffi
|
|
||||||
echo "before cryptography..."
|
|
||||||
"${PYTHON}" -m pip list
|
|
||||||
# cryptography has a universal2 wheel but getting it installed
|
|
||||||
# on x86-64 MacOS is a royal pain in the keester.
|
|
||||||
"${PYTHON}" -m pip download --only-binary :all: \
|
|
||||||
--dest . \
|
|
||||||
--no-cache \
|
|
||||||
--no-deps \
|
|
||||||
--platform macosx_10_15_universal2 \
|
|
||||||
cryptography
|
|
||||||
"${PYTHON}" -m pip install --force-reinstall --no-deps cryptography*.whl
|
|
||||||
echo "after cryptography..."
|
|
||||||
"${PYTHON}" -m pip list
|
|
||||||
"${PYTHON}" -m pip install --upgrade --no-binary :all: -r requirements.txt
|
|
||||||
else
|
|
||||||
"${PYTHON}" -m pip install --upgrade -r requirements.txt
|
|
||||||
echo "after requirements..."
|
|
||||||
"${PYTHON}" -m pip list
|
|
||||||
"${PYTHON}" -m pip install --force-reinstall --no-deps --upgrade cryptography
|
|
||||||
fi
|
|
||||||
echo "after everything..."
|
echo "after everything..."
|
||||||
"${PYTHON}" -m pip list
|
"$PYTHON" -m pip list
|
||||||
|
|
||||||
- name: Install PyInstaller
|
- name: Install PyInstaller
|
||||||
if: matrix.goal == 'build'
|
if: matrix.goal == 'build'
|
||||||
@@ -534,14 +495,7 @@ jobs:
|
|||||||
# remove pre-compiled bootloaders so we fail if bootloader compile fails
|
# remove pre-compiled bootloaders so we fail if bootloader compile fails
|
||||||
rm -rvf PyInstaller/bootloader/*-*/*
|
rm -rvf PyInstaller/bootloader/*-*/*
|
||||||
cd bootloader
|
cd bootloader
|
||||||
export PYINSTALLER_BUILD_ARGS=""
|
"${PYTHON}" ./waf all
|
||||||
case "${arch}" in
|
|
||||||
"Win64")
|
|
||||||
export PYINSTALLER_BUILD_ARGS="--target-arch=64bit"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
echo "PyInstaller build arguments: ${PYINSTALLER_BUILD_ARGS}"
|
|
||||||
"${PYTHON}" ./waf all $PYINSTALLER_BUILD_ARGS
|
|
||||||
cd ..
|
cd ..
|
||||||
echo "---- Installing PyInstaller ----"
|
echo "---- Installing PyInstaller ----"
|
||||||
"${PYTHON}" -m pip install .
|
"${PYTHON}" -m pip install .
|
||||||
@@ -652,14 +606,12 @@ jobs:
|
|||||||
echo "GAM Version ${GAMVERSION}"
|
echo "GAM Version ${GAMVERSION}"
|
||||||
echo "GAMVERSION=${GAMVERSION}" >> $GITHUB_ENV
|
echo "GAMVERSION=${GAMVERSION}" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Configure service account auth
|
- name: Configure user and service account auth
|
||||||
id: configserviceaccount
|
id: configserviceaccount
|
||||||
env:
|
env:
|
||||||
PASSCODE: ${{ secrets.PASSCODE }}
|
oa2: ${{ secrets[format('GAM_GHA_{0}', matrix.jid)] }}
|
||||||
run: |
|
run: |
|
||||||
source ../.github/actions/decrypt.sh ../.github/actions/creds.tar.xz.gpg creds.tar.xz "${GAMCFGDIR}"
|
../.github/actions/decrypt.sh "${GAMCFGDIR}"
|
||||||
mv -v "${GAMCFGDIR}/oauth2.txt-gam-gha-${JID}" "${GAMCFGDIR}/oauth2.txt"
|
|
||||||
rm -v $GAMCFGDIR/oauth2.txt-gam*
|
|
||||||
$gam create signjwtserviceaccount
|
$gam create signjwtserviceaccount
|
||||||
|
|
||||||
- name: Upload gam.exe Windows for signing
|
- name: Upload gam.exe Windows for signing
|
||||||
@@ -707,22 +659,29 @@ jobs:
|
|||||||
else
|
else
|
||||||
libver="glibc$(ldd --version | awk '/ldd/{print $NF}')"
|
libver="glibc$(ldd --version | awk '/ldd/{print $NF}')"
|
||||||
fi
|
fi
|
||||||
GAM_ARCHIVE="${GITHUB_WORKSPACE}/gam-${GAMVERSION}-linux-$(arch)-${libver}.tar.xz"
|
GAM_ARCHIVE="${GITHUB_WORKSPACE}/gam-${GAMVERSION}-linux-${arch}-${libver}.tar.xz"
|
||||||
fi
|
fi
|
||||||
echo "GAM Archive ${GAM_ARCHIVE}"
|
echo "GAM Archive ${GAM_ARCHIVE}"
|
||||||
tar -C "${gampath}/.." --create --verbose --exclude-from "${GITHUB_WORKSPACE}/.github/actions/package_exclusions.txt" --file $GAM_ARCHIVE --xz gam7
|
tar -C "${gampath}/.." --create --verbose --exclude-from "${GITHUB_WORKSPACE}/.github/actions/package_exclusions.txt" --file $GAM_ARCHIVE --xz gam7
|
||||||
|
|
||||||
- name: Windows package
|
- name: Install Wix on Win ARM64
|
||||||
|
if: runner.os == 'Windows' && runner.arch == 'ARM64'
|
||||||
|
run: |
|
||||||
|
choco install wixtoolset
|
||||||
|
|
||||||
|
- name: Windows package zip
|
||||||
if: runner.os == 'Windows' && matrix.goal != 'test'
|
if: runner.os == 'Windows' && matrix.goal != 'test'
|
||||||
run: |
|
run: |
|
||||||
echo "started in $(pwd)"
|
echo "started in $(pwd)"
|
||||||
cd "${gampath}/.."
|
cd "${gampath}/.."
|
||||||
echo "moved to $(pwd)"
|
echo "moved to $(pwd)"
|
||||||
GAM_ARCHIVE="${GITHUB_WORKSPACE}/gam-${GAMVERSION}-windows-${GAM_ARCHIVE_ARCH}.zip"
|
GAM_ARCHIVE="${GITHUB_WORKSPACE}/gam-${GAMVERSION}-windows-${arch}.zip"
|
||||||
/c/Program\ Files/7-Zip/7z.exe a -tzip "$GAM_ARCHIVE" gam7 "-xr@${GITHUB_WORKSPACE}/.github/actions/package_exclusions.txt" -bb3
|
/c/Program\ Files/7-Zip/7z.exe a -tzip "$GAM_ARCHIVE" gam7 "-xr@${GITHUB_WORKSPACE}/.github/actions/package_exclusions.txt" -bb3
|
||||||
cd ../..
|
|
||||||
echo "moved to $(pwd)"
|
- name: Windows package MSI
|
||||||
export MSI_FILENAME="${GITHUB_WORKSPACE}/gam-${GAMVERSION}-windows-${GAM_ARCHIVE_ARCH}.msi"
|
if: runner.os == 'Windows' && matrix.goal != 'test'
|
||||||
|
run: |
|
||||||
|
export MSI_FILENAME="${GITHUB_WORKSPACE}/gam-${GAMVERSION}-windows-${arch}.msi"
|
||||||
# auto-generate a lib.wxs based on the files PyInstaller created for the lib/ directory
|
# auto-generate a lib.wxs based on the files PyInstaller created for the lib/ directory
|
||||||
/c/Program\ Files\ \(x86\)/WiX\ Toolset\ v3.14/bin/heat.exe dir "${gampath}/lib" -ke -srd -cg Lib -gg -dr lib -directoryid lib -out lib.wxs
|
/c/Program\ Files\ \(x86\)/WiX\ Toolset\ v3.14/bin/heat.exe dir "${gampath}/lib" -ke -srd -cg Lib -gg -dr lib -directoryid lib -out lib.wxs
|
||||||
$PYTHON tools/gen-wix-xml-filelist.py lib.wxs
|
$PYTHON tools/gen-wix-xml-filelist.py lib.wxs
|
||||||
|
|||||||
2
.github/workflows/pypi.yml
vendored
2
.github/workflows/pypi.yml
vendored
@@ -31,3 +31,5 @@ jobs:
|
|||||||
|
|
||||||
- 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@release/v1
|
||||||
|
with:
|
||||||
|
attestation: true
|
||||||
|
|||||||
@@ -7,20 +7,22 @@ authors = [
|
|||||||
{ name="Jay Lee", email="jay0lee@gmail.com" },
|
{ name="Jay Lee", email="jay0lee@gmail.com" },
|
||||||
{ name="Ross Scroggs", email="Ross.Scroggs@gmail.com" },
|
{ name="Ross Scroggs", email="Ross.Scroggs@gmail.com" },
|
||||||
]
|
]
|
||||||
|
# # The following files should be edited to match: setup.cfg, requirements.txt
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"chardet",
|
"chardet>=5.2.0",
|
||||||
"cryptography",
|
"cryptography>=44.0.2",
|
||||||
"distro; sys_platform=='linux'",
|
"distro; sys_platform=='linux'",
|
||||||
"filelock",
|
"filelock>=3.18.0",
|
||||||
"google-api-python-client>=2.1",
|
"google-api-python-client>=2.167.0",
|
||||||
"google-auth-httplib2",
|
"google-auth-httplib2>=0.2.0",
|
||||||
"google-auth-oauthlib>=0.4.1",
|
"google-auth-oauthlib>=1.2.2",
|
||||||
"google-auth>=2.3.2",
|
"google-auth>=2.39.0",
|
||||||
"httplib2>=0.17.0",
|
"httplib2>=0.22.0",
|
||||||
"lxml",
|
"lxml>=5.4.0",
|
||||||
"passlib>=1.7.2",
|
"passlib>=1.7.4",
|
||||||
"pathvalidate",
|
"pathvalidate>=3.2.3",
|
||||||
"python-dateutil",
|
"python-dateutil",
|
||||||
|
"yubikey-manager>=5.6.1",
|
||||||
]
|
]
|
||||||
description = "CLI tool to manage Google Workspace"
|
description = "CLI tool to manage Google Workspace"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
@@ -39,7 +41,7 @@ license = {text = "Apache License (2.0)"}
|
|||||||
license-files = ["LICEN[CS]E*"]
|
license-files = ["LICEN[CS]E*"]
|
||||||
|
|
||||||
[project.optional-dependencies]
|
[project.optional-dependencies]
|
||||||
yubikey = ["yubikey-manager>=5.0"]
|
yubikey = ["yubikey-manager>=5.6.1"]
|
||||||
|
|
||||||
[project.scripts]
|
[project.scripts]
|
||||||
gam = "gam.__main__:main"
|
gam = "gam.__main__:main"
|
||||||
|
|||||||
@@ -322,7 +322,8 @@ If an item contains spaces, it should be surrounded by ".
|
|||||||
wsess | workspaceesentials | gsuiteessentials | essentials | d4e | driveenterprise | drive4enterprise | 1010060001 | Google Workspace Essentials |
|
wsess | workspaceesentials | gsuiteessentials | essentials | d4e | driveenterprise | drive4enterprise | 1010060001 | Google Workspace Essentials |
|
||||||
wsessplus | workspaceessentialsplus | 1010060005 | Google Workspace Essentials Plus |
|
wsessplus | workspaceessentialsplus | 1010060005 | Google Workspace Essentials Plus |
|
||||||
wsflw | workspacefrontline | workspacefrontlineworker | 1010020030 | Google Workspace Frontline Starter |
|
wsflw | workspacefrontline | workspacefrontlineworker | 1010020030 | Google Workspace Frontline Starter |
|
||||||
wsflwstan | workspacefrontlinestan | workspacefrontlineworkerstan | 1010020031 | Google Workspace Frontline Standard
|
wsflwstan | workspacefrontlinestan | workspacefrontlineworkerstan | 1010020031 | Google Workspace Frontline Standard |
|
||||||
|
wsflwplus | workspacefrontlineplus | workspacefrontlineworkerplus | 1010020034 | Google Workspace Frontline Plus
|
||||||
|
|
||||||
## Items built from primitives
|
## Items built from primitives
|
||||||
|
|
||||||
@@ -782,7 +783,7 @@ Items, separated by spaces, with spaces, commas or single quotes in the items th
|
|||||||
|
|
||||||
## Collections of ChromeOS Devices
|
## Collections of ChromeOS Devices
|
||||||
|
|
||||||
Specify a collection of ChromeOS devices by directly specifying them or by specifiying items that will yield a list of ChromeOS devices.
|
Specify a collection of ChromeOS devices by directly specifying them or by specifying items that will yield a list of ChromeOS devices.
|
||||||
|
|
||||||
<CrOSTypeEntity> ::=
|
<CrOSTypeEntity> ::=
|
||||||
(all cros)|
|
(all cros)|
|
||||||
@@ -865,7 +866,7 @@ Specify a collection of ChromeOS devices by directly specifying them or by speci
|
|||||||
|
|
||||||
## Collections of Users
|
## Collections of Users
|
||||||
|
|
||||||
Specify a collection of Users by directly specifying them or by specifiying items that will yield a list of users.
|
Specify a collection of Users by directly specifying them or by specifying items that will yield a list of users.
|
||||||
|
|
||||||
<UserTypeEntity> ::=
|
<UserTypeEntity> ::=
|
||||||
(all users|users_ns|users_susp|users_ns_susp)|
|
(all users|users_ns|users_susp|users_ns_susp)|
|
||||||
@@ -1382,7 +1383,7 @@ gam show projects [[admin] <EmailAddress>] [all|<ProjectIDEntity>]
|
|||||||
[states all|active|deleterequested] [showiampolicies 0|1|3]
|
[states all|active|deleterequested] [showiampolicies 0|1|3]
|
||||||
gam print projects [[admin] <EmailAddress>] [all|<ProjectIDEntity>] [todrive <ToDriveAttribute>*]
|
gam print projects [[admin] <EmailAddress>] [all|<ProjectIDEntity>] [todrive <ToDriveAttribute>*]
|
||||||
[states all|active|deleterequested] [showiampolicies 0|1|3 [onememberperrow]]
|
[states all|active|deleterequested] [showiampolicies 0|1|3 [onememberperrow]]
|
||||||
[delimiter <Character>]] [[formatjson [quotechar <Character>]]
|
[delimiter <Character>] [[formatjson [quotechar <Character>]]
|
||||||
gam info currentprojectid
|
gam info currentprojectid
|
||||||
|
|
||||||
gam create|add svcacct [[admin] <EmailAddress>] [<ProjectIDEntity>]
|
gam create|add svcacct [[admin] <EmailAddress>] [<ProjectIDEntity>]
|
||||||
@@ -1460,16 +1461,21 @@ gam <UserTypeEntity> update serviceaccount (scope|scopes <APIScopeURLList>)*
|
|||||||
gam print privileges [todrive <ToDriveAttribute>*]
|
gam print privileges [todrive <ToDriveAttribute>*]
|
||||||
gam show privileges
|
gam show privileges
|
||||||
|
|
||||||
|
<Privilege> ::= <String>
|
||||||
|
<PrivilegeList> ::= "<Privilege>(,<Privilege)*"
|
||||||
<RoleAssignmentID> ::= <String>
|
<RoleAssignmentID> ::= <String>
|
||||||
<RoleItem> ::= id:<String>|uid:<string>|<String>
|
<RoleItem> ::= id:<String>|uid:<string>|<String>
|
||||||
|
|
||||||
gam create adminrole <String> privileges all|all_ou|<PrivilegesList> [description <String>]
|
gam create adminrole <String> [description <String>]
|
||||||
gam update adminrole <RoleItem> [name <String>] [privileges all|all_ou|<PrivilegesList>] [description <String>]
|
privileges all|all_ou|<PrivilegesList>|(select <FileSelector>|<CSVFileSelector>)
|
||||||
|
gam update adminrole <RoleItem> [name <String>] [description <String>]
|
||||||
|
[privileges all|all_ou|<PrivilegesList>|(select <FileSelector>|<CSVFileSelector>)]
|
||||||
gam delete adminrole <RoleItem>
|
gam delete adminrole <RoleItem>
|
||||||
gam info adminrole <RoleItem> [privileges]
|
gam info adminrole <RoleItem> [privileges]
|
||||||
gam print adminroles|roles [todrive <ToDriveAttribute>*]
|
gam print adminroles|roles [todrive <ToDriveAttribute>*]
|
||||||
[privileges] [oneitemperrow]
|
[role <RoleItem>] [privileges] [oneitemperrow]
|
||||||
gam show adminroles|roles [privileges]
|
gam show adminroles|roles
|
||||||
|
[role <RoleItem>] [privileges]
|
||||||
|
|
||||||
gam create|add admin <EmailAddress>|<UniqueID> <RoleItem> customer|(org_unit <OrgUnitItem>)
|
gam create|add admin <EmailAddress>|<UniqueID> <RoleItem> customer|(org_unit <OrgUnitItem>)
|
||||||
[condition securitygroup|nonsecuritygroup]
|
[condition securitygroup|nonsecuritygroup]
|
||||||
@@ -1522,17 +1528,6 @@ gam print alias|aliases [todrive <ToDriveAttribute>*]
|
|||||||
|
|
||||||
gam whatis <EmailItem> [noinfo] [noinivitablecheck]
|
gam whatis <EmailItem> [noinfo] [noinivitablecheck]
|
||||||
|
|
||||||
# Analytics UA
|
|
||||||
|
|
||||||
gam <UserTypeEntity> print analyticuaproperties [todrive <ToDriveAttribute>*]
|
|
||||||
accountid [accounts/]<String>
|
|
||||||
[maxresults <Integer>]
|
|
||||||
[formatjson [quotechar <Character>]]
|
|
||||||
gam <UserTypeEntity> show analyticuaproperties
|
|
||||||
accountid [accounts/]<String>
|
|
||||||
[maxresults <Integer>]
|
|
||||||
[formatjson]
|
|
||||||
|
|
||||||
# Analytics Admin
|
# Analytics Admin
|
||||||
|
|
||||||
gam <UserTypeEntity> print analyticaccounts [todrive <ToDriveAttribute>*]
|
gam <UserTypeEntity> print analyticaccounts [todrive <ToDriveAttribute>*]
|
||||||
@@ -1867,7 +1862,7 @@ gam calendar|calendars <CalendarEntity> show events [<EventEntity>] <EventDispla
|
|||||||
[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]
|
[countsonly [eventrowfilter]]
|
||||||
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
||||||
|
|
||||||
gam calendar <CalendarEntity> addevent <EventAttribute>+ [<EventNotificationAttribute>]
|
gam calendar <CalendarEntity> addevent <EventAttribute>+ [<EventNotificationAttribute>]
|
||||||
@@ -1881,7 +1876,7 @@ gam calendar <CalendarEntity> moveevent (id|eventid <EventID>)+ destination <Cal
|
|||||||
gam calendar <CalendarEntity> wipe
|
gam calendar <CalendarEntity> wipe
|
||||||
gam calendar <CalendarEntity> printevents <EventSelectProperty>* <EventDisplayProperty>*
|
gam calendar <CalendarEntity> printevents <EventSelectProperty>* <EventDisplayProperty>*
|
||||||
[fields <EventFieldNameList>] [showdayofweek]
|
[fields <EventFieldNameList>] [showdayofweek]
|
||||||
[countsonly]
|
[countsonly [eventrowfilter]]
|
||||||
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
||||||
|
|
||||||
<CalendarSettingsField> ::=
|
<CalendarSettingsField> ::=
|
||||||
@@ -2401,12 +2396,14 @@ gam <CrOSTypeEntity> update <CrOSAttribute>+ [quickcrosmove [<Boolean>]] [nobatc
|
|||||||
autoupdatethrough|
|
autoupdatethrough|
|
||||||
backlightinfo|
|
backlightinfo|
|
||||||
bootmode|
|
bootmode|
|
||||||
|
chromeostype|
|
||||||
cpuinfo|
|
cpuinfo|
|
||||||
cpustatusreports|
|
cpustatusreports|
|
||||||
deprovisionreason|
|
deprovisionreason|
|
||||||
devicefiles|
|
devicefiles|
|
||||||
deviceid|
|
deviceid|
|
||||||
devicelicensetype|
|
devicelicensetype|
|
||||||
|
diskspaceusage|
|
||||||
diskvolumereports|
|
diskvolumereports|
|
||||||
dockmacaddress|
|
dockmacaddress|
|
||||||
ethernetmacaddress|
|
ethernetmacaddress|
|
||||||
@@ -2414,6 +2411,7 @@ gam <CrOSTypeEntity> update <CrOSAttribute>+ [quickcrosmove [<Boolean>]] [nobatc
|
|||||||
extendedsupporteligible|
|
extendedsupporteligible|
|
||||||
extendedsupportstart|
|
extendedsupportstart|
|
||||||
extendedsupportenabled|
|
extendedsupportenabled|
|
||||||
|
faninfo|
|
||||||
firmwareversion|
|
firmwareversion|
|
||||||
firstenrollmenttime|
|
firstenrollmenttime|
|
||||||
lastdeprovisiontimestamp|
|
lastdeprovisiontimestamp|
|
||||||
@@ -3550,19 +3548,6 @@ gam print contacts [todrive <ToDriveAttribute>*] <ContactSelection>
|
|||||||
[fields <ContactFieldNameList>]
|
[fields <ContactFieldNameList>]
|
||||||
[formatjson [quotechar <Character>]]
|
[formatjson [quotechar <Character>]]
|
||||||
|
|
||||||
vgam info gal <ContactEntity>
|
|
||||||
[basic|full]
|
|
||||||
[fields <ContactFieldNameList>]
|
|
||||||
[formatjson]
|
|
||||||
gam show gal <ContactSelection>
|
|
||||||
[basic|full] [orderby <ContactOrderByFieldName> [ascending|descending]]
|
|
||||||
[fields <ContactFieldNameList>]
|
|
||||||
[formatjson]
|
|
||||||
gam print gal [todrive <ToDriveAttribute>*] <ContactSelection>
|
|
||||||
[basic|full] [orderby <ContactOrderByFieldName> [ascending|descending]]
|
|
||||||
[fields <ContactFieldNameList>]
|
|
||||||
[formatjson [quotechar <Character>]]
|
|
||||||
|
|
||||||
# Domain - People Contacts and Profiles
|
# Domain - People Contacts and Profiles
|
||||||
|
|
||||||
<PeopleSourceName> ::=
|
<PeopleSourceName> ::=
|
||||||
@@ -4134,7 +4119,7 @@ gam print devices [todrive <ToDriveAttribute>*]
|
|||||||
<DeviceFieldName>* [fields <DeviceFieldNameList>] [userfields <DeviceUserFieldNameList>]
|
<DeviceFieldName>* [fields <DeviceFieldNameList>] [userfields <DeviceUserFieldNameList>]
|
||||||
[orderby <DeviceOrderByFieldName> [ascending|descending]]
|
[orderby <DeviceOrderByFieldName> [ascending|descending]]
|
||||||
[all|company|personal|nocompanydevices|nopersonaldevices]
|
[all|company|personal|nocompanydevices|nopersonaldevices]
|
||||||
[nodeviceusers]
|
[nodeviceusers|oneuserperrow]
|
||||||
[formatjson [quotechar <Character>]]
|
[formatjson [quotechar <Character>]]
|
||||||
[showitemcountonly]
|
[showitemcountonly]
|
||||||
|
|
||||||
@@ -4458,6 +4443,7 @@ gam report usage customer [todrive <ToDriveAttribute>*]
|
|||||||
domain|
|
domain|
|
||||||
drive|doc|docs|
|
drive|doc|docs|
|
||||||
gcp|
|
gcp|
|
||||||
|
gemini|geminiforworkspace|
|
||||||
groups|group|
|
groups|group|
|
||||||
groupsenterprise|enterprisegroups|
|
groupsenterprise|enterprisegroups|
|
||||||
jamboard|
|
jamboard|
|
||||||
@@ -4833,6 +4819,17 @@ gam show shareddrives
|
|||||||
[fields <SharedDriveFieldNameList>] [noorgunits [<Boolean>]]
|
[fields <SharedDriveFieldNameList>] [noorgunits [<Boolean>]]
|
||||||
[formatjson] [noorgunits [<Boolean>]]
|
[formatjson] [noorgunits [<Boolean>]]
|
||||||
|
|
||||||
|
gam print shareddriveorganizers [todrive <ToDriveAttribute>*]
|
||||||
|
[(shareddriveadminquery|query <QuerySharedDrive>) |
|
||||||
|
(shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>)))]
|
||||||
|
[orgunit|org|ou <OrgUnitPath>]
|
||||||
|
[matchname <REMatchPattern>]
|
||||||
|
[domainlist <DomainList>]
|
||||||
|
[includetypes <OrganizerTypeList>]
|
||||||
|
[oneorganizer [<Boolean>]]
|
||||||
|
[shownorganizerdrives [false|true|only]]
|
||||||
|
[includefileorganizers [<Boolean>]]
|
||||||
|
[delimiter <Character>]
|
||||||
gam print oushareddrives [todrive <ToDriveAttribute>*]
|
gam print oushareddrives [todrive <ToDriveAttribute>*]
|
||||||
[ou|org|orgunit <OrgUnitPath>]
|
[ou|org|orgunit <OrgUnitPath>]
|
||||||
[formatjson [quotechar <Character>]]
|
[formatjson [quotechar <Character>]]
|
||||||
@@ -5257,7 +5254,10 @@ gam show vaultmatters|matters [matterstate <MatterStateList>]
|
|||||||
|
|
||||||
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
||||||
matter <MatterItem> corpus mail|groups
|
matter <MatterItem> corpus mail|groups
|
||||||
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
[(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone]
|
||||||
|
[(shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
(rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
(sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))]
|
||||||
[scope [all_data|held_data|unprocessed_data]]
|
[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>]
|
||||||
@@ -5267,12 +5267,15 @@ gam print vaultcounts [todrive <ToDriveAttributes>*]
|
|||||||
|
|
||||||
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>] corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
|
||||||
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
||||||
(shareddrives|teamdrives <SharedDriveIDList>) | (rooms <RoomList>) | (sitesurl <URLList>)
|
(shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
(rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
(sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
|
||||||
[scope all_data|held_data|unprocessed_data]
|
[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>]
|
||||||
[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>] [driveversiondate <Date>|<Time>] [includeaccessinfo <Boolean>]
|
[(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
|
||||||
|
[driveversiondate <Date>|<Time>] [includeaccessinfo <Boolean>]
|
||||||
[driveclientsideencryption any|encrypted|unencrypted]
|
[driveclientsideencryption any|encrypted|unencrypted]
|
||||||
[includerooms <Boolean>]
|
[includerooms <Boolean>]
|
||||||
[excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
[excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
||||||
@@ -5338,14 +5341,14 @@ gam create vaulthold|hold matter <MatterItem> [name <String>] corpus calendar|dr
|
|||||||
[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|includeteamdrives <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|includeteamdrives <Boolean>]
|
[includeshareddrives <Boolean>]
|
||||||
[showdetails]
|
[showdetails]
|
||||||
gam delete vaulthold|hold <HoldItem> matter <MatterItem>
|
gam delete vaulthold|hold <HoldItem> matter <MatterItem>
|
||||||
gam delete vaulthold|hold <MatterItem> <HoldItem>
|
gam delete vaulthold|hold <MatterItem> <HoldItem>
|
||||||
@@ -6111,7 +6114,7 @@ gam <UserTypeEntity> show events <UserCalendarEntity> [<EventEntity>] <EventDisp
|
|||||||
[formatjson]
|
[formatjson]
|
||||||
gam <UserTypeEntity> print events <UserCalendarEntity> [<EventEntity>] <EventDisplayProperty>*
|
gam <UserTypeEntity> print events <UserCalendarEntity> [<EventEntity>] <EventDisplayProperty>*
|
||||||
[fields <EventFieldNameList>] [showdayofweek]
|
[fields <EventFieldNameList>] [showdayofweek]
|
||||||
[countsonly]
|
[countsonly [eventrowfilter]]
|
||||||
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
||||||
|
|
||||||
gam <UserTypeEntity> update calattendees <UserCalendarEntity> <EventEntity> [anyorganizer]
|
gam <UserTypeEntity> update calattendees <UserCalendarEntity> <EventEntity> [anyorganizer]
|
||||||
@@ -8334,6 +8337,19 @@ gam <UserTypeEntity> show shareddrives
|
|||||||
[fields <SharedDriveFieldNameList>] [noorgunits [<Boolean>]]
|
[fields <SharedDriveFieldNameList>] [noorgunits [<Boolean>]]
|
||||||
[formatjson]
|
[formatjson]
|
||||||
|
|
||||||
|
gam <UserTypeEntity> print shareddriveorganizers [todrive <ToDriveAttribute>*]
|
||||||
|
[adminaccess|asadmin]
|
||||||
|
[(shareddriveadminquery|query <QuerySharedDrive>) |
|
||||||
|
(shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>)))]
|
||||||
|
[orgunit|org|ou <OrgUnitPath>]
|
||||||
|
[matchname <REMatchPattern>]
|
||||||
|
[domainlist <DomainList>]
|
||||||
|
[includetypes <OrganizerTypeList>]
|
||||||
|
[oneorganizer [<Boolean>]]
|
||||||
|
[shownorganizerdrives [false|true|only]]
|
||||||
|
[includefileorganizers [<Boolean>]]
|
||||||
|
[delimiter <Character>]
|
||||||
|
|
||||||
# Users - Force Signout and Turn Off 2-Step Verification
|
# Users - Force Signout and Turn Off 2-Step Verification
|
||||||
|
|
||||||
gam <UserTypeEntity> signout
|
gam <UserTypeEntity> signout
|
||||||
|
|||||||
@@ -1,3 +1,301 @@
|
|||||||
|
7.09.01
|
||||||
|
|
||||||
|
Fixed bug in `gam <UserTypeEntity> print diskusage` where the `ownedByMe` column was
|
||||||
|
blank for the top folder.
|
||||||
|
|
||||||
|
Fixed bug in `gam update chromepolicy` where the following error was generated
|
||||||
|
when updating policies with simple numerical values.
|
||||||
|
```
|
||||||
|
ERROR: Missing argument: Expected <value>"
|
||||||
|
```
|
||||||
|
|
||||||
|
7.09.00
|
||||||
|
|
||||||
|
Removed the overly broad service account `IAM and Access Management API` scope `https://www.googleapis.com/auth/cloud-platform`
|
||||||
|
from DWD. The `gam <UserTypeEntity> check|Update serviceaccount` commands issue an error message if this scope
|
||||||
|
is enabled prompting you to update your service account authorization so that the scope can be removed.
|
||||||
|
|
||||||
|
GAM commands that need IAM access now use the more limited scope `https://www.googleapis.com/auth/iam` in a non-DWD manner.
|
||||||
|
|
||||||
|
Added `enforce_expansive_access` Boolean variable to `gam.cfg` that provides the default value
|
||||||
|
for option `enforceexpansiveaccess` in all commands that delete or update drive file ACLs/permissions.
|
||||||
|
It's default value is False.
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> delete permissions
|
||||||
|
gam <UserTypeEntity> delete drivefileacl
|
||||||
|
gam <UserTypeEntity> update drivefileacl
|
||||||
|
gam <UserTypeEntity> copy drivefile
|
||||||
|
gam <UserTypeEntity> move drivefile
|
||||||
|
gam <UserTypeEntity> transfer ownership
|
||||||
|
gam <UserTypeEntity> claim ownership
|
||||||
|
gam <UserTypeEntity> transfer drive
|
||||||
|
```
|
||||||
|
|
||||||
|
Fixed bug in `gam print shareddriveorganizers` that caused a trap when an organizer was a deleted user.
|
||||||
|
|
||||||
|
Updated to Python 3.13.4
|
||||||
|
|
||||||
|
7.08.02
|
||||||
|
|
||||||
|
Updated the defaults in `gam print shareddriveorganizers` to match the most common use case, not the script.
|
||||||
|
|
||||||
|
* `domainlist` - The workspace primary domain
|
||||||
|
* `includetypes` - user
|
||||||
|
* `oneorganizer` - True
|
||||||
|
* `shownoorganizerdrives` - True
|
||||||
|
* `includefileorganizers` - False
|
||||||
|
|
||||||
|
To select organizers from any domain, use: `domainlist ""`
|
||||||
|
|
||||||
|
These commands produce the same result.
|
||||||
|
```
|
||||||
|
gam redirect csv ./TeamDriveOrganizers.csv print shareddriveorganizers domainlist mydomain.com includetypes user oneorganizer shownoorganizerdrives
|
||||||
|
gam redirect csv ./TeamDriveOrganizers.csv print shareddriveorganizers
|
||||||
|
```
|
||||||
|
|
||||||
|
7.08.01
|
||||||
|
|
||||||
|
Added option `shareddrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))` to
|
||||||
|
`gam print shareddriveorganizers` that displays organizers for a specific list of Shared Drive IDs.
|
||||||
|
|
||||||
|
7.08.00
|
||||||
|
|
||||||
|
Added the following command that can be used instead of the `GetTeamDriveOrganizers.py` script.
|
||||||
|
|
||||||
|
```
|
||||||
|
gam [<UserTypeEntity>] print shareddriveorganizers [todrive <ToDriveAttribute>*]
|
||||||
|
[adminaccess|asadmin] [shareddriveadminquery|query <QuerySharedDrive>]
|
||||||
|
[orgunit|org|ou <OrgUnitPath>]
|
||||||
|
[matchname <REMatchPattern>]
|
||||||
|
[domainlist <DomainList>]
|
||||||
|
[includetypes <OrganizerTypeList>]
|
||||||
|
[oneorganizer [<Boolean>]]
|
||||||
|
[shownorganizerdrives [false|true|only]]
|
||||||
|
[includefileorganizers [<Boolean>]]
|
||||||
|
[delimiter <Character>]
|
||||||
|
```
|
||||||
|
The command defaults match the script defaults:
|
||||||
|
* `domainlist` - All domains
|
||||||
|
* `includetypes` - user,group
|
||||||
|
* `oneorganizer` - False
|
||||||
|
* `shownoorganizerdrives` - True
|
||||||
|
* `includefileorganizers` - False
|
||||||
|
|
||||||
|
For example, to get a single organizer from your domain for all Shared Drives including no organizer drives:
|
||||||
|
```
|
||||||
|
gam redirect csv ./TeamDriveOrganizers.csv print shareddriveorganizers domainlist mydomain.com includetypes user oneorganizer shownoorganizerdrives
|
||||||
|
```
|
||||||
|
|
||||||
|
7.07.17
|
||||||
|
|
||||||
|
Added option `oneuserperrow` to `gam print devices` to have each of a
|
||||||
|
device's users displayed on a separate row with all of the other device fields.
|
||||||
|
|
||||||
|
7.07.16
|
||||||
|
|
||||||
|
Added `chromeostype`, `diskspaceusage` and `faninfo` to `<CrOSFieldName>` for use in `gam info|print cros`.
|
||||||
|
|
||||||
|
Fixed bugs/cleaned output in `gam info|print cros`.
|
||||||
|
|
||||||
|
7.07.15
|
||||||
|
|
||||||
|
Added option `shareddrivesoption included|included_if_account_is_not_a_member|not_included` to `gam create vaultexport`.
|
||||||
|
|
||||||
|
The previous option `includeshareddrives <Boolean>` is mapped as follows:
|
||||||
|
* `includeshareddrives false` - `shareddrivesoption included_if_account_is_not_a_member`
|
||||||
|
* `includeshareddrives true` - `shareddrivesoption included`
|
||||||
|
|
||||||
|
7.07.14
|
||||||
|
|
||||||
|
Update `gam setup chat` output to include the following that shows the actual Cloud Pub/Sub Topic Name.
|
||||||
|
```
|
||||||
|
You'll use projects/<ProjectID>/topics/no-topic in Connection settings Cloud Pub/Sub Topic Name
|
||||||
|
```
|
||||||
|
|
||||||
|
7.07.13
|
||||||
|
|
||||||
|
Added option `showitemcountonly` to `gam [<UserTypeEntity>] print|show shareddrives` that causes GAM to display the
|
||||||
|
number of Shared Drives on stdout; no CSV file is written.
|
||||||
|
|
||||||
|
7.07.12
|
||||||
|
|
||||||
|
Fixed bug in `gam print|show oushareddrives` that caused a trap.
|
||||||
|
|
||||||
|
Improved getting Shared Drive names from IDs when accessing Shared Drives in external workspaces.
|
||||||
|
|
||||||
|
7.07.11
|
||||||
|
|
||||||
|
Updated `gam calendars <CalendarEntity> update events` and `gam <UserTypeEntity> update events <UserCalendarEntity>`
|
||||||
|
to handle the following error:
|
||||||
|
```
|
||||||
|
ERROR: 400: badRequest - Bad Request
|
||||||
|
```
|
||||||
|
|
||||||
|
Updated `gam <UserTypeEntity> move drivefile` to handle the following error:
|
||||||
|
```
|
||||||
|
ERROR: 400: shareOutNotPermitted
|
||||||
|
```
|
||||||
|
|
||||||
|
7.07.10
|
||||||
|
|
||||||
|
Updated `gam calendars <CalendarEntity> update events` and `gam <UserTypeEntity> update events <UserCalendarEntity>`
|
||||||
|
to handle the following error:
|
||||||
|
```
|
||||||
|
ERROR: 400: eventTypeRestriction - Attendees cannot be added to 'fromGmail' event with this visibility setting.
|
||||||
|
```
|
||||||
|
|
||||||
|
7.07.09
|
||||||
|
|
||||||
|
Updated `gam calendars <CalendarEntity> update events` and `gam <UserTypeEntity> update events <UserCalendarEntity>`
|
||||||
|
to handle the following error:
|
||||||
|
```
|
||||||
|
gamlib.glgapi.serviceNotAvailable: Authentication backend unavailable.
|
||||||
|
```
|
||||||
|
|
||||||
|
7.07.08
|
||||||
|
|
||||||
|
Fixed bug in `gam <UserTypeEntity> print filelist ... countsonly` that issued an
|
||||||
|
incorrect warning message like the following when `redirect csv <FileName> multiprocess` was specified.
|
||||||
|
```
|
||||||
|
WARNING: csv_output_row_filter column "^name$" does not match any output columns
|
||||||
|
```
|
||||||
|
|
||||||
|
7.07.07
|
||||||
|
|
||||||
|
Fixed bug in `gam report <ActivityApplictionName> ... countsonly eventrowfilter` that issued an
|
||||||
|
incorrect warning message like the following when `redirect csv <FileName> multiprocess` was specified.
|
||||||
|
```
|
||||||
|
WARNING: csv_output_row_filter column "^doc_title$" does not match any output columns
|
||||||
|
```
|
||||||
|
|
||||||
|
7.07.06
|
||||||
|
|
||||||
|
Added option `eventrowfilter` to `gam calendars <CalendarEntity> print events ... countsonly`
|
||||||
|
and `gam <UserTypeEntity> print events <UserCalendarEntity> ... countsonly` that causes
|
||||||
|
GAM to apply `config csv_output_row_filter` to the event details rather than the event counts.
|
||||||
|
This will be useful when `<EventSelectProperty>` and `<EventMatchProperty>` do not have the
|
||||||
|
capabilty to select the events of interest; e.g., you want to filter based on the event `created` property.
|
||||||
|
|
||||||
|
Dropped the extraneous `id` column for `gam calendars <CalendarEntity> print events ... countsonly`
|
||||||
|
and `gam <UserTypeEntity> print events <UserCalendarEntity> ... countsonly`.
|
||||||
|
|
||||||
|
7.07.05
|
||||||
|
|
||||||
|
Updated `gam <UserTypeEntity> move drivefile` to recognize the API error: `ERROR: 400: shareOutWarning`.
|
||||||
|
|
||||||
|
7.07.04
|
||||||
|
|
||||||
|
Updated `gam create vaultexport ... rooms <ChatSpaceList>` to strip `spaces/` from the Chat Space IDs.
|
||||||
|
|
||||||
|
Updated `gam <UserTypeEntity> copy drivefile` to recognize the API error: `ERROR: 400: shareOutWarning`.
|
||||||
|
|
||||||
|
7.07.03
|
||||||
|
|
||||||
|
Updated `gam create vaultexport` to allow allow specifying a list of items in a search method
|
||||||
|
with `shareddrives|rooms|sitesurl select <FileSelector>|<CSVFileSelector>`.
|
||||||
|
|
||||||
|
7.07.02
|
||||||
|
|
||||||
|
Fixed bug in `redirect csv ... transpose` where a CSV file with multiple rows was not properly transposed.
|
||||||
|
|
||||||
|
7.07.01
|
||||||
|
|
||||||
|
Fixed bug in `gam print|show chromepolicies` that caused a trap. Made additional
|
||||||
|
updates to handle changes in the Chrome Policy API.
|
||||||
|
|
||||||
|
7.07.00
|
||||||
|
|
||||||
|
As of mid-October 2024, Google deprecated the API that retrieved the Global Address List.
|
||||||
|
|
||||||
|
The following commands have been eliminated.
|
||||||
|
```
|
||||||
|
gam info gal
|
||||||
|
gam print gal
|
||||||
|
gam show gal
|
||||||
|
```
|
||||||
|
|
||||||
|
These commands are a work-around for `gam print gal`.
|
||||||
|
```
|
||||||
|
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" redirect csv ./UserGAL.csv print users fields name,gal
|
||||||
|
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" batch_size 25 redirect csv ./GroupGAL.csv print groups fields name,gal
|
||||||
|
```
|
||||||
|
|
||||||
|
7.06.14
|
||||||
|
|
||||||
|
Updated `gam create|update adminrole` to allow specifying a collection of privileges
|
||||||
|
with `privileges select <FileSelector>|<CSVFileSelector>` which makes copying roles much simpler.
|
||||||
|
|
||||||
|
Added option `role <RoleItem>` to `gam print|show adminroles` to allow display of information
|
||||||
|
for a specific role.
|
||||||
|
|
||||||
|
7.06.13
|
||||||
|
|
||||||
|
Updated `gam print group-members ... recursive` and `gam print cigroup-members ... recursive`
|
||||||
|
to expand groups representing chat spaces.
|
||||||
|
|
||||||
|
7.06.12
|
||||||
|
|
||||||
|
Deleted commands to display Analytic UA properties; the API has been deprecated.
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> print|show analyticuaproperties
|
||||||
|
```
|
||||||
|
|
||||||
|
7.06.11
|
||||||
|
|
||||||
|
Improved `gam checkconn`.
|
||||||
|
|
||||||
|
Updated `gam print group-members` and `gam print cigroup-members` to recognize members
|
||||||
|
that are groups representing chat spaces. For now, these groups are not expanded when
|
||||||
|
`recursive` is specified.
|
||||||
|
|
||||||
|
7.06.10
|
||||||
|
|
||||||
|
Added the following license SKU.
|
||||||
|
```
|
||||||
|
1010020034 - Google Workspace Frontline Plus
|
||||||
|
```
|
||||||
|
|
||||||
|
7.06.09
|
||||||
|
|
||||||
|
Added `gemini` and `geminiforworkspace` to `<ActivityApplicationName>` for use in
|
||||||
|
`gam report <ActivityApplicationName>`.
|
||||||
|
|
||||||
|
7.06.08
|
||||||
|
|
||||||
|
Fixed problem where Yubikeys caused a trap.
|
||||||
|
|
||||||
|
7.06.07
|
||||||
|
|
||||||
|
Updated private key rotation progress messages in `gam create|use|update project`
|
||||||
|
and `gam upload sakey`.
|
||||||
|
|
||||||
|
Updated `gam use project` to display the following error message when the specifed project
|
||||||
|
already has a service account.
|
||||||
|
```
|
||||||
|
Re-run the command specify a new service account name with: saname <ServiceAccountName>'
|
||||||
|
```
|
||||||
|
|
||||||
|
7.06.06
|
||||||
|
|
||||||
|
Native support for Windows 11 Arm-based devices.
|
||||||
|
|
||||||
|
Renamed some MacOS and Linux binary installer files to align on terminology. Everything is "arm64" now, no "aarch64".
|
||||||
|
|
||||||
|
7.06.05
|
||||||
|
|
||||||
|
Updated code in `gam delete|update chromepolicy` to handle the `policyTargetKey[additionalTargetKeys]`
|
||||||
|
field in a more general manner for future use.
|
||||||
|
|
||||||
|
7.06.04
|
||||||
|
|
||||||
|
Fixed bug in `gam report <ActivityApplictionName>` where a report with no activities
|
||||||
|
was not displaying any output.
|
||||||
|
|
||||||
|
7.06.03
|
||||||
|
|
||||||
|
Fixed bug in `gam <UserTypeEntity> print|show drivelastmodification` that caused a trap
|
||||||
|
when an empty drive was specified.
|
||||||
|
|
||||||
7.06.02
|
7.06.02
|
||||||
|
|
||||||
Updated `gam <UserTypeEntity> print|show filecounts ... showlastmodification` to include
|
Updated `gam <UserTypeEntity> print|show filecounts ... showlastmodification` to include
|
||||||
|
|||||||
@@ -1,33 +1,3 @@
|
|||||||
# Operating CA: DigiCert
|
|
||||||
# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust
|
|
||||||
# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust
|
|
||||||
# Label: "Baltimore CyberTrust Root"
|
|
||||||
# Serial: 33554617
|
|
||||||
# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4
|
|
||||||
# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74
|
|
||||||
# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ
|
|
||||||
RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD
|
|
||||||
VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX
|
|
||||||
DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y
|
|
||||||
ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy
|
|
||||||
VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr
|
|
||||||
mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr
|
|
||||||
IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK
|
|
||||||
mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu
|
|
||||||
XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy
|
|
||||||
dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye
|
|
||||||
jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1
|
|
||||||
BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3
|
|
||||||
DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92
|
|
||||||
9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx
|
|
||||||
jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0
|
|
||||||
Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz
|
|
||||||
ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS
|
|
||||||
R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Operating CA: DigiCert
|
# Operating CA: DigiCert
|
||||||
# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com
|
# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com
|
||||||
# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com
|
# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ if __name__ == '__main__':
|
|||||||
# One time initialization
|
# One time initialization
|
||||||
if platform.system() != 'Linux':
|
if platform.system() != 'Linux':
|
||||||
multiprocessing.freeze_support()
|
multiprocessing.freeze_support()
|
||||||
multiprocessing.set_start_method('spawn')
|
multiprocessing.set_start_method('spawn', force=True)
|
||||||
initializeLogging()
|
initializeLogging()
|
||||||
#
|
#
|
||||||
CallGAMCommand(['gam', 'version'])
|
CallGAMCommand(['gam', 'version'])
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ GAM installation script.
|
|||||||
OPTIONS:
|
OPTIONS:
|
||||||
-h show help.
|
-h show help.
|
||||||
-d Directory where gam folder will be installed. Default is \$HOME/bin/
|
-d Directory where gam folder will be installed. Default is \$HOME/bin/
|
||||||
-a Architecture to install (i386, x86_64, x86_64_legacy, arm, arm64). Default is to detect your arch with "uname -m".
|
-a Architecture to install (x86_64, arm64). Default is to detect your arch with "uname -m".
|
||||||
-o OS we are running (linux, macos). Default is to detect your OS with "uname -s".
|
-o OS we are running (linux, macos). Default is to detect your OS with "uname -s".
|
||||||
-b OS version. Default is to detect on MacOS and Linux.
|
-b OS version. Default is to detect on MacOS and Linux.
|
||||||
-l Just upgrade GAM to latest version. Skips project creation and auth.
|
-l Just upgrade GAM to latest version. Skips project creation and auth.
|
||||||
@@ -194,7 +194,7 @@ fi
|
|||||||
case $gamos in
|
case $gamos in
|
||||||
[lL]inux)
|
[lL]inux)
|
||||||
gamos="linux"
|
gamos="linux"
|
||||||
download_urls=$(echo -e "$download_urls" | grep "\-linux-")
|
download_urls=$(echo -e "$download_urls" | grep -e "-linux-")
|
||||||
if [ "$osversion" == "" ]; then
|
if [ "$osversion" == "" ]; then
|
||||||
this_glibc_ver=$(ldd --version | awk '/ldd/{print $NF}')
|
this_glibc_ver=$(ldd --version | awk '/ldd/{print $NF}')
|
||||||
else
|
else
|
||||||
@@ -203,7 +203,7 @@ case $gamos in
|
|||||||
echo "This Linux distribution uses glibc $this_glibc_ver"
|
echo "This Linux distribution uses glibc $this_glibc_ver"
|
||||||
case $gamarch in
|
case $gamarch in
|
||||||
x86_64)
|
x86_64)
|
||||||
download_urls=$(echo -e "$download_urls" | grep "\-x86_64-")
|
download_urls=$(echo -e "$download_urls" | grep -e "-x86_64-")
|
||||||
gam_x86_64_glibc_vers=$(echo -e "$download_urls" | \
|
gam_x86_64_glibc_vers=$(echo -e "$download_urls" | \
|
||||||
grep --only-matching 'glibc[0-9\.]*\.tar\.xz$' \
|
grep --only-matching 'glibc[0-9\.]*\.tar\.xz$' \
|
||||||
| cut -c 6-9 )
|
| cut -c 6-9 )
|
||||||
@@ -218,7 +218,7 @@ case $gamos in
|
|||||||
download_url=$(echo -e "$download_urls" | grep "$useglibc")
|
download_url=$(echo -e "$download_urls" | grep "$useglibc")
|
||||||
;;
|
;;
|
||||||
arm|arm64|aarch64)
|
arm|arm64|aarch64)
|
||||||
download_urls=$(echo -e "$download_urls" | grep "\-aarch64-")
|
download_urls=$(echo -e "$download_urls" | grep -e "-arm64-\|-aarch64-")
|
||||||
gam_arm64_glibc_vers=$(echo -e "$download_urls" | \
|
gam_arm64_glibc_vers=$(echo -e "$download_urls" | \
|
||||||
grep --only-matching 'glibc[0-9\.]*\.tar\.xz$' | \
|
grep --only-matching 'glibc[0-9\.]*\.tar\.xz$' | \
|
||||||
cut -c 6-9)
|
cut -c 6-9)
|
||||||
@@ -243,13 +243,13 @@ case $gamos in
|
|||||||
# override osversion only if it wasn't set by cli arguments
|
# override osversion only if it wasn't set by cli arguments
|
||||||
osversion=${osversion:-${currentversion}}
|
osversion=${osversion:-${currentversion}}
|
||||||
# override osversion only if it wasn't set by cli arguments
|
# override osversion only if it wasn't set by cli arguments
|
||||||
download_urls=$(echo -e "$download_urls" | grep "\-macos")
|
download_urls=$(echo -e "$download_urls" | grep -e "-macos")
|
||||||
case $gamarch in
|
case $gamarch in
|
||||||
x86_64)
|
x86_64)
|
||||||
archgrep="\-x86_64"
|
archgrep="-x86_64"
|
||||||
;;
|
;;
|
||||||
arm|arm64|aarch64)
|
arm|arm64|aarch64)
|
||||||
archgrep="\-aarch64"
|
archgrep="-arm64\|-aarch64"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo_red "ERROR: this installer currently only supports x86_64 and arm64 MacOS. Looks like you're running on ${gamarch}. Exiting."
|
echo_red "ERROR: this installer currently only supports x86_64 and arm64 MacOS. Looks like you're running on ${gamarch}. Exiting."
|
||||||
@@ -257,13 +257,13 @@ case $gamos in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
gam_macos_urls=$(echo -e "$download_urls" | \
|
gam_macos_urls=$(echo -e "$download_urls" | \
|
||||||
grep "$archgrep")
|
grep -e $archgrep)
|
||||||
versionless_urls=$(echo -e "$gam_macos_urls" | \
|
versionless_urls=$(echo -e "$gam_macos_urls" | \
|
||||||
grep "\-macos-")
|
grep -e "-macos-")
|
||||||
if [ "$versionless_urls" == "" ]; then
|
if [ "$versionless_urls" == "" ]; then
|
||||||
# versions after 7.00.38 include MacOS version info
|
# versions after 7.00.38 include MacOS version info
|
||||||
gam_macos_vers=$(echo -e "$gam_macos_urls" | \
|
gam_macos_vers=$(echo -e "$gam_macos_urls" | \
|
||||||
grep --only-matching '\-macos[0-9\.]*' | \
|
grep --only-matching -e '-macos[0-9\.]*' | \
|
||||||
cut -c 7-10)
|
cut -c 7-10)
|
||||||
for gam_mac_ver in $gam_macos_vers; do
|
for gam_mac_ver in $gam_macos_vers; do
|
||||||
if version_gt $currentversion $gam_mac_ver; then
|
if version_gt $currentversion $gam_mac_ver; then
|
||||||
@@ -281,13 +281,12 @@ case $gamos in
|
|||||||
case $gamarch in
|
case $gamarch in
|
||||||
x86_64)
|
x86_64)
|
||||||
minimum_version=13
|
minimum_version=13
|
||||||
download_url=$(echo -e "$download_urls" | grep "\-x86_64")
|
|
||||||
;;
|
;;
|
||||||
arm|arm64|aarch64)
|
arm|arm64|aarch64)
|
||||||
download_url=$(echo -e "$download_urls" | grep "\-aarch64")
|
|
||||||
minimum_version=14
|
minimum_version=14
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
download_url=$(echo -e "$download_urls" | grep -e $archgrep)
|
||||||
if version_gt "$osversion" "$minimum_version"; then
|
if version_gt "$osversion" "$minimum_version"; then
|
||||||
echo_green "You are running MacOS ${osversion}, good. Downloading GAM from ${download_url}."
|
echo_green "You are running MacOS ${osversion}, good. Downloading GAM from ${download_url}."
|
||||||
else
|
else
|
||||||
@@ -304,7 +303,7 @@ case $gamos in
|
|||||||
gamos="windows"
|
gamos="windows"
|
||||||
echo "You are running Windows"
|
echo "You are running Windows"
|
||||||
download_url=$(echo -e "$download_urls" | \
|
download_url=$(echo -e "$download_urls" | \
|
||||||
grep "\-windows-" | \
|
grep -e "-windows-" | \
|
||||||
grep ".zip")
|
grep ".zip")
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|||||||
@@ -11,5 +11,5 @@ from gam.__main__ import main
|
|||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
if platform.system() != 'Linux':
|
if platform.system() != 'Linux':
|
||||||
multiprocessing.freeze_support()
|
multiprocessing.freeze_support()
|
||||||
multiprocessing.set_start_method('spawn')
|
multiprocessing.set_start_method('spawn', force=True)
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -38,6 +38,10 @@ hiddenimports = [
|
|||||||
'gam.gamlib.yubikey',
|
'gam.gamlib.yubikey',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
excludes = [
|
||||||
|
'pkg_resources',
|
||||||
|
]
|
||||||
|
|
||||||
runtime_hooks = []
|
runtime_hooks = []
|
||||||
a = Analysis(
|
a = Analysis(
|
||||||
['gam/__main__.py'],
|
['gam/__main__.py'],
|
||||||
@@ -48,7 +52,7 @@ a = Analysis(
|
|||||||
hookspath=[],
|
hookspath=[],
|
||||||
hooksconfig={},
|
hooksconfig={},
|
||||||
runtime_hooks=runtime_hooks,
|
runtime_hooks=runtime_hooks,
|
||||||
excludes=[],
|
excludes=excludes,
|
||||||
win_no_prefer_redirects=False,
|
win_no_prefer_redirects=False,
|
||||||
win_private_assemblies=False,
|
win_private_assemblies=False,
|
||||||
cipher=None,
|
cipher=None,
|
||||||
|
|||||||
1380
src/gam/__init__.py
1380
src/gam/__init__.py
File diff suppressed because it is too large
Load Diff
@@ -1,33 +1,3 @@
|
|||||||
# Operating CA: DigiCert
|
|
||||||
# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust
|
|
||||||
# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust
|
|
||||||
# Label: "Baltimore CyberTrust Root"
|
|
||||||
# Serial: 33554617
|
|
||||||
# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4
|
|
||||||
# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74
|
|
||||||
# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ
|
|
||||||
RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD
|
|
||||||
VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX
|
|
||||||
DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y
|
|
||||||
ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy
|
|
||||||
VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr
|
|
||||||
mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr
|
|
||||||
IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK
|
|
||||||
mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu
|
|
||||||
XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy
|
|
||||||
dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye
|
|
||||||
jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1
|
|
||||||
BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3
|
|
||||||
DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92
|
|
||||||
9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx
|
|
||||||
jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0
|
|
||||||
Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz
|
|
||||||
ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS
|
|
||||||
R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Operating CA: DigiCert
|
# Operating CA: DigiCert
|
||||||
# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com
|
# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com
|
||||||
# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com
|
# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com
|
||||||
@@ -273,257 +243,6 @@ r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1
|
|||||||
gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+
|
gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
# Operating CA: Entrust Datacard
|
|
||||||
# Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc.
|
|
||||||
# Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc.
|
|
||||||
# Label: "Entrust Root Certification Authority"
|
|
||||||
# Serial: 1164660820
|
|
||||||
# MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4
|
|
||||||
# SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9
|
|
||||||
# SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC
|
|
||||||
VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0
|
|
||||||
Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW
|
|
||||||
KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl
|
|
||||||
cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw
|
|
||||||
NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw
|
|
||||||
NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy
|
|
||||||
ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV
|
|
||||||
BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ
|
|
||||||
KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo
|
|
||||||
Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4
|
|
||||||
4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9
|
|
||||||
KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI
|
|
||||||
rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi
|
|
||||||
94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB
|
|
||||||
sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi
|
|
||||||
gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo
|
|
||||||
kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE
|
|
||||||
vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
|
|
||||||
A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t
|
|
||||||
O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua
|
|
||||||
AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP
|
|
||||||
9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/
|
|
||||||
eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m
|
|
||||||
0vdXcDazv/wor3ElhVsT/h5/WrQ8
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Operating CA: Entrust Datacard
|
|
||||||
# Issuer: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only
|
|
||||||
# Subject: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only
|
|
||||||
# Label: "Entrust Root Certification Authority - EC1"
|
|
||||||
# Serial: 51543124481930649114116133369
|
|
||||||
# MD5 Fingerprint: b6:7e:1d:f0:58:c5:49:6c:24:3b:3d:ed:98:18:ed:bc
|
|
||||||
# SHA1 Fingerprint: 20:d8:06:40:df:9b:25:f5:12:25:3a:11:ea:f7:59:8a:eb:14:b5:47
|
|
||||||
# SHA256 Fingerprint: 02:ed:0e:b2:8c:14:da:45:16:5c:56:67:91:70:0d:64:51:d7:fb:56:f0:b2:ab:1d:3b:8e:b0:70:e5:6e:df:f5
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkG
|
|
||||||
A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3
|
|
||||||
d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVu
|
|
||||||
dHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEzMDEGA1UEAxMq
|
|
||||||
RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxMB4XDTEy
|
|
||||||
MTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYwFAYD
|
|
||||||
VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0
|
|
||||||
L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0g
|
|
||||||
Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBD
|
|
||||||
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMTB2MBAGByqGSM49AgEGBSuBBAAi
|
|
||||||
A2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHyAsWfoPZb1YsGGYZPUxBt
|
|
||||||
ByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef9eNi1KlH
|
|
||||||
Bz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O
|
|
||||||
BBYEFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVC
|
|
||||||
R98crlOZF7ZvHH3hvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nX
|
|
||||||
hTcGtXsI/esni0qU+eH6p44mCOh8kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Operating CA: Entrust Datacard
|
|
||||||
# Issuer: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only
|
|
||||||
# Subject: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only
|
|
||||||
# Label: "Entrust Root Certification Authority - G2"
|
|
||||||
# Serial: 1246989352
|
|
||||||
# MD5 Fingerprint: 4b:e2:c9:91:96:65:0c:f4:0e:5a:93:92:a0:0a:fe:b2
|
|
||||||
# SHA1 Fingerprint: 8c:f4:27:fd:79:0c:3a:d1:66:06:8d:e8:1e:57:ef:bb:93:22:72:d4
|
|
||||||
# SHA256 Fingerprint: 43:df:57:74:b0:3e:7f:ef:5f:e4:0d:93:1a:7b:ed:f1:bb:2e:6b:42:73:8c:4e:6d:38:41:10:3d:3a:a7:f3:39
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC
|
|
||||||
VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50
|
|
||||||
cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs
|
|
||||||
IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz
|
|
||||||
dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy
|
|
||||||
NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu
|
|
||||||
dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt
|
|
||||||
dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0
|
|
||||||
aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj
|
|
||||||
YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
|
||||||
AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T
|
|
||||||
RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN
|
|
||||||
cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW
|
|
||||||
wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1
|
|
||||||
U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0
|
|
||||||
jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP
|
|
||||||
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN
|
|
||||||
BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/
|
|
||||||
jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ
|
|
||||||
Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v
|
|
||||||
1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R
|
|
||||||
nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH
|
|
||||||
VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g==
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Operating CA: Entrust Datacard
|
|
||||||
# Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited
|
|
||||||
# Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited
|
|
||||||
# Label: "Entrust.net Premium 2048 Secure Server CA"
|
|
||||||
# Serial: 946069240
|
|
||||||
# MD5 Fingerprint: ee:29:31:bc:32:7e:9a:e6:e8:b5:f7:51:b4:34:71:90
|
|
||||||
# SHA1 Fingerprint: 50:30:06:09:1d:97:d4:f5:ae:39:f7:cb:e7:92:7d:7d:65:2d:34:31
|
|
||||||
# SHA256 Fingerprint: 6d:c4:71:72:e0:1c:bc:b0:bf:62:58:0d:89:5f:e2:b8:ac:9a:d4:f8:73:80:1e:0c:10:b9:c8:37:d2:1e:b1:77
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML
|
|
||||||
RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp
|
|
||||||
bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5
|
|
||||||
IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp
|
|
||||||
ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3
|
|
||||||
MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3
|
|
||||||
LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp
|
|
||||||
YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG
|
|
||||||
A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp
|
|
||||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq
|
|
||||||
K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe
|
|
||||||
sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX
|
|
||||||
MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT
|
|
||||||
XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/
|
|
||||||
HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH
|
|
||||||
4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
|
|
||||||
HQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADub
|
|
||||||
j1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExo
|
|
||||||
U8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf
|
|
||||||
zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5b
|
|
||||||
u/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+
|
|
||||||
bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/Er
|
|
||||||
fF6adulZkMV8gzURZVE=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Operating CA: Entrust Datacard
|
|
||||||
# Issuer: CN=AffirmTrust Commercial O=AffirmTrust
|
|
||||||
# Subject: CN=AffirmTrust Commercial O=AffirmTrust
|
|
||||||
# Label: "AffirmTrust Commercial"
|
|
||||||
# Serial: 8608355977964138876
|
|
||||||
# MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7
|
|
||||||
# SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7
|
|
||||||
# SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE
|
|
||||||
BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz
|
|
||||||
dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL
|
|
||||||
MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp
|
|
||||||
cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
|
||||||
AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP
|
|
||||||
Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr
|
|
||||||
ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL
|
|
||||||
MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1
|
|
||||||
yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr
|
|
||||||
VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/
|
|
||||||
nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ
|
|
||||||
KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG
|
|
||||||
XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj
|
|
||||||
vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt
|
|
||||||
Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g
|
|
||||||
N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC
|
|
||||||
nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Operating CA: Entrust Datacard
|
|
||||||
# Issuer: CN=AffirmTrust Networking O=AffirmTrust
|
|
||||||
# Subject: CN=AffirmTrust Networking O=AffirmTrust
|
|
||||||
# Label: "AffirmTrust Networking"
|
|
||||||
# Serial: 8957382827206547757
|
|
||||||
# MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f
|
|
||||||
# SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f
|
|
||||||
# SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE
|
|
||||||
BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz
|
|
||||||
dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL
|
|
||||||
MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp
|
|
||||||
cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
|
||||||
AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y
|
|
||||||
YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua
|
|
||||||
kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL
|
|
||||||
QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp
|
|
||||||
6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG
|
|
||||||
yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i
|
|
||||||
QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ
|
|
||||||
KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO
|
|
||||||
tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu
|
|
||||||
QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ
|
|
||||||
Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u
|
|
||||||
olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48
|
|
||||||
x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Operating CA: Entrust Datacard
|
|
||||||
# Issuer: CN=AffirmTrust Premium O=AffirmTrust
|
|
||||||
# Subject: CN=AffirmTrust Premium O=AffirmTrust
|
|
||||||
# Label: "AffirmTrust Premium"
|
|
||||||
# Serial: 7893706540734352110
|
|
||||||
# MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57
|
|
||||||
# SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27
|
|
||||||
# SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE
|
|
||||||
BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz
|
|
||||||
dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG
|
|
||||||
A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U
|
|
||||||
cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf
|
|
||||||
qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ
|
|
||||||
JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ
|
|
||||||
+jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS
|
|
||||||
s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5
|
|
||||||
HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7
|
|
||||||
70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG
|
|
||||||
V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S
|
|
||||||
qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S
|
|
||||||
5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia
|
|
||||||
C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX
|
|
||||||
OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE
|
|
||||||
FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/
|
|
||||||
BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2
|
|
||||||
KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg
|
|
||||||
Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B
|
|
||||||
8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ
|
|
||||||
MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc
|
|
||||||
0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ
|
|
||||||
u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF
|
|
||||||
u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH
|
|
||||||
YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8
|
|
||||||
GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO
|
|
||||||
RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e
|
|
||||||
KeC2uAloGRwYQw==
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Operating CA: Entrust Datacard
|
|
||||||
# Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust
|
|
||||||
# Subject: CN=AffirmTrust Premium ECC O=AffirmTrust
|
|
||||||
# Label: "AffirmTrust Premium ECC"
|
|
||||||
# Serial: 8401224907861490260
|
|
||||||
# MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d
|
|
||||||
# SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb
|
|
||||||
# SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC
|
|
||||||
VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ
|
|
||||||
cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ
|
|
||||||
BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt
|
|
||||||
VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D
|
|
||||||
0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9
|
|
||||||
ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G
|
|
||||||
A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G
|
|
||||||
A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs
|
|
||||||
aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I
|
|
||||||
flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ==
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Operating CA: GlobalSign
|
# Operating CA: GlobalSign
|
||||||
# Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA
|
# Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA
|
||||||
# Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA
|
# Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA
|
||||||
@@ -818,16 +537,16 @@ smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
|
|||||||
# Issuer: CN=COMODO Certification Authority O=COMODO CA Limited
|
# Issuer: CN=COMODO Certification Authority O=COMODO CA Limited
|
||||||
# Subject: CN=COMODO Certification Authority O=COMODO CA Limited
|
# Subject: CN=COMODO Certification Authority O=COMODO CA Limited
|
||||||
# Label: "COMODO Certification Authority"
|
# Label: "COMODO Certification Authority"
|
||||||
# Serial: 104350513648249232941998508985834464573
|
# Serial: 43390818032842818540635488309124489234
|
||||||
# MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75
|
# MD5 Fingerprint: 20:E7:4F:82:C2:7E:94:80:34:82:8A:13:A9:17:1D:97
|
||||||
# SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b
|
# SHA1 Fingerprint EE:86:93:87:FF:FD:83:49:AB:5A:D1:43:22:58:87:89:A4:57:B0:12
|
||||||
# SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66
|
# SHA256 Fingerprint: 1A:0D:20:44:5D:E5:BA:18:62:D1:9E:F8:80:85:8C:BC:E5:01:02:B3:6E:8F:0A:04:0C:3C:69:E7:45:22:FE:6E
|
||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB
|
MIID0DCCArigAwIBAgIQIKTEf93f4cdTYwcTiHdgEjANBgkqhkiG9w0BAQUFADCB
|
||||||
gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
|
gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
|
||||||
A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV
|
A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV
|
||||||
BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw
|
BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xMTAxMDEwMDAw
|
||||||
MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
|
MDBaFw0zMDEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
|
||||||
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P
|
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P
|
||||||
RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0
|
RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0
|
||||||
aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3
|
aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3
|
||||||
@@ -836,16 +555,14 @@ UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI
|
|||||||
Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp
|
Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp
|
||||||
+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+
|
+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+
|
||||||
DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O
|
DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O
|
||||||
nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW
|
nKVIrLsm9wIDAQABo0IwQDAdBgNVHQ4EFgQUC1jli8ZMFTekQKkwqSG+RzZaVv8w
|
||||||
/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g
|
DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD
|
||||||
PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u
|
ggEBAC/JxBwHO89hAgCx2SFRdXIDMLDEFh9sAIsQrK/xR9SuEDwMGvjUk2ysEDd8
|
||||||
QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY
|
t6aDZK3N3w6HM503sMZ7OHKx8xoOo/lVem0DZgMXlUrxsXrfViEGQo+x06iF3u6X
|
||||||
SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv
|
HWLrp+cxEmbDD6ZLLkGC9/3JG6gbr+48zuOcrigHoSybJMIPIyaDMouGDx8rEkYl
|
||||||
IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
|
Fo92kANr3ryqImhrjKGsKxE5pttwwn1y6TPn/CbxdFqR5p2ErPioBhlG5qfpqjQi
|
||||||
RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4
|
pKGfeq23sqSaM4hxAjwu1nqyH6LKwN0vEJT9s4yEIHlG1QXUEOTS22RPuFvuG8Ug
|
||||||
zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd
|
R1uUq27UlTMdphVx8fiUylQ5PsE=
|
||||||
BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB
|
|
||||||
ZQ==
|
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
# Operating CA: Sectigo
|
# Operating CA: Sectigo
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# Copyright (C) 2024 Ross Scroggs All Rights Reserved.
|
# Copyright (C) 2025 Ross Scroggs All Rights Reserved.
|
||||||
#
|
#
|
||||||
# All Rights Reserved.
|
# All Rights Reserved.
|
||||||
#
|
#
|
||||||
@@ -22,7 +22,6 @@
|
|||||||
# APIs
|
# APIs
|
||||||
ACCESSCONTEXTMANAGER = 'accesscontextmanager'
|
ACCESSCONTEXTMANAGER = 'accesscontextmanager'
|
||||||
ALERTCENTER = 'alertcenter'
|
ALERTCENTER = 'alertcenter'
|
||||||
ANALYTICS = 'analytics'
|
|
||||||
ANALYTICS_ADMIN = 'analyticsadmin'
|
ANALYTICS_ADMIN = 'analyticsadmin'
|
||||||
CALENDAR = 'calendar'
|
CALENDAR = 'calendar'
|
||||||
CBCM = 'cbcm'
|
CBCM = 'cbcm'
|
||||||
@@ -119,6 +118,7 @@ JWT_APIS = {
|
|||||||
ACCESSCONTEXTMANAGER: [CLOUD_PLATFORM_SCOPE],
|
ACCESSCONTEXTMANAGER: [CLOUD_PLATFORM_SCOPE],
|
||||||
CHAT: ['https://www.googleapis.com/auth/chat.bot'],
|
CHAT: ['https://www.googleapis.com/auth/chat.bot'],
|
||||||
CLOUDRESOURCEMANAGER: [CLOUD_PLATFORM_SCOPE],
|
CLOUDRESOURCEMANAGER: [CLOUD_PLATFORM_SCOPE],
|
||||||
|
IAM: [IAM_SCOPE],
|
||||||
ORGPOLICY: [CLOUD_PLATFORM_SCOPE],
|
ORGPOLICY: [CLOUD_PLATFORM_SCOPE],
|
||||||
}
|
}
|
||||||
#
|
#
|
||||||
@@ -132,6 +132,12 @@ APIS_NEEDING_ACCESS_TOKEN = {
|
|||||||
CBCM: ['https://www.googleapis.com/auth/admin.directory.device.chromebrowsers']
|
CBCM: ['https://www.googleapis.com/auth/admin.directory.device.chromebrowsers']
|
||||||
}
|
}
|
||||||
#
|
#
|
||||||
|
DEPRECATED_SCOPES = {
|
||||||
|
'https://www.googleapis.com/auth/cloud-identity',
|
||||||
|
'https://www.googleapis.com/auth/cloud-platform',
|
||||||
|
'https://www.googleapis.com/auth/iam',
|
||||||
|
}
|
||||||
|
#
|
||||||
REFRESH_PERM_ERRORS = [
|
REFRESH_PERM_ERRORS = [
|
||||||
'invalid_grant: reauth related error (rapt_required)', # no way to reauth today
|
'invalid_grant: reauth related error (rapt_required)', # no way to reauth today
|
||||||
'invalid_grant: Token has been expired or revoked',
|
'invalid_grant: Token has been expired or revoked',
|
||||||
@@ -162,7 +168,6 @@ PROJECT_APIS = [
|
|||||||
'accesscontextmanager.googleapis.com',
|
'accesscontextmanager.googleapis.com',
|
||||||
'admin.googleapis.com',
|
'admin.googleapis.com',
|
||||||
'alertcenter.googleapis.com',
|
'alertcenter.googleapis.com',
|
||||||
'analytics.googleapis.com',
|
|
||||||
'analyticsadmin.googleapis.com',
|
'analyticsadmin.googleapis.com',
|
||||||
# 'audit.googleapis.com',
|
# 'audit.googleapis.com',
|
||||||
'calendar-json.googleapis.com',
|
'calendar-json.googleapis.com',
|
||||||
@@ -201,7 +206,6 @@ PROJECT_APIS = [
|
|||||||
_INFO = {
|
_INFO = {
|
||||||
ACCESSCONTEXTMANAGER: {'name': 'Access Context Manager API', 'version': 'v1', 'v2discovery': True},
|
ACCESSCONTEXTMANAGER: {'name': 'Access Context Manager API', 'version': 'v1', 'v2discovery': True},
|
||||||
ALERTCENTER: {'name': 'AlertCenter API', 'version': 'v1beta1', 'v2discovery': True},
|
ALERTCENTER: {'name': 'AlertCenter API', 'version': 'v1beta1', 'v2discovery': True},
|
||||||
ANALYTICS: {'name': 'Analytics API', 'version': 'v3', 'v2discovery': False},
|
|
||||||
ANALYTICS_ADMIN: {'name': 'Analytics Admin API', 'version': 'v1beta', 'v2discovery': True},
|
ANALYTICS_ADMIN: {'name': 'Analytics Admin API', 'version': 'v1beta', 'v2discovery': True},
|
||||||
CALENDAR: {'name': 'Calendar API', 'version': 'v3', 'v2discovery': True, 'mappedAPI': 'calendar-json'},
|
CALENDAR: {'name': 'Calendar API', 'version': 'v3', 'v2discovery': True, 'mappedAPI': 'calendar-json'},
|
||||||
CBCM: {'name': 'Chrome Browser Cloud Management API', 'version': 'v1.1beta1', 'v2discovery': True, 'localjson': True},
|
CBCM: {'name': 'Chrome Browser Cloud Management API', 'version': 'v1.1beta1', 'v2discovery': True, 'localjson': True},
|
||||||
@@ -244,7 +248,7 @@ _INFO = {
|
|||||||
EMAIL_AUDIT: {'name': 'Email Audit API', 'version': 'v1', 'v2discovery': False},
|
EMAIL_AUDIT: {'name': 'Email Audit API', 'version': 'v1', 'v2discovery': False},
|
||||||
FORMS: {'name': 'Forms API', 'version': 'v1', 'v2discovery': True},
|
FORMS: {'name': 'Forms API', 'version': 'v1', 'v2discovery': True},
|
||||||
GMAIL: {'name': 'Gmail API', 'version': 'v1', 'v2discovery': True},
|
GMAIL: {'name': 'Gmail API', 'version': 'v1', 'v2discovery': True},
|
||||||
GROUPSMIGRATION: {'name': 'Groups Migration API', 'version': 'v1', 'v2discovery': False},
|
GROUPSMIGRATION: {'name': 'Groups Migration API', 'version': 'v1', 'v2discovery': True},
|
||||||
GROUPSSETTINGS: {'name': 'Groups Settings API', 'version': 'v1', 'v2discovery': True},
|
GROUPSSETTINGS: {'name': 'Groups Settings API', 'version': 'v1', 'v2discovery': True},
|
||||||
IAM: {'name': 'Identity and Access Management API', 'version': 'v1', 'v2discovery': True},
|
IAM: {'name': 'Identity and Access Management API', 'version': 'v1', 'v2discovery': True},
|
||||||
IAM_CREDENTIALS: {'name': 'Identity and Access Management Credentials API', 'version': 'v1', 'v2discovery': True},
|
IAM_CREDENTIALS: {'name': 'Identity and Access Management Credentials API', 'version': 'v1', 'v2discovery': True},
|
||||||
@@ -532,10 +536,6 @@ _SVCACCT_SCOPES = [
|
|||||||
'api': ALERTCENTER,
|
'api': ALERTCENTER,
|
||||||
'subscopes': [],
|
'subscopes': [],
|
||||||
'scope': 'https://www.googleapis.com/auth/apps.alerts'},
|
'scope': 'https://www.googleapis.com/auth/apps.alerts'},
|
||||||
{'name': 'Analytics API - read only',
|
|
||||||
'api': ANALYTICS,
|
|
||||||
'subscopes': [],
|
|
||||||
'scope': 'https://www.googleapis.com/auth/analytics.readonly'},
|
|
||||||
{'name': 'Analytics Admin API - read only',
|
{'name': 'Analytics Admin API - read only',
|
||||||
'api': ANALYTICS_ADMIN,
|
'api': ANALYTICS_ADMIN,
|
||||||
'subscopes': [],
|
'subscopes': [],
|
||||||
@@ -603,7 +603,7 @@ _SVCACCT_SCOPES = [
|
|||||||
{'name': 'Cloud Identity Devices API',
|
{'name': 'Cloud Identity Devices API',
|
||||||
'api': CLOUDIDENTITY_DEVICES,
|
'api': CLOUDIDENTITY_DEVICES,
|
||||||
'subscopes': READONLY,
|
'subscopes': READONLY,
|
||||||
'scope': 'https://www.googleapis.com/auth/cloud-identity'},
|
'scope': 'https://www.googleapis.com/auth/cloud-identity.devices'},
|
||||||
# {'name': 'Cloud Identity User Invitations API',
|
# {'name': 'Cloud Identity User Invitations API',
|
||||||
# 'api': CLOUDIDENTITY_USERINVITATIONS,
|
# 'api': CLOUDIDENTITY_USERINVITATIONS,
|
||||||
# 'subscopes': READONLY,
|
# 'subscopes': READONLY,
|
||||||
@@ -652,10 +652,11 @@ _SVCACCT_SCOPES = [
|
|||||||
'api': GMAIL,
|
'api': GMAIL,
|
||||||
'subscopes': [],
|
'subscopes': [],
|
||||||
'scope': 'https://www.googleapis.com/auth/gmail.settings.sharing'},
|
'scope': 'https://www.googleapis.com/auth/gmail.settings.sharing'},
|
||||||
{'name': 'Identity and Access Management API',
|
# {'name': 'Identity and Access Management API',
|
||||||
'api': IAM,
|
# 'api': IAM,
|
||||||
'subscopes': [],
|
# 'offByDefault': True,
|
||||||
'scope': CLOUD_PLATFORM_SCOPE},
|
# 'subscopes': [],
|
||||||
|
# 'scope': CLOUD_PLATFORM_SCOPE},
|
||||||
{'name': 'Keep API',
|
{'name': 'Keep API',
|
||||||
'api': KEEP,
|
'api': KEEP,
|
||||||
'subscopes': READONLY,
|
'subscopes': READONLY,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# Copyright (C) 2024 Ross Scroggs All Rights Reserved.
|
# Copyright (C) 2025 Ross Scroggs All Rights Reserved.
|
||||||
#
|
#
|
||||||
# All Rights Reserved.
|
# All Rights Reserved.
|
||||||
#
|
#
|
||||||
@@ -163,6 +163,8 @@ EMAIL_BATCH_SIZE = 'email_batch_size'
|
|||||||
ENABLE_DASA = 'enable_dasa'
|
ENABLE_DASA = 'enable_dasa'
|
||||||
# Enable Cloud Session Reauthentication by borrowing a RAPT token from gcloud command
|
# Enable Cloud Session Reauthentication by borrowing a RAPT token from gcloud command
|
||||||
ENABLE_GCLOUD_REAUTH = 'enable_gcloud_reauth'
|
ENABLE_GCLOUD_REAUTH = 'enable_gcloud_reauth'
|
||||||
|
# Value for enforceExpansiveAccess for commands that delete or update drive file ACLs/permissions.
|
||||||
|
ENFORCE_EXPANSIVE_ACCESS = 'enforce_expansive_access'
|
||||||
# When retrieving lists of calendar events from API, how many should be retrieved in each chunk
|
# When retrieving lists of calendar events from API, how many should be retrieved in each chunk
|
||||||
EVENT_MAX_RESULTS = 'event_max_results'
|
EVENT_MAX_RESULTS = 'event_max_results'
|
||||||
# Path to extra_args.txt
|
# Path to extra_args.txt
|
||||||
@@ -260,12 +262,12 @@ SMTP_HOST = 'smtp_host'
|
|||||||
SMTP_USERNAME = 'smtp_username'
|
SMTP_USERNAME = 'smtp_username'
|
||||||
# SMTP password
|
# SMTP password
|
||||||
SMTP_PASSWORD = 'smtp_password'
|
SMTP_PASSWORD = 'smtp_password'
|
||||||
|
# Time Zone
|
||||||
|
TIMEZONE = 'timezone'
|
||||||
## Minimum TLS Version required for HTTPS connections
|
## Minimum TLS Version required for HTTPS connections
|
||||||
TLS_MIN_VERSION = 'tls_min_version'
|
TLS_MIN_VERSION = 'tls_min_version'
|
||||||
## Maximum TLS Version used for HTTPS connections
|
## Maximum TLS Version used for HTTPS connections
|
||||||
TLS_MAX_VERSION = 'tls_max_version'
|
TLS_MAX_VERSION = 'tls_max_version'
|
||||||
# Time Zone
|
|
||||||
TIMEZONE = 'timezone'
|
|
||||||
# Clear basic filter when updating an existing sheet
|
# Clear basic filter when updating an existing sheet
|
||||||
TODRIVE_CLEARFILTER = 'todrive_clearfilter'
|
TODRIVE_CLEARFILTER = 'todrive_clearfilter'
|
||||||
# Use client access for todrive
|
# Use client access for todrive
|
||||||
@@ -377,6 +379,7 @@ Defaults = {
|
|||||||
DEVICE_MAX_RESULTS: '200',
|
DEVICE_MAX_RESULTS: '200',
|
||||||
DOMAIN: '',
|
DOMAIN: '',
|
||||||
DRIVE_DIR: '',
|
DRIVE_DIR: '',
|
||||||
|
ENFORCE_EXPANSIVE_ACCESS: FALSE,
|
||||||
DRIVE_MAX_RESULTS: '1000',
|
DRIVE_MAX_RESULTS: '1000',
|
||||||
DRIVE_V3_BETA: FALSE,
|
DRIVE_V3_BETA: FALSE,
|
||||||
DRIVE_V3_NATIVE_NAMES: TRUE,
|
DRIVE_V3_NATIVE_NAMES: TRUE,
|
||||||
@@ -431,9 +434,9 @@ Defaults = {
|
|||||||
SMTP_HOST: '',
|
SMTP_HOST: '',
|
||||||
SMTP_USERNAME: '',
|
SMTP_USERNAME: '',
|
||||||
SMTP_PASSWORD: '',
|
SMTP_PASSWORD: '',
|
||||||
|
TIMEZONE: 'utc',
|
||||||
TLS_MIN_VERSION: 'TLSv1_3',
|
TLS_MIN_VERSION: 'TLSv1_3',
|
||||||
TLS_MAX_VERSION: '',
|
TLS_MAX_VERSION: '',
|
||||||
TIMEZONE: 'utc',
|
|
||||||
TODRIVE_CLEARFILTER: FALSE,
|
TODRIVE_CLEARFILTER: FALSE,
|
||||||
TODRIVE_CLIENTACCESS: FALSE,
|
TODRIVE_CLIENTACCESS: FALSE,
|
||||||
TODRIVE_CONVERSION: TRUE,
|
TODRIVE_CONVERSION: TRUE,
|
||||||
@@ -545,6 +548,7 @@ VAR_INFO = {
|
|||||||
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)},
|
||||||
DRIVE_DIR: {VAR_TYPE: TYPE_DIRECTORY, VAR_ENVVAR: 'GAMDRIVEDIR'},
|
DRIVE_DIR: {VAR_TYPE: TYPE_DIRECTORY, VAR_ENVVAR: 'GAMDRIVEDIR'},
|
||||||
|
ENFORCE_EXPANSIVE_ACCESS: {VAR_TYPE: TYPE_BOOLEAN},
|
||||||
DRIVE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 1000)},
|
DRIVE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 1000)},
|
||||||
DRIVE_V3_BETA: {VAR_TYPE: TYPE_BOOLEAN},
|
DRIVE_V3_BETA: {VAR_TYPE: TYPE_BOOLEAN},
|
||||||
DRIVE_V3_NATIVE_NAMES: {VAR_TYPE: TYPE_BOOLEAN},
|
DRIVE_V3_NATIVE_NAMES: {VAR_TYPE: TYPE_BOOLEAN},
|
||||||
@@ -599,9 +603,9 @@ VAR_INFO = {
|
|||||||
SMTP_HOST: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
|
SMTP_HOST: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
|
||||||
SMTP_USERNAME: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
|
SMTP_USERNAME: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
|
||||||
SMTP_PASSWORD: {VAR_TYPE: TYPE_PASSWORD, VAR_LIMITS: (0, None)},
|
SMTP_PASSWORD: {VAR_TYPE: TYPE_PASSWORD, VAR_LIMITS: (0, None)},
|
||||||
|
TIMEZONE: {VAR_TYPE: TYPE_TIMEZONE},
|
||||||
TLS_MIN_VERSION: {VAR_TYPE: TYPE_CHOICE, VAR_ENVVAR: 'GAM_TLS_MIN_VERSION', VAR_CHOICES: TLS_CHOICE_MAP},
|
TLS_MIN_VERSION: {VAR_TYPE: TYPE_CHOICE, VAR_ENVVAR: 'GAM_TLS_MIN_VERSION', VAR_CHOICES: TLS_CHOICE_MAP},
|
||||||
TLS_MAX_VERSION: {VAR_TYPE: TYPE_CHOICE, VAR_ENVVAR: 'GAM_TLS_MAX_VERSION', VAR_CHOICES: TLS_CHOICE_MAP},
|
TLS_MAX_VERSION: {VAR_TYPE: TYPE_CHOICE, VAR_ENVVAR: 'GAM_TLS_MAX_VERSION', VAR_CHOICES: TLS_CHOICE_MAP},
|
||||||
TIMEZONE: {VAR_TYPE: TYPE_TIMEZONE},
|
|
||||||
TODRIVE_CLEARFILTER: {VAR_TYPE: TYPE_BOOLEAN},
|
TODRIVE_CLEARFILTER: {VAR_TYPE: TYPE_BOOLEAN},
|
||||||
TODRIVE_CLIENTACCESS: {VAR_TYPE: TYPE_BOOLEAN},
|
TODRIVE_CLIENTACCESS: {VAR_TYPE: TYPE_BOOLEAN},
|
||||||
TODRIVE_CONVERSION: {VAR_TYPE: TYPE_BOOLEAN},
|
TODRIVE_CONVERSION: {VAR_TYPE: TYPE_BOOLEAN},
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# Copyright (C) 2024 Ross Scroggs All Rights Reserved.
|
# Copyright (C) 2025 Ross Scroggs All Rights Reserved.
|
||||||
#
|
#
|
||||||
# All Rights Reserved.
|
# All Rights Reserved.
|
||||||
#
|
#
|
||||||
@@ -423,8 +423,6 @@ class GamCLArgs():
|
|||||||
ARG_ANALYTICDATASTREAMS = 'analyticdatastreams'
|
ARG_ANALYTICDATASTREAMS = 'analyticdatastreams'
|
||||||
ARG_ANALYTICPROPERTY = 'analyticproperty'
|
ARG_ANALYTICPROPERTY = 'analyticproperty'
|
||||||
ARG_ANALYTICPROPERTIES = 'analyticproperties'
|
ARG_ANALYTICPROPERTIES = 'analyticproperties'
|
||||||
ARG_ANALYTICUAPROPERTY = 'analyticuaproperty'
|
|
||||||
ARG_ANALYTICUAPROPERTIES = 'analyticuaproperties'
|
|
||||||
ARG_API = 'api'
|
ARG_API = 'api'
|
||||||
ARG_APIS = 'apis'
|
ARG_APIS = 'apis'
|
||||||
ARG_APIPROJECT = 'apiproject'
|
ARG_APIPROJECT = 'apiproject'
|
||||||
@@ -618,7 +616,6 @@ class GamCLArgs():
|
|||||||
ARG_FORWARDS = 'forwards'
|
ARG_FORWARDS = 'forwards'
|
||||||
ARG_FORWARDINGADDRESS = 'forwardingaddress'
|
ARG_FORWARDINGADDRESS = 'forwardingaddress'
|
||||||
ARG_FORWARDINGADDRESSES = 'forwardingaddresses'
|
ARG_FORWARDINGADDRESSES = 'forwardingaddresses'
|
||||||
ARG_GAL = 'gal'
|
|
||||||
ARG_GCPFOLDER = 'gcpfolder'
|
ARG_GCPFOLDER = 'gcpfolder'
|
||||||
ARG_GCPSERVICEACCOUNT = 'gcpserviceaccount'
|
ARG_GCPSERVICEACCOUNT = 'gcpserviceaccount'
|
||||||
ARG_GMAIL = 'gmail'
|
ARG_GMAIL = 'gmail'
|
||||||
@@ -758,6 +755,7 @@ class GamCLArgs():
|
|||||||
ARG_SHAREDDRIVES = 'shareddrives'
|
ARG_SHAREDDRIVES = 'shareddrives'
|
||||||
ARG_SHAREDDRIVEACLS = 'shareddriveacls'
|
ARG_SHAREDDRIVEACLS = 'shareddriveacls'
|
||||||
ARG_SHAREDDRIVEINFO = 'shareddriveinfo'
|
ARG_SHAREDDRIVEINFO = 'shareddriveinfo'
|
||||||
|
ARG_SHAREDDRIVEORGANIZERS = 'shareddriveorganizers'
|
||||||
ARG_SHAREDDRIVETHEMES = 'shareddrivethemes'
|
ARG_SHAREDDRIVETHEMES = 'shareddrivethemes'
|
||||||
ARG_SHEET = 'sheet'
|
ARG_SHEET = 'sheet'
|
||||||
ARG_SHEETS = 'sheets'
|
ARG_SHEETS = 'sheets'
|
||||||
@@ -787,6 +785,7 @@ class GamCLArgs():
|
|||||||
ARG_TEAMDRIVES = 'teamdrives'
|
ARG_TEAMDRIVES = 'teamdrives'
|
||||||
ARG_TEAMDRIVEACLS = 'teamdriveacls'
|
ARG_TEAMDRIVEACLS = 'teamdriveacls'
|
||||||
ARG_TEAMDRIVEINFO = 'teamdriveinfo'
|
ARG_TEAMDRIVEINFO = 'teamdriveinfo'
|
||||||
|
ARG_TEAMDRIVEORGANIZERS = 'teamdriveorganizers'
|
||||||
ARG_TEAMDRIVETHEMES = 'teamdrivethemes'
|
ARG_TEAMDRIVETHEMES = 'teamdrivethemes'
|
||||||
ARG_THREAD = 'thread'
|
ARG_THREAD = 'thread'
|
||||||
ARG_THREADS = 'threads'
|
ARG_THREADS = 'threads'
|
||||||
@@ -849,6 +848,7 @@ class GamCLArgs():
|
|||||||
OB_CHAT_MESSAGE = 'ChatMessage'
|
OB_CHAT_MESSAGE = 'ChatMessage'
|
||||||
OB_CHAT_MESSAGE_ID = 'ChatMessageID'
|
OB_CHAT_MESSAGE_ID = 'ChatMessageID'
|
||||||
OB_CHAT_SPACE = 'ChatSpace'
|
OB_CHAT_SPACE = 'ChatSpace'
|
||||||
|
OB_CHAT_SPACE_LIST = 'ChatSpaceList'
|
||||||
OB_CHAT_THREAD = 'ChatThread'
|
OB_CHAT_THREAD = 'ChatThread'
|
||||||
OB_CHROMEPROFILE_ID = 'ChromeProfileId'
|
OB_CHROMEPROFILE_ID = 'ChromeProfileId'
|
||||||
OB_CHROME_VERSION = 'ChromeVersion'
|
OB_CHROME_VERSION = 'ChromeVersion'
|
||||||
@@ -966,6 +966,7 @@ class GamCLArgs():
|
|||||||
OB_MOBILE_ENTITY = 'MobileEntity'
|
OB_MOBILE_ENTITY = 'MobileEntity'
|
||||||
OB_NETWORK_ID = 'networkID'
|
OB_NETWORK_ID = 'networkID'
|
||||||
OB_NAME = 'Name'
|
OB_NAME = 'Name'
|
||||||
|
OB_ORGANIZER_TYPE_LIST = 'OrganizerTypeList'
|
||||||
OB_ORGUNIT_ENTITY = 'OrgUnitEntity'
|
OB_ORGUNIT_ENTITY = 'OrgUnitEntity'
|
||||||
OB_ORGUNIT_ITEM = 'OrgUnitItem'
|
OB_ORGUNIT_ITEM = 'OrgUnitItem'
|
||||||
OB_ORGUNIT_PATH = 'OrgUnitPath'
|
OB_ORGUNIT_PATH = 'OrgUnitPath'
|
||||||
@@ -996,7 +997,6 @@ class GamCLArgs():
|
|||||||
OB_ROLE_ASSIGNMENT_ID = 'RoleAssignmentID'
|
OB_ROLE_ASSIGNMENT_ID = 'RoleAssignmentID'
|
||||||
OB_ROLE_ITEM = 'RoleItem'
|
OB_ROLE_ITEM = 'RoleItem'
|
||||||
OB_ROLE_LIST = 'RoleList'
|
OB_ROLE_LIST = 'RoleList'
|
||||||
OB_ROOM_LIST = 'RoomList'
|
|
||||||
OB_SCHEMA_ENTITY = 'SchemaEntity'
|
OB_SCHEMA_ENTITY = 'SchemaEntity'
|
||||||
OB_SCHEMA_NAME = 'SchemaName'
|
OB_SCHEMA_NAME = 'SchemaName'
|
||||||
OB_SCHEMA_NAME_FIELD_NAME = 'SchemaName.FieldName'
|
OB_SCHEMA_NAME_FIELD_NAME = 'SchemaName.FieldName'
|
||||||
|
|||||||
@@ -61,7 +61,6 @@ class GamEntity():
|
|||||||
ANALYTIC_ACCOUNT_SUMMARY = 'anas'
|
ANALYTIC_ACCOUNT_SUMMARY = 'anas'
|
||||||
ANALYTIC_DATASTREAM = 'anad'
|
ANALYTIC_DATASTREAM = 'anad'
|
||||||
ANALYTIC_PROPERTY = 'anap'
|
ANALYTIC_PROPERTY = 'anap'
|
||||||
ANALYTIC_UA_PROPERTY = 'anau'
|
|
||||||
API = 'api '
|
API = 'api '
|
||||||
APP_ACCESS_SETTINGS = 'apps'
|
APP_ACCESS_SETTINGS = 'apps'
|
||||||
APP_ID = 'appi'
|
APP_ID = 'appi'
|
||||||
@@ -412,7 +411,6 @@ class GamEntity():
|
|||||||
ANALYTIC_ACCOUNT_SUMMARY: ['Analytic Account Summaries', 'Analytic Account Summary'],
|
ANALYTIC_ACCOUNT_SUMMARY: ['Analytic Account Summaries', 'Analytic Account Summary'],
|
||||||
ANALYTIC_DATASTREAM: ['Analytic Datastreams', 'Analytic Datastream'],
|
ANALYTIC_DATASTREAM: ['Analytic Datastreams', 'Analytic Datastream'],
|
||||||
ANALYTIC_PROPERTY: ['Analytic GA4 Properties', 'Analytic GA4 Property'],
|
ANALYTIC_PROPERTY: ['Analytic GA4 Properties', 'Analytic GA4 Property'],
|
||||||
ANALYTIC_UA_PROPERTY: ['Analytic UA Properties', 'Analytic UA Property'],
|
|
||||||
API: ['APIs', 'API'],
|
API: ['APIs', 'API'],
|
||||||
APP_ACCESS_SETTINGS: ['Application Access Settings', 'Application Access Settings'],
|
APP_ACCESS_SETTINGS: ['Application Access Settings', 'Application Access Settings'],
|
||||||
APP_ID: ['Application IDs', 'Application ID'],
|
APP_ID: ['Application IDs', 'Application ID'],
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# Copyright (C) 2024 Ross Scroggs All Rights Reserved.
|
# Copyright (C) 2025 Ross Scroggs All Rights Reserved.
|
||||||
#
|
#
|
||||||
# All Rights Reserved.
|
# All Rights Reserved.
|
||||||
#
|
#
|
||||||
@@ -72,6 +72,7 @@ DOMAIN_POLICY = 'domainPolicy'
|
|||||||
DOWNLOAD_QUOTA_EXCEEDED = 'downloadQuotaExceeded'
|
DOWNLOAD_QUOTA_EXCEEDED = 'downloadQuotaExceeded'
|
||||||
DUPLICATE = 'duplicate'
|
DUPLICATE = 'duplicate'
|
||||||
EVENT_DURATION_EXCEEDS_LIMIT = 'eventDurationExceedsLimit'
|
EVENT_DURATION_EXCEEDS_LIMIT = 'eventDurationExceedsLimit'
|
||||||
|
EVENT_TYPE_RESTRICTION = 'eventTypeRestriction'
|
||||||
EXPIRATION_DATES_MUST_BE_IN_THE_FUTURE = 'expirationDatesMustBeInTheFuture'
|
EXPIRATION_DATES_MUST_BE_IN_THE_FUTURE = 'expirationDatesMustBeInTheFuture'
|
||||||
EXPIRATION_DATE_NOT_ALLOWED_FOR_SHARED_DRIVE_MEMBERS = 'expirationDateNotAllowedForSharedDriveMembers'
|
EXPIRATION_DATE_NOT_ALLOWED_FOR_SHARED_DRIVE_MEMBERS = 'expirationDateNotAllowedForSharedDriveMembers'
|
||||||
FAILED_PRECONDITION = 'failedPrecondition'
|
FAILED_PRECONDITION = 'failedPrecondition'
|
||||||
@@ -156,6 +157,7 @@ SERVICE_NOT_AVAILABLE = 'serviceNotAvailable'
|
|||||||
SHARE_IN_NOT_PERMITTED = 'shareInNotPermitted'
|
SHARE_IN_NOT_PERMITTED = 'shareInNotPermitted'
|
||||||
SHARE_OUT_NOT_PERMITTED = 'shareOutNotPermitted'
|
SHARE_OUT_NOT_PERMITTED = 'shareOutNotPermitted'
|
||||||
SHARE_OUT_NOT_PERMITTED_TO_USER = 'shareOutNotPermittedToUser'
|
SHARE_OUT_NOT_PERMITTED_TO_USER = 'shareOutNotPermittedToUser'
|
||||||
|
SHARE_OUT_WARNING = 'shareOutWarning'
|
||||||
SHARING_RATE_LIMIT_EXCEEDED = 'sharingRateLimitExceeded'
|
SHARING_RATE_LIMIT_EXCEEDED = 'sharingRateLimitExceeded'
|
||||||
SHORTCUT_TARGET_INVALID = 'shortcutTargetInvalid'
|
SHORTCUT_TARGET_INVALID = 'shortcutTargetInvalid'
|
||||||
STORAGE_QUOTA_EXCEEDED = 'storageQuotaExceeded'
|
STORAGE_QUOTA_EXCEEDED = 'storageQuotaExceeded'
|
||||||
@@ -456,6 +458,8 @@ class duplicate(Exception):
|
|||||||
pass
|
pass
|
||||||
class eventDurationExceedsLimit(Exception):
|
class eventDurationExceedsLimit(Exception):
|
||||||
pass
|
pass
|
||||||
|
class eventTypeRestriction(Exception):
|
||||||
|
pass
|
||||||
class expirationDatesMustBeInTheFuture(Exception):
|
class expirationDatesMustBeInTheFuture(Exception):
|
||||||
pass
|
pass
|
||||||
class expirationDateNotAllowedForSharedDriveMembers(Exception):
|
class expirationDateNotAllowedForSharedDriveMembers(Exception):
|
||||||
@@ -618,6 +622,8 @@ class shareOutNotPermitted(Exception):
|
|||||||
pass
|
pass
|
||||||
class shareOutNotPermittedToUser(Exception):
|
class shareOutNotPermittedToUser(Exception):
|
||||||
pass
|
pass
|
||||||
|
class shareOutWarning(Exception):
|
||||||
|
pass
|
||||||
class sharingRateLimitExceeded(Exception):
|
class sharingRateLimitExceeded(Exception):
|
||||||
pass
|
pass
|
||||||
class shortcutTargetInvalid(Exception):
|
class shortcutTargetInvalid(Exception):
|
||||||
@@ -722,6 +728,7 @@ REASON_EXCEPTION_MAP = {
|
|||||||
DOWNLOAD_QUOTA_EXCEEDED: downloadQuotaExceeded,
|
DOWNLOAD_QUOTA_EXCEEDED: downloadQuotaExceeded,
|
||||||
DUPLICATE: duplicate,
|
DUPLICATE: duplicate,
|
||||||
EVENT_DURATION_EXCEEDS_LIMIT: eventDurationExceedsLimit,
|
EVENT_DURATION_EXCEEDS_LIMIT: eventDurationExceedsLimit,
|
||||||
|
EVENT_TYPE_RESTRICTION: eventTypeRestriction,
|
||||||
EXPIRATION_DATES_MUST_BE_IN_THE_FUTURE: expirationDatesMustBeInTheFuture,
|
EXPIRATION_DATES_MUST_BE_IN_THE_FUTURE: expirationDatesMustBeInTheFuture,
|
||||||
EXPIRATION_DATE_NOT_ALLOWED_FOR_SHARED_DRIVE_MEMBERS: expirationDateNotAllowedForSharedDriveMembers,
|
EXPIRATION_DATE_NOT_ALLOWED_FOR_SHARED_DRIVE_MEMBERS: expirationDateNotAllowedForSharedDriveMembers,
|
||||||
FAILED_PRECONDITION: failedPrecondition,
|
FAILED_PRECONDITION: failedPrecondition,
|
||||||
@@ -803,6 +810,7 @@ REASON_EXCEPTION_MAP = {
|
|||||||
SHARE_IN_NOT_PERMITTED: shareInNotPermitted,
|
SHARE_IN_NOT_PERMITTED: shareInNotPermitted,
|
||||||
SHARE_OUT_NOT_PERMITTED: shareOutNotPermitted,
|
SHARE_OUT_NOT_PERMITTED: shareOutNotPermitted,
|
||||||
SHARE_OUT_NOT_PERMITTED_TO_USER: shareOutNotPermittedToUser,
|
SHARE_OUT_NOT_PERMITTED_TO_USER: shareOutNotPermittedToUser,
|
||||||
|
SHARE_OUT_WARNING: shareOutWarning,
|
||||||
SHARING_RATE_LIMIT_EXCEEDED: sharingRateLimitExceeded,
|
SHARING_RATE_LIMIT_EXCEEDED: sharingRateLimitExceeded,
|
||||||
SHORTCUT_TARGET_INVALID: shortcutTargetInvalid,
|
SHORTCUT_TARGET_INVALID: shortcutTargetInvalid,
|
||||||
STORAGE_QUOTA_EXCEEDED: storageQuotaExceeded,
|
STORAGE_QUOTA_EXCEEDED: storageQuotaExceeded,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# Copyright (C) 2023 Ross Scroggs All Rights Reserved.
|
# Copyright (C) 2025 Ross Scroggs All Rights Reserved.
|
||||||
#
|
#
|
||||||
# All Rights Reserved.
|
# All Rights Reserved.
|
||||||
#
|
#
|
||||||
@@ -25,8 +25,6 @@
|
|||||||
# Some commands want to set a non-zero return code but not bail
|
# Some commands want to set a non-zero return code but not bail
|
||||||
# GAM admin user from oauth2.txt or oauth2service.json
|
# GAM admin user from oauth2.txt or oauth2service.json
|
||||||
ADMIN = 'admn'
|
ADMIN = 'admn'
|
||||||
# Drive service for admin; used to look up Shared Drive Names
|
|
||||||
ADMIN_DRIVE = 'addr'
|
|
||||||
# Number/length of API call retries
|
# Number/length of API call retries
|
||||||
API_CALLS_RETRY_DATA = 'rtry'
|
API_CALLS_RETRY_DATA = 'rtry'
|
||||||
# GAM cache directory. If no_cache is True, this variable will be set to None
|
# GAM cache directory. If no_cache is True, this variable will be set to None
|
||||||
@@ -207,6 +205,7 @@ REDIRECT_WRITE_HEADER = 'rdwh'
|
|||||||
REDIRECT_MULTIPROCESS = 'rdmp'
|
REDIRECT_MULTIPROCESS = 'rdmp'
|
||||||
REDIRECT_QUEUE = 'rdq'
|
REDIRECT_QUEUE = 'rdq'
|
||||||
REDIRECT_QUEUE_NAME = 'name'
|
REDIRECT_QUEUE_NAME = 'name'
|
||||||
|
REDIRECT_QUEUE_CLEAR_ROW_FILTERS = 'clearRowFilters'
|
||||||
REDIRECT_QUEUE_TODRIVE = 'todrive'
|
REDIRECT_QUEUE_TODRIVE = 'todrive'
|
||||||
REDIRECT_QUEUE_CSVPF = 'csvpf'
|
REDIRECT_QUEUE_CSVPF = 'csvpf'
|
||||||
REDIRECT_QUEUE_DATA = 'rows'
|
REDIRECT_QUEUE_DATA = 'rows'
|
||||||
@@ -219,7 +218,6 @@ REDIRECT_QUEUE_EOF = 'eof'
|
|||||||
#
|
#
|
||||||
Globals = {
|
Globals = {
|
||||||
ADMIN: None,
|
ADMIN: None,
|
||||||
ADMIN_DRIVE: None,
|
|
||||||
API_CALLS_RETRY_DATA: {},
|
API_CALLS_RETRY_DATA: {},
|
||||||
CACHE_DIR: None,
|
CACHE_DIR: None,
|
||||||
CACHE_DISCOVERY_ONLY: True,
|
CACHE_DISCOVERY_ONLY: True,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# Copyright (C) 2024 Ross Scroggs All Rights Reserved.
|
# Copyright (C) 2025 Ross Scroggs All Rights Reserved.
|
||||||
#
|
#
|
||||||
# All Rights Reserved.
|
# All Rights Reserved.
|
||||||
#
|
#
|
||||||
@@ -72,7 +72,7 @@ Please go to:
|
|||||||
24. Paste it at the "Enter your Client Secret: " prompt in your terminal
|
24. Paste it at the "Enter your Client Secret: " prompt in your terminal
|
||||||
25. Press return/enter in your terminal
|
25. Press return/enter in your terminal
|
||||||
26. Switch back to the browser
|
26. Switch back to the browser
|
||||||
27. Click "CANCEL"
|
27. Click "OK"
|
||||||
28. These steps are complete
|
28. These steps are complete
|
||||||
'''
|
'''
|
||||||
ENTER_YOUR_CLIENT_ID = '\nEnter your Client ID: '
|
ENTER_YOUR_CLIENT_ID = '\nEnter your Client ID: '
|
||||||
@@ -140,12 +140,13 @@ SERVICE_ACCOUNT_PRIVATE_KEY_AGE = 'Service Account Private Key age: {0} days'
|
|||||||
SERVICE_ACCOUNT_SKIPPING_KEY_AGE_CHECK = 'Skipping Private Key age check: {0} rotation not necessary'
|
SERVICE_ACCOUNT_SKIPPING_KEY_AGE_CHECK = 'Skipping Private Key age check: {0} rotation not necessary'
|
||||||
UPDATE_PROJECT_TO_VIEW_MANAGE_SAKEYS = 'Please run "gam update project" to view/manage service account keys'
|
UPDATE_PROJECT_TO_VIEW_MANAGE_SAKEYS = 'Please run "gam update project" to view/manage service account keys'
|
||||||
DOMAIN_WIDE_DELEGATION_AUTHENTICATION = 'Domain-wide Delegation authentication'
|
DOMAIN_WIDE_DELEGATION_AUTHENTICATION = 'Domain-wide Delegation authentication'
|
||||||
|
DEPRECATED_SCOPES = 'Deprecated scopes that GAM should NEVER have DwD access to'
|
||||||
SCOPE_AUTHORIZATION_PASSED = '''All scopes PASSED!
|
SCOPE_AUTHORIZATION_PASSED = '''All scopes PASSED!
|
||||||
|
|
||||||
Service Account Client name: {0} is fully authorized.
|
Service Account Client name: {0} is fully authorized.
|
||||||
'''
|
'''
|
||||||
SCOPE_AUTHORIZATION_UPDATE_PASSED = '''All scopes PASSED!
|
SCOPE_AUTHORIZATION_UPDATE_PASSED = '''All scopes PASSED!
|
||||||
To authorize them (in case some scopes were unselected), please go to the following link in your browser:
|
To update authorization (in case some scopes were unselected), please go to the following link in your browser:
|
||||||
{0}
|
{0}
|
||||||
{1}
|
{1}
|
||||||
|
|
||||||
@@ -156,8 +157,8 @@ Click AUTHORIZE
|
|||||||
When the box closes you're done
|
When the box closes you're done
|
||||||
After authorizing it may take some time for this test to pass so wait a few moments and then try this command again.
|
After authorizing it may take some time for this test to pass so wait a few moments and then try this command again.
|
||||||
'''
|
'''
|
||||||
SCOPE_AUTHORIZATION_FAILED = '''Some scopes FAILED!
|
SCOPE_AUTHORIZATION_FAILED = '''Some scopes FAILED or should be DISABLED!
|
||||||
To authorize them, please go to the following link in your browser:
|
To update authorization, please go to the following link in your browser:
|
||||||
{0}
|
{0}
|
||||||
{1}
|
{1}
|
||||||
|
|
||||||
@@ -287,6 +288,7 @@ GAM_OUT_OF_MEMORY = 'GAM has run out of memory. If this is a large Google Worksp
|
|||||||
GENERATING_NEW_PRIVATE_KEY = 'Generating new private key'
|
GENERATING_NEW_PRIVATE_KEY = 'Generating new private key'
|
||||||
GETTING = 'Getting'
|
GETTING = 'Getting'
|
||||||
GETTING_ALL = 'Getting all'
|
GETTING_ALL = 'Getting all'
|
||||||
|
GRANTING_RIGHTS_TO_ROTATE_ITS_OWN_PRIVATE_KEY = '{0} rights to rotate its own private key'
|
||||||
GOOGLE_DELEGATION_ERROR = 'Google delegation error, delegator and delegate both exist and are valid for delegation'
|
GOOGLE_DELEGATION_ERROR = 'Google delegation error, delegator and delegate both exist and are valid for delegation'
|
||||||
GOT = 'Got'
|
GOT = 'Got'
|
||||||
GROUP_MAPS_TO_MULTIPLE_OUS = 'File: {0}, Group: {1} references multiple OUs: {2}'
|
GROUP_MAPS_TO_MULTIPLE_OUS = 'File: {0}, Group: {1} references multiple OUs: {2}'
|
||||||
@@ -294,13 +296,12 @@ GROUP_MAPS_TO_OU_INVALID_ROW = 'File: {0}, Invalid row, must contain non-blank <
|
|||||||
GUARDIAN_INVITATION_STATUS_NOT_PENDING = 'Guardian invitation status is not PENDING'
|
GUARDIAN_INVITATION_STATUS_NOT_PENDING = 'Guardian invitation status is not PENDING'
|
||||||
HAS_CHILD_ORGS = 'Has child {0}'
|
HAS_CHILD_ORGS = 'Has child {0}'
|
||||||
HAS_INVALID_FORMAT = '{0}: {1}, Has invalid format'
|
HAS_INVALID_FORMAT = '{0}: {1}, Has invalid format'
|
||||||
HAS_RIGHTS_TO_ROTATE_OWN_PRIVATE_KEY = 'Giving account {0} rights to rotate {1} private key'
|
|
||||||
HEADER_NOT_FOUND_IN_CSV_HEADERS = 'Header "{0}" not found in CSV headers of "{1}".'
|
HEADER_NOT_FOUND_IN_CSV_HEADERS = 'Header "{0}" not found in CSV headers of "{1}".'
|
||||||
HELP_SYNTAX = 'Help: Syntax in file {0}\n'
|
HELP_SYNTAX = 'Help: Syntax in file {0}\n'
|
||||||
HELP_WIKI = 'Help: Documentation is at {0}\n'
|
HELP_WIKI = 'Help: Documentation is at {0}\n'
|
||||||
IGNORED = 'Ignored'
|
IGNORED = 'Ignored'
|
||||||
INSTRUCTIONS_CLIENT_SECRETS_JSON = 'Please run\n\ngam create|use project\ngam oauth create\n\nto create and authorize a Client account.\n'
|
INSTRUCTIONS_CLIENT_SECRETS_JSON = 'Please run\n\ngam create|use project\ngam oauth create\n\nto create and authorize a Client account.\n'
|
||||||
INSTRUCTIONS_OAUTH2SERVICE_JSON = 'Please run\n\ngam create|use project\ngam user <user> check serviceaccount\n\nto create and authorize a Service account.\n'
|
INSTRUCTIONS_OAUTH2SERVICE_JSON = 'Please run\n\ngam create|use project\ngam user <user> update serviceaccount\n\nto create and authorize a Service account.\n'
|
||||||
INSUFFICIENT_PERMISSIONS_TO_PERFORM_TASK = 'Insufficient permissions to perform this task'
|
INSUFFICIENT_PERMISSIONS_TO_PERFORM_TASK = 'Insufficient permissions to perform this task'
|
||||||
INTER_BATCH_WAIT_INCREASED = 'inter_batch_wait increased to {0:.2f}'
|
INTER_BATCH_WAIT_INCREASED = 'inter_batch_wait increased to {0:.2f}'
|
||||||
INVALID = 'Invalid'
|
INVALID = 'Invalid'
|
||||||
@@ -468,6 +469,10 @@ REFUSING_TO_DEPROVISION_DEVICES = 'Refusing to deprovision {0} devices because a
|
|||||||
REPLY_TO_CUSTOM_REQUIRES_EMAIL_ADDRESS = 'replyto REPLY_TO_CUSTOM requires customReplyTo <EmailAddress>'
|
REPLY_TO_CUSTOM_REQUIRES_EMAIL_ADDRESS = 'replyto REPLY_TO_CUSTOM requires customReplyTo <EmailAddress>'
|
||||||
REQUEST_COMPLETED_NO_FILES = 'Request completed but no results/files were returned, try requesting again'
|
REQUEST_COMPLETED_NO_FILES = 'Request completed but no results/files were returned, try requesting again'
|
||||||
REQUEST_NOT_COMPLETE = 'Request needs to be completed before downloading, current status is: {0}'
|
REQUEST_NOT_COMPLETE = 'Request needs to be completed before downloading, current status is: {0}'
|
||||||
|
RERUN_THE_COMMAND_AND_SPECIFY_A_NEW_SANAME = """
|
||||||
|
Re-run the command specify a new service account name with: saname <ServiceAccountName>
|
||||||
|
See: https://github.com/GAM-team/GAM/wiki/Authorization#advanced-use
|
||||||
|
"""
|
||||||
RESOURCE_CAPACITY_FLOOR_REQUIRED = 'Options "capacity <Number>" (<Number> > 0) and "floor <String>" required'
|
RESOURCE_CAPACITY_FLOOR_REQUIRED = 'Options "capacity <Number>" (<Number> > 0) and "floor <String>" required'
|
||||||
RESOURCE_FLOOR_REQUIRED = 'Option "floor <String>" required'
|
RESOURCE_FLOOR_REQUIRED = 'Option "floor <String>" required'
|
||||||
RESULTS_TOO_LARGE_FOR_GOOGLE_SPREADSHEET = 'Results are too large for Google Spreadsheets. Uploading as a regular CSV file.'
|
RESULTS_TOO_LARGE_FOR_GOOGLE_SPREADSHEET = 'Results are too large for Google Spreadsheets. Uploading as a regular CSV file.'
|
||||||
@@ -500,13 +505,15 @@ TO = 'To'
|
|||||||
TO_LC = 'to'
|
TO_LC = 'to'
|
||||||
TO_MAXIMUM_OF = 'to maximum of'
|
TO_MAXIMUM_OF = 'to maximum of'
|
||||||
TO_SET_UP_GOOGLE_CHAT = """
|
TO_SET_UP_GOOGLE_CHAT = """
|
||||||
To set up Google Chat for your API project, please go to:
|
To set up Google Chat for your current project, please go to:
|
||||||
|
|
||||||
{0}
|
{0}
|
||||||
|
|
||||||
and follow the instructions at:
|
and follow the instructions at:
|
||||||
|
|
||||||
https://github.com/GAM-team/GAM/wiki/Chat-Bot#set-up-a-chat-bot
|
https://github.com/GAM-team/GAM/wiki/Chat-Bot#set-up-a-chat-bot
|
||||||
|
|
||||||
|
You'll use projects/{1}/topics/no-topic in Connection settings Cloud Pub/Sub Topic Name
|
||||||
"""
|
"""
|
||||||
TOTAL_ITEMS_IN_ENTITY = 'Total {0} in {1}'
|
TOTAL_ITEMS_IN_ENTITY = 'Total {0} in {1}'
|
||||||
TRIMMED_MESSAGE_FROM_LENGTH_TO_MAXIMUM = 'Trimmed message of length {0} to maximum length {1}'
|
TRIMMED_MESSAGE_FROM_LENGTH_TO_MAXIMUM = 'Trimmed message of length {0} to maximum length {1}'
|
||||||
|
|||||||
@@ -144,6 +144,8 @@ _SKUS = {
|
|||||||
'product': 'Google-Apps', 'aliases': ['wsflw', 'workspacefrontline', 'workspacefrontlineworker'], 'displayName': 'Google Workspace Frontline Starter'},
|
'product': 'Google-Apps', 'aliases': ['wsflw', 'workspacefrontline', 'workspacefrontlineworker'], 'displayName': 'Google Workspace Frontline Starter'},
|
||||||
'1010020031': {
|
'1010020031': {
|
||||||
'product': 'Google-Apps', 'aliases': ['wsflwstan', 'workspacefrontlinestan', 'workspacefrontlineworkerstan'], 'displayName': 'Google Workspace Frontline Standard'},
|
'product': 'Google-Apps', 'aliases': ['wsflwstan', 'workspacefrontlinestan', 'workspacefrontlineworkerstan'], 'displayName': 'Google Workspace Frontline Standard'},
|
||||||
|
'1010020034': {
|
||||||
|
'product': 'Google-Apps', 'aliases': ['wsflwplus', 'workspacefrontlineplus', 'workspacefrontlineworkerplus'], 'displayName': 'Google Workspace Frontline Plus'},
|
||||||
'1010340001': {
|
'1010340001': {
|
||||||
'product': '101034', 'aliases': ['gseau', 'enterprisearchived', 'gsuiteenterprisearchived'], 'displayName': 'Google Workspace Enterprise Plus - Archived User'},
|
'product': '101034', 'aliases': ['gseau', 'enterprisearchived', 'gsuiteenterprisearchived'], 'displayName': 'Google Workspace Enterprise Plus - Archived User'},
|
||||||
'1010340002': {
|
'1010340002': {
|
||||||
|
|||||||
@@ -20,14 +20,19 @@
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
GAM_VER_LIBS = ['cryptography',
|
GAM_VER_LIBS = [
|
||||||
'filelock',
|
'chardet',
|
||||||
'google-api-python-client',
|
'cryptography',
|
||||||
'google-auth-httplib2',
|
'filelock',
|
||||||
'google-auth-oauthlib',
|
'google-api-python-client',
|
||||||
'google-auth',
|
'google-auth-httplib2',
|
||||||
'httplib2',
|
'google-auth-oauthlib',
|
||||||
'passlib',
|
'google-auth',
|
||||||
'python-dateutil',
|
'lxml',
|
||||||
'yubikey-manager',
|
'httplib2',
|
||||||
]
|
'passlib',
|
||||||
|
'pathvalidate',
|
||||||
|
'pyscard',
|
||||||
|
'python-dateutil',
|
||||||
|
'yubikey-manager',
|
||||||
|
]
|
||||||
|
|||||||
BIN
src/license.rtf
BIN
src/license.rtf
Binary file not shown.
@@ -1,14 +1,14 @@
|
|||||||
chardet
|
chardet>=5.2.0
|
||||||
cryptography
|
cryptography>=44.0.2
|
||||||
distro; sys_platform=='linux'
|
distro; sys_platform=='linux'
|
||||||
filelock
|
filelock>=3.18.0
|
||||||
google-api-python-client>=2.1
|
google-api-python-client>=2.167.0
|
||||||
google-auth-httplib2
|
google-auth-httplib2>=0.2.0
|
||||||
google-auth-oauthlib>=0.4.1
|
google-auth-oauthlib>=1.2.2
|
||||||
google-auth>=2.3.2
|
google-auth>=2.39.0
|
||||||
httplib2>=0.17.0
|
httplib2>=0.22.0
|
||||||
lxml
|
lxml>=5.4.0
|
||||||
passlib>=1.7.2
|
passlib>=1.7.4
|
||||||
pathvalidate
|
pathvalidate>=3.2.3
|
||||||
python-dateutil
|
python-dateutil
|
||||||
yubikey-manager[yubikey]>=5.0
|
yubikey-manager>=5.6.1
|
||||||
|
|||||||
@@ -17,26 +17,28 @@ classifiers =
|
|||||||
Programming Language :: Python :: 3.10
|
Programming Language :: Python :: 3.10
|
||||||
Programming Language :: Python :: 3.11
|
Programming Language :: Python :: 3.11
|
||||||
Programming Language :: Python :: 3.12
|
Programming Language :: Python :: 3.12
|
||||||
|
Programming Language :: Python :: 3.13
|
||||||
License :: OSI Approved :: Apache License
|
License :: OSI Approved :: Apache License
|
||||||
|
|
||||||
[options]
|
[options]
|
||||||
packages = find:
|
packages = find:
|
||||||
python_requires = >= 3.8
|
python_requires = >= 3.9
|
||||||
|
# The following files should be edited to match: pyproject.toml, requirements.txt
|
||||||
install_requires =
|
install_requires =
|
||||||
chardet
|
chardet >= 5.2.0
|
||||||
cryptography
|
cryptography >= 44.0.2
|
||||||
distro; sys_platform == 'linux'
|
distro; sys_platform == 'linux'
|
||||||
filelock
|
filelock >= 3.18.0
|
||||||
google-api-python-client >= 2.36
|
google-api-python-client >= 2.167.0
|
||||||
google-auth-httplib2
|
google-auth-httplib2 >= 0.2.0
|
||||||
google-auth-oauthlib >= 0.4.6
|
google-auth-oauthlib >= 1.2.2
|
||||||
google-auth >= 2.3.3
|
google-auth >= 2.39.0
|
||||||
httplib2 >= 0.20.2
|
httplib2 >= 0.22.0
|
||||||
lxml
|
lxml >= 5.4.0
|
||||||
passlib >= 1.7.4
|
passlib >= 1.7.4
|
||||||
pathvalidate
|
pathvalidate >= 3.2.3
|
||||||
python-dateutil
|
python-dateutil
|
||||||
yubikey-manager >= 5.0
|
yubikey-manager >= 5.6.1
|
||||||
|
|
||||||
[options.package_data]
|
[options.package_data]
|
||||||
* = *.pem
|
* = *.pem
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -64,6 +64,7 @@ Verify the following steps:
|
|||||||
* If groups are used to authenticate access, make sure the super admin is in one of the groups
|
* If groups are used to authenticate access, make sure the super admin is in one of the groups
|
||||||
* Collapse "Service status"
|
* Collapse "Service status"
|
||||||
* Expand "Cloud Resource Manager API settings"
|
* Expand "Cloud Resource Manager API settings"
|
||||||
|
* Select the OU in the left that contains the super admin you'll be using
|
||||||
* Make sure that "Allow users to create projects" is checked
|
* Make sure that "Allow users to create projects" is checked
|
||||||
|
|
||||||
Verify that all scopes are available:
|
Verify that all scopes are available:
|
||||||
@@ -283,7 +284,7 @@ You can skip these steps if you know that untrusted third-party apps are allowed
|
|||||||
* `<ServiceAccountDisplayName>` - `<ProjectName>`
|
* `<ServiceAccountDisplayName>` - `<ProjectName>`
|
||||||
* `<ServiceAccountDescription>` - `<ServiceAccountDisplayName>`
|
* `<ServiceAccountDescription>` - `<ServiceAccountDisplayName>`
|
||||||
|
|
||||||
### Basic
|
### Basic Create
|
||||||
Create a project with default values for the project and service account.
|
Create a project with default values for the project and service account.
|
||||||
```
|
```
|
||||||
gam create project [<EmailAddress>] [<ProjectID>]
|
gam create project [<EmailAddress>] [<ProjectID>]
|
||||||
@@ -291,7 +292,7 @@ gam create project [<EmailAddress>] [<ProjectID>]
|
|||||||
* `<EmailAddress>` - Google Workspace admin/GCP project manager; if omitted, you will be prompted for the address
|
* `<EmailAddress>` - Google Workspace admin/GCP project manager; if omitted, you will be prompted for the address
|
||||||
* `<ProjectID>` - A new Google project ID; if omitted, a default value will be used
|
* `<ProjectID>` - A new Google project ID; if omitted, a default value will be used
|
||||||
|
|
||||||
### Advanced
|
### Advanced Create
|
||||||
Create a project with user-specified values for the project and service account.
|
Create a project with user-specified values for the project and service account.
|
||||||
```
|
```
|
||||||
gam create project [admin <EmailAddress>] [project <ProjectID>]
|
gam create project [admin <EmailAddress>] [project <ProjectID>]
|
||||||
@@ -326,7 +327,7 @@ Use an existing project to create and download two files: `client_secrets.json`
|
|||||||
* `<ServiceAccountDisplayName>` - `<ProjectName>`
|
* `<ServiceAccountDisplayName>` - `<ProjectName>`
|
||||||
* `<ServiceAccountDescription>` - `<ServiceAccountDisplayName>`
|
* `<ServiceAccountDescription>` - `<ServiceAccountDisplayName>`
|
||||||
|
|
||||||
### Basic
|
### Basic Use
|
||||||
Use an existing uninitialized/uncredentialed project and configure it to be a GAM project; this typically used when
|
Use an existing uninitialized/uncredentialed project and configure it to be a GAM project; this typically used when
|
||||||
the GCP administrators have created a basic project because project creation is not available for most users.
|
the GCP administrators have created a basic project because project creation is not available for most users.
|
||||||
|
|
||||||
@@ -338,12 +339,13 @@ gam use project [<EmailAddress>] [project <ProjectID>]
|
|||||||
* `<EmailAddress>` - Google Workspace admin/GCP project manager; if omitted, you will be prompted for the address
|
* `<EmailAddress>` - Google Workspace admin/GCP project manager; if omitted, you will be prompted for the address
|
||||||
* `<ProjectID>` - An existing Google project ID; if omitted, you will be prompted for the ID
|
* `<ProjectID>` - An existing Google project ID; if omitted, you will be prompted for the ID
|
||||||
|
|
||||||
### Advanced
|
### Advanced Use
|
||||||
Use an existing project with user-specified values for the service account. If the project is already
|
Use an existing project with user-specified values for the service account. If the project is already
|
||||||
a GAM project you must use `saname <ServiceAccountName>` as the existing service account information
|
a GAM project you must use `saname <ServiceAccountName>` as the existing service account information
|
||||||
can not be re-downloaded.
|
can not be re-downloaded.
|
||||||
```
|
```
|
||||||
gam use project [admin <EmailAddress>] [project <ProjectID>]
|
gam use project [admin <EmailAddress>] [project <ProjectID>]
|
||||||
|
[appname <String>] [supportemail <EmailAddress>]
|
||||||
[saname <ServiceAccountName>] [sadisplayname <ServiceAccountDisplayName>]
|
[saname <ServiceAccountName>] [sadisplayname <ServiceAccountDisplayName>]
|
||||||
[sadescription <ServiceAccountDescription>]
|
[sadescription <ServiceAccountDescription>]
|
||||||
[(algorithm KEY_ALG_RSA_1024|KEY_ALG_RSA_2048)|
|
[(algorithm KEY_ALG_RSA_1024|KEY_ALG_RSA_2048)|
|
||||||
|
|||||||
@@ -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]
|
||||||
[countsonly] [formatjson]
|
[countsly] [formatjson]
|
||||||
```
|
```
|
||||||
In `<EventEntity>`, any `<EventSelectProperty>` options must precede all other options.
|
In `<EventEntity>`, any `<EventSelectProperty>` options must precede all other options.
|
||||||
|
|
||||||
@@ -585,8 +585,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] [formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
[countsonly [eventrowfilter]]
|
||||||
|
[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.
|
||||||
|
|
||||||
@@ -602,6 +603,11 @@ By default, Gam displays the information as columns of fields; the following opt
|
|||||||
|
|
||||||
By default, Gam displays event details, use `countsonly` to display only the number of events. `formatjson` does not apply in this case.
|
By default, Gam displays event details, use `countsonly` to display only the number of events. `formatjson` does not apply in this case.
|
||||||
|
|
||||||
|
When `countsonly` is specified, the `eventrowfilter` option causes
|
||||||
|
GAM to apply `config csv_output_row_filter` to the event details rather than the event counts.
|
||||||
|
This will be useful when `<EventSelectProperty>` and `<EventMatchProperty>` do not have the
|
||||||
|
capabilty to select the events of interest; e.g., you want to filter based on the event `created` property.
|
||||||
|
|
||||||
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
|
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
|
||||||
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
|
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
|
||||||
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
|
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
|
||||||
@@ -627,6 +633,8 @@ gam calendar <CalendarEntity> deleteevent (id|eventid <EventID>)+ [doit] [<Event
|
|||||||
gam calendar <CalendarEntity> moveevent (id|eventid <EventID>)+ destination <CalendarItem> [<EventNotificationAttribute>]
|
gam calendar <CalendarEntity> moveevent (id|eventid <EventID>)+ destination <CalendarItem> [<EventNotificationAttribute>]
|
||||||
gam calendar <CalendarEntity> updateevent <EventID> <EventAttribute>+ [<EventNotificationAttribute>]
|
gam calendar <CalendarEntity> updateevent <EventID> <EventAttribute>+ [<EventNotificationAttribute>]
|
||||||
gam calendar <CalendarEntity> wipe
|
gam calendar <CalendarEntity> wipe
|
||||||
gam calendar <CalendarEntity> printevents <EventSelectProperty>* <EventDisplayProperty>* [fields <EventFieldNameList>]
|
gam calendar <CalendarEntity> printevents <EventSelectProperty>* <EventDisplayProperty>*
|
||||||
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
[fields <EventFieldNameList>]
|
||||||
|
[countsonly [eventrowfilter]]
|
||||||
|
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# Chat Bot
|
# Chat Bot
|
||||||
|
- [Introduction](#introduction)
|
||||||
|
- [Set up a Chat Bot](#set-up-a-chat-bot)
|
||||||
- [API documentation](#api-documentation)
|
- [API documentation](#api-documentation)
|
||||||
- [Definitions](#definitions)
|
- [Definitions](#definitions)
|
||||||
- [Set up a Chat Bot](#set-up-a-chat-bot)
|
|
||||||
- [Display Rooms and Chats to which your Bot belongs](#display-rooms-and-chats-to-which-your-bot-belongs)
|
- [Display Rooms and Chats to which your Bot belongs](#display-rooms-and-chats-to-which-your-bot-belongs)
|
||||||
- [Display Members of a Room or Chat](#display-members-of-a-room-or-chat)
|
- [Display Members of a Room or Chat](#display-members-of-a-room-or-chat)
|
||||||
- [Create a Chat Message](#create-a-chat-message)
|
- [Create a Chat Message](#create-a-chat-message)
|
||||||
@@ -10,6 +10,43 @@
|
|||||||
- [Delete a Chat Message](#delete-a-chat-message)
|
- [Delete a Chat Message](#delete-a-chat-message)
|
||||||
- [Display a Chat Message](#display-a-chat-message)
|
- [Display a Chat Message](#display-a-chat-message)
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
To use these commands you must update your service account authorization.
|
||||||
|
```
|
||||||
|
gam user user@domain.com update serviceaccount
|
||||||
|
|
||||||
|
[*] 4) Chat API - Memberships (supports readonly)
|
||||||
|
[*] 5) Chat API - Memberships Admin (supports readonly)
|
||||||
|
[*] 6) Chat API - Messages (supports readonly)
|
||||||
|
[*] 7) Chat API - Spaces (supports readonly)
|
||||||
|
[*] 8) Chat API - Spaces Admin (supports readonly)
|
||||||
|
[*] 9) Chat API - Spaces Delete
|
||||||
|
[*] 10) Chat API - Spaces Delete Admin
|
||||||
|
```
|
||||||
|
|
||||||
|
Added `use_chat_admin_access` Boolean variable to `gam.cfg`.
|
||||||
|
```
|
||||||
|
* When False, GAM uses user access when making all Chat API calls. For calls that support admin access,
|
||||||
|
this can be overridden with the asadmin command line option.
|
||||||
|
* When True, GAM uses admin access for Chat API calls that support admin access; other calls will use user access.
|
||||||
|
* Default: False
|
||||||
|
```
|
||||||
|
|
||||||
|
Google requires that you have a Chat Bot configured in order to use the Chat API; set up a Chat Bot as described in the next section.
|
||||||
|
|
||||||
|
## Set up a Chat Bot
|
||||||
|
GAM is capable of acting as a Chat Bot and sending messages to Chat Rooms or direct messages to users.
|
||||||
|
|
||||||
|
Even if you're not going to use GAM as a Chat Bot, you have to configure a Chat Bot as it is required by the Chat API in [Users - Chat](Users-Chat).
|
||||||
|
|
||||||
|
* Run the command `gam setup chat`; it will point you to a URL to configure your Chat Bot.
|
||||||
|
* Enter an App name and Description of your choosing.
|
||||||
|
* For the Avatar URL you can use `https://dummyimage.com/384x256/4d4d4d/0011ff.png&text=+GAM` or a public URL to an image of your own choosing.
|
||||||
|
* In Functionality, uncheck both "Receive 1:1 messages" and "Join spaces and group conversations"
|
||||||
|
* In Connection settings, choose "Cloud Pub/Sub" and enter `projects/<ProjectID>/topics/no-topic` for the Topic Name. Replace `<ProjectID>` with your GAM project ID. GAM doesn't yet listen to pub/sub so this option is not used.
|
||||||
|
* In Visibility, uncheck "Make this Chat app available to specific people and groups in Domain Workspace".
|
||||||
|
* Click Save.
|
||||||
|
|
||||||
## API documentation
|
## API documentation
|
||||||
* https://developers.google.com/chat/concepts
|
* https://developers.google.com/chat/concepts
|
||||||
* https://developers.google.com/chat/reference/rest
|
* https://developers.google.com/chat/reference/rest
|
||||||
@@ -102,19 +139,6 @@
|
|||||||
<ChatMessageFieldNameList> ::= "<ChatMessageFieldName>(,<ChatMessageFieldName>)*"
|
<ChatMessageFieldNameList> ::= "<ChatMessageFieldName>(,<ChatMessageFieldName>)*"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Set up a Chat Bot
|
|
||||||
Since GAM 6.04.00, GAM is capable of acting as a Chat Bot and sending messages to Chat Rooms or direct messages to users. You first need to configure your Chat Bot.
|
|
||||||
|
|
||||||
* Run the command `gam setup chat`; it will point you to a URL to configure your Chat Bot.
|
|
||||||
* Enter an App name and Description of your choosing.
|
|
||||||
* For the Avatar URL you can use `https://dummyimage.com/384x256/4d4d4d/0011ff.png&text=+GAM` or a public URL to an image of your own choosing.
|
|
||||||
* In Functionality, uncheck both "Receive 1:1 messages" and "Join spaces and group conversations"
|
|
||||||
* In Connection settings, choose "Cloud Pub/Sub" and enter `projects/<ProjectID>/topics/no-topic` for the topic name. Replace `<ProjectID>` with your GAM project ID. GAM doesn't yet listen to pub/sub so this option is not used.
|
|
||||||
* In Visibility, uncheck "Make this Chat app available to specific people and groups in Domain Workspace".
|
|
||||||
* Click Save.
|
|
||||||
|
|
||||||
----
|
|
||||||
|
|
||||||
## Display Rooms and Chats to which your Bot belongs
|
## Display Rooms and Chats to which your Bot belongs
|
||||||
Display the spaces to which your Chat Bot can send messages.
|
Display the spaces to which your Chat Bot can send messages.
|
||||||
A space can be a direct message to a user, a chat group or a chat room.
|
A space can be a direct message to a user, a chat group or a chat room.
|
||||||
|
|||||||
@@ -577,7 +577,7 @@ chrome.devices.DeviceAllowEnterpriseRemoteAccessConnections: Enterprise remote a
|
|||||||
false: Prevent remote access connections from enterprise admins.
|
false: Prevent remote access connections from enterprise admins.
|
||||||
|
|
||||||
chrome.devices.DeviceAuthenticationFlowAutoReloadInterval: Automatic online sign-in / lock screen refresh.
|
chrome.devices.DeviceAuthenticationFlowAutoReloadInterval: Automatic online sign-in / lock screen refresh.
|
||||||
duration: TYPE_INT64
|
deviceAuthenticationFlowAutoReloadInterval: TYPE_INT64
|
||||||
|
|
||||||
chrome.devices.DeviceAuthenticationUrlAllowlist: Blocked URL exceptions on the sign-in / lock screens.
|
chrome.devices.DeviceAuthenticationUrlAllowlist: Blocked URL exceptions on the sign-in / lock screens.
|
||||||
deviceAuthenticationUrlAllowlist: TYPE_LIST
|
deviceAuthenticationUrlAllowlist: TYPE_LIST
|
||||||
@@ -799,7 +799,7 @@ chrome.devices.DeviceScreensaverLoginScreenEnabled: Screen saver.
|
|||||||
false: Don't display screen saver when idle.
|
false: Don't display screen saver when idle.
|
||||||
deviceScreensaverLoginScreenImages: TYPE_LIST
|
deviceScreensaverLoginScreenImages: TYPE_LIST
|
||||||
Screen saver image URLs. Enter one URL per line. Images must be in JPG format(.jpg or .jpeg files.
|
Screen saver image URLs. Enter one URL per line. Images must be in JPG format(.jpg or .jpeg files.
|
||||||
duration: TYPE_INT64
|
deviceScreensaverLoginScreenImageDisplayIntervalSeconds: TYPE_INT64
|
||||||
|
|
||||||
chrome.devices.DeviceScreenSettings: Screen settings.
|
chrome.devices.DeviceScreenSettings: Screen settings.
|
||||||
allowUserDisplayChanges: TYPE_BOOL
|
allowUserDisplayChanges: TYPE_BOOL
|
||||||
@@ -967,10 +967,10 @@ chrome.devices.EnableReportUploadFrequency: Device status report upload frequenc
|
|||||||
duration: TYPE_STRING
|
duration: TYPE_STRING
|
||||||
|
|
||||||
chrome.devices.EnableReportUploadFrequencyV2: Device status report upload frequency.
|
chrome.devices.EnableReportUploadFrequencyV2: Device status report upload frequency.
|
||||||
duration: TYPE_INT64
|
reportDeviceUploadFrequency: TYPE_INT64
|
||||||
|
|
||||||
chrome.devices.ExtensionCacheSize: Apps and extensions cache size.
|
chrome.devices.ExtensionCacheSize: Apps and extensions cache size.
|
||||||
value: TYPE_INT64
|
extensionCacheSize: TYPE_INT64
|
||||||
|
|
||||||
chrome.devices.ForcedReenrollment: Forced re-enrollment.
|
chrome.devices.ForcedReenrollment: Forced re-enrollment.
|
||||||
reenrollmentMode: TYPE_ENUM
|
reenrollmentMode: TYPE_ENUM
|
||||||
@@ -1031,7 +1031,7 @@ chrome.devices.kiosk.AcPowerSettingsV2: AC Kiosk power settings.
|
|||||||
IDLE_ACTION_LOGOUT: Logout.
|
IDLE_ACTION_LOGOUT: Logout.
|
||||||
IDLE_ACTION_SHUTDOWN: Shutdown.
|
IDLE_ACTION_SHUTDOWN: Shutdown.
|
||||||
IDLE_ACTION_DO_NOTHING: Do nothing.
|
IDLE_ACTION_DO_NOTHING: Do nothing.
|
||||||
duration: TYPE_INT64
|
acScreenOffTimeout: TYPE_INT64
|
||||||
|
|
||||||
chrome.devices.kiosk.Alerting: Kiosk device status alerting delivery.
|
chrome.devices.kiosk.Alerting: Kiosk device status alerting delivery.
|
||||||
deviceStatusAlertDeliveryModes: TYPE_LIST
|
deviceStatusAlertDeliveryModes: TYPE_LIST
|
||||||
@@ -1121,7 +1121,7 @@ chrome.devices.kiosk.BatteryPowerSettingsV2: Battery Kiosk power settings.
|
|||||||
IDLE_ACTION_LOGOUT: Logout.
|
IDLE_ACTION_LOGOUT: Logout.
|
||||||
IDLE_ACTION_SHUTDOWN: Shutdown.
|
IDLE_ACTION_SHUTDOWN: Shutdown.
|
||||||
IDLE_ACTION_DO_NOTHING: Do nothing.
|
IDLE_ACTION_DO_NOTHING: Do nothing.
|
||||||
duration: TYPE_INT64
|
batteryScreenOffTimeout: TYPE_INT64
|
||||||
|
|
||||||
chrome.devices.kiosk.CaretHighlightEnabled: Kiosk caret highlight.
|
chrome.devices.kiosk.CaretHighlightEnabled: Kiosk caret highlight.
|
||||||
caretHighlightEnabled: TYPE_ENUM
|
caretHighlightEnabled: TYPE_ENUM
|
||||||
@@ -1486,6 +1486,7 @@ chrome.devices.managedguest.apps.EnterpriseChallenge: Allows setting of whether
|
|||||||
|
|
||||||
chrome.devices.managedguest.apps.IncludeInChromeWebStoreCollection: Specifies whether the Chrome Application should appear in the Chrome Web Store collection.
|
chrome.devices.managedguest.apps.IncludeInChromeWebStoreCollection: Specifies whether the Chrome Application should appear in the Chrome Web Store collection.
|
||||||
includeInCollection: TYPE_BOOL
|
includeInCollection: TYPE_BOOL
|
||||||
|
spotlightRecommended: TYPE_BOOL
|
||||||
|
|
||||||
chrome.devices.managedguest.apps.InstallationUrl: Specifies the url from which to install a self hosted Chrome Extension.
|
chrome.devices.managedguest.apps.InstallationUrl: Specifies the url from which to install a self hosted Chrome Extension.
|
||||||
installationUrl: TYPE_STRING
|
installationUrl: TYPE_STRING
|
||||||
@@ -1606,7 +1607,7 @@ chrome.devices.managedguest.BrowsingDataLifetime: Browsing Data Lifetime.
|
|||||||
duration: TYPE_STRING
|
duration: TYPE_STRING
|
||||||
|
|
||||||
chrome.devices.managedguest.BrowsingDataLifetimeV2: Browsing Data Lifetime.
|
chrome.devices.managedguest.BrowsingDataLifetimeV2: Browsing Data Lifetime.
|
||||||
duration: TYPE_INT64
|
hostedAppDataTtl: TYPE_INT64
|
||||||
|
|
||||||
chrome.devices.managedguest.BuiltInDnsClientEnabled: Built-in DNS client.
|
chrome.devices.managedguest.BuiltInDnsClientEnabled: Built-in DNS client.
|
||||||
builtInDnsClientEnabled: TYPE_ENUM
|
builtInDnsClientEnabled: TYPE_ENUM
|
||||||
@@ -1900,6 +1901,8 @@ chrome.devices.managedguest.ExternalStorage: External storage devices.
|
|||||||
READ_WRITE: Allow read and write access to all external storage devices.
|
READ_WRITE: Allow read and write access to all external storage devices.
|
||||||
READ_ONLY: Allow read only access to all external storage devices.
|
READ_ONLY: Allow read only access to all external storage devices.
|
||||||
DISALLOW: Do not allow read and write access to external storage devices.
|
DISALLOW: Do not allow read and write access to external storage devices.
|
||||||
|
externalStorageAllowlist: TYPE_LIST
|
||||||
|
Specify devices to always have read and write access. USB devices which are allowlisted for read and write access. To identify a specific device, enter colon separated hexadecimal pairs of USB Vendor Identifier and Product Identifier.
|
||||||
|
|
||||||
chrome.devices.managedguest.FastPairEnabled: Fast Pair (fast Bluetooth pairing).
|
chrome.devices.managedguest.FastPairEnabled: Fast Pair (fast Bluetooth pairing).
|
||||||
fastPairEnabled: TYPE_ENUM
|
fastPairEnabled: TYPE_ENUM
|
||||||
@@ -2301,7 +2304,7 @@ chrome.devices.managedguest.MaxInvalidationFetchDelay: Policy fetch delay.
|
|||||||
duration: TYPE_STRING
|
duration: TYPE_STRING
|
||||||
|
|
||||||
chrome.devices.managedguest.MaxInvalidationFetchDelayV2: Policy fetch delay.
|
chrome.devices.managedguest.MaxInvalidationFetchDelayV2: Policy fetch delay.
|
||||||
duration: TYPE_INT64
|
maxInvalidationFetchDelay: TYPE_INT64
|
||||||
|
|
||||||
chrome.devices.managedguest.MemorySaverModeSavings: Memory saver.
|
chrome.devices.managedguest.MemorySaverModeSavings: Memory saver.
|
||||||
memorySaverModeSavings: TYPE_ENUM
|
memorySaverModeSavings: TYPE_ENUM
|
||||||
@@ -2503,7 +2506,7 @@ chrome.devices.managedguest.PrintingBackgroundGraphicsDefault: Background graphi
|
|||||||
ENABLED: Enable background graphics printing mode by default.
|
ENABLED: Enable background graphics printing mode by default.
|
||||||
|
|
||||||
chrome.devices.managedguest.PrintingMaxSheetsAllowed: Maximum sheets.
|
chrome.devices.managedguest.PrintingMaxSheetsAllowed: Maximum sheets.
|
||||||
value: TYPE_INT64
|
printingMaxSheetsAllowedNullable: TYPE_INT64
|
||||||
|
|
||||||
chrome.devices.managedguest.PrintingPaperSizeDefault: Default printing page size.
|
chrome.devices.managedguest.PrintingPaperSizeDefault: Default printing page size.
|
||||||
printingPaperSizeEnum: TYPE_ENUM
|
printingPaperSizeEnum: TYPE_ENUM
|
||||||
@@ -2528,7 +2531,7 @@ chrome.devices.managedguest.PrintJobHistoryExpirationPeriodNew: Print job histor
|
|||||||
duration: TYPE_STRING
|
duration: TYPE_STRING
|
||||||
|
|
||||||
chrome.devices.managedguest.PrintJobHistoryExpirationPeriodNewV2: Print job history retention period.
|
chrome.devices.managedguest.PrintJobHistoryExpirationPeriodNewV2: Print job history retention period.
|
||||||
duration: TYPE_INT64
|
printJobHistoryExpirationPeriodDaysNew: TYPE_INT64
|
||||||
|
|
||||||
chrome.devices.managedguest.PrintPdfAsImage: Print PDF as image.
|
chrome.devices.managedguest.PrintPdfAsImage: Print PDF as image.
|
||||||
printPdfAsImageAvailability: TYPE_BOOL
|
printPdfAsImageAvailability: TYPE_BOOL
|
||||||
@@ -2595,7 +2598,7 @@ chrome.devices.managedguest.RemoteAccessHostClientDomainList: Remote access clie
|
|||||||
Remote access client domain. Configure the required domain names for remote access clients.
|
Remote access client domain. Configure the required domain names for remote access clients.
|
||||||
|
|
||||||
chrome.devices.managedguest.RemoteAccessHostClipboardSizeBytes: Clipboard sync max size.
|
chrome.devices.managedguest.RemoteAccessHostClipboardSizeBytes: Clipboard sync max size.
|
||||||
value: TYPE_INT64
|
remoteAccessHostClipboardSizeBytes: TYPE_INT64
|
||||||
|
|
||||||
chrome.devices.managedguest.RemoteAccessHostDomainList: Remote access hosts.
|
chrome.devices.managedguest.RemoteAccessHostDomainList: Remote access hosts.
|
||||||
remoteAccessHostDomainList: TYPE_LIST
|
remoteAccessHostDomainList: TYPE_LIST
|
||||||
@@ -2740,7 +2743,7 @@ chrome.devices.managedguest.SecurityTokenSessionSettingsV2: Security token remov
|
|||||||
IGNORE: Nothing.
|
IGNORE: Nothing.
|
||||||
LOGOUT: Log the user out.
|
LOGOUT: Log the user out.
|
||||||
LOCK: Lock the current session.
|
LOCK: Lock the current session.
|
||||||
duration: TYPE_INT64
|
securityTokenSessionNotificationSeconds: TYPE_INT64
|
||||||
|
|
||||||
chrome.devices.managedguest.SelectToSpeakEnabled: Select to speak.
|
chrome.devices.managedguest.SelectToSpeakEnabled: Select to speak.
|
||||||
selectToSpeakEnabled: TYPE_ENUM
|
selectToSpeakEnabled: TYPE_ENUM
|
||||||
@@ -2766,7 +2769,7 @@ chrome.devices.managedguest.SessionLength: Maximum user session length.
|
|||||||
duration: TYPE_STRING
|
duration: TYPE_STRING
|
||||||
|
|
||||||
chrome.devices.managedguest.SessionLengthV2: Maximum user session length.
|
chrome.devices.managedguest.SessionLengthV2: Maximum user session length.
|
||||||
duration: TYPE_INT64
|
sessionDurationLimit: TYPE_INT64
|
||||||
|
|
||||||
chrome.devices.managedguest.SessionLocale: Session locale.
|
chrome.devices.managedguest.SessionLocale: Session locale.
|
||||||
sessionLocalesRepeatedString: TYPE_LIST
|
sessionLocalesRepeatedString: TYPE_LIST
|
||||||
@@ -3218,7 +3221,7 @@ chrome.devices.ScheduledRebootDuration: Reboot after uptime limit.
|
|||||||
duration: TYPE_STRING
|
duration: TYPE_STRING
|
||||||
|
|
||||||
chrome.devices.ScheduledRebootDurationV2: Reboot after uptime limit.
|
chrome.devices.ScheduledRebootDurationV2: Reboot after uptime limit.
|
||||||
duration: TYPE_INT64
|
uptimeLimitDuration: TYPE_INT64
|
||||||
|
|
||||||
chrome.devices.ShowLowDiskSpaceNotification: Low disk space notification.
|
chrome.devices.ShowLowDiskSpaceNotification: Low disk space notification.
|
||||||
showLowDiskSpaceNotification: TYPE_BOOL
|
showLowDiskSpaceNotification: TYPE_BOOL
|
||||||
@@ -3796,6 +3799,7 @@ chrome.users.apps.EnterpriseChallenge: Allows setting of whether the app can cha
|
|||||||
|
|
||||||
chrome.users.apps.IncludeInChromeWebStoreCollection: Specifies whether the Chrome Application should appear in the Chrome Web Store collection.
|
chrome.users.apps.IncludeInChromeWebStoreCollection: Specifies whether the Chrome Application should appear in the Chrome Web Store collection.
|
||||||
includeInCollection: TYPE_BOOL
|
includeInCollection: TYPE_BOOL
|
||||||
|
spotlightRecommended: TYPE_BOOL
|
||||||
|
|
||||||
chrome.users.apps.InstallationUrl: Specifies the url from which to install a self hosted Chrome Extension.
|
chrome.users.apps.InstallationUrl: Specifies the url from which to install a self hosted Chrome Extension.
|
||||||
installationUrl: TYPE_STRING
|
installationUrl: TYPE_STRING
|
||||||
@@ -3808,6 +3812,9 @@ chrome.users.apps.InstallType: Specifies the manner in which the app is to be in
|
|||||||
ALLOWED: Allow installation of the app.
|
ALLOWED: Allow installation of the app.
|
||||||
FORCED: Force install the app.
|
FORCED: Force install the app.
|
||||||
FORCED_AND_PIN_TO_TOOLBAR: Force install and pin the app to the toolbar.
|
FORCED_AND_PIN_TO_TOOLBAR: Force install and pin the app to the toolbar.
|
||||||
|
NORMAL: Force install the app, but allow the user to disable it. This option is only available for Chrome extensions.
|
||||||
|
NORMAL_AND_PIN_TO_TOOLBAR: Force install and pin the app to the toolbar, but allow the user to disable it. This option is only available for Chrome extensions.
|
||||||
|
REMOVE: Block installation of the app and remove it from the device. This option is only available for Chrome extensions.
|
||||||
|
|
||||||
chrome.users.apps.ManagedConfiguration: Allows setting of the managed configuration.
|
chrome.users.apps.ManagedConfiguration: Allows setting of the managed configuration.
|
||||||
managedConfiguration: TYPE_STRING
|
managedConfiguration: TYPE_STRING
|
||||||
@@ -4081,6 +4088,13 @@ chrome.users.AutofillCreditCardEnabled: Credit card form autofill.
|
|||||||
true: Allow user to configure.
|
true: Allow user to configure.
|
||||||
false: Never Autofill credit card forms.
|
false: Never Autofill credit card forms.
|
||||||
|
|
||||||
|
chrome.users.AutofillPredictionSettings: Autofill with AI.
|
||||||
|
autofillPredictionSettings: TYPE_ENUM
|
||||||
|
ALLOWED: Allow autofill prediction and improve AI models.
|
||||||
|
ALLOWED_WITHOUT_LOGGING: Allow autofill prediction without improving AI models.
|
||||||
|
DISABLED: Do not allow autofill prediction.
|
||||||
|
UNSET: Use the value specified in the Generative AI policy defaults setting.
|
||||||
|
|
||||||
chrome.users.AutomaticFullscreen: Automatic fullscreen.
|
chrome.users.AutomaticFullscreen: Automatic fullscreen.
|
||||||
automaticFullscreenAllowedForUrls: TYPE_LIST
|
automaticFullscreenAllowedForUrls: TYPE_LIST
|
||||||
Allow automatic fullscreen on these sites. Supersedes users' personal settings and allows matching origins to call the API without a prior user gesture.
|
Allow automatic fullscreen on these sites. Supersedes users' personal settings and allows matching origins to call the API without a prior user gesture.
|
||||||
@@ -4101,7 +4115,7 @@ chrome.users.AutoUpdateCheckPeriodNew: Auto-update check period.
|
|||||||
duration: TYPE_STRING
|
duration: TYPE_STRING
|
||||||
|
|
||||||
chrome.users.AutoUpdateCheckPeriodNewV2: Auto-update check period.
|
chrome.users.AutoUpdateCheckPeriodNewV2: Auto-update check period.
|
||||||
duration: TYPE_INT64
|
autoUpdateCheckPeriodMinutesNew: TYPE_INT64
|
||||||
|
|
||||||
chrome.users.Avatar: Custom avatar.
|
chrome.users.Avatar: Custom avatar.
|
||||||
downloadUri: TYPE_STRING
|
downloadUri: TYPE_STRING
|
||||||
@@ -4227,7 +4241,7 @@ chrome.users.BrowserSwitcherDelayDuration: Delay before launching alternative br
|
|||||||
duration: TYPE_STRING
|
duration: TYPE_STRING
|
||||||
|
|
||||||
chrome.users.BrowserSwitcherDelayDurationV2: Delay before launching alternative browser.
|
chrome.users.BrowserSwitcherDelayDurationV2: Delay before launching alternative browser.
|
||||||
duration: TYPE_INT64
|
browserSwitcherDelayDuration: TYPE_INT64
|
||||||
|
|
||||||
chrome.users.BrowserSwitcherExternalGreylistUrl: URL to list of websites to open in either browser.
|
chrome.users.BrowserSwitcherExternalGreylistUrl: URL to list of websites to open in either browser.
|
||||||
browserSwitcherExternalGreylistUrl: TYPE_STRING
|
browserSwitcherExternalGreylistUrl: TYPE_STRING
|
||||||
@@ -4268,7 +4282,7 @@ chrome.users.BrowsingDataLifetime: Browsing Data Lifetime.
|
|||||||
duration: TYPE_STRING
|
duration: TYPE_STRING
|
||||||
|
|
||||||
chrome.users.BrowsingDataLifetimeV2: Browsing Data Lifetime.
|
chrome.users.BrowsingDataLifetimeV2: Browsing Data Lifetime.
|
||||||
duration: TYPE_INT64
|
hostedAppDataTtl: TYPE_INT64
|
||||||
|
|
||||||
chrome.users.BuiltInDnsClientEnabled: Built-in DNS client.
|
chrome.users.BuiltInDnsClientEnabled: Built-in DNS client.
|
||||||
builtInDnsClientEnabled: TYPE_ENUM
|
builtInDnsClientEnabled: TYPE_ENUM
|
||||||
@@ -4418,11 +4432,16 @@ chrome.users.CloudProfileReportingEnabled: Managed profile reporting.
|
|||||||
true: Enable managed profile reporting for managed users.
|
true: Enable managed profile reporting for managed users.
|
||||||
false: Disable managed profile reporting for managed users.
|
false: Disable managed profile reporting for managed users.
|
||||||
|
|
||||||
|
chrome.users.CloudReporting: Managed browser reporting.
|
||||||
|
cloudReportingEnabled: TYPE_BOOL
|
||||||
|
true: Enable managed browser cloud reporting.
|
||||||
|
false: Disable managed browser cloud reporting.
|
||||||
|
|
||||||
chrome.users.CloudReportingUploadFrequency: Managed browser reporting upload frequency.
|
chrome.users.CloudReportingUploadFrequency: Managed browser reporting upload frequency.
|
||||||
duration: TYPE_STRING
|
duration: TYPE_STRING
|
||||||
|
|
||||||
chrome.users.CloudReportingUploadFrequencyV2: Managed browser reporting upload frequency.
|
chrome.users.CloudReportingUploadFrequencyV2: Managed browser reporting upload frequency.
|
||||||
duration: TYPE_INT64
|
cloudReportingUploadFrequency: TYPE_INT64
|
||||||
|
|
||||||
chrome.users.CloudUserPolicyMerge: User cloud policy merge.
|
chrome.users.CloudUserPolicyMerge: User cloud policy merge.
|
||||||
cloudUserPolicyMerge: TYPE_BOOL
|
cloudUserPolicyMerge: TYPE_BOOL
|
||||||
@@ -4843,6 +4862,10 @@ chrome.users.ExplicitlyAllowedNetworkPorts: Allowed network ports.
|
|||||||
explicitlyAllowedNetworkPorts: TYPE_LIST
|
explicitlyAllowedNetworkPorts: TYPE_LIST
|
||||||
{'value': '554', 'description': 'port 554 (expires 2021/10/15).'}
|
{'value': '554', 'description': 'port 554 (expires 2021/10/15).'}
|
||||||
|
|
||||||
|
chrome.users.ExtensibleEnterpriseSsoBlocklist: Extensible Enterprise SSO blocking.
|
||||||
|
extensibleEnterpriseSsoBlocklist: TYPE_LIST
|
||||||
|
{'value': 'all', 'description': 'All identity providers.'}
|
||||||
|
|
||||||
chrome.users.ExtensionExtendedBackgroundLifetimeForPortConnectionsToUrls: Extended background lifetime.
|
chrome.users.ExtensionExtendedBackgroundLifetimeForPortConnectionsToUrls: Extended background lifetime.
|
||||||
extensionExtendedBackgroundLifetimeForPortConnectionsToUrls: TYPE_LIST
|
extensionExtendedBackgroundLifetimeForPortConnectionsToUrls: TYPE_LIST
|
||||||
Origins that grant extended background lifetime to connecting extensions. Enter a list of origins. Extensions that connect to one of these origins will be be kept running as long as the port is connected. One URL per line.
|
Origins that grant extended background lifetime to connecting extensions. Enter a list of origins. Extensions that connect to one of these origins will be be kept running as long as the port is connected. One URL per line.
|
||||||
@@ -4864,6 +4887,8 @@ chrome.users.ExternalStorage: External storage devices.
|
|||||||
READ_WRITE: Allow read and write access to all external storage devices.
|
READ_WRITE: Allow read and write access to all external storage devices.
|
||||||
READ_ONLY: Allow read only access to all external storage devices.
|
READ_ONLY: Allow read only access to all external storage devices.
|
||||||
DISALLOW: Do not allow read and write access to external storage devices.
|
DISALLOW: Do not allow read and write access to external storage devices.
|
||||||
|
externalStorageAllowlist: TYPE_LIST
|
||||||
|
Specify devices to always have read and write access. USB devices which are allowlisted for read and write access. To identify a specific device, enter colon separated hexadecimal pairs of USB Vendor Identifier and Product Identifier.
|
||||||
|
|
||||||
chrome.users.FastPairEnabled: Fast Pair (fast Bluetooth pairing).
|
chrome.users.FastPairEnabled: Fast Pair (fast Bluetooth pairing).
|
||||||
fastPairEnabled: TYPE_ENUM
|
fastPairEnabled: TYPE_ENUM
|
||||||
@@ -4890,7 +4915,7 @@ chrome.users.FetchKeepaliveDurationSecondsOnShutdown: Keepalive duration.
|
|||||||
duration: TYPE_STRING
|
duration: TYPE_STRING
|
||||||
|
|
||||||
chrome.users.FetchKeepaliveDurationSecondsOnShutdownV2: Keepalive duration.
|
chrome.users.FetchKeepaliveDurationSecondsOnShutdownV2: Keepalive duration.
|
||||||
duration: TYPE_INT64
|
fetchKeepaliveDurationSecondsOnShutdown: TYPE_INT64
|
||||||
|
|
||||||
chrome.users.FileOrDirectoryPickerWithoutGestureAllowedForOrigins: File/directory picker without user gesture.
|
chrome.users.FileOrDirectoryPickerWithoutGestureAllowedForOrigins: File/directory picker without user gesture.
|
||||||
fileOrDirectoryPickerWithoutGestureAllowedForOrigins: TYPE_LIST
|
fileOrDirectoryPickerWithoutGestureAllowedForOrigins: TYPE_LIST
|
||||||
@@ -4989,10 +5014,16 @@ chrome.users.FullscreenAllowed: Fullscreen mode.
|
|||||||
false: Do not allow fullscreen mode.
|
false: Do not allow fullscreen mode.
|
||||||
|
|
||||||
chrome.users.GaiaLockScreenOfflineSigninTimeLimitDays: Google online unlock frequency.
|
chrome.users.GaiaLockScreenOfflineSigninTimeLimitDays: Google online unlock frequency.
|
||||||
value: TYPE_INT64
|
gaiaLockScreenOfflineSigninTimeLimitDays: TYPE_INT64
|
||||||
|
|
||||||
chrome.users.GaiaOfflineSigninTimeLimitDays: Google online login frequency.
|
chrome.users.GaiaOfflineSigninTimeLimitDays: Google online login frequency.
|
||||||
value: TYPE_INT64
|
gaiaOfflineSigninTimeLimitDays: TYPE_INT64
|
||||||
|
|
||||||
|
chrome.users.GeminiSettings: Gemini integration.
|
||||||
|
geminiSettings: TYPE_ENUM
|
||||||
|
ENABLED: Allow Gemini integrations.
|
||||||
|
DISABLED: Do not allow Gemini integrations.
|
||||||
|
UNSET: Use the value specified in the Generative AI policy defaults setting.
|
||||||
|
|
||||||
chrome.users.GenAiDefaultSettings: Generative AI policy defaults.
|
chrome.users.GenAiDefaultSettings: Generative AI policy defaults.
|
||||||
genAiDefaultSettings: TYPE_ENUM
|
genAiDefaultSettings: TYPE_ENUM
|
||||||
@@ -5235,6 +5266,10 @@ chrome.users.InactiveBrowserDeletion: Inactive period for browser deletion.
|
|||||||
inactiveBrowserTtlDays: TYPE_INT64
|
inactiveBrowserTtlDays: TYPE_INT64
|
||||||
Number of days. Shortening this period can cause more enrolled browsers to be considered inactive and, therefore, be irreversibly deleted. Before lowering the value of this policy, make sure you understand the impact. The allowable range is 28-730 days.
|
Number of days. Shortening this period can cause more enrolled browsers to be considered inactive and, therefore, be irreversibly deleted. Before lowering the value of this policy, make sure you understand the impact. The allowable range is 28-730 days.
|
||||||
|
|
||||||
|
chrome.users.InactivePeriodForProfileDeletion: Inactive period for profile deletion.
|
||||||
|
inactiveProfileTtlDays: TYPE_INT64
|
||||||
|
Inactive period for profile deletion. Shortening this period can cause more managed profiles to be considered inactive and, therefore, be deleted. Before lowering the value of this policy, make sure you understand the impact. The allowable range is 28-730 days.
|
||||||
|
|
||||||
chrome.users.IncognitoMode: Incognito mode.
|
chrome.users.IncognitoMode: Incognito mode.
|
||||||
incognitoModeAvailability: TYPE_ENUM
|
incognitoModeAvailability: TYPE_ENUM
|
||||||
AVAILABLE: Allow incognito mode.
|
AVAILABLE: Allow incognito mode.
|
||||||
@@ -5515,7 +5550,7 @@ chrome.users.MaxInvalidationFetchDelay: Policy fetch delay.
|
|||||||
duration: TYPE_STRING
|
duration: TYPE_STRING
|
||||||
|
|
||||||
chrome.users.MaxInvalidationFetchDelayV2: Policy fetch delay.
|
chrome.users.MaxInvalidationFetchDelayV2: Policy fetch delay.
|
||||||
duration: TYPE_INT64
|
maxInvalidationFetchDelay: TYPE_INT64
|
||||||
|
|
||||||
chrome.users.MediaRecommendationsEnabled: Media Recommendations.
|
chrome.users.MediaRecommendationsEnabled: Media Recommendations.
|
||||||
mediaRecommendationsEnabled: TYPE_BOOL
|
mediaRecommendationsEnabled: TYPE_BOOL
|
||||||
@@ -5692,6 +5727,16 @@ chrome.users.NtpMiddleSlotAnnouncementVisible: Middle slot announcement on the N
|
|||||||
true: Show the middle slot announcement on the New Tab Page if it is available.
|
true: Show the middle slot announcement on the New Tab Page if it is available.
|
||||||
false: Do not show the middle slot announcement on the New Tab Page even if it is available.
|
false: Do not show the middle slot announcement on the New Tab Page even if it is available.
|
||||||
|
|
||||||
|
chrome.users.NtpOutlookCardVisible: New Tab page Outlook card.
|
||||||
|
ntpOutlookCardVisible: TYPE_BOOL
|
||||||
|
true: Enable New Tab page Outlook calendar card.
|
||||||
|
false: Disable New Tab page Outlook calendar card.
|
||||||
|
|
||||||
|
chrome.users.NtpSharepointCardVisible: New Tab page Sharepoint and OneDrive card.
|
||||||
|
ntpSharepointCardVisible: TYPE_BOOL
|
||||||
|
true: Enable New Tab page Sharepoint and OneDrive files card.
|
||||||
|
false: Disable New Tab page Sharepoint and OneDrive files card.
|
||||||
|
|
||||||
chrome.users.OffsetParentNewSpecBehaviorEnabled: Enable legacy HTMLElement offset behavior.
|
chrome.users.OffsetParentNewSpecBehaviorEnabled: Enable legacy HTMLElement offset behavior.
|
||||||
offsetParentNewSpecBehaviorEnabled: TYPE_BOOL
|
offsetParentNewSpecBehaviorEnabled: TYPE_BOOL
|
||||||
true: Use new offset behavior.
|
true: Use new offset behavior.
|
||||||
@@ -5972,7 +6017,7 @@ chrome.users.PrintingLpacSandboxEnabled: Printing LPAC Sandbox.
|
|||||||
false: Run printing services in a less secure sandbox.
|
false: Run printing services in a less secure sandbox.
|
||||||
|
|
||||||
chrome.users.PrintingMaxSheetsAllowed: Maximum sheets.
|
chrome.users.PrintingMaxSheetsAllowed: Maximum sheets.
|
||||||
value: TYPE_INT64
|
printingMaxSheetsAllowedNullable: TYPE_INT64
|
||||||
|
|
||||||
chrome.users.PrintingPaperSizeDefault: Default printing page size.
|
chrome.users.PrintingPaperSizeDefault: Default printing page size.
|
||||||
printingPaperSizeEnum: TYPE_ENUM
|
printingPaperSizeEnum: TYPE_ENUM
|
||||||
@@ -6002,7 +6047,7 @@ chrome.users.PrintJobHistoryExpirationPeriodNew: Print job history retention per
|
|||||||
duration: TYPE_STRING
|
duration: TYPE_STRING
|
||||||
|
|
||||||
chrome.users.PrintJobHistoryExpirationPeriodNewV2: Print job history retention period.
|
chrome.users.PrintJobHistoryExpirationPeriodNewV2: Print job history retention period.
|
||||||
duration: TYPE_INT64
|
printJobHistoryExpirationPeriodDaysNew: TYPE_INT64
|
||||||
|
|
||||||
chrome.users.PrintPdfAsImage: Print PDF as image.
|
chrome.users.PrintPdfAsImage: Print PDF as image.
|
||||||
printPdfAsImageAvailability: TYPE_BOOL
|
printPdfAsImageAvailability: TYPE_BOOL
|
||||||
@@ -6159,7 +6204,7 @@ chrome.users.RelaunchNotificationWithDurationV2: Relaunch notification.
|
|||||||
NO_NOTIFICATION: No relaunch notification.
|
NO_NOTIFICATION: No relaunch notification.
|
||||||
RECOMMENDED: Show notification recommending relaunch.
|
RECOMMENDED: Show notification recommending relaunch.
|
||||||
REQUIRED: Force relaunch after a period.
|
REQUIRED: Force relaunch after a period.
|
||||||
duration: TYPE_INT64
|
relaunchWindowDurationMin: TYPE_INT64
|
||||||
hours: TYPE_INT32
|
hours: TYPE_INT32
|
||||||
minutes: TYPE_INT32
|
minutes: TYPE_INT32
|
||||||
seconds: TYPE_INT32
|
seconds: TYPE_INT32
|
||||||
@@ -6180,7 +6225,7 @@ chrome.users.RemoteAccessHostClientDomainList: Remote access clients.
|
|||||||
Remote access client domain. Configure the required domain names for remote access clients.
|
Remote access client domain. Configure the required domain names for remote access clients.
|
||||||
|
|
||||||
chrome.users.RemoteAccessHostClipboardSizeBytes: Clipboard sync max size.
|
chrome.users.RemoteAccessHostClipboardSizeBytes: Clipboard sync max size.
|
||||||
value: TYPE_INT64
|
remoteAccessHostClipboardSizeBytes: TYPE_INT64
|
||||||
|
|
||||||
chrome.users.RemoteAccessHostDomainList: Remote access hosts.
|
chrome.users.RemoteAccessHostDomainList: Remote access hosts.
|
||||||
remoteAccessHostDomainList: TYPE_LIST
|
remoteAccessHostDomainList: TYPE_LIST
|
||||||
@@ -6299,7 +6344,7 @@ chrome.users.SafeSitesFilterBehavior: SafeSites URL filter.
|
|||||||
SAFE_SITES_FILTER_ENABLED: Filter sites for adult content.
|
SAFE_SITES_FILTER_ENABLED: Filter sites for adult content.
|
||||||
|
|
||||||
chrome.users.SamlLockScreenOfflineSigninTimeLimitDays: SAML single sign-on unlock frequency.
|
chrome.users.SamlLockScreenOfflineSigninTimeLimitDays: SAML single sign-on unlock frequency.
|
||||||
value: TYPE_INT64
|
samlLockScreenOfflineSigninTimeLimitDays: TYPE_INT64
|
||||||
|
|
||||||
chrome.users.SamlLockScreenReauthenticationEnabled: SAML single sign-on password synchronization flows.
|
chrome.users.SamlLockScreenReauthenticationEnabled: SAML single sign-on password synchronization flows.
|
||||||
samlLockScreenReauthenticationEnabled: TYPE_BOOL
|
samlLockScreenReauthenticationEnabled: TYPE_BOOL
|
||||||
@@ -6387,7 +6432,7 @@ chrome.users.SecurityTokenSessionSettingsV2: Security token removal.
|
|||||||
IGNORE: Nothing.
|
IGNORE: Nothing.
|
||||||
LOGOUT: Log the user out.
|
LOGOUT: Log the user out.
|
||||||
LOCK: Lock the current session.
|
LOCK: Lock the current session.
|
||||||
duration: TYPE_INT64
|
securityTokenSessionNotificationSeconds: TYPE_INT64
|
||||||
|
|
||||||
chrome.users.SelectToSpeakEnabled: Select to speak.
|
chrome.users.SelectToSpeakEnabled: Select to speak.
|
||||||
selectToSpeakEnabled: TYPE_ENUM
|
selectToSpeakEnabled: TYPE_ENUM
|
||||||
@@ -6413,7 +6458,7 @@ chrome.users.SessionLength: Maximum user session length.
|
|||||||
duration: TYPE_STRING
|
duration: TYPE_STRING
|
||||||
|
|
||||||
chrome.users.SessionLengthV2: Maximum user session length.
|
chrome.users.SessionLengthV2: Maximum user session length.
|
||||||
duration: TYPE_INT64
|
sessionDurationLimit: TYPE_INT64
|
||||||
|
|
||||||
chrome.users.SetTimeoutWithoutOneMsClampEnabled: Javascript setTimeout() minimum.
|
chrome.users.SetTimeoutWithoutOneMsClampEnabled: Javascript setTimeout() minimum.
|
||||||
setTimeoutWithoutOneMsClampEnabled: TYPE_ENUM
|
setTimeoutWithoutOneMsClampEnabled: TYPE_ENUM
|
||||||
@@ -6768,6 +6813,11 @@ chrome.users.ThirdPartyCookieBlocking: Third-party cookie blocking.
|
|||||||
FALSE: Allow third-party cookies.
|
FALSE: Allow third-party cookies.
|
||||||
TRUE: Disallow third-party cookies.
|
TRUE: Disallow third-party cookies.
|
||||||
|
|
||||||
|
chrome.users.ThirdPartyPasswordManagersAllowed: Third-party password managers allowed.
|
||||||
|
thirdPartyPasswordManagersAllowed: TYPE_BOOL
|
||||||
|
true: Allow using third-party password managers in Chrome.
|
||||||
|
false: Block using third-party password managers in Chrome.
|
||||||
|
|
||||||
chrome.users.ThirdPartyStoragePartitioningSettings: Third-party storage partitioning.
|
chrome.users.ThirdPartyStoragePartitioningSettings: Third-party storage partitioning.
|
||||||
defaultThirdPartyStoragePartitioningSetting: TYPE_ENUM
|
defaultThirdPartyStoragePartitioningSetting: TYPE_ENUM
|
||||||
ALLOW_PARTITIONING: Allow third-party storage partitioning to be enabled.
|
ALLOW_PARTITIONING: Allow third-party storage partitioning to be enabled.
|
||||||
@@ -7019,6 +7069,11 @@ chrome.users.WarnBeforeQuittingEnabled: Warn before quitting.
|
|||||||
MANDATORY: Do not allow users to override.
|
MANDATORY: Do not allow users to override.
|
||||||
RECOMMENDED: Allow users to override.
|
RECOMMENDED: Allow users to override.
|
||||||
|
|
||||||
|
chrome.users.WebAudioOutputBufferingEnabled: Adaptive buffering for Web Audio.
|
||||||
|
webAudioOutputBufferingEnabled: TYPE_BOOL
|
||||||
|
true: Enable web audio adaptive buffering.
|
||||||
|
false: Disable web audio adaptive buffering.
|
||||||
|
|
||||||
chrome.users.WebAuthnFactors: WebAuthn.
|
chrome.users.WebAuthnFactors: WebAuthn.
|
||||||
webAuthnFactors: TYPE_LIST
|
webAuthnFactors: TYPE_LIST
|
||||||
{'value': 'PIN', 'description': 'PIN.'}
|
{'value': 'PIN', 'description': 'PIN.'}
|
||||||
@@ -7132,4 +7187,5 @@ chrome.users.ZstdContentEncodingEnabled: Zstd compression.
|
|||||||
true: Allow zstd-compressed web content.
|
true: Allow zstd-compressed web content.
|
||||||
false: Do not allow zstd-compressed web content.
|
false: Do not allow zstd-compressed web content.
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -106,12 +106,14 @@ The second form is backwards compatible with Legacy GAM and selection with `<CrO
|
|||||||
autoupdatethrough|
|
autoupdatethrough|
|
||||||
backlightinfo|
|
backlightinfo|
|
||||||
bootmode|
|
bootmode|
|
||||||
|
chromeostype|
|
||||||
cpuinfo|
|
cpuinfo|
|
||||||
cpustatusreports|
|
cpustatusreports|
|
||||||
deprovisionreason|
|
deprovisionreason|
|
||||||
devicefiles|
|
devicefiles|
|
||||||
deviceid|
|
deviceid|
|
||||||
devicelicensetype|
|
devicelicensetype|
|
||||||
|
diskspaceusage|
|
||||||
diskvolumereports|
|
diskvolumereports|
|
||||||
dockmacaddress|
|
dockmacaddress|
|
||||||
ethernetmacaddress|
|
ethernetmacaddress|
|
||||||
@@ -119,6 +121,7 @@ The second form is backwards compatible with Legacy GAM and selection with `<CrO
|
|||||||
extendedsupporteligible|
|
extendedsupporteligible|
|
||||||
extendedsupportstart|
|
extendedsupportstart|
|
||||||
extendedsupportenabled|
|
extendedsupportenabled|
|
||||||
|
faninfo|
|
||||||
firmwareversion|
|
firmwareversion|
|
||||||
firstenrollmenttime|
|
firstenrollmenttime|
|
||||||
lastdeprovisiontimestamp|
|
lastdeprovisiontimestamp|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
# Cloud Identity Devices
|
# Cloud Identity Devices
|
||||||
|
- [Notes](#notes)
|
||||||
- [API documentation](#api-documentation)
|
- [API documentation](#api-documentation)
|
||||||
- [Query documentation](#query-documentation)
|
- [Query documentation](#query-documentation)
|
||||||
- [Definitions](#definitions)
|
- [Definitions](#definitions)
|
||||||
@@ -20,6 +21,15 @@
|
|||||||
- [Display device user client state](#display-device-user-client-state)
|
- [Display device user client state](#display-device-user-client-state)
|
||||||
- [Update device user client state](#update-device-user-client-state)
|
- [Update device user client state](#update-device-user-client-state)
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
These commands use service account access with `admin_email` (if defined) from `gam.cfg` or
|
||||||
|
the admin from `oauth2.txt` (specified in `gam oauth create`).
|
||||||
|
|
||||||
|
Use `gam user user@domain.com update serviceaccount` and make sure that the following is specified:
|
||||||
|
```
|
||||||
|
[*] 17) Cloud Identity Devices API (supports readonly)
|
||||||
|
```
|
||||||
|
|
||||||
## API documentation
|
## API documentation
|
||||||
* [Cloud Identity API - Devices](https://cloud.google.com/identity/docs/reference/rest/v1/devices)
|
* [Cloud Identity API - Devices](https://cloud.google.com/identity/docs/reference/rest/v1/devices)
|
||||||
* [Cloud Identity API - Device Users](https://cloud.google.com/identity/docs/reference/rest/v1/devices.deviceUsers)
|
* [Cloud Identity API - Device Users](https://cloud.google.com/identity/docs/reference/rest/v1/devices.deviceUsers)
|
||||||
@@ -200,7 +210,7 @@ gam print devices [todrive <ToDriveAttribute>*]
|
|||||||
<DeviceFieldName>* [fields <DeviceFieldNameList>] [userfields <DeviceUserFieldNameList>]
|
<DeviceFieldName>* [fields <DeviceFieldNameList>] [userfields <DeviceUserFieldNameList>]
|
||||||
[orderby <DeviceOrderByFieldName> [ascending|descending]]
|
[orderby <DeviceOrderByFieldName> [ascending|descending]]
|
||||||
[all|company|personal|nocompanydevices|nopersonaldevices]
|
[all|company|personal|nocompanydevices|nopersonaldevices]
|
||||||
[nodeviceusers]
|
[nodeviceusers|oneuserperrow]
|
||||||
[formatjson [quotechar <Character>]]
|
[formatjson [quotechar <Character>]]
|
||||||
```
|
```
|
||||||
By default, all devices are displayed; use the query options to limit the display.
|
By default, all devices are displayed; use the query options to limit the display.
|
||||||
@@ -221,6 +231,9 @@ Select the view of devices to display:
|
|||||||
By default, Gam makes additional API calls to display the device users for the devices;
|
By default, Gam makes additional API calls to display the device users for the devices;
|
||||||
use `nodeviceuser` to suppress making the additional calls.
|
use `nodeviceuser` to suppress making the additional calls.
|
||||||
|
|
||||||
|
By default, when device users are displayed, they are all displayed on one row;
|
||||||
|
use `oneuserperrow` to have each of a device's users displayed on a separate row with all of the other device fields.
|
||||||
|
|
||||||
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.
|
||||||
|
|
||||||
|
|||||||
@@ -57,10 +57,10 @@ Typically, you will enclose the entire list in double quotes and quote each item
|
|||||||
* ```"item item item"```
|
* ```"item item item"```
|
||||||
- Items, separated by commas, with spaces, commas or single quotes in the items themselves
|
- Items, separated by commas, with spaces, commas or single quotes in the items themselves
|
||||||
* ```"'it em','it,em',\"it'em\""``` - Linux, MacOS, Windows Command Prompt
|
* ```"'it em','it,em',\"it'em\""``` - Linux, MacOS, Windows Command Prompt
|
||||||
* ```"'it em','it,em',`"it'em`""``` - Windows Power Shell
|
* ```"'it\ em','it,em',`"it\'em`""``` - Windows Power Shell
|
||||||
- Items, separated by spaces, with spaces, commas or single quotes in the items themselves
|
- Items, separated by spaces, with spaces, commas or single quotes in the items themselves
|
||||||
* ```"'it em' 'it,em' \"it'em\""``` - Linux, MacOS, Windows Command Prompt
|
* ```"'it em' 'it,em' \"it'em\""``` - Linux, MacOS, Windows Command Prompt
|
||||||
* ```"'it em' 'it,em' `"it'em`""``` - Windows Power Shell
|
* ```"'it\ em' 'it,em' `"it\'em`""``` - Windows Power Shell
|
||||||
|
|
||||||
Typical places where these rules apply are lists of OUs and Contact Groups.
|
Typical places where these rules apply are lists of OUs and Contact Groups.
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Domain Shared Contacts - Global Address List
|
# Domain Shared Contacts
|
||||||
- [API documentation](#api-documentation)
|
- [API documentation](#api-documentation)
|
||||||
- [Python Regular Expressions](Python-Regular-Expressions) Match function
|
- [Python Regular Expressions](Python-Regular-Expressions) Match function
|
||||||
- [Definitions](#definitions)
|
- [Definitions](#definitions)
|
||||||
@@ -2,6 +2,8 @@
|
|||||||
You can download and install the current GAM7 release from the [GitHub Releases](https://github.com/GAM-team/GAM/releases/latest) page.
|
You can download and install the current GAM7 release from the [GitHub Releases](https://github.com/GAM-team/GAM/releases/latest) page.
|
||||||
Choose one of the following:
|
Choose one of the following:
|
||||||
|
|
||||||
|
## Executable, Automatic
|
||||||
|
|
||||||
* Executable Archive, Automatic, Linux/Mac OS/Google Cloud Shell/Raspberry Pi/ChromeOS
|
* Executable Archive, Automatic, Linux/Mac OS/Google Cloud Shell/Raspberry Pi/ChromeOS
|
||||||
- Start a terminal session and execute one of the following commands:
|
- Start a terminal session and execute one of the following commands:
|
||||||
- New install, default path `$HOME/bin`
|
- New install, default path `$HOME/bin`
|
||||||
@@ -16,6 +18,12 @@ Choose one of the following:
|
|||||||
By default, a folder, `gam7`, is created in the default or specified path and the files are downloaded into that folder.
|
By default, a folder, `gam7`, is created in the default or specified path and the files are downloaded into that folder.
|
||||||
Add the `-s` option to the end of the above commands to suppress creating the `gam7` folder; the files are downloaded directly into the default or specified path.
|
Add the `-s` option to the end of the above commands to suppress creating the `gam7` folder; the files are downloaded directly into the default or specified path.
|
||||||
|
|
||||||
|
If, when executing one of the above commands, you get an error message stating that Python is not installed,
|
||||||
|
go here [Python](https://www.python.org/downloads/) and download/install Python. When the installation is complete,
|
||||||
|
start a new terminal session and reissue the command from above.
|
||||||
|
|
||||||
|
## 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.35.tar.xz`
|
||||||
- `gam-7.wx.yz-linux-x86_64-glibc2.39.tar.xz`
|
- `gam-7.wx.yz-linux-x86_64-glibc2.39.tar.xz`
|
||||||
@@ -24,18 +32,19 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
|
|||||||
- 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-aarch64-glibc2.35.tar.xz`
|
- `gam-7.wx.yz-linux-arm64-glibc2.35.tar.xz`
|
||||||
- `gam-7.wx.yz-linux-aarch64-legacy.tar.xz`
|
- `gam-7.wx.yz-linux-arm64-glibc2.39.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.
|
||||||
- Start a terminal session.
|
- Start a terminal session.
|
||||||
|
|
||||||
* Executable Archive, Manual, Mac OS versions Sonoma, Sequoia - M1/M2
|
* Executable Archive, Manual, Mac OS versions Sonoma, Sequoia - M1/M2
|
||||||
- `gam-7.wx.yz-macos14.7-aarch64.tar.xz`
|
- `gam-7.wx.yz-macos14.7-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 Sequoia - M3
|
* Executable Archive, Manual, Mac OS versions Sequoia - M3
|
||||||
- `gam-7.wx.yz-macos15.2-aarch64.tar.xz`
|
- `gam-7.wx.yz-macos15.4-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.
|
||||||
|
|
||||||
@@ -54,6 +63,18 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
|
|||||||
- Download the installer and run it.
|
- Download the installer and run it.
|
||||||
- Start a Command Prompt/PowerShell session.
|
- Start a Command Prompt/PowerShell session.
|
||||||
|
|
||||||
|
* Executable Archive, Manual, Windows 11 ARM
|
||||||
|
- `gam-7.wx.yz-windows-arm64.zip`
|
||||||
|
- Download the archive, extract the contents into some directory.
|
||||||
|
- Start a Command Prompt/PowerShell session.
|
||||||
|
|
||||||
|
* Executable Installer, Manual, Windows 11 ARM
|
||||||
|
- `gam-7.wx.yz-windows-arm64.msi`
|
||||||
|
- Download the installer and run it.
|
||||||
|
- Start a Command Prompt/PowerShell session.
|
||||||
|
|
||||||
|
## Source
|
||||||
|
|
||||||
* Source, all platforms
|
* Source, all platforms
|
||||||
- `Source code(zip)`
|
- `Source code(zip)`
|
||||||
- `Source code(tar.gz)`
|
- `Source code(tar.gz)`
|
||||||
|
|||||||
@@ -10,6 +10,296 @@ 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.09.00
|
||||||
|
|
||||||
|
Removed the overly broad service account `IAM and Access Management API` scope `https://www.googleapis.com/auth/cloud-platform`
|
||||||
|
from DWD. The `gam <UserTypeEntity> check|Update serviceaccount` commands issue an error message if this scope
|
||||||
|
is enabled prompting you to update your service account authorization so that the scope can be removed.
|
||||||
|
|
||||||
|
GAM commands that need IAM access now use the more limited scope `https://www.googleapis.com/auth/iam` in a non-DWD manner.
|
||||||
|
|
||||||
|
Added `enforce_expansive_access` Boolean variable to `gam.cfg` that provides the default value
|
||||||
|
for option `enforceexpansiveaccess` in all commands that delete or update drive file ACLs/permissions.
|
||||||
|
It's default value is False.
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> delete permissions
|
||||||
|
gam <UserTypeEntity> delete drivefileacl
|
||||||
|
gam <UserTypeEntity> update drivefileacl
|
||||||
|
gam <UserTypeEntity> copy drivefile
|
||||||
|
gam <UserTypeEntity> move drivefile
|
||||||
|
gam <UserTypeEntity> transfer ownership
|
||||||
|
gam <UserTypeEntity> claim ownership
|
||||||
|
gam <UserTypeEntity> transfer drive
|
||||||
|
```
|
||||||
|
|
||||||
|
Fixed bug in `gam print shareddriveorganizers` that caused a trap when an organizer was a deleted user.
|
||||||
|
|
||||||
|
Updated to Python 3.13.4
|
||||||
|
|
||||||
|
### 7.08.02
|
||||||
|
|
||||||
|
Updated the defaults in `gam print shareddriveorganizers` to match the most common use case, not the script.
|
||||||
|
|
||||||
|
* `domainlist` - The workspace primary domain
|
||||||
|
* `includetypes` - user
|
||||||
|
* `oneorganizer` - True
|
||||||
|
* `shownoorganizerdrives` - True
|
||||||
|
* `includefileorganizers` - False
|
||||||
|
|
||||||
|
To select organizers from any domain, use: `domainlist ""`
|
||||||
|
|
||||||
|
These commands produce the same result.
|
||||||
|
```
|
||||||
|
gam redirect csv ./TeamDriveOrganizers.csv print shareddriveorganizers domainlist mydomain.com includetypes user oneorganizer shownoorganizerdrives
|
||||||
|
gam redirect csv ./TeamDriveOrganizers.csv print shareddriveorganizers
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.08.01
|
||||||
|
|
||||||
|
Added option `shareddrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))` to
|
||||||
|
`gam print shareddriveorganizers` that displays organizers for a specific list of Shared Drive IDs.
|
||||||
|
|
||||||
|
See: https://github.com/GAM-team/GAM/wiki/Shared-Drives#display-shared-drive-organizers
|
||||||
|
|
||||||
|
### 7.08.00
|
||||||
|
|
||||||
|
Added the following command that can be used instead of the `GetTeamDriveOrganizers.py` script.
|
||||||
|
|
||||||
|
gam [<UserTypeEntity>] print shareddriveorganizers [todrive <ToDriveAttribute>*]
|
||||||
|
[adminaccessasadmin] [shareddriveadminquery|query <QuerySharedDrive>]
|
||||||
|
[orgunit|org|ou <OrgUnitPath>]
|
||||||
|
[matchname <REMatchPattern>]
|
||||||
|
[domainlist <DomainList>]
|
||||||
|
[includetypes <OrganizerTypeList>]
|
||||||
|
[oneorganizer [<Boolean>]]
|
||||||
|
[shownorganizerdrives [false|true|only]]
|
||||||
|
[includefileorganizers [<Boolean>]]
|
||||||
|
[delimiter <Character>]
|
||||||
|
```
|
||||||
|
See: https://github.com/GAM-team/GAM/wiki/Shared-Drives#display-shared-drive-organizers
|
||||||
|
|
||||||
|
The command defaults match the script defaults:
|
||||||
|
* `domainlist` - All domains
|
||||||
|
* `includetypes` - user,group
|
||||||
|
* `oneorganizer` - False
|
||||||
|
* `shownoorganizerdrives` - True
|
||||||
|
* `includefileorganizers` - False
|
||||||
|
|
||||||
|
For example, to get a single user organizer from your domain for all Shared Drives including no organizer drives:
|
||||||
|
```
|
||||||
|
gam redirect csv ./TeamDriveOrganizers.csv print shareddriveorganizers domainlist mydomain.com includetypes user oneorganizer shownoorganizerdrives
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.07.17
|
||||||
|
|
||||||
|
Added option `oneuserperrow` to `gam print devices` to have each of a
|
||||||
|
device's users displayed on a separate row with all of the other device fields.
|
||||||
|
|
||||||
|
### 7.07.16
|
||||||
|
|
||||||
|
Added `chromeostype`, `diskspaceusage` and `faninfo` to `<CrOSFieldName>` for use in `gam info|print cros`.
|
||||||
|
|
||||||
|
Fixed bugs/cleaned output in `gam info|print cros`.
|
||||||
|
|
||||||
|
### 7.07.15
|
||||||
|
|
||||||
|
Added option `shareddrivesoption included|included_if_account_is_not_a_member|not_included` to `gam create vaultexport`.
|
||||||
|
|
||||||
|
The previous option `includeshareddrives <Boolean>` is mapped as follows:
|
||||||
|
* `includeshareddrives false` - `shareddrivesoption included_if_account_is_not_a_member`
|
||||||
|
* `includeshareddrives true` - `shareddrivesoption included`
|
||||||
|
|
||||||
|
### 7.07.14
|
||||||
|
|
||||||
|
Update `gam setup chat` output to include the following that shows the actual Cloud Pub/Sub Topic Name.
|
||||||
|
```
|
||||||
|
You'll use projects/<ProjectID>/topics/no-topic in Connection settings Cloud Pub/Sub Topic Name
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.07.13
|
||||||
|
|
||||||
|
Added option `showitemcountonly` to `gam [<UserTypeEntity>] print|show shareddrives` that causes GAM to display the
|
||||||
|
number of Shared Drives on stdout; no CSV file is written.
|
||||||
|
|
||||||
|
### 7.07.12
|
||||||
|
|
||||||
|
Fixed bug in `gam print|show oushareddrives` that caused a trap.
|
||||||
|
|
||||||
|
Improved getting Shared Drive names from IDs when accessing Shared Drives in external workspaces.
|
||||||
|
|
||||||
|
### 7.07.11
|
||||||
|
|
||||||
|
Updated `gam calendars <CalendarEntity> update events` and `gam <UserTypeEntity> update events <UserCalendarEntity>`
|
||||||
|
to handle the following error:
|
||||||
|
```
|
||||||
|
ERROR: 400: badRequest - Bad Request
|
||||||
|
```
|
||||||
|
|
||||||
|
Updated `gam <UserTypeEntity> move drivefile` to handle the following error:
|
||||||
|
```
|
||||||
|
ERROR: 400: shareOutNotPermitted
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.07.10
|
||||||
|
|
||||||
|
Updated `gam calendars <CalendarEntity> update events` and `gam <UserTypeEntity> update events <UserCalendarEntity>`
|
||||||
|
to handle the following error:
|
||||||
|
```
|
||||||
|
ERROR: 400: eventTypeRestriction - Attendees cannot be added to 'fromGmail' event with this visibility setting.
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.07.09
|
||||||
|
|
||||||
|
Updated `gam calendars <CalendarEntity> update events` and `gam <UserTypeEntity> update events <UserCalendarEntity>`
|
||||||
|
to handle the following error:
|
||||||
|
```
|
||||||
|
gamlib.glgapi.serviceNotAvailable: Authentication backend unavailable.
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.07.08
|
||||||
|
|
||||||
|
Fixed bug in `gam <UserTypeEntity> print filelist ... countsonly` that issued an
|
||||||
|
incorrect warning message like the following when `redirect csv <FileName> multiprocess` was specified.
|
||||||
|
```
|
||||||
|
WARNING: csv_output_row_filter column "^name$" does not match any output columns
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.07.07
|
||||||
|
|
||||||
|
Fixed bug in `gam report <ActivityApplictionName> ... countsonly eventrowfilter` that issued an
|
||||||
|
incorrect warning message like the following when `redirect csv <FileName> multiprocess` was specified.
|
||||||
|
```
|
||||||
|
WARNING: csv_output_row_filter column "^doc_title$" does not match any output columns
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.07.06
|
||||||
|
|
||||||
|
Added option `eventrowfilter` to `gam calendars <CalendarEntity> print events ... countsonly`
|
||||||
|
and `gam <UserTypeEntity> print events <UserCalendarEntity> ... countsonly` that causes
|
||||||
|
GAM to apply `config csv_output_row_filter` to the event details rather than the event counts.
|
||||||
|
This will be useful when `<EventSelectProperty>` and `<EventMatchProperty>` do not have the
|
||||||
|
capabilty to select the events of interest; e.g., you want to filter based on the event `created` property.
|
||||||
|
|
||||||
|
Dropped the extraneous `id` column for `gam calendars <CalendarEntity> print events ... countsonly`
|
||||||
|
and `gam <UserTypeEntity> print events <UserCalendarEntity> ... countsonly`.
|
||||||
|
|
||||||
|
### 7.07.05
|
||||||
|
|
||||||
|
Updated `gam <UserTypeEntity> move drivefile` to recognize the API error: `ERROR: 400: shareOutWarning`.
|
||||||
|
|
||||||
|
### 7.07.04
|
||||||
|
|
||||||
|
Updated `gam create vaultexport ... rooms <ChatSpaceList>` to strip `spaces/` from the Chat Space IDs.
|
||||||
|
|
||||||
|
Updated `gam <UserTypeEntity> copy drivefile` to recognize the API error: `ERROR: 400: shareOutWarning`.
|
||||||
|
|
||||||
|
### 7.07.03
|
||||||
|
|
||||||
|
Updated `gam create vaultexport` to allow allow specifying a list of items in a search method
|
||||||
|
with `shareddrives|rooms|sitesurl select <FileSelector>|<CSVFileSelector>`.
|
||||||
|
|
||||||
|
### 7.07.02
|
||||||
|
|
||||||
|
Fixed bug in `redirect csv ... transpose` where a CSV file with multiple rows was not properly transposed.
|
||||||
|
|
||||||
|
### 7.07.01
|
||||||
|
|
||||||
|
Fixed bug in `gam print|show chromepolicies` that caused a trap. Made additional
|
||||||
|
updates to handle changes in the Chrome Policy API.
|
||||||
|
|
||||||
|
### 7.07.00
|
||||||
|
|
||||||
|
As of mid-October 2024, Google deprecated the API that retrieved the Global Address List.
|
||||||
|
|
||||||
|
The following commands have been eliminated.
|
||||||
|
```
|
||||||
|
gam info gal
|
||||||
|
gam print gal
|
||||||
|
gam show gal
|
||||||
|
```
|
||||||
|
|
||||||
|
These commands are a work-around for `gam print gal`.
|
||||||
|
```
|
||||||
|
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" redirect csv ./UserGAL.csv print users fields name,gal
|
||||||
|
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" batch_size 25 redirect csv ./GroupGAL.csv print groups fields name,gal
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.06.14
|
||||||
|
|
||||||
|
Updated `create|update adminrole` to allow specifying a collection of privileges
|
||||||
|
with `privileges select <FileSelector>|<CSVFileSelector>` which makes copying roles much simpler.
|
||||||
|
|
||||||
|
Added option `role <RoleItem>` to `gam print|show adminroles` to allow display of information
|
||||||
|
for a specific role.
|
||||||
|
|
||||||
|
### 7.06.13
|
||||||
|
|
||||||
|
Updated `gam print group-members ... recursive` and `gam print cigroup-members ... recursive`
|
||||||
|
to expand groups representing chat spaces.
|
||||||
|
|
||||||
|
### 7.06.12
|
||||||
|
|
||||||
|
Deleted commands to display Analytic UA properties; the API has been deprecated.
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> print|show analyticuaproperties
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.06.11
|
||||||
|
|
||||||
|
Improved `gam checkconn`.
|
||||||
|
|
||||||
|
Updated `gam print group-members` and `gam print cigroup-members` to recognize members
|
||||||
|
that are groups representing chat spaces. For now, these groups are not expanded when
|
||||||
|
`recursive` is specified.
|
||||||
|
|
||||||
|
### 7.06.10
|
||||||
|
|
||||||
|
Added the following license SKU.
|
||||||
|
```
|
||||||
|
1010020034 - Google Workspace Frontline Plus
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.06.09
|
||||||
|
|
||||||
|
Added `gemini` and `geminiforworkspace` to `<ActivityApplicationName>` for use in
|
||||||
|
`gam report <ActivityApplicationName>`.
|
||||||
|
|
||||||
|
### 7.06.08
|
||||||
|
|
||||||
|
Fixed problem where Yubikeys caused a trap.
|
||||||
|
|
||||||
|
### 7.06.07
|
||||||
|
|
||||||
|
Updated private key rotation progress messages in `gam create|use|update project`
|
||||||
|
and `gam upload sakey`.
|
||||||
|
|
||||||
|
Updated `gam use project` to display the following error message when the specifed project
|
||||||
|
already has a service account.
|
||||||
|
```
|
||||||
|
Re-run the command specify a new service account name with: saname <ServiceAccountName>'
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.06.06
|
||||||
|
|
||||||
|
Native support for Windows 11 Arm-based devices.
|
||||||
|
|
||||||
|
Renamed some MacOS and Linux binary installer files to align on terminology. Everything is "arm64" now, no "aarch64".
|
||||||
|
|
||||||
|
### 7.06.05
|
||||||
|
|
||||||
|
Updated code in `gam delete|update chromepolicy` to handle the `policyTargetKey[additionalTargetKeys]`
|
||||||
|
field in a more general manner for future use.
|
||||||
|
|
||||||
|
### 7.06.04
|
||||||
|
|
||||||
|
Fixed bug in `gam report <ActivityApplictionName>` where a report with no activities
|
||||||
|
was not displaying any output.
|
||||||
|
|
||||||
|
### 7.06.03
|
||||||
|
|
||||||
|
Fixed bug in `gam <UserTypeEntity> print|show drivelastmodification` that caused a trap
|
||||||
|
when an empty drive was specified.
|
||||||
|
|
||||||
### 7.06.02
|
### 7.06.02
|
||||||
|
|
||||||
Updated `gam <UserTypeEntity> print|show filecounts ... showlastmodification` to include
|
Updated `gam <UserTypeEntity> print|show filecounts ... showlastmodification` to include
|
||||||
|
|||||||
@@ -335,6 +335,11 @@ gam update group group@domain.com whoCanViewMembership ALL_MEMBERS_CAN_VIEW whoC
|
|||||||
Group: group@domain.com, Updated
|
Group: group@domain.com, Updated
|
||||||
```
|
```
|
||||||
|
|
||||||
|
If you are entering a valid combination but an error message is returned, do the following and then re-issue your command.
|
||||||
|
```
|
||||||
|
gam update group group@domain.com whoCanViewMembership ALL_IN_DOMAIN_CAN_VIEW whoCanDiscoverGroup ALL_IN_DOMAIN_CAN_DISCOVER
|
||||||
|
```
|
||||||
|
|
||||||
## Manage groups
|
## Manage groups
|
||||||
|
|
||||||
These commands allow you to create, update and delete groups.
|
These commands allow you to create, update and delete groups.
|
||||||
|
|||||||
@@ -251,10 +251,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.06.02 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.09.00 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.3 64-bit final
|
Python 3.13.4 64-bit final
|
||||||
MacOS Sequoia 15.4 x86_64
|
MacOS Sequoia 15.5 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
|
||||||
|
|
||||||
@@ -989,9 +989,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.06.02 - https://github.com/GAM-team/GAM - pythonsource
|
GAM 7.09.00 - https://github.com/GAM-team/GAM - pythonsource
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.3 64-bit final
|
Python 3.13.4 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
|
||||||
|
|||||||
@@ -110,6 +110,7 @@
|
|||||||
| Google Workspace for Education: Teaching and Learning Upgrade | 1010370001 | gwetlu |
|
| Google Workspace for Education: Teaching and Learning Upgrade | 1010370001 | gwetlu |
|
||||||
| Google Workspace Frontline Starter | 1010020030 | wsflw |
|
| Google Workspace Frontline Starter | 1010020030 | wsflw |
|
||||||
| Google Workspace Frontline Standard | 1010020031 | wsflwstan |
|
| Google Workspace Frontline Standard | 1010020031 | wsflwstan |
|
||||||
|
| Google Workspace Frontline Plus | 1010020034 | wsflwplus |
|
||||||
| Google Workspace Government | Google-Apps-For-Government | gsuitegov |
|
| Google Workspace Government | Google-Apps-For-Government | gsuitegov |
|
||||||
| Google Workspace Labs | 1010470002 | gwlabs | workspacelabs |
|
| Google Workspace Labs | 1010470002 | gwlabs | workspacelabs |
|
||||||
|
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ The `columndelimiter <Character>` subargument sets the intercolumn delimiter of
|
|||||||
is the value of `csv_output_column_delimiter` in `gam.cfg` which defaults to comma.
|
is the value of `csv_output_column_delimiter` in `gam.cfg` which defaults to comma.
|
||||||
|
|
||||||
The `quotechar <Character>` subargument sets the character used to quote fields in the CSV file
|
The `quotechar <Character>` subargument sets the character used to quote fields in the CSV file
|
||||||
that contaim special charactere; the default value is the value of `csv_output_quote_char` in `gam.cfg`
|
that contain special charactere; the default value is the value of `csv_output_quote_char` in `gam.cfg`
|
||||||
which defaults to double quote.
|
which defaults to double quote.
|
||||||
|
|
||||||
The `noescapechar <Boolean>` subargument controls whether `\` is used as an escape character when writing the CSV file; the default value
|
The `noescapechar <Boolean>` subargument controls whether `\` is used as an escape character when writing the CSV file; the default value
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ config csv_output_row_filter "'\"accounts:used_quota_in_mb\":count>15000'"
|
|||||||
domain|
|
domain|
|
||||||
drive|doc|docs|
|
drive|doc|docs|
|
||||||
gcp|
|
gcp|
|
||||||
|
gemini|geminiforworkspace|
|
||||||
groups|group|
|
groups|group|
|
||||||
groupsenterprise|enterprisegroups|
|
groupsenterprise|enterprisegroups|
|
||||||
jamboard|
|
jamboard|
|
||||||
|
|||||||
@@ -12,8 +12,10 @@
|
|||||||
- [Delete a Shared Drive](#delete-a-shared-drive)
|
- [Delete a Shared Drive](#delete-a-shared-drive)
|
||||||
- [Change Shared Drive visibility](#change-shared-drive-visibility)
|
- [Change Shared Drive visibility](#change-shared-drive-visibility)
|
||||||
- [Display Shared Drives](#display-shared-drives)
|
- [Display Shared Drives](#display-shared-drives)
|
||||||
- [Display List of Shared Drives in an Organizational Unit other than /](#display-list-of-shared-drives-in-an-organizational-unit-other-than-)
|
- [Display Shared Drive Counts](#display-shared-drive-counts)
|
||||||
- [Display List of Shared Drives in an Organizational Unit](#display-list-of-shared-drives-in-an-organizational-unit)
|
- [Display List of Shared Drives in an Organizational Unit](#display-list-of-shared-drives-in-an-organizational-unit)
|
||||||
|
- [Display Count of Shared Drives in an Organizational Unit](#display-count-of-shared-drives-in-an-organizational-unit)
|
||||||
|
- [Display Shared Drive Organizers](#display-shared-drive-organizers)
|
||||||
- [Display all Shared Drives with no members](#display-all-shared-drives-with-no-members)
|
- [Display all Shared Drives with no members](#display-all-shared-drives-with-no-members)
|
||||||
- [Display all Shared Drives with no organizers](#display-all-shared-drives-with-no-organizers)
|
- [Display all Shared Drives with no organizers](#display-all-shared-drives-with-no-organizers)
|
||||||
- [Display all Shared Drives with a specific organizer](#display-all-shared-drives-with-a-specific-organizer)
|
- [Display all Shared Drives with a specific organizer](#display-all-shared-drives-with-a-specific-organizer)
|
||||||
@@ -24,10 +26,12 @@
|
|||||||
- [Display Shared Drive access for specific Shared Drives](#display-shared-drive-access-for-specific-shared-drives)
|
- [Display Shared Drive access for specific Shared Drives](#display-shared-drive-access-for-specific-shared-drives)
|
||||||
- [Display Shared Drive access for selected Shared Drives](#display-shared-drive-access-for-selected-shared-drives)
|
- [Display Shared Drive access for selected Shared Drives](#display-shared-drive-access-for-selected-shared-drives)
|
||||||
- [Display members of all Shared Drives](#display-members-of-all-shared-drives)
|
- [Display members of all Shared Drives](#display-members-of-all-shared-drives)
|
||||||
|
- [Display external members of all Shared Drives](#display-external-members-of-all-shared-drives)
|
||||||
- [Display ACLs for Shared Drives with no organizers](#display-acls-for-shared-drives-with-no-organizers)
|
- [Display ACLs for Shared Drives with no organizers](#display-acls-for-shared-drives-with-no-organizers)
|
||||||
- [Display ACLs for Shared Drives with all organizers outside of your domain](#display-acls-for-shared-drives-with-all-organizers-outside-of-your-domain)
|
- [Display ACLs for Shared Drives with all organizers outside of your domain](#display-acls-for-shared-drives-with-all-organizers-outside-of-your-domain)
|
||||||
- [Display ACLs for Shared Drives with all ACLs outside of your domain](#display-acls-for-shared-drives-with-all-acls-outside-of-your-domain)
|
- [Display ACLs for Shared Drives with all ACLs outside of your domain](#display-acls-for-shared-drives-with-all-acls-outside-of-your-domain)
|
||||||
- [Clean up scammed Shared Drives](#clean-up-scammed-shared-drives)
|
- [Clean up scammed Shared Drives](#clean-up-scammed-shared-drives)
|
||||||
|
- [Delete old empty Shared Drives](#delete-old-empty-shared-drives)
|
||||||
|
|
||||||
## API documentation
|
## API documentation
|
||||||
* [Drive API - Drives](https://developers.google.com/drive/api/reference/rest/v3/drives)
|
* [Drive API - Drives](https://developers.google.com/drive/api/reference/rest/v3/drives)
|
||||||
@@ -75,6 +79,9 @@
|
|||||||
```
|
```
|
||||||
<JSONData> ::= (json [charset <Charset>] <String>) | (json file <FileName> [charset <Charset>]) |
|
<JSONData> ::= (json [charset <Charset>] <String>) | (json file <FileName> [charset <Charset>]) |
|
||||||
|
|
||||||
|
<OrganizerType> ::= user|group
|
||||||
|
<OrganizerTypeList> ::= "<OrganizerType>(,<OrganizerType>)*"
|
||||||
|
|
||||||
<OrgUnitID> ::= id:<String>
|
<OrgUnitID> ::= id:<String>
|
||||||
<OrgUnitPath> ::= /|(/<String>)+
|
<OrgUnitPath> ::= /|(/<String>)+
|
||||||
<OrgUnitItem> ::= <OrgUnitID>|<OrgUnitPath>
|
<OrgUnitItem> ::= <OrgUnitID>|<OrgUnitPath>
|
||||||
@@ -225,14 +232,14 @@ Three forms of the commands are available:
|
|||||||
|
|
||||||
## Display Shared Drive themes
|
## Display Shared Drive themes
|
||||||
```
|
```
|
||||||
gam show teamdrivethemes
|
gam show shareddrivethemes
|
||||||
```
|
```
|
||||||
## Manage Shared Drives
|
## Manage Shared Drives
|
||||||
|
|
||||||
## Create a Shared Drive
|
## Create a Shared Drive
|
||||||
The user that creates a Shared Drive is given the permission role organizer for the Shared Drive,
|
The user that creates a Shared Drive is given the permission role organizer for the Shared Drive,
|
||||||
```
|
```
|
||||||
gam [<UserTypeEntity>] create teamdrive <Name>
|
gam [<UserTypeEntity>] create shareddrive <Name>
|
||||||
[(theme|themeid <String>)|
|
[(theme|themeid <String>)|
|
||||||
([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
||||||
(<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
(<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
||||||
@@ -241,7 +248,7 @@ gam [<UserTypeEntity>] create teamdrive <Name>
|
|||||||
[(csv [todrive <ToDriveAttribute>*] (addcsvdata <FieldName> <String>)*) | returnidonly]
|
[(csv [todrive <ToDriveAttribute>*] (addcsvdata <FieldName> <String>)*) | returnidonly]
|
||||||
[adminaccess|asadmin]
|
[adminaccess|asadmin]
|
||||||
```
|
```
|
||||||
* `themeid` - a Shared Drive themeId obtained from `show teamdrivethemes`
|
* `themeid` - a Shared Drive themeId obtained from `show shareddrivethemes`
|
||||||
* `customtheme` - set the backgroundImageFile property described here: https://developers.google.com/drive/v3/reference/teamdrives
|
* `customtheme` - set the backgroundImageFile property described here: https://developers.google.com/drive/v3/reference/teamdrives
|
||||||
* `<Float>` - X coordinate, typically 0.0
|
* `<Float>` - X coordinate, typically 0.0
|
||||||
* `<Float>` - Y coordinate, typically 0.0
|
* `<Float>` - Y coordinate, typically 0.0
|
||||||
@@ -274,9 +281,9 @@ When either of these options is chosen, no infomation about Shared Drive restric
|
|||||||
To retrieve the Shared Drive ID with `returnidonly`:
|
To retrieve the Shared Drive ID with `returnidonly`:
|
||||||
```
|
```
|
||||||
Linux/MacOS
|
Linux/MacOS
|
||||||
teamDriveId=$(gam create teamdrive ... returnidonly)
|
teamDriveId=$(gam create shareddrive ... returnidonly)
|
||||||
Windows PowerShell
|
Windows PowerShell
|
||||||
$teamDriveId = & gam create teamdrive ... returnidonly
|
$teamDriveId = & gam create shareddrive ... returnidonly
|
||||||
```
|
```
|
||||||
|
|
||||||
## Bulk Create Shared Drives
|
## Bulk Create Shared Drives
|
||||||
@@ -286,7 +293,7 @@ As a newly created Drive can't be updated for 30+ seconds; split the operation i
|
|||||||
|
|
||||||
Make a CSV file SharedDriveNames.csv with at least one column, name.
|
Make a CSV file SharedDriveNames.csv with at least one column, name.
|
||||||
```
|
```
|
||||||
gam redirect csv ./SharedDrivesCreated.csv multiprocess csv SharedDriveNames.csv gam create teamdrive "~name" csv
|
gam redirect csv ./SharedDrivesCreated.csv multiprocess csv SharedDriveNames.csv gam create shareddrive "~name" csv
|
||||||
```
|
```
|
||||||
This will create a three column CSV file SharedDrivesCreated.csv with columns: User,name,id
|
This will create a three column CSV file SharedDrivesCreated.csv with columns: User,name,id
|
||||||
* There will be a row for each Shared Drive.
|
* There will be a row for each Shared Drive.
|
||||||
@@ -317,14 +324,14 @@ gam redirect stdout ./StudentSharedDrivesAccess.txt multiprocess redirect stderr
|
|||||||
|
|
||||||
These commands are used to set basic Shared Drive settings.
|
These commands are used to set basic Shared Drive settings.
|
||||||
```
|
```
|
||||||
gam [<UserTypeEntity>] update teamdrive <SharedDriveEntity> [name <Name>]
|
gam [<UserTypeEntity>] update shareddrive <SharedDriveEntity> [name <Name>]
|
||||||
[adminaccess|asadmin]
|
[adminaccess|asadmin]
|
||||||
[(theme|themeid <String>)|
|
[(theme|themeid <String>)|
|
||||||
([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
||||||
(<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
(<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
||||||
[hide|hidden <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
[hide|hidden <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
||||||
```
|
```
|
||||||
* `themeid` - a Shared Drive themeId obtained from `show teamdrivethemes`
|
* `themeid` - a Shared Drive themeId obtained from `show shareddrivethemes`
|
||||||
* `customtheme` - set the backgroundImageFile property described here: https://developers.google.com/drive/v3/reference/teamdrives
|
* `customtheme` - set the backgroundImageFile property described here: https://developers.google.com/drive/v3/reference/teamdrives
|
||||||
* `color` - set the Shared Drive color
|
* `color` - set the Shared Drive color
|
||||||
* `<SharedDriveRestrictionsSubfieldName> <Boolean>` - Set Shared Drive Restrictions
|
* `<SharedDriveRestrictionsSubfieldName> <Boolean>` - Set Shared Drive Restrictions
|
||||||
@@ -336,7 +343,7 @@ This option is only available when the command is run as an administrator.
|
|||||||
|
|
||||||
## Delete a Shared Drive
|
## Delete a Shared Drive
|
||||||
```
|
```
|
||||||
gam [<UserTypeEntity>] delete teamdrive <SharedDriveEntity>
|
gam [<UserTypeEntity>] delete shareddrive <SharedDriveEntity>
|
||||||
[adminaccess|asadmin] [allowitemdeletion]
|
[adminaccess|asadmin] [allowitemdeletion]
|
||||||
```
|
```
|
||||||
By default, deleting a Shared Drive that contains any files/folders will fail.
|
By default, deleting a Shared Drive that contains any files/folders will fail.
|
||||||
@@ -345,24 +352,24 @@ This is not reversible, proceed with caution.
|
|||||||
|
|
||||||
## Change Shared Drive visibility
|
## Change Shared Drive visibility
|
||||||
```
|
```
|
||||||
gam [<UserTypeEntity>] hide teamdrive <SharedDriveEntity>
|
gam [<UserTypeEntity>] hide shareddrive <SharedDriveEntity>
|
||||||
gam [<UserTypeEntity>] unhide teamdrive <SharedDriveEntity>
|
gam [<UserTypeEntity>] unhide shareddrive <SharedDriveEntity>
|
||||||
```
|
```
|
||||||
|
|
||||||
## Display Shared Drives
|
## Display Shared Drives
|
||||||
These commands are used to get information about Shared Drives themselves, not the files/folders on the Shared Drives.
|
These commands are used to get information about Shared Drives themselves, not the files/folders on the Shared Drives.
|
||||||
```
|
```
|
||||||
gam [<UserTypeEntity>] info teamdrive <SharedDriveEntity>
|
gam [<UserTypeEntity>] info shareddrive <SharedDriveEntity>
|
||||||
[adminaccess|asadmin]
|
[adminaccess|asadmin]
|
||||||
[fields <SharedDriveFieldNameList>] [formatjson]
|
[fields <SharedDriveFieldNameList>] [formatjson]
|
||||||
gam [<UserTypeEntity>] show teamdriveinfo <SharedDriveEntity>
|
gam [<UserTypeEntity>] show shareddriveinfo <SharedDriveEntity>
|
||||||
[adminaccess|asadmin]
|
[adminaccess|asadmin]
|
||||||
[fields <SharedDriveFieldNameList>] [formatjson]
|
[fields <SharedDriveFieldNameList>] [formatjson]
|
||||||
```
|
```
|
||||||
By default, Gam displays the information as an indented list of keys and values.
|
By default, Gam displays the information as an indented list of keys and values.
|
||||||
* `formatjson` - Display the fields in JSON format.
|
* `formatjson` - Display the fields in JSON format.
|
||||||
```
|
```
|
||||||
gam [<UserTypeEntity>] show teamdrives
|
gam [<UserTypeEntity>] show shareddrives
|
||||||
[adminaccess|asadmin] [teamdriveadminquery|query <QueryTeamDrive>]
|
[adminaccess|asadmin] [teamdriveadminquery|query <QueryTeamDrive>]
|
||||||
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
|
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
|
||||||
[fields <SharedDriveFieldNameList>] [formatjson]
|
[fields <SharedDriveFieldNameList>] [formatjson]
|
||||||
@@ -375,7 +382,7 @@ By default, all Shared Drives are displayed; use the following options to select
|
|||||||
By default, Gam displays the information as an indented list of keys and values.
|
By default, Gam displays the information as an indented list of keys and values.
|
||||||
* `formatjson` - Display the fields in JSON format.
|
* `formatjson` - Display the fields in JSON format.
|
||||||
```
|
```
|
||||||
gam [<UserTypeEntity>] print teamdrives [todrive <ToDriveAttribute>*]
|
gam [<UserTypeEntity>] print shareddrives [todrive <ToDriveAttribute>*]
|
||||||
[adminaccess|asadmin] [teamdriveadminquery|query <QueryTeamDrive>]
|
[adminaccess|asadmin] [teamdriveadminquery|query <QueryTeamDrive>]
|
||||||
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
|
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
|
||||||
[fields <SharedDriveFieldNameList>] [formatjson [quotechar <Character>]]
|
[fields <SharedDriveFieldNameList>] [formatjson [quotechar <Character>]]
|
||||||
@@ -397,50 +404,116 @@ The `quotechar <Character>` option allows you to choose an alternate quote chara
|
|||||||
### Examples
|
### Examples
|
||||||
Print information about all Shared Drives in the organization.
|
Print information about all Shared Drives in the organization.
|
||||||
```
|
```
|
||||||
gam print teamdrives
|
gam print shareddrives
|
||||||
gam user admin@domain.com print teamdrives adminaccess
|
gam user admin@domain.com print shareddrives adminaccess
|
||||||
```
|
```
|
||||||
Print information about Shared Drives that have admin@domain.com as a member.
|
Print information about Shared Drives that have admin@domain.com as a member.
|
||||||
```
|
```
|
||||||
gam user admin@domain.com print teamdrives
|
gam user admin@domain.com print shareddrives
|
||||||
|
```
|
||||||
|
|
||||||
|
## Display Shared Drive Organizers
|
||||||
|
The following command can be used instead of the `GetTeamDriveOrganizers.py` script.
|
||||||
|
|
||||||
|
```
|
||||||
|
gam [<UserTypeEntity>] print shareddriveorganizers [todrive <ToDriveAttribute>*]
|
||||||
|
[adminaccess|asadmin]
|
||||||
|
[(shareddriveadminquery|query <QuerySharedDrive>) |
|
||||||
|
(shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>)))]
|
||||||
|
[orgunit|org|ou <OrgUnitPath>]
|
||||||
|
[matchname <REMatchPattern>]
|
||||||
|
[domainlist <DomainList>]
|
||||||
|
[includetypes <OrganizerTypeList>]
|
||||||
|
[oneorganizer [<Boolean>]]
|
||||||
|
[shownorganizerdrives [false|true|only]]
|
||||||
|
[includefileorganizers [<Boolean>]]
|
||||||
|
[delimiter <Character>]
|
||||||
|
```
|
||||||
|
Options `shareddriveadminquery|query` and `shareddrives|teamdrives` are mutually exclusive.
|
||||||
|
|
||||||
|
Options `shareddriveadminquery|query` and `orgunit|org|ou` require `adminaccess|asadmin`.
|
||||||
|
|
||||||
|
By default, organizers for all Shared Drives are displayed; use the following options to select a subset of Shared Drives:
|
||||||
|
* `teamdriveadminquery|query <QueryTeamDrive>` - Use a query to select Shared Drives
|
||||||
|
* `shareddrives|teamdrives <SharedDriveIDList>` - Select the Shared Drive IDs specified in `<SharedDriveIDList>`
|
||||||
|
* `shareddrives|teamdrives select <FileSelector>|<CSVFileSelector>` - Select the Shared Drive IDs specified in `<FileSelector>|<CSVFileSelector>`
|
||||||
|
* `orgunit|org|ou <OrgUnitPath>` - Only Shared Drives in the specified Org Unit are selected
|
||||||
|
* `matchname <REMatchPattern>` - Retrieve Shared Drives with names that match a pattern.
|
||||||
|
|
||||||
|
For multiple organizers:
|
||||||
|
* `delimiter <Character>` - Separate `organizers` entries with `<Character>`; the default value is `csv_output_field_delimiter` from `gam.cfg`.
|
||||||
|
|
||||||
|
The command defaults do not match the script defaults, they are set for the most common use case:
|
||||||
|
* `domainlist` - The workspace primary domain
|
||||||
|
* `includetypes` - user
|
||||||
|
* `oneorganizer` - True
|
||||||
|
* `shownoorganizerdrives` - True
|
||||||
|
* `includefileorganizers` - False
|
||||||
|
|
||||||
|
To select organizers from any domain, use: `domainlist ""`
|
||||||
|
|
||||||
|
For example, to get a single user organizer from your domain for all Shared Drives including no organizer drives:
|
||||||
|
```
|
||||||
|
gam redirect csv ./TeamDriveOrganizers.csv print shareddriveorganizers
|
||||||
```
|
```
|
||||||
|
|
||||||
## Display all Shared Drives with no members
|
## Display all Shared Drives with no members
|
||||||
```
|
```
|
||||||
gam print teamdrives query "memberCount = 0"
|
gam print shareddrives query "memberCount = 0"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Display all Shared Drives with no organizers
|
## Display all Shared Drives with no organizers
|
||||||
```
|
```
|
||||||
gam print teamdrives query "organizerCount = 0"
|
gam print shareddrives query "organizerCount = 0"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Display Shared Drive Counts
|
||||||
|
Display the number of Shared Drives.
|
||||||
|
```
|
||||||
|
gam [<UserTypeEntity>] show|print shareddrives
|
||||||
|
[adminaccess|asadmin] [teamdriveadminquery|query <QueryTeamDrive>]
|
||||||
|
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
|
||||||
|
showitemcountonly
|
||||||
|
```
|
||||||
|
By default, all Shared Drives are counted; use the following options to select a subset of Shared Drives:
|
||||||
|
* `teamdriveadminquery|query <QueryTeamDrive>` - Use a query to select Shared Drives
|
||||||
|
* `matchname <REMatchPattern>` - Retrieve Shared Drives with names that match a pattern.
|
||||||
|
* `orgunit|org|ou <OrgUnitPath>` - Only Shared Drives in the specified Org Unit are selected
|
||||||
|
|
||||||
|
Example
|
||||||
|
```
|
||||||
|
$ gam print shareddrives showitemcountonly
|
||||||
|
Getting all Shared Drives, may take some time on a large Google Workspace Account...
|
||||||
|
Got 12 Shared Drives...
|
||||||
|
12
|
||||||
|
```
|
||||||
|
The `Getting` and `Got` messages are written to stderr, the count is writtem to stdout.
|
||||||
|
|
||||||
|
To retrieve the count with `showitemcountonly`:
|
||||||
|
```
|
||||||
|
Linux/MacOS
|
||||||
|
count=$(gam print shareddrives showitemcountonly)
|
||||||
|
Windows PowerShell
|
||||||
|
count = & gam print shareddrives showitemcountonly
|
||||||
```
|
```
|
||||||
|
|
||||||
## Display all Shared Drives with a specific organizer
|
## Display all Shared Drives with a specific organizer
|
||||||
Substitute actual email address for `organizer@domain.com`.
|
Substitute actual email address for `organizer@domain.com`.
|
||||||
```
|
```
|
||||||
gam config csv_output_header_filter "id,name" print teamdriveacls pm emailaddress organizer@domain.com role organizer em pma process pmselect
|
gam config csv_output_header_filter "id,name" print shareddriveacls pm emailaddress organizer@domain.com role organizer em pma process pmselect
|
||||||
```
|
```
|
||||||
|
|
||||||
## Display all Shared Drives without a specific organizer
|
## Display all Shared Drives without a specific organizer
|
||||||
Substitute actual email address for `organizer@domain.com`.
|
Substitute actual email address for `organizer@domain.com`.
|
||||||
```
|
```
|
||||||
gam config csv_output_header_filter "id,name" print teamdriveacls pm emailaddress organizer@domain.com role organizer em pma skip pmselect
|
gam config csv_output_header_filter "id,name" print shareddriveacls pm emailaddress organizer@domain.com role organizer em pma skip pmselect
|
||||||
```
|
|
||||||
|
|
||||||
## Display List of Shared Drives in an Organizational Unit other than /
|
|
||||||
Get the orgUnitID of OU / and use it (without the id:) in the print|show command. Adjust fields as desired.
|
|
||||||
```
|
|
||||||
gam info ou / nousers
|
|
||||||
gam show teamdrives query "orgUnitId!='00gjdgxs2p9cxyz'" fields id,name,orgunit,createdtime
|
|
||||||
gam print teamdrives query "orgUnitId!='00gjdgxs2p9cxyz'" fields id,name,orgunit,createdtime
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Display List of Shared Drives in an Organizational Unit
|
## Display List of Shared Drives in an Organizational Unit
|
||||||
Get the orgUnitID of the desired OU and use it (without the id:) in the print|show command. Adjust fields as desired.
|
Get the orgUnitID of the desired OU and use it (without the id:) in the print|show command. Adjust fields as desired.
|
||||||
```
|
```
|
||||||
gam info ou <OrgUnitPath> nousers
|
gam show shareddrives query "orgUnitId='03ph8a2z21rexy'" fields id,name,orgunit,createdtime
|
||||||
gam show teamdrives query "orgUnitId='03ph8a2z21rexy'" fields id,name,orgunit,createdtime
|
gam print shareddrives query "orgUnitId='03ph8a2z21rexy'" fields id,name,orgunit,createdtime
|
||||||
gam print teamdrives query "orgUnitId='03ph8a2z21rexy'" fields id,name,orgunit,createdtime
|
|
||||||
```
|
```
|
||||||
Alternative method; `<OrgUnitPath>` defaults to `/`.
|
Alternative method; `<OrgUnitPath>` defaults to `/`.
|
||||||
```
|
```
|
||||||
@@ -452,6 +525,31 @@ gam print oushareddrives [todrive <ToDriveAttribute>*]
|
|||||||
[formatjson [quotechar <Character>]]
|
[formatjson [quotechar <Character>]]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Display Count of Shared Drives in an Organizational Unit
|
||||||
|
```
|
||||||
|
gam print|show oushareddrives
|
||||||
|
[ou|org|orgunit <OrgUnitPath>]
|
||||||
|
showitemcountonly
|
||||||
|
```
|
||||||
|
`<OrgUnitPath>` defaults to `"/"`.
|
||||||
|
|
||||||
|
Example
|
||||||
|
```
|
||||||
|
$ gam print oushareddrives showitemcountonly
|
||||||
|
Getting all Shared Drives for /, may take some time on a large Organizational Unit...
|
||||||
|
Got 9 Shared Drives for /...
|
||||||
|
9
|
||||||
|
```
|
||||||
|
The `Getting` and `Got` messages are written to stderr, the count is writtem to stdout.
|
||||||
|
|
||||||
|
To retrieve the count with `showitemcountonly`:
|
||||||
|
```
|
||||||
|
Linux/MacOS
|
||||||
|
count=$(gam print oushareddrives showitemcountonly)
|
||||||
|
Windows PowerShell
|
||||||
|
count = & gam print oushareddrives showitemcountonly
|
||||||
|
```
|
||||||
|
|
||||||
## Manage Shared Drive access
|
## Manage Shared Drive access
|
||||||
These commands are used to manage the ACLs on Shared Drives themselves, not the files/folders on the Shared Drives.
|
These commands are used to manage the ACLs on Shared Drives themselves, not the files/folders on the Shared Drives.
|
||||||
|
|
||||||
@@ -503,12 +601,12 @@ These commands are used to transfer ACLs from one Shared Drive to another.
|
|||||||
* `copy` - Copy all ACLs from the source Shared Drive to the target Shared Drive. The role of an existing ACL in the target Shared Drive will never be reduced.
|
* `copy` - Copy all ACLs from the source Shared Drive to the target Shared Drive. The role of an existing ACL in the target Shared Drive will never be reduced.
|
||||||
* `sync` - Add/delete/update ACLs in the target Shared Drive to match those in the source Shared Drive.
|
* `sync` - Add/delete/update ACLs in the target Shared Drive to match those in the source Shared Drive.
|
||||||
```
|
```
|
||||||
gam [<UserTypeEntity>] copy teamdriveacls <SharedDriveEntity> to <SharedDriveEntity>
|
gam [<UserTypeEntity>] copy shareddriveacls <SharedDriveEntity> to <SharedDriveEntity>
|
||||||
[showpermissionsmessages [<Boolean>]]
|
[showpermissionsmessages [<Boolean>]]
|
||||||
[excludepermissionsfromdomains|includepermissionsfromdomains <DomainNameList>]
|
[excludepermissionsfromdomains|includepermissionsfromdomains <DomainNameList>]
|
||||||
(mappermissionsdomain <DomainName> <DomainName>)*
|
(mappermissionsdomain <DomainName> <DomainName>)*
|
||||||
[adminaccess|asadmin]
|
[adminaccess|asadmin]
|
||||||
gam [<UserTypeEntity>] sync teamdriveacls <SharedDriveEntity> with <SharedDriveEntity>
|
gam [<UserTypeEntity>] sync shareddriveacls <SharedDriveEntity> with <SharedDriveEntity>
|
||||||
[showpermissionsmessages [<Boolean>]]
|
[showpermissionsmessages [<Boolean>]]
|
||||||
[excludepermissionsfromdomains|includepermissionsfromdomains <DomainNameList>]
|
[excludepermissionsfromdomains|includepermissionsfromdomains <DomainNameList>]
|
||||||
(mappermissionsdomain <DomainName> <DomainName>)*
|
(mappermissionsdomain <DomainName> <DomainName>)*
|
||||||
@@ -546,7 +644,7 @@ gam [<UserTypeEntity>] print drivefileacls <SharedDriveEntityAdmin> [todrive <To
|
|||||||
### Examples:
|
### Examples:
|
||||||
Find all the organizers and file organizers on the Golgafrincham shared drive in CSV form.
|
Find all the organizers and file organizers on the Golgafrincham shared drive in CSV form.
|
||||||
```
|
```
|
||||||
gam print drivefileacls teamdrive "Golgafrincham" pm role organizer em pm role fileorganizer em oneitemperrow
|
gam print drivefileacls shareddrive "Golgafrincham" pm role organizer em pm role fileorganizer em oneitemperrow
|
||||||
```
|
```
|
||||||
|
|
||||||
By default, all Shared Drives specified are displayed; use the following option to select a subset of those Shared Drives.
|
By default, all Shared Drives specified are displayed; use the following option to select a subset of those Shared Drives.
|
||||||
@@ -569,9 +667,15 @@ The `quotechar <Character>` option allows you to choose an alternate quote chara
|
|||||||
gam config csv_output_header_drop_filter "User,createdTime,permission.photoLink,permission.permissionDetails" redirect csv ./SharedDriveMembers.csv print shareddriveacls oneitemperrow
|
gam config csv_output_header_drop_filter "User,createdTime,permission.photoLink,permission.permissionDetails" redirect csv ./SharedDriveMembers.csv print shareddriveacls oneitemperrow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Display external members of all Shared Drives
|
||||||
|
Replace `<InternalDomainList>` with your list of internal domains.
|
||||||
|
```
|
||||||
|
gam config csv_output_header_drop_filter "User,createdTime,permission.photoLink,permission.permissionDetails" redirect csv ./SharedDriveExternalMembers.csv print shareddriveacls pm notdomainlist <InternalDomainList> em oneitemperrow
|
||||||
|
```
|
||||||
|
|
||||||
## Display Shared Drive access for selected Shared Drives
|
## Display Shared Drive access for selected Shared Drives
|
||||||
```
|
```
|
||||||
gam [<UserTypeEntity>] show teamdriveacls
|
gam [<UserTypeEntity>] show shareddriveacls
|
||||||
[adminaccess|asadmin] [teamdriveadminquery|query <QueryTeamDrive>]
|
[adminaccess|asadmin] [teamdriveadminquery|query <QueryTeamDrive>]
|
||||||
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
|
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
|
||||||
[user|group <EmailAddress> [checkgroups]] (role|roles <SharedDriveACLRoleList>)*
|
[user|group <EmailAddress> [checkgroups]] (role|roles <SharedDriveACLRoleList>)*
|
||||||
@@ -580,7 +684,7 @@ gam [<UserTypeEntity>] show teamdriveacls
|
|||||||
[shownopermissionsdrives false|true|only]
|
[shownopermissionsdrives false|true|only]
|
||||||
[formatjson]
|
[formatjson]
|
||||||
|
|
||||||
gam [<UserTypeEntity>] print teamdriveacls [todrive <ToDriveAttribute>*]
|
gam [<UserTypeEntity>] print shareddriveacls [todrive <ToDriveAttribute>*]
|
||||||
[adminaccess|asadmin] [teamdriveadminquery|query <QueryTeamDrive>]
|
[adminaccess|asadmin] [teamdriveadminquery|query <QueryTeamDrive>]
|
||||||
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
|
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
|
||||||
[user|group <EmailAddress> [checkgroups]] (role|roles <SharedDriveACLRoleList>)*
|
[user|group <EmailAddress> [checkgroups]] (role|roles <SharedDriveACLRoleList>)*
|
||||||
@@ -607,7 +711,7 @@ By default, all ACLS are displayed; use the following options to select a subset
|
|||||||
* `role|roles <SharedDriveACLRoleList>` - Display ACLs for the specified roles only.
|
* `role|roles <SharedDriveACLRoleList>` - Display ACLs for the specified roles only.
|
||||||
* `<PermissionMatch>* [<PermissionMatchAction>]` - Use permission matching to display a subset of the ACLs for each Shared Drive; this only applies when `pmselect` is not specified
|
* `<PermissionMatch>* [<PermissionMatchAction>]` - Use permission matching to display a subset of the ACLs for each Shared Drive; this only applies when `pmselect` is not specified
|
||||||
|
|
||||||
With `print teamdriveacls` or `show teamdrivecls formatjson`, the ACLs selected for display are all output on one row/line as a repeating item with the matching Shared Drive id.
|
With `print shareddriveacls` or `show shareddrivecls formatjson`, the ACLs selected for display are all output on one row/line as a repeating item with the matching Shared Drive id.
|
||||||
When `oneitemperrow` is specified, each ACL is output on a separate row/line with the matching Shared Drive id and name. This simplifies processing the CSV file with subsequent Gam commands.
|
When `oneitemperrow` is specified, each ACL is output on a separate row/line with the matching Shared Drive id and name. This simplifies processing the CSV file with subsequent Gam commands.
|
||||||
|
|
||||||
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
|
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
|
||||||
@@ -619,35 +723,35 @@ The `quotechar <Character>` option allows you to choose an alternate quote chara
|
|||||||
### Examples
|
### Examples
|
||||||
Find all organizers and viewers on the shared drive Heart of Gold in CSV form.
|
Find all organizers and viewers on the shared drive Heart of Gold in CSV form.
|
||||||
```
|
```
|
||||||
gam print teamdriveacls matchname "Heart of Gold" role organizer,reader oneitemperrow
|
gam print shareddriveacls matchname "Heart of Gold" role organizer,reader oneitemperrow
|
||||||
```
|
```
|
||||||
|
|
||||||
Print ACLs for all Shared Drives in the organization created after November 1, 2017.
|
Print ACLs for all Shared Drives in the organization created after November 1, 2017.
|
||||||
```
|
```
|
||||||
gam print teamdriveacls teamdriveadminquery "createdTime > '2017-11-01T00:00:00'"
|
gam print shareddriveacls shareddriveadminquery "createdTime > '2017-11-01T00:00:00'"
|
||||||
```
|
```
|
||||||
|
|
||||||
Print ACLs for all Shared Drives in the organization with foo@bar.com as an organizer.
|
Print ACLs for all Shared Drives in the organization with foo@bar.com as an organizer.
|
||||||
```
|
```
|
||||||
gam print teamdriveacls user foo@bar.com role organizer
|
gam print shareddriveacls user foo@bar.com role organizer
|
||||||
```
|
```
|
||||||
|
|
||||||
Print ACLs for all Shared Drives in the organization with foo@bar.com or groups that contain foo@bar.com as a reader.
|
Print ACLs for all Shared Drives in the organization with foo@bar.com or groups that contain foo@bar.com as a reader.
|
||||||
```
|
```
|
||||||
gam print teamdriveacls user foo@bar.com role reader checkgroups
|
gam print shareddriveacls user foo@bar.com role reader checkgroups
|
||||||
```
|
```
|
||||||
|
|
||||||
## Display ACLs for Shared Drives with no organizers
|
## Display ACLs for Shared Drives with no organizers
|
||||||
### For all Shared Drives
|
### For all Shared Drives
|
||||||
```
|
```
|
||||||
One row per Shared Drive, all ACLs on the same row
|
One row per Shared Drive, all ACLs on the same row
|
||||||
gam redirect csv ./SharedDriveACLsNoOrganizers.csv print teamdriveacls fields id,domain,emailaddress,role,type,deleted query "organizerCount = 0"
|
gam redirect csv ./SharedDriveACLsNoOrganizers.csv print shareddriveacls fields id,domain,emailaddress,role,type,deleted query "organizerCount = 0"
|
||||||
|
|
||||||
A row per Shared Drive/ACL combination
|
A row per Shared Drive/ACL combination
|
||||||
gam redirect csv ./SharedDriveACLsNoOrganizers.csv print teamdriveacls fields id,domain,emailaddress,role,type,deleted query "organizerCount = 0" oneitemperrow
|
gam redirect csv ./SharedDriveACLsNoOrganizers.csv print shareddriveacls fields id,domain,emailaddress,role,type,deleted query "organizerCount = 0" oneitemperrow
|
||||||
```
|
```
|
||||||
### For selected Shared Drives
|
### For selected Shared Drives
|
||||||
Create a CSV file TeamDrives.csv with at least two columns (id, name) for the selected Shared Drives.
|
Create a CSV file shareddrives.csv with at least two columns (id, name) for the selected Shared Drives.
|
||||||
```
|
```
|
||||||
One row per Shared Drive, all ACLs on the same row
|
One row per Shared Drive, all ACLs on the same row
|
||||||
gam redirect csv ./SharedDriveACLsNoOrganizers.csv multiprocess csv ./SharedDrives.csv gam print drivefileacls "~id" addtitle "~name" fields id,domain,emailaddress,role,type,deleted pm role organizer em pma skip pmselect
|
gam redirect csv ./SharedDriveACLsNoOrganizers.csv multiprocess csv ./SharedDrives.csv gam print drivefileacls "~id" addtitle "~name" fields id,domain,emailaddress,role,type,deleted pm role organizer em pma skip pmselect
|
||||||
@@ -660,13 +764,13 @@ gam redirect csv ./SharedDriveACLsNoOrganizersOIPR.csv multiprocess csv ./Shared
|
|||||||
### For all Shared Drives
|
### For all Shared Drives
|
||||||
```
|
```
|
||||||
One row per Shared Drive, all ACLs on the same row
|
One row per Shared Drive, all ACLs on the same row
|
||||||
gam redirect csv ./SharedDriveACLsAllExternalOrganizers.csv print teamdriveacls fields id,domain,emailaddress,role,type,deleted role organizer pm role organizer domainlist domain.com,... em pma skip pmselect
|
gam redirect csv ./SharedDriveACLsAllExternalOrganizers.csv print shareddriveacls fields id,domain,emailaddress,role,type,deleted role organizer pm role organizer domainlist domain.com,... em pma skip pmselect
|
||||||
|
|
||||||
A row per Shared Drive/ACL combination
|
A row per Shared Drive/ACL combination
|
||||||
gam redirect csv ./SharedDriveACLsAllExternalOrganizers.csv print teamdriveacls fields id,domain,emailaddress,role,type,deleted role organizer pm role organizer domainlist domain.com,... em pma skip pmselect
|
gam redirect csv ./SharedDriveACLsAllExternalOrganizers.csv print shareddriveacls fields id,domain,emailaddress,role,type,deleted role organizer pm role organizer domainlist domain.com,... em pma skip pmselect
|
||||||
```
|
```
|
||||||
### For selected Shared Drives
|
### For selected Shared Drives
|
||||||
Create a CSV file TeamDrives.csv with at least two columns (id, name) for the selected Shared Drives.
|
Create a CSV file shareddrives.csv with at least two columns (id, name) for the selected Shared Drives.
|
||||||
```
|
```
|
||||||
One row per Shared Drive, all ACLs on the same row
|
One row per Shared Drive, all ACLs on the same row
|
||||||
gam redirect csv ./SharedDriveACLsAllExternalOrganizers.csv multiprocess csv ./SharedDrives.csv gam print drivefileacls "~id" addtitle "~name" fields id,domain,emailaddress,role,type,deleted pm role organizer domainlist domain.com,... em pma skip pmselect
|
gam redirect csv ./SharedDriveACLsAllExternalOrganizers.csv multiprocess csv ./SharedDrives.csv gam print drivefileacls "~id" addtitle "~name" fields id,domain,emailaddress,role,type,deleted pm role organizer domainlist domain.com,... em pma skip pmselect
|
||||||
@@ -680,13 +784,13 @@ gam redirect csv ./SharedDriveACLsAllExternalOrganizersOIPR.csv multiprocess csv
|
|||||||
Include a permission match `pm domainlist domain.com,... em` that lists your internal domain(s).
|
Include a permission match `pm domainlist domain.com,... em` that lists your internal domain(s).
|
||||||
```
|
```
|
||||||
One row per Shared Drive, all ACLs on the same row
|
One row per Shared Drive, all ACLs on the same row
|
||||||
gam redirect csv ./SharedDriveACLsAllExternal.csv print teamdriveacls fields id,domain,emailaddress,role,type,deleted pm domainlist domain.com,... em pma skip pmselect
|
gam redirect csv ./SharedDriveACLsAllExternal.csv print shareddriveacls fields id,domain,emailaddress,role,type,deleted pm domainlist domain.com,... em pma skip pmselect
|
||||||
|
|
||||||
A row per Shared Drive/ACL combination
|
A row per Shared Drive/ACL combination
|
||||||
gam redirect csv ./SharedDriveACLsAllExternalOIPR.csv print teamdriveacls fields id,domain,emailaddress,role,type,deleted pm domainlist domain.com,... em pma skip pmselect oneitemperrow
|
gam redirect csv ./SharedDriveACLsAllExternalOIPR.csv print shareddriveacls fields id,domain,emailaddress,role,type,deleted pm domainlist domain.com,... em pma skip pmselect oneitemperrow
|
||||||
```
|
```
|
||||||
### For selected Shared Drives
|
### For selected Shared Drives
|
||||||
Create a CSV file TeamDrives.csv with at least two columns (id, name) for the selected Shared Drives.
|
Create a CSV file shareddrives.csv with at least two columns (id, name) for the selected Shared Drives.
|
||||||
|
|
||||||
Include a permission match `pm domainlist domain.com,... em` that lists your internal domain(s).
|
Include a permission match `pm domainlist domain.com,... em` that lists your internal domain(s).
|
||||||
```
|
```
|
||||||
@@ -709,16 +813,16 @@ to get the Shared Drive ACLs for the scammed Shared Drives.
|
|||||||
|
|
||||||
```
|
```
|
||||||
One row per Shared Drive, all ACLs on the same row
|
One row per Shared Drive, all ACLs on the same row
|
||||||
gam redirect csv ./SharedDriveACLsAllExternal.csv print teamdriveacls fields id,domain,emailaddress,role,type,deleted pm domainlist domain.com,... em pma skip pmselect
|
gam redirect csv ./SharedDriveACLsAllExternal.csv print shareddriveacls fields id,domain,emailaddress,role,type,deleted pm domainlist domain.com,... em pma skip pmselect
|
||||||
|
|
||||||
A row per Shared Drive/ACL combination
|
A row per Shared Drive/ACL combination
|
||||||
gam redirect csv ./SharedDriveACLsAllExternalOIPR.csv print teamdriveacls fields id,domain,emailaddress,role,type,deleted pm domainlist domain.com,... em pma skip pmselect oneitemperrow
|
gam redirect csv ./SharedDriveACLsAllExternalOIPR.csv print shareddriveacls fields id,domain,emailaddress,role,type,deleted pm domainlist domain.com,... em pma skip pmselect oneitemperrow
|
||||||
```
|
```
|
||||||
|
|
||||||
### Add an organizer from your domain
|
### Add an organizer from your domain
|
||||||
Sustitute an appropriate value for `admin@domain.com`.
|
Sustitute an appropriate value for `admin@domain.com`.
|
||||||
```
|
```
|
||||||
gam redirect stdout ./AddOrganizer.txt multiprocess redirect stderr stdout csv ./SharedDriveACLsAllExternal.csv gam add drivefileacl teamdriveid "~id" user admin@domain.com role organizer
|
gam redirect stdout ./AddOrganizer.txt multiprocess redirect stderr stdout csv ./SharedDriveACLsAllExternal.csv gam add drivefileacl shareddriveid "~id" user admin@domain.com role organizer
|
||||||
```
|
```
|
||||||
|
|
||||||
### Delete non domain ACLs
|
### Delete non domain ACLs
|
||||||
@@ -727,7 +831,7 @@ you must delete all rows in `SharedDriveACLsAllExternalOIPR.csv` that have the s
|
|||||||
|
|
||||||
This will disable all non-domain users access to the Shared Drive.
|
This will disable all non-domain users access to the Shared Drive.
|
||||||
```
|
```
|
||||||
gam redirect stdout ./DeleteExternalACLs.txt multiprocess redirect stderr stdout csv ./SharedDriveACLsAllExternalOIPR.csv gam delete drivefileacl teamdriveid "~id" "id:~~permission.id~~"
|
gam redirect stdout ./DeleteExternalACLs.txt multiprocess redirect stderr stdout csv ./SharedDriveACLsAllExternalOIPR.csv gam delete drivefileacl shareddriveid "~id" "id:~~permission.id~~"
|
||||||
```
|
```
|
||||||
|
|
||||||
### Delete the Shared Drives
|
### Delete the Shared Drives
|
||||||
@@ -735,5 +839,21 @@ The `allowitemdeletion` option allows deletion of non-empty Shared Drives. This
|
|||||||
|
|
||||||
This is not reversible, proceed with caution.
|
This is not reversible, proceed with caution.
|
||||||
```
|
```
|
||||||
gam redirect stdout ./DeleteSharedDrives.txt multiprocess redirect stderr stdout csv ./SharedDriveACLsAllExternal.csv gam delete teamdrive "~id" allowitemdeletion
|
gam redirect stdout ./DeleteSharedDrives.txt multiprocess redirect stderr stdout csv ./SharedDriveACLsAllExternal.csv gam delete shareddrive "~id" allowitemdeletion
|
||||||
|
```
|
||||||
|
|
||||||
|
## Delete old empty Shared Drives
|
||||||
|
```
|
||||||
|
# Get a list of Shared Drives organizers for Shared Drives created before one year ago; alter date<-1y as required.
|
||||||
|
gam config csv_output_row_filter "createdTime:date<-1y" redirect csv ./TeamDriveOrganizers.csv print shareddriveorganizers domainlist mydomain.com includetypes user oneorganizer shownoorganizerdrives
|
||||||
|
|
||||||
|
# Inspect shareddriveOrganizers.csv, you'll have to deal with Shared Drives with no organizer/manager
|
||||||
|
|
||||||
|
# Get old empty Shared Drives
|
||||||
|
gam config num_threads 10 csv_input_row_filter "organizers:regex:^.+$" csv_output_row_filter "Total:count=0" redirect csv ./OldEmptySharedDrives.csv multiprocess redirect stderr - multiprocess csv ./TeamDriveOrganizers.csv gam user "~organizers" print filecounts select shareddriveid "~id" showsize
|
||||||
|
|
||||||
|
# Inspect OldEmptySharedDrives.csv, if you're confident of the results, proceed
|
||||||
|
|
||||||
|
# Delete old empty Shared Drives
|
||||||
|
gam redirect stdout ./DeleteOldEmptySharedDrives.txt multiprocess redirect stderr stdout csv ./OldEmptySharedDrives.csv gam user "~User" delete shareddrive "~id"
|
||||||
```
|
```
|
||||||
@@ -6,14 +6,13 @@
|
|||||||
- [Display Analytic Account Summaries](#display-analytic-account-summaries)
|
- [Display Analytic Account Summaries](#display-analytic-account-summaries)
|
||||||
- [Display Analytic Properties](#display-analytic-properties)
|
- [Display Analytic Properties](#display-analytic-properties)
|
||||||
- [Display Analytic Datastreams](#display-analytic-datastreams)
|
- [Display Analytic Datastreams](#display-analytic-datastreams)
|
||||||
- [Display Analytic UA Properties](#display-analytic-ua-properties)
|
|
||||||
- [Examples](#examples)
|
- [Examples](#examples)
|
||||||
|
|
||||||
## API documentation
|
## API documentation
|
||||||
* [Analytics Admin API](https://developers.google.com/analytics/devguides/config/admin/v1/rest)
|
* [Analytics Admin API](https://developers.google.com/analytics/devguides/config/admin/v1/rest)
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
To use these commands you must add 'Analytics API' and 'Analytics Admin API' to your project and update your service account authorization.
|
To use these commands you must add 'Analytics Admin API' to your project and update your service account authorization.
|
||||||
```
|
```
|
||||||
gam update project
|
gam update project
|
||||||
gam user user@domain.com update serviceaccount
|
gam user user@domain.com update serviceaccount
|
||||||
@@ -142,37 +141,6 @@ When using the `formatjson` option, double quotes are used extensively in the da
|
|||||||
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
|
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
|
||||||
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
|
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
|
||||||
|
|
||||||
## Display Analytic UA Properties
|
|
||||||
```
|
|
||||||
gam <UserTypeEntity> show analyticuaproperties
|
|
||||||
accountid [accounts/]<String>
|
|
||||||
[maxresults <Integer>]
|
|
||||||
[formatjson]
|
|
||||||
```
|
|
||||||
The required `accountid <String>` can be in the format: 'accounts/123' or '123'.
|
|
||||||
|
|
||||||
By default, GAM asks the API for 50 properties per page of results,
|
|
||||||
* `maxresults` - Maximum number of results per page; range is 1-200; the default is 50.
|
|
||||||
|
|
||||||
By default, Gam displays the information as an indented list of keys and values.
|
|
||||||
* `formatjson` - Display the fields in JSON format.
|
|
||||||
```
|
|
||||||
gam <UserTypeEntity> print analyticuaproperties [todrive <ToDriveAttribute>*]
|
|
||||||
accountid [accounts/]<String>
|
|
||||||
[maxresults <Integer>]
|
|
||||||
[formatjson [quotechar <Character>]]
|
|
||||||
```
|
|
||||||
The required `accountid <String>` can be in the format: 'accounts/123' or '123'.
|
|
||||||
|
|
||||||
By default, GAM asks the API for 50 properties per page of results,
|
|
||||||
* `maxresults` - Maximum number of results per page; range is 1-200; the default is 50.
|
|
||||||
|
|
||||||
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
|
|
||||||
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
|
|
||||||
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
|
|
||||||
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
|
|
||||||
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
|
|
||||||
|
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
Get all analytic accounts
|
Get all analytic accounts
|
||||||
@@ -189,8 +157,3 @@ Get all analytic account properties (GA4)
|
|||||||
```
|
```
|
||||||
gam redirect stdout - multiprocess redirect stderr stdout redirect csv ./GA4AnalyticAccountProperties.csv multiprocess csv AnalyticAccounts.csv gam user "~User" print analyticproperties filter "parent:~~name~~"
|
gam redirect stdout - multiprocess redirect stderr stdout redirect csv ./GA4AnalyticAccountProperties.csv multiprocess csv AnalyticAccounts.csv gam user "~User" print analyticproperties filter "parent:~~name~~"
|
||||||
```
|
```
|
||||||
|
|
||||||
Get all analytic account properties (UA)
|
|
||||||
```
|
|
||||||
gam redirect stdout - multiprocess redirect stderr stdout redirect csv ./UAAnalyticAccountProperties.csv multiprocess csv AnalyticAccounts.csv gam user "~User" print analyticuaproperties accountid "~~name~~"
|
|
||||||
```
|
|
||||||
|
|||||||
@@ -671,8 +671,9 @@ 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] [formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
[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.
|
||||||
|
|
||||||
@@ -688,6 +689,11 @@ By default, Gam displays the information as columns of fields; the following opt
|
|||||||
|
|
||||||
By default, Gam displays event details, use `countsonly` to display only the number of events. `formatjson` does not apply in this case.
|
By default, Gam displays event details, use `countsonly` to display only the number of events. `formatjson` does not apply in this case.
|
||||||
|
|
||||||
|
When `countsonly` is specified, the `eventrowfilter` option causes
|
||||||
|
GAM to apply `config csv_output_row_filter` to the event details rather than the event counts.
|
||||||
|
This will be useful when `<EventSelectProperty>` and `<EventMatchProperty>` do not have the
|
||||||
|
capabilty to select the events of interest; e.g., you want to filter based on the event `created` property.
|
||||||
|
|
||||||
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
|
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
|
||||||
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
|
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
|
||||||
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
|
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
|
||||||
|
|||||||
@@ -15,8 +15,6 @@
|
|||||||
- [Bulk Operations](#bulk-operations)
|
- [Bulk Operations](#bulk-operations)
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
These features were added in version 6.60.00.
|
|
||||||
|
|
||||||
To use these commands you must update your service account authorization.
|
To use these commands you must update your service account authorization.
|
||||||
```
|
```
|
||||||
gam user user@domain.com update serviceaccount
|
gam user user@domain.com update serviceaccount
|
||||||
@@ -42,11 +40,11 @@ Google requires that you have a Chat Bot configured in order to use the Chat API
|
|||||||
|
|
||||||
## Set up a Chat Bot
|
## Set up a Chat Bot
|
||||||
|
|
||||||
* Run the command `gam setup chat`; it will point you to a URL to configure your Chat Bot; this is required to use the Chat API.
|
* Run the command `gam setup chat`; it will point you to a URL to configure your Chat Bot.
|
||||||
* Enter an App name and Description of your choosing.
|
* Enter an App name and Description of your choosing.
|
||||||
* For the Avatar URL you can use `https://dummyimage.com/384x256/4d4d4d/0011ff.png&text=+GAM` or a public URL to an image of your own choosing.
|
* For the Avatar URL you can use `https://dummyimage.com/384x256/4d4d4d/0011ff.png&text=+GAM` or a public URL to an image of your own choosing.
|
||||||
* In Functionality, uncheck both "Receive 1:1 messages" and "Join spaces and group conversations"
|
* In Functionality, uncheck both "Receive 1:1 messages" and "Join spaces and group conversations"
|
||||||
* In Connection settings, choose "Cloud Pub/Sub" and enter "no-topic" for the topic name. GAM doesn't yet listen to pub/sub so this option is not used.
|
* In Connection settings, choose "Cloud Pub/Sub" and enter `projects/<ProjectID>/topics/no-topic` for the Topic Name. Replace `<ProjectID>` with your GAM project ID. GAM doesn't yet listen to pub/sub so this option is not used.
|
||||||
* In Visibility, uncheck "Make this Chat app available to specific people and groups in Domain Workspace".
|
* In Visibility, uncheck "Make this Chat app available to specific people and groups in Domain Workspace".
|
||||||
* Click Save.
|
* Click Save.
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
- [Copy content of My Drive to a Shared Drive](#copy-content-of-my-drive-to-a-shared-drive)
|
- [Copy content of My Drive to a Shared Drive](#copy-content-of-my-drive-to-a-shared-drive)
|
||||||
- [Copy content of a Shared Drive to another Shared Drive](#copy-content-of-a-shared-drive-to-another-shared-drive)
|
- [Copy content of a Shared Drive to another Shared Drive](#copy-content-of-a-shared-drive-to-another-shared-drive)
|
||||||
- [Move files and folders](#move-files-and-folders)
|
- [Move files and folders](#move-files-and-folders)
|
||||||
|
- [Move My Drive folder to Shared Drive](#move-my-drive-folder-to-shared-drive)
|
||||||
- [Simple moves by changing parents](#simple-moves-by-changing-parents)
|
- [Simple moves by changing parents](#simple-moves-by-changing-parents)
|
||||||
- [Move with ownership change](#move-with-ownership-change)
|
- [Move with ownership change](#move-with-ownership-change)
|
||||||
- [Complex moves](#complex-moves)
|
- [Complex moves](#complex-moves)
|
||||||
@@ -17,6 +18,7 @@
|
|||||||
* [Drive API - Files](https://developers.google.com/drive/api/v3/reference/files)
|
* [Drive API - Files](https://developers.google.com/drive/api/v3/reference/files)
|
||||||
* [Move content to Shared Drives](https://support.google.com/a/answer/7374057)
|
* [Move content to Shared Drives](https://support.google.com/a/answer/7374057)
|
||||||
* [Shared Drive Limits](https://support.google.com/a/users/answer/7338880)
|
* [Shared Drive Limits](https://support.google.com/a/users/answer/7338880)
|
||||||
|
* [Limited and Expansive Access](https://developers.google.com/workspace/drive/api/guides/limited-expansive-access)
|
||||||
|
|
||||||
## Definitions
|
## Definitions
|
||||||
* [`<DriveFileEntity>`](Drive-File-Selection)
|
* [`<DriveFileEntity>`](Drive-File-Selection)
|
||||||
@@ -114,6 +116,7 @@ gam <UserTypeEntity> copy drivefile <DriveFileEntity>
|
|||||||
(mappermissionsdomain <DomainName> <DomainName>)*
|
(mappermissionsdomain <DomainName> <DomainName>)*
|
||||||
[sendemailifrequired [<Boolean>]]
|
[sendemailifrequired [<Boolean>]]
|
||||||
[verifyorganizer [<Boolean>]]
|
[verifyorganizer [<Boolean>]]
|
||||||
|
[enforceexpansiveaccess [<Boolean>]]
|
||||||
```
|
```
|
||||||
The files/folders specified by `<DriveFileEntity>` are referred to as `source`, `target` refers to where those files are being copied.
|
The files/folders specified by `<DriveFileEntity>` are referred to as `source`, `target` refers to where those files are being copied.
|
||||||
The files/folders specified by `<DriveFileEntity>` are referred to as `top`; when a folder is being copied recursively, the files/folders that it contains are referred as `sub`.
|
The files/folders specified by `<DriveFileEntity>` are referred to as `top`; when a folder is being copied recursively, the files/folders that it contains are referred as `sub`.
|
||||||
@@ -428,6 +431,18 @@ gam user user@domain.com copy drivefile teamdriveid 0AC_1AB teamdriveparentid 0A
|
|||||||
```
|
```
|
||||||
|
|
||||||
## Move files and folders
|
## Move files and folders
|
||||||
|
## Move My Drive folder to Shared Drive
|
||||||
|
There are two methods for moving a folder from a My Drive to a Shared Drive:
|
||||||
|
* Drive UI - You can simple drag and drop the folder from the My Drive to the Shared Drive
|
||||||
|
* Google inspects the content of the folder and may not perform the move if:
|
||||||
|
* Files and folders within the selected folder are owned by users outside of your domain
|
||||||
|
* Files and folders within the selected folder are owned by other users inside of your domain but the owner of the original folder has only read access
|
||||||
|
* All folder and files IDs are preserved
|
||||||
|
* GAM
|
||||||
|
* The Drive API doesn't allow moving a folder from a My Drive to a Shared Drive; GAM has to recreate the folders on the Shared Drive, thus changing their IDs
|
||||||
|
* Files are simply moved from their existing My Drive folder to the recreated Shared Drive folder; their IDs do not change
|
||||||
|
* Files owmed by users outside of your domain can't be moved
|
||||||
|
|
||||||
## Simple moves by changing parents
|
## Simple moves by changing parents
|
||||||
Use this command in the following cases:
|
Use this command in the following cases:
|
||||||
* Move a file or folder from one location to another on My Drive
|
* Move a file or folder from one location to another on My Drive
|
||||||
@@ -486,6 +501,7 @@ gam <UserTypeEntity> move drivefile <DriveFileEntity> [newfilename <DriveFileNam
|
|||||||
[retainsourcefolders [<Boolean>]]
|
[retainsourcefolders [<Boolean>]]
|
||||||
[sendemailifrequired [<Boolean>]]
|
[sendemailifrequired [<Boolean>]]
|
||||||
[verifyorganizer [<Boolean>]]
|
[verifyorganizer [<Boolean>]]
|
||||||
|
[enforceexpansiveaccess [<Boolean>]]
|
||||||
```
|
```
|
||||||
The files/folders specified by `<DriveFileEntity>` are referred to as `source`, `target` refers to where those files are being moved.
|
The files/folders specified by `<DriveFileEntity>` are referred to as `source`, `target` refers to where those files are being moved.
|
||||||
The files/folders specified by `<DriveFileEntity>` are referred to as `top`; when a folder is being moved, the files/folders that it contains are referred as `sub`.
|
The files/folders specified by `<DriveFileEntity>` are referred to as `top`; when a folder is being moved, the files/folders that it contains are referred as `sub`.
|
||||||
@@ -646,7 +662,7 @@ When moving a folder you can use the `retainsourcefolders` option to cause GAM t
|
|||||||
Moving a Drive folder to a Shared Drive is not directly supported by the API; GAM has to make a copy of the folder on the Shared Drive and
|
Moving a Drive folder to a Shared Drive is not directly supported by the API; GAM has to make a copy of the folder on the Shared Drive and
|
||||||
recursively adjust the files/folders within it to point to the new parent folder. Once the original folder is emptied, it is deleted unless `retainsourcefolders` is specified.
|
recursively adjust the files/folders within it to point to the new parent folder. Once the original folder is emptied, it is deleted unless `retainsourcefolders` is specified.
|
||||||
|
|
||||||
### Move content of a Shared Drive to another Shared Drive
|
## Move content of a Shared Drive to another Shared Drive
|
||||||
Suppose you have a source Shared Drive with ID 0AC_1AB with multiple files and folders, and want to move all of its content to the target Shared Drive with ID 0AE_9ZX.
|
Suppose you have a source Shared Drive with ID 0AC_1AB with multiple files and folders, and want to move all of its content to the target Shared Drive with ID 0AE_9ZX.
|
||||||
|
|
||||||
The following command will change the parents of the top level files and folders from 0AC_1AB to 0AE_9ZX; the sub files and folders will move along with their top level folder.
|
The following command will change the parents of the top level files and folders from 0AC_1AB to 0AE_9ZX; the sub files and folders will move along with their top level folder.
|
||||||
@@ -660,3 +676,19 @@ If you want the source Shared Drive with ID 0AC_1AB to be contained in a top lev
|
|||||||
```
|
```
|
||||||
gam user user@domain.com move drivefile teamdriveid 0AC_1AB teamdriveparentid 0AE_9ZX
|
gam user user@domain.com move drivefile teamdriveid 0AC_1AB teamdriveparentid 0AE_9ZX
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Inter-workspace moves
|
||||||
|
Due to a restructuring, you want to move data from Shared Drive A in domaina.com to Shared Drive B in domainb.com.
|
||||||
|
* Shared Drive A in domaina.com has the following unchecked: `Allow people outside of Domain A to access files`
|
||||||
|
* Shared Drive B in domainb.com has the following checked: `Allow people outside of Domain B to access files`
|
||||||
|
* `user@domaina.com` is a manager of both Shared Drives.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ gam user user@domaina move drivefile teamdriveid <SharedDriveAID> teamdriveparentid <SharedDriveBID> mergewithparent
|
||||||
|
User: user@domaina.com, Move 1 Drive File/Folder
|
||||||
|
User: user@domaina.com, Drive Folder: Shared Drive A(<SharedDriveAID>), Move(Merge) contents with Drive Folder: Shared Drive B(<SharedDriveBID>)
|
||||||
|
User: user@domaina.com, Drive File: Filename(<FileID>), Move Failed: Bad Request. User message: "shareOutNotPermitted"
|
||||||
|
...
|
||||||
|
User: user@domaina.com, Drive Folder: Shared Drive A(<SharedDriveAID>), Retained
|
||||||
|
```
|
||||||
|
To get this to work, you must check `Allow people outside of Domain A to access files` on Shared Drive A in domaina.com
|
||||||
|
|||||||
@@ -628,10 +628,15 @@ querytime5years -5y query "modifiedTime<'#querytime5years#'"
|
|||||||
|
|
||||||
## File selection of Shared Drive
|
## File selection of Shared Drive
|
||||||
You can limit the selection for files on a specific Shared drive.
|
You can limit the selection for files on a specific Shared drive.
|
||||||
Any query will be applied to the Shared drive.
|
|
||||||
```
|
```
|
||||||
select <SharedDriveEntity>
|
select <SharedDriveEntity>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
To apply a query to that Shared Drive.
|
||||||
|
```
|
||||||
|
select <SharedDriveEntity> shareddrivequery "xxx"
|
||||||
|
```
|
||||||
|
|
||||||
## File selection by corpora
|
## File selection by corpora
|
||||||
Select files by corpora.
|
Select files by corpora.
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
* [Shared Drive Limits](https://support.google.com/a/users/answer/7338880)
|
* [Shared Drive Limits](https://support.google.com/a/users/answer/7338880)
|
||||||
* [My Drive Shared Drive API differences](https://developers.google.com/drive/api/v3/shared-drives-diffs)
|
* [My Drive Shared Drive API differences](https://developers.google.com/drive/api/v3/shared-drives-diffs)
|
||||||
* [Google Docs API](https://developers.google.com/docs/api/reference/rest)
|
* [Google Docs API](https://developers.google.com/docs/api/reference/rest)
|
||||||
* [Limited Access](https://workspaceupdates.googleblog.com/2025/02/updating-access-experience-in-google-drive.html)
|
* [Limited and Expansive Access](https://developers.google.com/workspace/drive/api/guides/limited-expansive-access)
|
||||||
|
|
||||||
## Definitions
|
## Definitions
|
||||||
* [`<DriveFileEntity>`](Drive-File-Selection)
|
* [`<DriveFileEntity>`](Drive-File-Selection)
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
## API documentation
|
## API documentation
|
||||||
* [Drive API - Files](https://developers.google.com/drive/api/v3/reference/files)
|
* [Drive API - Files](https://developers.google.com/drive/api/v3/reference/files)
|
||||||
|
* [Limited and Expansive Access](https://developers.google.com/workspace/drive/api/guides/limited-expansive-access)
|
||||||
|
|
||||||
## Definitions
|
## Definitions
|
||||||
* [`<DriveFileEntity>`](Drive-File-Selection)
|
* [`<DriveFileEntity>`](Drive-File-Selection)
|
||||||
@@ -60,6 +61,7 @@ Use [Users - Drive - Transfer](Users-Drive-Transfer) for more complex ownership
|
|||||||
```
|
```
|
||||||
gam <UserTypeEntity> transfer ownership <DriveFileEntity> <UserItem>
|
gam <UserTypeEntity> transfer ownership <DriveFileEntity> <UserItem>
|
||||||
[<DriveFileParentAttribute>] [includetrashed] [norecursion [<Boolean>]]
|
[<DriveFileParentAttribute>] [includetrashed] [norecursion [<Boolean>]]
|
||||||
|
[enforceexpansiveaccess [<Boolean>]]
|
||||||
(orderby <DriveOrderByFieldName> [ascending|descending])*
|
(orderby <DriveOrderByFieldName> [ascending|descending])*
|
||||||
[preview] [filepath] [pathdelimiter <Character>] [buildtree] [todrive <ToDriveAttribute>*]
|
[preview] [filepath] [pathdelimiter <Character>] [buildtree] [todrive <ToDriveAttribute>*]
|
||||||
```
|
```
|
||||||
@@ -99,6 +101,7 @@ gam <UserTypeEntity> claim ownership <DriveFileEntity>
|
|||||||
[skipids <DriveFileEntity>] [onlyusers|skipusers <UserTypeEntity>] [subdomains <DomainNameEntity>]
|
[skipids <DriveFileEntity>] [onlyusers|skipusers <UserTypeEntity>] [subdomains <DomainNameEntity>]
|
||||||
[restricted [<Boolean>]] [writerscanshare|writerscantshare [<Boolean>]]
|
[restricted [<Boolean>]] [writerscanshare|writerscantshare [<Boolean>]]
|
||||||
[keepuser | (retainrole reader|commenter|writer|editor|none)] [noretentionmessages]
|
[keepuser | (retainrole reader|commenter|writer|editor|none)] [noretentionmessages]
|
||||||
|
[enforceexpansiveaccess [<Boolean>]]
|
||||||
(orderby <DriveOrderByFieldName> [ascending|descending])*
|
(orderby <DriveOrderByFieldName> [ascending|descending])*
|
||||||
[preview] [filepath] [pathdelimiter <Character>] [buildtree] [todrive <ToDriveAttribute>*]
|
[preview] [filepath] [pathdelimiter <Character>] [buildtree] [todrive <ToDriveAttribute>*]
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -7,12 +7,14 @@
|
|||||||
- [Manage file permissions/sharing](#manage-file-permissionssharing)
|
- [Manage file permissions/sharing](#manage-file-permissionssharing)
|
||||||
- [Display file permissions/sharing](#display-file-permissionssharing)
|
- [Display file permissions/sharing](#display-file-permissionssharing)
|
||||||
- [Delete all ACLs except owner from a file](#delete-all-acls-except-owner-from-a-file)
|
- [Delete all ACLs except owner from a file](#delete-all-acls-except-owner-from-a-file)
|
||||||
|
- [Delete all ACLs except owner from a user's My Drive](#delete-all-acls-except-owner-from-a-users-my-drive)
|
||||||
- [Change shares to User1 to shares to User2](#change-shares-to-user1-to-shares-to-user2)
|
- [Change shares to User1 to shares to User2](#change-shares-to-user1-to-shares-to-user2)
|
||||||
- [Map All ACLs from an old domain to a new domain](#map-all-acls-from-an-old-domain-to-a-new-domain)
|
- [Map All ACLs from an old domain to a new domain](#map-all-acls-from-an-old-domain-to-a-new-domain)
|
||||||
|
|
||||||
## API documentation
|
## API documentation
|
||||||
* [Drive API - Permissions](https://developers.google.com/drive/api/v3/reference/permissions)
|
* [Drive API - Permissions](https://developers.google.com/drive/api/v3/reference/permissions)
|
||||||
* [Shortcuts](https://developers.google.com/drive/api/guides/shortcuts)
|
* [Shortcuts](https://developers.google.com/drive/api/guides/shortcuts)
|
||||||
|
* [Limited and Expansive Access](https://developers.google.com/workspace/drive/api/guides/limited-expansive-access)
|
||||||
|
|
||||||
## Definitions
|
## Definitions
|
||||||
* [`<DriveFileEntity>`](Drive-File-Selection)
|
* [`<DriveFileEntity>`](Drive-File-Selection)
|
||||||
@@ -196,7 +198,7 @@ By default, when an ACL is created, GAM outputs details of the ACL as indented k
|
|||||||
```
|
```
|
||||||
gam <UserTypeEntity> update drivefileacl <DriveFileEntity> <DriveFilePermissionIDorEmail>
|
gam <UserTypeEntity> update drivefileacl <DriveFileEntity> <DriveFilePermissionIDorEmail>
|
||||||
(role <DriveFileACLRole>) [expiration <Time>] [removeexpiration [<Boolean>]]
|
(role <DriveFileACLRole>) [expiration <Time>] [removeexpiration [<Boolean>]]
|
||||||
[updatesheetprotectedranges [<Boolean>]]
|
[updatesheetprotectedranges [<Boolean>]] [enforceexpansiveaccess [<Boolean>]]
|
||||||
[showtitles] [nodetails|(csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]])]
|
[showtitles] [nodetails|(csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]])]
|
||||||
```
|
```
|
||||||
There is no change of parents when a new user is updated to be a file's owner.
|
There is no change of parents when a new user is updated to be a file's owner.
|
||||||
@@ -222,7 +224,7 @@ By default, when an ACL is updated, GAM outputs details of the ACL as indented k
|
|||||||
### Delete
|
### Delete
|
||||||
```
|
```
|
||||||
gam <UserTypeEntity> delete|del drivefileacl <DriveFileEntity> <DriveFilePermissionIDorEmail>
|
gam <UserTypeEntity> delete|del drivefileacl <DriveFileEntity> <DriveFilePermissionIDorEmail>
|
||||||
[updatesheetprotectedranges [<Boolean>]]
|
[updatesheetprotectedranges [<Boolean>]] [enforceexpansiveaccess [<Boolean>]]
|
||||||
[showtitles]
|
[showtitles]
|
||||||
```
|
```
|
||||||
The option `updatesheetprotectedranges` only applies to items in `<DriveFileEntity>` that are Google Sheets.
|
The option `updatesheetprotectedranges` only applies to items in `<DriveFileEntity>` that are Google Sheets.
|
||||||
@@ -262,6 +264,7 @@ When adding permissions from JSON data, permissions with `deleted` true are neve
|
|||||||
```
|
```
|
||||||
gam <UserTypeEntity> delete permissions <DriveFileEntity> <DriveFilePermissionIDEntity>
|
gam <UserTypeEntity> delete permissions <DriveFileEntity> <DriveFilePermissionIDEntity>
|
||||||
<PermissionMatch>* [<PermissionMatchAction>]
|
<PermissionMatch>* [<PermissionMatchAction>]
|
||||||
|
[enforceexpansiveaccess [<Boolean>]]
|
||||||
```
|
```
|
||||||
When deleting permissions from JSON data, permissions with role `owner` true are never processed.
|
When deleting permissions from JSON data, permissions with role `owner` true are never processed.
|
||||||
|
|
||||||
@@ -316,13 +319,23 @@ gam redirect csv ./TeamDriveACLs.csv multiprocess csv ./TeamDrives.csv gam print
|
|||||||
## Delete all ACLs except owner from a file
|
## Delete all ACLs except owner from a file
|
||||||
Get the current ACLs.
|
Get the current ACLs.
|
||||||
```
|
```
|
||||||
gam redirect csv ./Permissions.csv user <UserItem> print drivefileacls <DriveFileID> oneitemperrow
|
gam redirect csv ./Permissions.csv user user@domain.com print drivefileacls <DriveFileID> oneitemperrow
|
||||||
```
|
```
|
||||||
Inspect Permissions.csv, verify that you want to proceed.
|
Inspect Permissions.csv, verify that you want to proceed.
|
||||||
```
|
```
|
||||||
gam config csv_input_row_drop_filter "permission.role:regex:(owner)|(organizer)" csv ./Permissions.csv gam user "~Owner" delete drivefileacl "~id" "id:~~permission.id~~"
|
gam config csv_input_row_drop_filter "permission.role:regex:(owner)|(organizer)" csv ./Permissions.csv gam user "~Owner" delete drivefileacl "~id" "id:~~permission.id~~"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Delete all ACLs except owner from a user's My Drive
|
||||||
|
Get the current ACLs.
|
||||||
|
```
|
||||||
|
gam redirect csv ./Permissions.csv user user@domain.com print filelist fields id,name,mimetype,basicpermissions pm not role owner em pmfilter oneitemperrow
|
||||||
|
```
|
||||||
|
Inspect Permissions.csv, verify that you want to proceed.
|
||||||
|
```
|
||||||
|
gam redirect stdout ./DeletePermissions.txt multiprocess redirect stderr stdout csv Permissions.csv.csv gam user "~Owner" delete drivefileacls "~id" "id:~~permission.id~~"
|
||||||
|
```
|
||||||
|
|
||||||
## Change shares to User1 to shares to User2
|
## Change shares to User1 to shares to User2
|
||||||
```
|
```
|
||||||
# Get files shared to User1
|
# Get files shared to User1
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
* [Drive API - Files](https://developers.google.com/drive/api/v3/reference/files)
|
* [Drive API - Files](https://developers.google.com/drive/api/v3/reference/files)
|
||||||
* [Shortcuts](https://developers.google.com/drive/api/guides/shortcuts)
|
* [Shortcuts](https://developers.google.com/drive/api/guides/shortcuts)
|
||||||
* [Prepare account for transfer](https://support.google.com/a/answer/1247799)
|
* [Prepare account for transfer](https://support.google.com/a/answer/1247799)
|
||||||
|
* [Limited and Expansive Access](https://developers.google.com/workspace/drive/api/guides/limited-expansive-access)
|
||||||
|
|
||||||
## Definitions
|
## Definitions
|
||||||
* [`<DriveFileEntity>`](Drive-File-Selection)
|
* [`<DriveFileEntity>`](Drive-File-Selection)
|
||||||
@@ -47,6 +48,7 @@ gam <UserTypeEntity> transfer drive <UserItem> [select <DriveFileEntity>]
|
|||||||
[noretentionmessages]
|
[noretentionmessages]
|
||||||
[nonowner_retainrole reader|commenter|writer|editor|contentmanager|fileorganizer|current|none]
|
[nonowner_retainrole reader|commenter|writer|editor|contentmanager|fileorganizer|current|none]
|
||||||
[nonowner_targetrole reader|commenter|writer|editor|contentmanager|fileorganizer|current|none|source]
|
[nonowner_targetrole reader|commenter|writer|editor|contentmanager|fileorganizer|current|none|source]
|
||||||
|
[enforceexpansiveaccess [<Boolean>]]
|
||||||
(orderby <DriveFileOrderByFieldName> [ascending|descending])*
|
(orderby <DriveFileOrderByFieldName> [ascending|descending])*
|
||||||
[preview] [todrive <ToDriveAttribute>*]
|
[preview] [todrive <ToDriveAttribute>*]
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
# Users - Gmail - Delegates
|
# Users - Gmail - Delegates
|
||||||
|
- [Notes](#notes)
|
||||||
- [API documentation](#api-documentation)
|
- [API documentation](#api-documentation)
|
||||||
- [Definitions](#definitions)
|
- [Definitions](#definitions)
|
||||||
- [Aliases](#aliases)
|
- [Aliases](#aliases)
|
||||||
@@ -8,6 +9,11 @@
|
|||||||
- [Display Gmail delegates](#display-gmail-delegates)
|
- [Display Gmail delegates](#display-gmail-delegates)
|
||||||
- [Delete all delegates for a user](#delete-all-delegates-for-a-user)
|
- [Delete all delegates for a user](#delete-all-delegates-for-a-user)
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
To use Gmail delegation, the delegator and delagatee must be in org units where
|
||||||
|
mail delegation is enabled. In the admin console, go to Apps/Google Workspace/Gmail/User Settings.
|
||||||
|
|
||||||
## API documentation
|
## API documentation
|
||||||
* [Gmail API - Delegates](https://developers.google.com/gmail/api/v1/reference/users.settings.delegates)
|
* [Gmail API - Delegates](https://developers.google.com/gmail/api/v1/reference/users.settings.delegates)
|
||||||
* [Delegation Notes](https://support.google.com/a/answer/7223765)
|
* [Delegation Notes](https://support.google.com/a/answer/7223765)
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ This table and other suggestions came from:
|
|||||||
x400-trace
|
x400-trace
|
||||||
<SMTPHeaderList> ::= "<SMTPDateHeader|SMTPHeader>(,<SMTPDateHeader|SMTPHeader>)*"
|
<SMTPHeaderList> ::= "<SMTPDateHeader|SMTPHeader>(,<SMTPDateHeader|SMTPHeader>)*"
|
||||||
|
|
||||||
<MessageID> ::= <String>
|
<MessageID> ::= <String> # This is the Google internal message ID, not the RFC822 message ID
|
||||||
<MessageIDList> ::= "<MessageID>(,<MessageID>)*"
|
<MessageIDList> ::= "<MessageID>(,<MessageID>)*"
|
||||||
<MessageIDEntity> ::=
|
<MessageIDEntity> ::=
|
||||||
<MessageIDList> | <FileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
<MessageIDList> | <FileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||||
|
|||||||
@@ -11,6 +11,8 @@
|
|||||||
- [Delete a Shared Drive](#delete-a-shared-drive)
|
- [Delete a Shared Drive](#delete-a-shared-drive)
|
||||||
- [Change Shared Drive visibility](#change-shared-drive-visibility)
|
- [Change Shared Drive visibility](#change-shared-drive-visibility)
|
||||||
- [Display Shared Drives](#display-shared-drives)
|
- [Display Shared Drives](#display-shared-drives)
|
||||||
|
- [Display Shared Drive Counts](#display-shared-drive-counts)
|
||||||
|
- [Display Shared Drive Organizers](#display-shared-drive-organizers)
|
||||||
- [Manage Shared Drive access](#manage-shared-drive-access)
|
- [Manage Shared Drive access](#manage-shared-drive-access)
|
||||||
- [Display Shared Drive access](#display-shared-drive-access)
|
- [Display Shared Drive access](#display-shared-drive-access)
|
||||||
- [Display Shared Drive access for specific Shared Drives](#display-shared-drive-access-for-specific-shared-drives)
|
- [Display Shared Drive access for specific Shared Drives](#display-shared-drive-access-for-specific-shared-drives)
|
||||||
@@ -71,6 +73,9 @@
|
|||||||
```
|
```
|
||||||
<JSONData> ::= (json [charset <Charset>] <String>) | (json file <FileName> [charset <Charset>]) |
|
<JSONData> ::= (json [charset <Charset>] <String>) | (json file <FileName> [charset <Charset>]) |
|
||||||
|
|
||||||
|
<OrganizerType> ::= user|group
|
||||||
|
<OrganizerTypeList> ::= "<OrganizerType>(,<OrganizerType>)*"
|
||||||
|
|
||||||
<OrgUnitID> ::= id:<String>
|
<OrgUnitID> ::= id:<String>
|
||||||
<OrgUnitPath> ::= /|(/<String>)+
|
<OrgUnitPath> ::= /|(/<String>)+
|
||||||
<OrgUnitItem> ::= <OrgUnitID>|<OrgUnitPath>
|
<OrgUnitItem> ::= <OrgUnitID>|<OrgUnitPath>
|
||||||
@@ -199,14 +204,14 @@ sharingfoldersrequiresorganizerpermission true
|
|||||||
|
|
||||||
## Display Shared Drive themes
|
## Display Shared Drive themes
|
||||||
```
|
```
|
||||||
gam <UserTypeEntity> show teamdrivethemes
|
gam <UserTypeEntity> show shareddrivethemes
|
||||||
```
|
```
|
||||||
## Manage Shared Drives
|
## Manage Shared Drives
|
||||||
|
|
||||||
## Create a Shared Drive
|
## Create a Shared Drive
|
||||||
The user that creates a Shared Drive is given the permission role organizer for the Shared Drive,
|
The user that creates a Shared Drive is given the permission role organizer for the Shared Drive,
|
||||||
```
|
```
|
||||||
gam <UserTypeEntity> create teamdrive <Name>
|
gam <UserTypeEntity> create shareddrive <Name>
|
||||||
[(theme|themeid <String>)|
|
[(theme|themeid <String>)|
|
||||||
([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
||||||
(<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
(<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
||||||
@@ -214,7 +219,7 @@ gam <UserTypeEntity> create teamdrive <Name>
|
|||||||
[errorretries <Integer>] [updateinitialdelay <Integer>] [updateretrydelay <Integer>]
|
[errorretries <Integer>] [updateinitialdelay <Integer>] [updateretrydelay <Integer>]
|
||||||
[(csv [todrive <ToDriveAttribute>*] (addcsvdata <FieldName> <String>)*) | returnidonly]
|
[(csv [todrive <ToDriveAttribute>*] (addcsvdata <FieldName> <String>)*) | returnidonly]
|
||||||
```
|
```
|
||||||
* `themeid` - a Shared Drive themeId obtained from `show teamdrivethemes`
|
* `themeid` - a Shared Drive themeId obtained from `show shareddrivethemes`
|
||||||
* `customtheme` - set the backgroundImageFile property described here: https://developers.google.com/drive/v3/reference/teamdrives
|
* `customtheme` - set the backgroundImageFile property described here: https://developers.google.com/drive/v3/reference/teamdrives
|
||||||
* `<Float>` - X coordinate, typically 0.0
|
* `<Float>` - X coordinate, typically 0.0
|
||||||
* `<Float>` - Y coordinate, typically 0.0
|
* `<Float>` - Y coordinate, typically 0.0
|
||||||
@@ -247,9 +252,9 @@ When either of these options is chosen, no infomation about Shared Drive restric
|
|||||||
To retrieve the Shared Drive ID with `returnidonly`:
|
To retrieve the Shared Drive ID with `returnidonly`:
|
||||||
```
|
```
|
||||||
Linux/MacOS
|
Linux/MacOS
|
||||||
teamDriveId=$(gam user user@domain.com create teamdrive ... returnidonly)
|
teamDriveId=$(gam user user@domain.com create shareddrive ... returnidonly)
|
||||||
Windows PowerShell
|
Windows PowerShell
|
||||||
$teamDriveId = & gam user user@domain.com create teamdrive ... returnidonly
|
$teamDriveId = & gam user user@domain.com create shareddrive ... returnidonly
|
||||||
```
|
```
|
||||||
|
|
||||||
## Bulk Create Shared Drives
|
## Bulk Create Shared Drives
|
||||||
@@ -259,7 +264,7 @@ As a newly created Drive can't be updated for 30+ seconds; split the operation i
|
|||||||
|
|
||||||
Make a CSV file SharedDriveNames.csv with at least two columns, User and name.
|
Make a CSV file SharedDriveNames.csv with at least two columns, User and name.
|
||||||
```
|
```
|
||||||
gam redirect csv ./SharedDrivesCreated.csv multiprocess csv SharedDriveNames.csv gam user "~User" create teamdrive "~name" csv
|
gam redirect csv ./SharedDrivesCreated.csv multiprocess csv SharedDriveNames.csv gam user "~User" create shareddrive "~name" csv
|
||||||
```
|
```
|
||||||
This will create a three column CSV file SharedDriveNamesIDs.csv with columns: User,name,id
|
This will create a three column CSV file SharedDriveNamesIDs.csv with columns: User,name,id
|
||||||
* There will be a row for each Shared Drive.
|
* There will be a row for each Shared Drive.
|
||||||
@@ -273,13 +278,13 @@ gam redirect stdout ./SharedDrivesUpdated.txt multiprocess redirect stderr stdou
|
|||||||
|
|
||||||
This command is used to set basic Shared Drive settings.
|
This command is used to set basic Shared Drive settings.
|
||||||
```
|
```
|
||||||
gam <UserTypeEntity> update teamdrive <SharedDriveEntity> [adminaccess|asadmin] [name <Name>]
|
gam <UserTypeEntity> update shareddrive <SharedDriveEntity> [adminaccess|asadmin] [name <Name>]
|
||||||
[(theme|themeid <String>)|
|
[(theme|themeid <String>)|
|
||||||
([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
|
||||||
(<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
(<SharedDriveRestrictionsSubfieldName> <Boolean>)*
|
||||||
[hide|hidden <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
[hide|hidden <Boolean>] [ou|org|orgunit <OrgUnitItem>]
|
||||||
```
|
```
|
||||||
* `themeid` - a Shared Drive themeId obtained from `show teamdrivethemes`
|
* `themeid` - a Shared Drive themeId obtained from `show shareddrivethemes`
|
||||||
* `customtheme` - set the backgroundImageFile property described here: https://developers.google.com/drive/v3/reference/teamdrives
|
* `customtheme` - set the backgroundImageFile property described here: https://developers.google.com/drive/v3/reference/teamdrives
|
||||||
* `color` - set the Shared Drive color
|
* `color` - set the Shared Drive color
|
||||||
* `<SharedDriveRestrictionsSubfieldName> <Boolean>` - Set Shared Drive Restrictions
|
* `<SharedDriveRestrictionsSubfieldName> <Boolean>` - Set Shared Drive Restrictions
|
||||||
@@ -290,7 +295,7 @@ This option is only available when the command is run as an administrator.
|
|||||||
|
|
||||||
## Delete a Shared Drive
|
## Delete a Shared Drive
|
||||||
```
|
```
|
||||||
gam <UserTypeEntity> delete teamdrive <SharedDriveEntity> [allowitemdeletion] [adminaccess|asadmin]
|
gam <UserTypeEntity> delete shareddrive <SharedDriveEntity> [allowitemdeletion] [adminaccess|asadmin]
|
||||||
```
|
```
|
||||||
By default, deleting a Shared Drive that contains any files/folders will fail.
|
By default, deleting a Shared Drive that contains any files/folders will fail.
|
||||||
The `allowitemdeletion` option allows a Super Admin to delete a non-empty Shared Drive.
|
The `allowitemdeletion` option allows a Super Admin to delete a non-empty Shared Drive.
|
||||||
@@ -298,19 +303,19 @@ This is not reversible, proceed with caution.
|
|||||||
|
|
||||||
## Change Shared Drive visibility
|
## Change Shared Drive visibility
|
||||||
```
|
```
|
||||||
gam <UserTypeEntity> hide teamdrive <SharedDriveEntity>
|
gam <UserTypeEntity> hide shareddrive <SharedDriveEntity>
|
||||||
gam <UserTypeEntity> unhide teamdrive <SharedDriveEntity>
|
gam <UserTypeEntity> unhide shareddrive <SharedDriveEntity>
|
||||||
```
|
```
|
||||||
## Display Shared Drives
|
## Display Shared Drives
|
||||||
```
|
```
|
||||||
gam <UserTypeEntity> show teamdriveinfo <SharedDriveEntity>
|
gam <UserTypeEntity> show shareddriveinfo <SharedDriveEntity>
|
||||||
gam <UserTypeEntity> info teamdrive <SharedDriveEntity>
|
gam <UserTypeEntity> info shareddrive <SharedDriveEntity>
|
||||||
[fields <SharedDriveFieldNameList>]
|
[fields <SharedDriveFieldNameList>]
|
||||||
[guiroles [<Boolean>] [formatjson]
|
[guiroles [<Boolean>] [formatjson]
|
||||||
gam <UserTypeEntity> show teamdriveinfo <SharedDriveEntity>
|
gam <UserTypeEntity> show shareddriveinfo <SharedDriveEntity>
|
||||||
[fields <SharedDriveFieldNameList>]
|
[fields <SharedDriveFieldNameList>]
|
||||||
[guiroles [<Boolean>] [formatjson]
|
[guiroles [<Boolean>] [formatjson]
|
||||||
gam <UserTypeEntity> show teamdrives
|
gam <UserTypeEntity> show shareddrives
|
||||||
[matchname <REMatchPattern>] (role|roles <SharedDriveACLRoleList>)*
|
[matchname <REMatchPattern>] (role|roles <SharedDriveACLRoleList>)*
|
||||||
[fields <SharedDriveFieldNameList>]
|
[fields <SharedDriveFieldNameList>]
|
||||||
[guiroles [<Boolean>] [formatjson]
|
[guiroles [<Boolean>] [formatjson]
|
||||||
@@ -322,7 +327,7 @@ By default, Gam displays all Teams Drives accessible by the user.
|
|||||||
By default, Gam displays the information as an indented list of keys and values.
|
By default, Gam displays the information as an indented list of keys and values.
|
||||||
* `formatjson` - Display the fields in JSON format.
|
* `formatjson` - Display the fields in JSON format.
|
||||||
```
|
```
|
||||||
gam <UserTypeEntity> print teamdrives [todrive <ToDriveAttribute>*]
|
gam <UserTypeEntity> print shareddrives [todrive <ToDriveAttribute>*]
|
||||||
[matchname <REMatchPattern>] (role|roles <SharedDriveACLRoleList>)*
|
[matchname <REMatchPattern>] (role|roles <SharedDriveACLRoleList>)*
|
||||||
[fields <SharedDriveFieldNameList>] [formatjson [quotechar <Character>]]
|
[fields <SharedDriveFieldNameList>] [formatjson [quotechar <Character>]]
|
||||||
```
|
```
|
||||||
@@ -356,6 +361,80 @@ When using the `formatjson` option, double quotes are used extensively in the da
|
|||||||
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
|
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
|
||||||
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
|
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
|
||||||
|
|
||||||
|
## Display Shared Drive Counts
|
||||||
|
Display the number of Shared Drives.
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> show|print shareddrives
|
||||||
|
[teamdriveadminquery|query <QueryTeamDrive>]
|
||||||
|
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
|
||||||
|
showitemcountonly
|
||||||
|
```
|
||||||
|
By default, all Shared Drives are counted; use the following options to select a subset of Shared Drives:
|
||||||
|
* `teamdriveadminquery|query <QueryTeamDrive>` - Use a query to select Shared Drives
|
||||||
|
* `matchname <REMatchPattern>` - Retrieve Shared Drives with names that match a pattern.
|
||||||
|
* `orgunit|org|ou <OrgUnitPath>` - Only Shared Drives in the specified Org Unit are selected
|
||||||
|
|
||||||
|
Example
|
||||||
|
```
|
||||||
|
$ gam user user@domain.com print shareddrives showitemcountonly
|
||||||
|
Getting all Shared Drives for user@domain.com
|
||||||
|
Got 4 Shared Drives for user@domain.com ...
|
||||||
|
4
|
||||||
|
```
|
||||||
|
The `Getting` and `Got` messages are written to stderr, the count is writtem to stdout.
|
||||||
|
|
||||||
|
To retrieve the count with `showitemcountonly`:
|
||||||
|
```
|
||||||
|
Linux/MacOS
|
||||||
|
count=$(gam user user@domain.com print shareddrives showitemcountonly)
|
||||||
|
Windows PowerShell
|
||||||
|
count = & gam user user@domain.com print shareddrives showitemcountonly
|
||||||
|
```
|
||||||
|
## Display Shared Drive Organizers
|
||||||
|
The following command can be used instead of the `GetTeamDriveOrganizers.py` script.
|
||||||
|
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> print shareddriveorganizers [todrive <ToDriveAttribute>*]
|
||||||
|
[adminaccess|asadmin]
|
||||||
|
[(shareddriveadminquery|query <QuerySharedDrive>) |
|
||||||
|
(shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>)))]
|
||||||
|
[orgunit|org|ou <OrgUnitPath>]
|
||||||
|
[matchname <REMatchPattern>]
|
||||||
|
[domainlist <DomainList>]
|
||||||
|
[includetypes <OrganizerTypeList>]
|
||||||
|
[oneorganizer [<Boolean>]]
|
||||||
|
[shownorganizerdrives [false|true|only]]
|
||||||
|
[includefileorganizers [<Boolean>]]
|
||||||
|
[delimiter <Character>]
|
||||||
|
```
|
||||||
|
Options `shareddriveadminquery|query` and `shareddrives|teamdrives` are mutually exclusive.
|
||||||
|
|
||||||
|
Options `shareddriveadminquery|query` and `orgunit|org|ou` require `adminaccess|asadmin`.
|
||||||
|
|
||||||
|
By default, organizers for all Shared Drives are displayed; use the following options to select a subset of Shared Drives:
|
||||||
|
* `teamdriveadminquery|query <QueryTeamDrive>` - Use a query to select Shared Drives
|
||||||
|
* `shareddrives|teamdrives <SharedDriveIDList>` - Select the Shared Drive IDs specified in `<SharedDriveIDList>`
|
||||||
|
* `shareddrives|teamdrives select <FileSelector>|<CSVFileSelector>` - Select the Shared Drive IDs specified in `<FileSelector>|<CSVFileSelector>`
|
||||||
|
* `orgunit|org|ou <OrgUnitPath>` - Only Shared Drives in the specified Org Unit are selected
|
||||||
|
* `matchname <REMatchPattern>` - Retrieve Shared Drives with names that match a pattern.
|
||||||
|
|
||||||
|
For multiple organizers:
|
||||||
|
* `delimiter <Character>` - Separate `organizers` entries with `<Character>`; the default value is `csv_output_field_delimiter` from `gam.cfg`.
|
||||||
|
|
||||||
|
The command defaults do not match the script defaults, they are set for the most common use case:
|
||||||
|
* `domainlist` - The workspace primary domain
|
||||||
|
* `includetypes` - user
|
||||||
|
* `oneorganizer` - True
|
||||||
|
* `shownoorganizerdrives` - True
|
||||||
|
* `includefileorganizers` - False
|
||||||
|
|
||||||
|
To select organizers from any domain, use: `domainlist ""`
|
||||||
|
|
||||||
|
For example, to get a single user organizer from your domain for all Shared Drives including no organizer drives:
|
||||||
|
```
|
||||||
|
gam redirect csv ./TeamDriveOrganizers.csv print shareddriveorganizers
|
||||||
|
```
|
||||||
|
|
||||||
## Manage Shared Drive access
|
## Manage Shared Drive access
|
||||||
These commands must be issued by a user with Shared Drive permission role organizer.
|
These commands must be issued by a user with Shared Drive permission role organizer.
|
||||||
### Process single ACLs.
|
### Process single ACLs.
|
||||||
@@ -428,14 +507,14 @@ The `quotechar <Character>` option allows you to choose an alternate quote chara
|
|||||||
|
|
||||||
## Display Shared Drive access for selected Shared Drives
|
## Display Shared Drive access for selected Shared Drives
|
||||||
```
|
```
|
||||||
gam <UserTypeEntity> show teamdriveacls
|
gam <UserTypeEntity> show shareddriveacls
|
||||||
adminaccess [teamdriveadminquery|query <QueryTeamDrive>]
|
adminaccess [teamdriveadminquery|query <QueryTeamDrive>]
|
||||||
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
|
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
|
||||||
[user|group <EmailAddress> [checkgroups]] (role|roles <SharedDriveACLRoleList>)*
|
[user|group <EmailAddress> [checkgroups]] (role|roles <SharedDriveACLRoleList>)*
|
||||||
<PermissionMatch>* [<PermissionMatchAction>] [pmselect]
|
<PermissionMatch>* [<PermissionMatchAction>] [pmselect]
|
||||||
[oneitemperrow] [<DrivePermissionsFieldName>*|(fields <DrivePermissionsFieldNameList>)]
|
[oneitemperrow] [<DrivePermissionsFieldName>*|(fields <DrivePermissionsFieldNameList>)]
|
||||||
[formatjson [quotechar <Character>]]
|
[formatjson [quotechar <Character>]]
|
||||||
gam <UserTypeEntity> print teamdriveacls [todrive <ToDriveAttribute>*]
|
gam <UserTypeEntity> print shareddriveacls [todrive <ToDriveAttribute>*]
|
||||||
adminaccess [teamdriveadminquery|query <QueryTeamDrive>]
|
adminaccess [teamdriveadminquery|query <QueryTeamDrive>]
|
||||||
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
|
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
|
||||||
[user|group <EmailAddress> [checkgroups]] (role|roles <SharedDriveACLRoleList>)*
|
[user|group <EmailAddress> [checkgroups]] (role|roles <SharedDriveACLRoleList>)*
|
||||||
@@ -458,7 +537,7 @@ By default, all ACLS are displayed; use the following options to select a subset
|
|||||||
* `role|roles <SharedDriveACLRoleList>` - Display ACLs for the specified roles only.
|
* `role|roles <SharedDriveACLRoleList>` - Display ACLs for the specified roles only.
|
||||||
* `<PermissionMatch>* [<PermissionMatchAction>]` - Use permission matching to display a subset of the ACLs for each Shared Drive; this only applies when `pmselect` is not specified
|
* `<PermissionMatch>* [<PermissionMatchAction>]` - Use permission matching to display a subset of the ACLs for each Shared Drive; this only applies when `pmselect` is not specified
|
||||||
|
|
||||||
With `print teamdriveacls` or `show teamdrivecls formatjson`, the ACLs selected for display are all output on one row/line as a repeating item with the matching Shared Drive id.
|
With `print shareddriveacls` or `show shareddrivecls formatjson`, the ACLs selected for display are all output on one row/line as a repeating item with the matching Shared Drive id.
|
||||||
When `oneitemperrow` is specified, each ACL is output on a separate row/line with the matching Shared Drive id and name. This simplifies processing the CSV file with subsequent Gam commands.
|
When `oneitemperrow` is specified, each ACL is output on a separate row/line with the matching Shared Drive id and name. This simplifies processing the CSV file with subsequent Gam commands.
|
||||||
|
|
||||||
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
|
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ GAM7 version 6.50.00 or higher is required.
|
|||||||
|
|
||||||
## Disadvantages
|
## Disadvantages
|
||||||
* DASA accounts can only be delegated admins. [If a task requires super admin rights to perform](https://support.google.com/a/answer/2405986#:~:text=Only%20super%20administrators%20can...), DASA accounts won’t be able to do it.
|
* DASA accounts can only be delegated admins. [If a task requires super admin rights to perform](https://support.google.com/a/answer/2405986#:~:text=Only%20super%20administrators%20can...), DASA accounts won’t be able to do it.
|
||||||
Not all Google Admin APIs work with DASA right now. For example, Google Vault API calls will fail with a DASA account.
|
Not all Google Admin APIs work with DASA right now. For example, Google Vault API calls will fail with a DASA account; Classroom API calls do not return data.
|
||||||
* DASA is a delegated admin and can make Workspace / Cloud Identity admin API calls, it does not replace domain-wide delegation (DwD) when using GAM7 commands that interact with Gmail, Drive and Calendar user data.
|
* DASA is a delegated admin and can make Workspace / Cloud Identity admin API calls, it does not replace domain-wide delegation (DwD) when using GAM7 commands that interact with Gmail, Drive and Calendar user data.
|
||||||
* GAM7 support for DASA is still experimental and some things may fail. Please report your findings to the [GAM group](https://groups.google.com/g/google-apps-manager).
|
* GAM7 support for DASA is still experimental and some things may fail. Please report your findings to the [GAM group](https://groups.google.com/g/google-apps-manager).
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
* https://support.google.com/vault/answer/2474474
|
* https://support.google.com/vault/answer/2474474
|
||||||
|
|
||||||
## Definitions
|
## Definitions
|
||||||
|
[Collections of Items](Collections-of-Items)
|
||||||
```
|
```
|
||||||
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
||||||
<EmailItem> ::= <EmailAddress>|<UniqueID>|<String>
|
<EmailItem> ::= <EmailAddress>|<UniqueID>|<String>
|
||||||
@@ -53,6 +54,8 @@
|
|||||||
<RESearchPattern> ::= <RegularExpression>
|
<RESearchPattern> ::= <RegularExpression>
|
||||||
<RESubstitution> ::= <String>>
|
<RESubstitution> ::= <String>>
|
||||||
|
|
||||||
|
<ChatSpace> ::= spaces/<String> | space/<String> | <String>
|
||||||
|
<ChatSpaceList> ::= "<ChatSpace>(,<ChatSpace>)*"
|
||||||
<ExportItem> ::= <UniqueID>|<String>
|
<ExportItem> ::= <UniqueID>|<String>
|
||||||
<ExportStatus> ::= completed|failed|inprogrsss
|
<ExportStatus> ::= completed|failed|inprogrsss
|
||||||
<ExportStatusList> ::= "<ExportStatus>(,<ExportStatus>)*"
|
<ExportStatusList> ::= "<ExportStatus>(,<ExportStatus>)*"
|
||||||
@@ -60,6 +63,9 @@
|
|||||||
<MatterItem> ::= <UniqueID>|<String>
|
<MatterItem> ::= <UniqueID>|<String>
|
||||||
<MatterState> ::= open|closed|deleted
|
<MatterState> ::= open|closed|deleted
|
||||||
<MatterStateList> ::= "<MatterState>(,<MatterState>)*"
|
<MatterStateList> ::= "<MatterState>(,<MatterState>)*"
|
||||||
|
<SharedDriveID> ::= <String>
|
||||||
|
<SharedDriveIDList> ::= "<SharedDriveID>(,<SharedDriveID>)*"
|
||||||
|
<URL> ::= <String>
|
||||||
<URLList> ::= "<URL>(,<URL>)*"
|
<URLList> ::= "<URL>(,<URL>)*"
|
||||||
|
|
||||||
<QueryVaultCorpus> ::= <String>
|
<QueryVaultCorpus> ::= <String>
|
||||||
@@ -199,11 +205,25 @@ This command can be useful for discovering legacy former employee accounts which
|
|||||||
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
||||||
matter <MatterItem> corpus mail|groups
|
matter <MatterItem> corpus mail|groups
|
||||||
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
||||||
|
[(shareddrives|teamdrives (<TeamDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
(rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
(sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))]
|
||||||
[scope <all_data|held_data|unprocessed_data>]
|
[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>]
|
||||||
[wait <Integer>]
|
[wait <Integer>]
|
||||||
```
|
```
|
||||||
|
Specify the search method, this is optional:
|
||||||
|
* `accounts <EmailAddressEntity>` - Search all accounts specified in `<EmailAddressEntity>`
|
||||||
|
* `orgunit|org|ou <OrgUnitPath>` - Search all accounts in the OU `<OrgUnitPath>`
|
||||||
|
* `everyone` - 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>`
|
||||||
|
* `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 specified in `<FileSelector>|<CSVFileSelector>`
|
||||||
|
|
||||||
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.
|
||||||
```
|
```
|
||||||
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
||||||
@@ -216,12 +236,15 @@ Create a Google Vault export request.
|
|||||||
```
|
```
|
||||||
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>] corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
|
||||||
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
||||||
(shareddrives|teamdrives <SharedDriveIDList>) | (rooms <RoomList>) | (sitesurl <URLList>)
|
(shareddrives|teamdrives (<TeamDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
(rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
|
||||||
|
(sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
|
||||||
[scope all_data|held_data|unprocessed_data]
|
[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>]
|
||||||
[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>] [driveversiondate <Date>|<Time>] [includeaccessinfo <Boolean>]
|
[(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
|
||||||
|
[driveversiondate <Date>|<Time>] [includeaccessinfo <Boolean>]
|
||||||
[driveclientsideencryption any|encrypted|unencrypted]
|
[driveclientsideencryption any|encrypted|unencrypted]
|
||||||
[includerooms <Boolean>]
|
[includerooms <Boolean>]
|
||||||
[excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
[excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
||||||
@@ -250,8 +273,11 @@ Specify the search method, this option is required:
|
|||||||
* `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` - Search for all accounts in the organization
|
||||||
* `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>`
|
||||||
* `rooms <RoomList>` - Search in the Room specified in the chat rooms specified in `<RoomList>`
|
* `shareddrives|teamdrives select <FileSelector>|<CSVFileSelector>` - Search for all accounts in the Shared Drives specified in `<FileSelector>|<CSVFileSelector>`
|
||||||
* `sitesurl <URLList>` - Search the published site URLs of new Google Sites
|
* `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 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
|
||||||
@@ -290,8 +316,11 @@ For `corpus calendar`, you can specify the format of the exported data:
|
|||||||
|
|
||||||
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` - Do not include Shared Drives in the search, this is the default.
|
* `includeshareddrives False` - Mapped to `sharedrivesoption included_if_account_is_not_a_member`
|
||||||
* `includeshareddrives True` - Include Shared Drives in the search.
|
* `includeshareddrives True` - Mapped to `sharedrivesoption included`
|
||||||
|
* `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 not_included` - Resources in shared drives are not included in the search
|
||||||
* `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.
|
||||||
@@ -574,7 +603,7 @@ gam create vaulthold|hold matter <MatterItem> [name <String>] corpus calendar|dr
|
|||||||
[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|includeteamdrives <Boolean>]
|
[includeshareddrives <Boolean>]
|
||||||
[showdetails|returnidonly]
|
[showdetails|returnidonly]
|
||||||
```
|
```
|
||||||
Specify the name of the hold:
|
Specify the name of the hold:
|
||||||
@@ -596,8 +625,8 @@ Specify the search method, this option is required:
|
|||||||
The `query <QueryVaultCorpus>` option can still be used but it is much simpler to use the following options.
|
The `query <QueryVaultCorpus>` option can still be used but it is much simpler to use the following options.
|
||||||
|
|
||||||
For `corpus drive`, you can specify advanced search options:
|
For `corpus drive`, you can specify advanced search options:
|
||||||
* `includeshareddrives False` - Do not include Shared Drives in the search, this is the default.
|
* `includeshareddrives False` - Files in shared drives are not included in the hold, this is the default
|
||||||
* `includeshareddrives True` - Include Shared Drives in the search.
|
* `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`, 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)
|
||||||
@@ -627,12 +656,12 @@ gam update vaulthold|hold <HoldItem> matter <MatterItem>
|
|||||||
[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|includeteamdrives <Boolean>]
|
[includeshareddrives <Boolean>]
|
||||||
[showdetails]
|
[showdetails]
|
||||||
```
|
```
|
||||||
For a hold with `corpus drive`, you can specify advanced search options:
|
For a hold with `corpus drive`, you can specify advanced search options:
|
||||||
* `includeshareddrives False` - Do not include Shared Drives in the search, this is the default.
|
* `includeshareddrives False` - Files in shared drives are not included in the hold, this is the default
|
||||||
* `includeshareddrives True` - Include Shared Drives in the search.
|
* `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`, 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)
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
k
|
|
||||||
# Version and Help
|
# Version and Help
|
||||||
|
|
||||||
Print the current version of Gam with details
|
Print the current version of Gam with details
|
||||||
```
|
```
|
||||||
gam version
|
gam version
|
||||||
GAM 7.06.02 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.09.00 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.3 64-bit final
|
Python 3.13.4 64-bit final
|
||||||
MacOS Sequoia 15.4 x86_64
|
MacOS Sequoia 15.5 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
|
||||||
@@ -16,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.06.02 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.09.00 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.3 64-bit final
|
Python 3.13.4 64-bit final
|
||||||
MacOS Sequoia 15.4 x86_64
|
MacOS Sequoia 15.5 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
|
||||||
@@ -28,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.06.02 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.09.00 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.3 64-bit final
|
Python 3.13.4 64-bit final
|
||||||
MacOS Sequoia 15.4 x86_64
|
MacOS Sequoia 15.5 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
|
||||||
@@ -65,7 +64,7 @@ MacOS High Sierra 10.13.6 x86_64
|
|||||||
Path: /Users/Admin/bin/gam7
|
Path: /Users/Admin/bin/gam7
|
||||||
Version Check:
|
Version Check:
|
||||||
Current: 5.35.08
|
Current: 5.35.08
|
||||||
Latest: 7.06.02
|
Latest: 7.09.00
|
||||||
echo $?
|
echo $?
|
||||||
1
|
1
|
||||||
```
|
```
|
||||||
@@ -73,7 +72,7 @@ echo $?
|
|||||||
Print the current version number without details
|
Print the current version number without details
|
||||||
```
|
```
|
||||||
gam version simple
|
gam version simple
|
||||||
7.06.02
|
7.09.00
|
||||||
```
|
```
|
||||||
In Linux/MacOS you can do:
|
In Linux/MacOS you can do:
|
||||||
```
|
```
|
||||||
@@ -83,10 +82,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.06.02 - https://github.com/GAM-team/GAM
|
GAM 7.09.00 - https://github.com/GAM-team/GAM
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.3 64-bit final
|
Python 3.13.4 64-bit final
|
||||||
MacOS Sequoia 15.4 x86_64
|
MacOS Sequoia 15.5 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
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ Client Access
|
|||||||
* [Domains](Domains)
|
* [Domains](Domains)
|
||||||
* [Domains - Verification](Domains-Verification)
|
* [Domains - Verification](Domains-Verification)
|
||||||
* [Domain People - Contacts & Profiles](Domain-People-Contacts-Profiles)
|
* [Domain People - Contacts & Profiles](Domain-People-Contacts-Profiles)
|
||||||
* [Domain Shared Contacts - Global Address List](Domain-SharedContacts-GAL)
|
* [Domain Shared Contacts](Domain-SharedContacts)
|
||||||
* [Email Audit Monitor](Email-Audit-Monitor)
|
* [Email Audit Monitor](Email-Audit-Monitor)
|
||||||
* [Find File Owner](Find-File-Owner)
|
* [Find File Owner](Find-File-Owner)
|
||||||
* [Google Data Transfers](Google-Data-Transfers)
|
* [Google Data Transfers](Google-Data-Transfers)
|
||||||
|
|||||||
@@ -287,7 +287,7 @@ csv_output_users_audit
|
|||||||
Default: False
|
Default: False
|
||||||
customer_id
|
customer_id
|
||||||
Google Customer ID
|
Google Customer ID
|
||||||
Default: Blank
|
Default: my_customer
|
||||||
Environment variable: CUSTOMER_ID
|
Environment variable: CUSTOMER_ID
|
||||||
debug_level
|
debug_level
|
||||||
If debug_level > 0, turn on API debugging output.
|
If debug_level > 0, turn on API debugging output.
|
||||||
@@ -321,13 +321,23 @@ drive_v3_native_names
|
|||||||
email_batch_size
|
email_batch_size
|
||||||
When archiving, printing, showing, trashing, untrashing, marking as spam Gmail messages.
|
When archiving, printing, showing, trashing, untrashing, marking as spam Gmail messages.
|
||||||
how many should be processed in each batch
|
how many should be processed in each batch
|
||||||
Default: 100
|
Default: 50
|
||||||
Range: 1 - 100
|
Range: 1 - 100
|
||||||
enable_dasa
|
enable_dasa
|
||||||
Enable/disable Delegated Admin Service Account API Access
|
Enable/disable Delegated Admin Service Account API Access
|
||||||
admin_email, customer_id and domain must be set when enable_dasa is True,
|
admin_email, customer_id and domain must be set when enable_dasa is True,
|
||||||
customer_id may not be set to my_customer
|
customer_id may not be set to my_customer
|
||||||
Signal file: OldGamPath/enabledasa.txt
|
Signal file: OldGamPath/enabledasa.txt
|
||||||
|
enforce_expansive_access
|
||||||
|
The default value for option `enforceexpansiveaccess` in all commands that delete or update drive file ACLs/permissions.
|
||||||
|
gam <UserTypeEntity> delete permissions
|
||||||
|
gam <UserTypeEntity> delete drivefileacl
|
||||||
|
gam <UserTypeEntity> update drivefileacl
|
||||||
|
gam <UserTypeEntity> copy drivefile
|
||||||
|
gam <UserTypeEntity> move drivefile
|
||||||
|
gam <UserTypeEntity> transfer ownership
|
||||||
|
gam <UserTypeEntity> claim ownership
|
||||||
|
Default: False
|
||||||
event_max_results
|
event_max_results
|
||||||
When retrieving lists of Calendar events from API,
|
When retrieving lists of Calendar events from API,
|
||||||
how many should be retrieved in each API call
|
how many should be retrieved in each API call
|
||||||
@@ -384,7 +394,7 @@ message_batch_size
|
|||||||
message_max_results
|
message_max_results
|
||||||
When retrieving lists of Gmail messages from API,
|
When retrieving lists of Gmail messages from API,
|
||||||
how many should be retrieved in each API call
|
how many should be retrieved in each API call
|
||||||
Default: 1000
|
Default: 500
|
||||||
Range: 1 - 10000
|
Range: 1 - 10000
|
||||||
mobile_max_results
|
mobile_max_results
|
||||||
When retrieving lists of Mobile devices from API,
|
When retrieving lists of Mobile devices from API,
|
||||||
@@ -416,8 +426,10 @@ no_short_urls
|
|||||||
the shortened URL redirects to the long URL.
|
the shortened URL redirects to the long URL.
|
||||||
When True, the long scopes URLs in `gam oauth create` and
|
When True, the long scopes URLs in `gam oauth create` and
|
||||||
`gam <UserTypeEntity> check|update serviceaccount` will be used as is.
|
`gam <UserTypeEntity> check|update serviceaccount` will be used as is.
|
||||||
|
Default: True
|
||||||
no_verify_ssl
|
no_verify_ssl
|
||||||
Disable SSL certificate validation
|
Disable SSL certificate validation
|
||||||
|
Default: False
|
||||||
num_tbatch_threads
|
num_tbatch_threads
|
||||||
Number of threads for gam tbatch
|
Number of threads for gam tbatch
|
||||||
Default: 2
|
Default: 2
|
||||||
|
|||||||
Reference in New Issue
Block a user