mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-28 18:01:36 +00:00
Compare commits
62 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e4af5e6126 | ||
|
|
6e296e0f2d | ||
|
|
4b2e14c2d5 | ||
|
|
eb59663f6a | ||
|
|
d12289c4f4 | ||
|
|
738ff3e7fb | ||
|
|
789e543b3f | ||
|
|
4e933f4485 | ||
|
|
a99f23ce40 | ||
|
|
5462c0359e | ||
|
|
0c143414a8 | ||
|
|
bebcfb7c44 | ||
|
|
18ce64886d | ||
|
|
db87aa54d8 | ||
|
|
1867af9366 | ||
|
|
e1f2bedd7c | ||
|
|
8735021c9b | ||
|
|
2860ae02a2 | ||
|
|
31b4b70f0f | ||
|
|
1c8bf44867 | ||
|
|
472905d6c0 | ||
|
|
bed9b5e1b6 | ||
|
|
c8521c6307 | ||
|
|
870a3149d8 | ||
|
|
8622ae6c0f | ||
|
|
c92468276a | ||
|
|
d80b93b86e | ||
|
|
2d26fa6004 | ||
|
|
a09a98e3ae | ||
|
|
7d7817664b | ||
|
|
9aea95e8db | ||
|
|
8b6781a49b | ||
|
|
ff59855a2c | ||
|
|
37d00ff0d8 | ||
|
|
669dffcd39 | ||
|
|
e3ad108c91 | ||
|
|
d7d98d41cd | ||
|
|
213b0f2ba2 | ||
|
|
d745aa65f5 | ||
|
|
c122a55ad7 | ||
|
|
c6b23d4ce6 | ||
|
|
9590916750 | ||
|
|
331c199637 | ||
|
|
ce131bab03 | ||
|
|
fbadb72d34 | ||
|
|
9c3f9ab657 | ||
|
|
a61bbdb858 | ||
|
|
afa825c020 | ||
|
|
85cfd13e77 | ||
|
|
27d67e72d1 | ||
|
|
d7c429f00f | ||
|
|
9c00cfa3ea | ||
|
|
426781eda3 | ||
|
|
42ee41d218 | ||
|
|
d8f0666e70 | ||
|
|
3d15d2a820 | ||
|
|
0c593b5809 | ||
|
|
d76ef999c5 | ||
|
|
ddaad4d655 | ||
|
|
36a1bdc56b | ||
|
|
089a5994aa | ||
|
|
3e9b46b650 |
24
.github/workflows/build.yml
vendored
24
.github/workflows/build.yml
vendored
@@ -145,7 +145,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
@@ -165,7 +165,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
cache.tar.xz
|
cache.tar.xz
|
||||||
key: gam-${{ matrix.jid }}-20260523
|
key: gam-${{ matrix.jid }}-20260611
|
||||||
|
|
||||||
- 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'
|
||||||
@@ -529,18 +529,6 @@ jobs:
|
|||||||
echo "gam=${gam}" >> $GITHUB_ENV
|
echo "gam=${gam}" >> $GITHUB_ENV
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#- name: Upgrade pip, wheel, etc
|
|
||||||
# run: |
|
|
||||||
# curl $curl_retry -O https://bootstrap.pypa.io/get-pip.py
|
|
||||||
# "$PYTHON" get-pip.py
|
|
||||||
# "$PYTHON" -m pip install --upgrade pip
|
|
||||||
# "$PYTHON" -m pip install --upgrade wheel
|
|
||||||
# "$PYTHON" -m pip install --upgrade setuptools
|
|
||||||
# "$PYTHON" -m pip install --upgrade importlib-metadata
|
|
||||||
# "$PYTHON" -m pip install --upgrade setuptools-scm
|
|
||||||
# "$PYTHON" -m pip install --upgrade packaging
|
|
||||||
# "$PYTHON" -m pip list
|
|
||||||
|
|
||||||
- name: Install pip requirements
|
- name: Install pip requirements
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ github.token }}
|
GH_TOKEN: ${{ github.token }}
|
||||||
@@ -550,8 +538,12 @@ jobs:
|
|||||||
# https://github.com/pyca/cryptography/issues/14293
|
# https://github.com/pyca/cryptography/issues/14293
|
||||||
gh release download --repo "jay0lee/cryptography-wheels" --pattern "*win_arm64.whl" --clobber
|
gh release download --repo "jay0lee/cryptography-wheels" --pattern "*win_arm64.whl" --clobber
|
||||||
"$PYTHON" -m pip install cryptography-*.whl
|
"$PYTHON" -m pip install cryptography-*.whl
|
||||||
|
elif [[ "$RUNNER_OS" == "macOS" && "$RUNNER_ARCH" == "x86_64" ]]; then
|
||||||
|
# custom cryptography wheel for macos x86_64 since it's no longer standard
|
||||||
|
gh release download --repo "jay0lee/cryptography-wheels" --pattern "*macosx_15_0_x86_64.whl" --clobber
|
||||||
|
"$PYTHON" -m pip install cryptography-*.whl
|
||||||
fi
|
fi
|
||||||
"$PYTHON" -m pip install -vvv --upgrade ..[yubikey]
|
"$PYTHON" -m pip install ..[yubikey]
|
||||||
|
|
||||||
- name: Install PyInstaller
|
- name: Install PyInstaller
|
||||||
if: matrix.goal == 'build'
|
if: matrix.goal == 'build'
|
||||||
@@ -1121,7 +1113,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|||||||
2
.github/workflows/codeql-analysis.yml
vendored
2
.github/workflows/codeql-analysis.yml
vendored
@@ -39,7 +39,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v5.0.0
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v3
|
uses: github/codeql-action/init@v3
|
||||||
with:
|
with:
|
||||||
|
|||||||
2
.github/workflows/get-cacerts.yml
vendored
2
.github/workflows/get-cacerts.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
|||||||
check-certs:
|
check-certs:
|
||||||
runs-on: ubuntu-slim
|
runs-on: ubuntu-slim
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal token
|
persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal token
|
||||||
fetch-depth: 0 # otherwise, you will failed to push refs to dest repo
|
fetch-depth: 0 # otherwise, you will failed to push refs to dest repo
|
||||||
|
|||||||
2
.github/workflows/pushwiki.yml
vendored
2
.github/workflows/pushwiki.yml
vendored
@@ -18,7 +18,7 @@ jobs:
|
|||||||
git clone https://github.com/GAM-team/GAM
|
git clone https://github.com/GAM-team/GAM
|
||||||
|
|
||||||
- name: Checkout Wiki source
|
- name: Checkout Wiki source
|
||||||
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v5.0.0
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||||
with:
|
with:
|
||||||
path: GAM.wiki
|
path: GAM.wiki
|
||||||
repository: GAM-team/GAM.wiki
|
repository: GAM-team/GAM.wiki
|
||||||
|
|||||||
2
.github/workflows/pypi.yml
vendored
2
.github/workflows/pypi.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
|||||||
id-token: write
|
id-token: write
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v5.0.0
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|||||||
130
.github/workflows/upgrade_deps.yml
vendored
130
.github/workflows/upgrade_deps.yml
vendored
@@ -15,20 +15,25 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Repository
|
- name: Checkout Repository
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||||
|
|
||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
|
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
|
||||||
with:
|
with:
|
||||||
python-version: '3.14'
|
python-version: '3.14'
|
||||||
|
|
||||||
|
- name: Install uv
|
||||||
|
uses: astral-sh/setup-uv@v3
|
||||||
|
with:
|
||||||
|
version: "latest"
|
||||||
|
|
||||||
- name: Calculate and pin two-week old stable versions
|
- name: Calculate and pin two-week old stable versions
|
||||||
shell: python
|
shell: python
|
||||||
run: |
|
run: |
|
||||||
import json
|
import subprocess
|
||||||
import urllib.request
|
|
||||||
import re
|
import re
|
||||||
import tomllib
|
import tomllib
|
||||||
|
import os
|
||||||
from datetime import datetime, timedelta, timezone
|
from datetime import datetime, timedelta, timezone
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
@@ -42,14 +47,10 @@ jobs:
|
|||||||
|
|
||||||
target_deps = set()
|
target_deps = set()
|
||||||
|
|
||||||
# Standard [project.dependencies]
|
# Gather all dependencies
|
||||||
target_deps.update(parsed_toml.get("project", {}).get("dependencies", []))
|
target_deps.update(parsed_toml.get("project", {}).get("dependencies", []))
|
||||||
|
|
||||||
# Optional [project.optional-dependencies]
|
|
||||||
for deps in parsed_toml.get("project", {}).get("optional-dependencies", {}).values():
|
for deps in parsed_toml.get("project", {}).get("optional-dependencies", {}).values():
|
||||||
target_deps.update(deps)
|
target_deps.update(deps)
|
||||||
|
|
||||||
# Dev [dependency-groups] (uv / PEP 735 standard)
|
|
||||||
for deps in parsed_toml.get("dependency-groups", {}).values():
|
for deps in parsed_toml.get("dependency-groups", {}).values():
|
||||||
if isinstance(deps, list):
|
if isinstance(deps, list):
|
||||||
for d in deps:
|
for d in deps:
|
||||||
@@ -60,73 +61,80 @@ jobs:
|
|||||||
print("No dependencies found to process.")
|
print("No dependencies found to process.")
|
||||||
exit(0)
|
exit(0)
|
||||||
|
|
||||||
updates = {}
|
# 1. Create a "clean" requirements list (base names + markers only, no versions)
|
||||||
two_weeks_ago = datetime.now(timezone.utc) - timedelta(days=14)
|
clean_reqs = []
|
||||||
print(f"Evaluating dependencies against cutoff date: {two_weeks_ago.isoformat()}")
|
|
||||||
|
|
||||||
for dep in target_deps:
|
for dep in target_deps:
|
||||||
# Isolate base package name (e.g., "yubikey-manager>=5.6.1" -> "yubikey-manager")
|
pkg_base = re.split(r'[<>=!~;\s]', dep)[0].strip()
|
||||||
pkg_name = re.split(r'[<>=!~;\s]', dep)[0].strip()
|
if ";" in dep:
|
||||||
|
marker = dep.split(";", 1)[1].strip()
|
||||||
|
clean_reqs.append(f"{pkg_base} ; {marker}")
|
||||||
|
else:
|
||||||
|
clean_reqs.append(pkg_base)
|
||||||
|
|
||||||
|
temp_in = Path("temp_reqs.in")
|
||||||
|
temp_in.write_text("\n".join(clean_reqs), encoding="utf-8")
|
||||||
|
|
||||||
|
# 2. Calculate Cutoff Date
|
||||||
|
two_weeks_ago = datetime.now(timezone.utc) - timedelta(days=14)
|
||||||
|
cutoff_str = two_weeks_ago.strftime("%Y-%m-%dT%H:%M:%SZ")
|
||||||
|
print(f"Resolving dependencies against cutoff date: {cutoff_str}")
|
||||||
|
|
||||||
|
# 3. Use uv to resolve the CLEAN list, allowing free upgrades/downgrades
|
||||||
|
try:
|
||||||
|
subprocess.run([
|
||||||
|
"uv", "pip", "compile",
|
||||||
|
str(temp_in),
|
||||||
|
"--exclude-newer", cutoff_str,
|
||||||
|
"--quiet",
|
||||||
|
"-o", "resolved.txt"
|
||||||
|
], check=True)
|
||||||
|
except subprocess.CalledProcessError:
|
||||||
|
print("\nDependency resolution failed! Upstream constraints are impossible to satisfy.")
|
||||||
|
if temp_in.exists(): temp_in.unlink()
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
# 4. Parse the resolved lockfile
|
||||||
|
resolved_versions = {}
|
||||||
|
with open("resolved.txt", "r", encoding="utf-8") as f:
|
||||||
|
for line in f:
|
||||||
|
line = line.split("#")[0].strip()
|
||||||
|
if "==" in line:
|
||||||
|
pkg, ver = line.split("==", 1)
|
||||||
|
resolved_versions[pkg.strip().lower()] = ver.strip()
|
||||||
|
|
||||||
|
# Cleanup temp files so they don't get committed to the PR
|
||||||
|
if temp_in.exists():
|
||||||
|
temp_in.unlink()
|
||||||
|
if Path("resolved.txt").exists():
|
||||||
|
Path("resolved.txt").unlink()
|
||||||
|
|
||||||
|
# 5. Map the newly resolved versions back to your pyproject.toml updates
|
||||||
|
updates = {}
|
||||||
|
for dep in target_deps:
|
||||||
|
pkg_name_raw = re.split(r'[<>=!~;\s]', dep)[0].strip()
|
||||||
|
pkg_name_lower = pkg_name_raw.lower()
|
||||||
|
|
||||||
# Preserve environment markers if they exist
|
|
||||||
marker = ""
|
marker = ""
|
||||||
if ";" in dep:
|
if ";" in dep:
|
||||||
marker = " ; " + dep.split(";", 1)[1].strip()
|
marker = " ; " + dep.split(";", 1)[1].strip()
|
||||||
|
|
||||||
print(f"Fetching PyPI data for: {pkg_name}")
|
if pkg_name_lower in resolved_versions:
|
||||||
try:
|
target_version = resolved_versions[pkg_name_lower]
|
||||||
url = f"https://pypi.org/pypi/{pkg_name}/json"
|
pinned_dep = f"{pkg_name_raw}=={target_version}{marker}"
|
||||||
req = urllib.request.Request(url, headers={'User-Agent': 'GAM-CI-Script'})
|
|
||||||
with urllib.request.urlopen(req) as response:
|
|
||||||
data = json.loads(response.read().decode())
|
|
||||||
|
|
||||||
valid_versions = []
|
if pinned_dep != dep:
|
||||||
for ver, files in data.get("releases", {}).items():
|
updates[dep] = pinned_dep
|
||||||
if not files:
|
print(f" -> Changing: '{dep}' => '{pinned_dep}'")
|
||||||
continue
|
|
||||||
|
|
||||||
upload_time_str = files[0].get("upload_time_iso_8601")
|
|
||||||
if not upload_time_str:
|
|
||||||
continue
|
|
||||||
|
|
||||||
if upload_time_str.endswith('Z'):
|
|
||||||
upload_time_str = upload_time_str[:-1] + '+00:00'
|
|
||||||
|
|
||||||
upload_time = datetime.fromisoformat(upload_time_str)
|
|
||||||
|
|
||||||
# Filter: Must be older than 2 weeks and not a pre-release
|
|
||||||
if upload_time <= two_weeks_ago and not any(x in ver.lower() for x in ['a', 'b', 'rc', 'dev']):
|
|
||||||
valid_versions.append((upload_time, ver))
|
|
||||||
|
|
||||||
if valid_versions:
|
|
||||||
# Sort by upload time descending to get the newest valid option
|
|
||||||
valid_versions.sort(key=lambda x: x[0], reverse=True)
|
|
||||||
target_version = valid_versions[0][1]
|
|
||||||
|
|
||||||
pinned_dep = f"{pkg_name}=={target_version}{marker}"
|
|
||||||
if pinned_dep != dep:
|
|
||||||
updates[dep] = pinned_dep
|
|
||||||
print(f" -> Pinning: '{dep}' => '{pinned_dep}'")
|
|
||||||
else:
|
|
||||||
print(f" -> Already pinned correctly to {target_version}")
|
|
||||||
else:
|
else:
|
||||||
print(f" -> No valid historical versions found.")
|
print(f" -> Up to date: {dep}")
|
||||||
|
|
||||||
except urllib.error.HTTPError as e:
|
|
||||||
print(f" -> Package not found on PyPI or HTTP error: {e}")
|
|
||||||
except Exception as e:
|
|
||||||
print(f" -> Error processing {pkg_name}: {e}")
|
|
||||||
|
|
||||||
# 3. Replace the strings safely in the original file content
|
# 6. Replace the strings safely in the original file content
|
||||||
new_content = content
|
new_content = content
|
||||||
for old_dep, new_dep in updates.items():
|
for old_dep, new_dep in updates.items():
|
||||||
# Regex targets the exact string inside either single or double quotes
|
|
||||||
# Using a lambda replacement ensures we don't trip over escape sequences in the new string
|
|
||||||
escaped_old = re.escape(old_dep)
|
escaped_old = re.escape(old_dep)
|
||||||
pattern = r'([\'"])' + escaped_old + r'\1'
|
pattern = r'([\'"])' + escaped_old + r'\1'
|
||||||
new_content = re.sub(pattern, lambda m: m.group(1) + new_dep + m.group(1), new_content)
|
new_content = re.sub(pattern, lambda m: m.group(1) + new_dep + m.group(1), new_content)
|
||||||
|
|
||||||
# Write changes back to pyproject.toml
|
|
||||||
if content != new_content:
|
if content != new_content:
|
||||||
toml_path.write_text(new_content, encoding="utf-8")
|
toml_path.write_text(new_content, encoding="utf-8")
|
||||||
print("\npyproject.toml updated successfully.")
|
print("\npyproject.toml updated successfully.")
|
||||||
@@ -139,6 +147,6 @@ jobs:
|
|||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
commit-message: "chore: upgrade PyPi deps"
|
commit-message: "chore: upgrade PyPi deps"
|
||||||
title: "Upgrade PyPi deps"
|
title: "Upgrade PyPi deps"
|
||||||
body: "Automated scan checking PyPI for package versions at least 2 weeks old."
|
body: "Automated scan checking PyPI for mutually compatible package versions at least 2 weeks old. Handles both upgrades and conflict-driven downgrades."
|
||||||
branch: sys-deps-upgrade
|
branch: sys-deps-upgrade
|
||||||
force: false # Standard push, plays nice with rulesets
|
force: false # Standard push, plays nice with rulesets
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
# overrides uv.lock to force newer dependencies
|
|
||||||
# when old deps are vulnerable. These should be set
|
|
||||||
# to expire after 2 weeks when the fixed version will
|
|
||||||
# be automatically picked up anyway.
|
|
||||||
# Format: package_requirement | MM/DD/YYYY
|
|
||||||
urllib3>=2.7.0 | 05/22/2026
|
|
||||||
@@ -10,15 +10,15 @@ authors = [
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"arrow==1.4.0",
|
"arrow==1.4.0",
|
||||||
"chardet==7.4.3",
|
"chardet==7.4.3",
|
||||||
"cryptography==48.0.0",
|
"cryptography==48.0.1",
|
||||||
"distro==1.9.0 ; sys_platform=='linux'",
|
"distro==1.9.0 ; sys_platform=='linux'",
|
||||||
"filelock==3.29.0",
|
"filelock==3.29.4",
|
||||||
"google-api-python-client==2.196.0",
|
"google-api-python-client==2.197.0",
|
||||||
"google-auth-httplib2==0.4.0",
|
"google-auth-httplib2==0.4.0",
|
||||||
"google-auth-oauthlib==1.4.0",
|
"google-auth-oauthlib==1.4.0",
|
||||||
"google-auth==2.53.0",
|
"google-auth==2.54.0",
|
||||||
"httplib2==0.31.2",
|
"httplib2==0.31.2",
|
||||||
"lxml==6.1.0",
|
"lxml==6.1.1",
|
||||||
"passlib==1.7.4",
|
"passlib==1.7.4",
|
||||||
"pathvalidate==3.3.1",
|
"pathvalidate==3.3.1",
|
||||||
"pysocks==1.7.1",
|
"pysocks==1.7.1",
|
||||||
|
|||||||
@@ -1618,7 +1618,8 @@ gam print alias|aliases [todrive <ToDriveAttribute>*]
|
|||||||
[limittoou <OrgUnitItem>])
|
[limittoou <OrgUnitItem>])
|
||||||
[user|users <EmailAddressList>] [group|groups <EmailAddressList>]
|
[user|users <EmailAddressList>] [group|groups <EmailAddressList>]
|
||||||
[select <UserTypeEntity>]
|
[select <UserTypeEntity>]
|
||||||
[issuspended <Boolean>] [isarchived <Boolean>] [aliasmatchpattern <REMatchPattern>]
|
[issuspended [<Boolean>]] [isarchived [<Boolean>]]
|
||||||
|
[aliasmatchpattern <REMatchPattern>]
|
||||||
[shownoneditable] [nogroups] [nousers]
|
[shownoneditable] [nogroups] [nousers]
|
||||||
[onerowpertarget] [delimiter <Character>]
|
[onerowpertarget] [delimiter <Character>]
|
||||||
[suppressnoaliasrows]
|
[suppressnoaliasrows]
|
||||||
@@ -1665,11 +1666,19 @@ gam <UserTypeEntity> show analyticdatastreams
|
|||||||
<CalendarEntity> ::=
|
<CalendarEntity> ::=
|
||||||
<CalendarList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
<CalendarList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||||
|
|
||||||
<CalendarACLRole> ::= editor|freebusy|freebusyreader|owner|reader|writer|none
|
<CalendarACLRole> ::=
|
||||||
<CalendarACLScope> ::= <EmailAddress>|user:<EmailAdress>|group:<EmailAddress>|domain:<DomainName>|domain|default
|
editor|freebusy|freebusyreader|owner|reader|writer|writerwithoutprivateaccess|none
|
||||||
<CalendarACLScopeList> ::= "<CalendarACLScope>(,<CalendarACLScope>)*"
|
<CalendarACLScope> ::=
|
||||||
<CalendarACLScopeEntity> ::=
|
<EmailAddress>|user:<EmailAdress>|group:<EmailAddress>|
|
||||||
<CalendarACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
domain:<DomainName>|domain|default
|
||||||
|
<CalendarACLScopeList> ::=
|
||||||
|
"<CalendarACLScope>(,<CalendarACLScope>)*"
|
||||||
|
<CalendarACLScopeEntity>::=
|
||||||
|
<CalendarACLScopeList> | <FileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||||
|
|
||||||
|
Transfer ownership of a selection of a users secondary calendars to another user
|
||||||
|
|
||||||
|
gam calendars <CalendarEntity> transfer <UserItem>
|
||||||
|
|
||||||
gam calendars <CalendarEntity> create|add acls|calendaracls <CalendarACLRole> <CalendarACLScopeEntity> [sendnotifications <Boolean>]
|
gam calendars <CalendarEntity> create|add acls|calendaracls <CalendarACLRole> <CalendarACLScopeEntity> [sendnotifications <Boolean>]
|
||||||
gam calendars <CalendarEntity> update acls|calendaracls <CalendarACLRole> <CalendarACLScopeEntity> [sendnotifications <Boolean>]
|
gam calendars <CalendarEntity> update acls|calendaracls <CalendarACLRole> <CalendarACLScopeEntity> [sendnotifications <Boolean>]
|
||||||
@@ -2511,6 +2520,7 @@ gam <CrOSTypeEntity> update <CrOSAttribute>+ [quickcrosmove [<Boolean>]] [nobatc
|
|||||||
autoupdateexpiration|
|
autoupdateexpiration|
|
||||||
autoupdatethrough|
|
autoupdatethrough|
|
||||||
backlightinfo|
|
backlightinfo|
|
||||||
|
bluetoothadapterinfo|
|
||||||
bootmode|
|
bootmode|
|
||||||
chromeostype|
|
chromeostype|
|
||||||
cpuinfo|
|
cpuinfo|
|
||||||
@@ -2544,6 +2554,7 @@ gam <CrOSTypeEntity> update <CrOSAttribute>+ [quickcrosmove [<Boolean>]] [nobatc
|
|||||||
orgunitpath|org|ou|
|
orgunitpath|org|ou|
|
||||||
osupdatestatus|
|
osupdatestatus|
|
||||||
osversion|
|
osversion|
|
||||||
|
osversioncompliance|
|
||||||
platformversion|
|
platformversion|
|
||||||
recentusers|
|
recentusers|
|
||||||
screenshotfiles|
|
screenshotfiles|
|
||||||
@@ -4371,6 +4382,14 @@ gam show policies
|
|||||||
[group <REMatchPattern>] [ou|org|orgunit <REMatchPattern>]
|
[group <REMatchPattern>] [ou|org|orgunit <REMatchPattern>]
|
||||||
[formatjson]
|
[formatjson]
|
||||||
|
|
||||||
|
gam create policy
|
||||||
|
json <JSONData>
|
||||||
|
[(ou|orgunit <OrgUnitItem>)|(group <GroupItem>)|(query <String>)]
|
||||||
|
gam update policy
|
||||||
|
json <JSONData>
|
||||||
|
[(ou|orgunit <OrgUnitItem>)|(group <GroupItem>)|(query <String>)]
|
||||||
|
gam delete policies <CIPolicyNameEntity>
|
||||||
|
|
||||||
# Inbound SSO
|
# Inbound SSO
|
||||||
|
|
||||||
<SSOProfileDisplayName> ::= <String>
|
<SSOProfileDisplayName> ::= <String>
|
||||||
@@ -4892,10 +4911,15 @@ gam print resources [todrive <ToDriveAttribute>*] [allfields|<ResourceFieldName>
|
|||||||
[formatjson [quotechar <Character>]]
|
[formatjson [quotechar <Character>]]
|
||||||
[showitemcountonly]
|
[showitemcountonly]
|
||||||
|
|
||||||
<CalendarACLRole> ::= editor|freebusy|freebusyreader|owner|reader|writer|none
|
<CalendarACLRole> ::=
|
||||||
<CalendarACLScope> ::= <EmailAddress>|user:<EmailAdress>|group:<EmailAddress>|domain:<DomainName>|domain|default
|
editor|freebusy|freebusyreader|owner|reader|writer|writerwithoutprivateaccess|none
|
||||||
<CalendarACLScopeList> ::= "<CalendarACLScope>(,<CalendarACLScope>)*"
|
<CalendarACLScope> ::=
|
||||||
<CalendarACLScopeEntity> ::= <CalendarACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
<EmailAddress>|user:<EmailAdress>|group:<EmailAddress>|
|
||||||
|
domain:<DomainName>|domain|default
|
||||||
|
<CalendarACLScopeList> ::=
|
||||||
|
"<CalendarACLScope>(,<CalendarACLScope>)*"
|
||||||
|
<CalendarACLScopeEntity>::=
|
||||||
|
<CalendarACLScopeList> | <FileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||||
|
|
||||||
gam resource <ResourceID> create|add acls|calendaracls <CalendarACLRole> <CalendarACLScopeEntity> [sendnotifications <Boolean>]
|
gam resource <ResourceID> create|add acls|calendaracls <CalendarACLRole> <CalendarACLScopeEntity> [sendnotifications <Boolean>]
|
||||||
gam resource <ResourceID> update acls|calendaracls <CalendarACLRole> <CalendarACLScopeEntity> [sendnotifications <Boolean>]
|
gam resource <ResourceID> update acls|calendaracls <CalendarACLRole> <CalendarACLScopeEntity> [sendnotifications <Boolean>]
|
||||||
@@ -6019,7 +6043,9 @@ gam print users [todrive <ToDriveAttribute>*]
|
|||||||
(filtermultiattrcustom <UserMultiAttributeFilterName> <String>)*
|
(filtermultiattrcustom <UserMultiAttributeFilterName> <String>)*
|
||||||
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
||||||
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
||||||
[issuspended <Boolean>] [isarchived <Boolean>] [aliasmatchpattern <REMatchPattern>]
|
([issuspended [<Boolean>]] [isarchived [<Boolean>]])|(isdisabled [<Boolean>])]
|
||||||
|
[disabledafter <DateTime>] [disabledbefore <DateTime>]
|
||||||
|
[aliasmatchpattern <REMatchPattern>]
|
||||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||||
[showitemcountonly]
|
[showitemcountonly]
|
||||||
|
|
||||||
@@ -6038,7 +6064,9 @@ gam print users [todrive <ToDriveAttribute>*] select <UserTypeEntity>
|
|||||||
(filtermultiattrcustom <UserMultiAttributeFilterName> <String>)*
|
(filtermultiattrcustom <UserMultiAttributeFilterName> <String>)*
|
||||||
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
||||||
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
||||||
[issuspended <Boolean>] [isarchived <Boolean>] [aliasmatchpattern <REMatchPattern>]
|
([issuspended [<Boolean>]] [isarchived [<Boolean>]])|(isdisabled [<Boolean>])]
|
||||||
|
[disabledafter <DateTime>] [disabledbefore <DateTime>]
|
||||||
|
[aliasmatchpattern <REMatchPattern>]
|
||||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||||
[showitemcountonly]
|
[showitemcountonly]
|
||||||
|
|
||||||
@@ -6055,7 +6083,9 @@ gam <UserTypeEntity> print users [todrive <ToDriveAttribute>*]
|
|||||||
(filtermultiattrcustom <UserMultiAttributeFilterName> <String>)*
|
(filtermultiattrcustom <UserMultiAttributeFilterName> <String>)*
|
||||||
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
||||||
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
||||||
[issuspended <Boolean>] [isarchived <Boolean>] [aliasmatchpattern <REMatchPattern>]
|
([issuspended [<Boolean>]] [isarchived [<Boolean>]])|(isdisabled [<Boolean>])]
|
||||||
|
[disabledafter <DateTime>] [disabledbefore <DateTime>]
|
||||||
|
[aliasmatchpattern <REMatchPattern>]
|
||||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||||
[showitemcountonly]
|
[showitemcountonly]
|
||||||
|
|
||||||
@@ -6124,7 +6154,8 @@ gam <UserTypeEntity> print businessprofileaccounts [todrive <ToDriveAttribute>*]
|
|||||||
|
|
||||||
# Users - Calendars
|
# Users - Calendars
|
||||||
|
|
||||||
<CalendarACLRole> ::= editor|freebusy|freebusyreader|owner|reader|writer
|
<CalendarACLRole> ::=
|
||||||
|
editor|freebusy|freebusyreader|owner|reader|writer|writerwithoutprivateaccess|none
|
||||||
|
|
||||||
<CalendarSelectProperty> ::=
|
<CalendarSelectProperty> ::=
|
||||||
(minaccessrole <CalendarACLRole>)|
|
(minaccessrole <CalendarACLRole>)|
|
||||||
@@ -6271,13 +6302,6 @@ gam <UserTypeEntity> print calendaracls <UserCalendarEntity> [todrive <ToDriveAt
|
|||||||
[noselfowner] (addcsvdata <FieldName> <String>)*
|
[noselfowner] (addcsvdata <FieldName> <String>)*
|
||||||
[formatjson [quotechar <Character>]]
|
[formatjson [quotechar <Character>]]
|
||||||
|
|
||||||
Transfer ownership of a selection of a users secondary calendars to another user
|
|
||||||
|
|
||||||
gam <UserTypeEntity> transfer calendars|seccals <UserItem> [<UserCalendarEntity>]
|
|
||||||
[keepuser | (retainrole <CalendarACLRole>)] [sendnotifications <Boolean>] [noretentionmessages]
|
|
||||||
<CalendarSettings>* [append description|location|summary] [noupdatemessages]
|
|
||||||
[deletefromoldowner] [addtonewowner <CalendarAttribute>*] [nolistmessages]
|
|
||||||
|
|
||||||
<AttendeeAttendance> ::= optional|required
|
<AttendeeAttendance> ::= optional|required
|
||||||
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
||||||
|
|
||||||
@@ -7039,6 +7063,7 @@ gam <UserTypeEntity> move drivefile <DriveFileEntity> [newfilename <DriveFileNam
|
|||||||
[copysubfolderpermissions [<Boolean>]]
|
[copysubfolderpermissions [<Boolean>]]
|
||||||
[copysubfolderinheritedpermissions [<Boolean>]]
|
[copysubfolderinheritedpermissions [<Boolean>]]
|
||||||
[copysubfoldernoniheritedpermissions never|always|syncallfolders|syncupdatedfolders]
|
[copysubfoldernoniheritedpermissions never|always|syncallfolders|syncupdatedfolders]
|
||||||
|
[movefilepermissions [<Boolean>]]
|
||||||
[excludepermissionsfromdomains|includepermissionsfromdomains <DomainNameList>]
|
[excludepermissionsfromdomains|includepermissionsfromdomains <DomainNameList>]
|
||||||
(mappermissionsemail <EmailAddress> <EmailAddress>)* [mappermissionsemailfile <CSVFileInput> endcsv]
|
(mappermissionsemail <EmailAddress> <EmailAddress>)* [mappermissionsemailfile <CSVFileInput> endcsv]
|
||||||
(mappermissionsdomain <DomainName> <DomainName>)*
|
(mappermissionsdomain <DomainName> <DomainName>)*
|
||||||
|
|||||||
@@ -1,3 +1,49 @@
|
|||||||
|
7.46.03
|
||||||
|
|
||||||
|
Updated all Vault related commands to handle the following error: `ERROR: 403: permissionDenied`
|
||||||
|
|
||||||
|
7.46.02
|
||||||
|
|
||||||
|
Updated `gam calendars <CalendarEntity> show settings` to display `dataOwner` field;
|
||||||
|
it is labelled `Owner`.
|
||||||
|
|
||||||
|
7.46.01
|
||||||
|
|
||||||
|
Fixed bug in `gam <CrOSTypeEntity> issuecommand command <CrOSCommand> ... csv` where
|
||||||
|
command execution status lines were improperly indented.
|
||||||
|
|
||||||
|
Upgraded to Python 3.14.6.
|
||||||
|
|
||||||
|
7.46.00
|
||||||
|
|
||||||
|
Added commands to create, update and delete Cloud Identity policies for data loss prevention (DLP) rules and detectors.
|
||||||
|
|
||||||
|
* See: https://github.com/GAM-team/GAM/wiki/Cloud-Identity-Policies
|
||||||
|
* See: https://workspaceupdates.googleblog.com/2026/06/introducing-workspace-policy-api-mutate-endpoints-for-DLP.html
|
||||||
|
|
||||||
|
7.45.00
|
||||||
|
|
||||||
|
Added options `isdisabled [<Boolean>]`, `disabledafter <DateTime>` and `disabledbefore <DateTime>`
|
||||||
|
to `gam print users`. These options along with `issuspended [<Boolean>]` and `isarchived [<Boolean>]`
|
||||||
|
are useful when identifying users to deprovision.
|
||||||
|
|
||||||
|
Added option `movefilepermissions [<Boolean>]]` to `gam <UserTypeEntity> move drivefile` that, when False,
|
||||||
|
causes GAM to remove ACLs from a file before moving it; this will be most useful when moving files to
|
||||||
|
Shared Drives so that only the Shared Drive ACls apply. When not specified or set True, file permissions
|
||||||
|
are not removed; this is the current GAM behavior.
|
||||||
|
|
||||||
|
Upgraded to OpenSSL 4.0.1.
|
||||||
|
|
||||||
|
7.44.03
|
||||||
|
|
||||||
|
Added `writerwithoutprivateaccess` to `<CalendarACLRole>`; this will become effective 2026-06-29.
|
||||||
|
* See: https://developers.google.com/workspace/calendar/release-notes#June_01_2026
|
||||||
|
|
||||||
|
7.44.02
|
||||||
|
|
||||||
|
Added fields `bluetoothadapterinfo` and `osversioncompliance` to `<CrOSFieldName>` for use
|
||||||
|
in `gam info|print cros`.
|
||||||
|
|
||||||
7.44.01
|
7.44.01
|
||||||
|
|
||||||
Added option `oneitemperrow` to `gam print crostelemetry` to have each of a device's
|
Added option `oneitemperrow` to `gam print crostelemetry` to have each of a device's
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -67,35 +67,149 @@ tL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5U6VR5CmD1/iQMVtCnwr1
|
|||||||
/q4AaOeMSQ+2b1tbFfLn
|
/q4AaOeMSQ+2b1tbFfLn
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
# Operating CA: DigiCert
|
# Operating CA: Google Trust Services LLC
|
||||||
# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com
|
# Subject: C = US, O = Google Trust Services LLC, CN = GTS Root R1
|
||||||
# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com
|
# Issuer: C = US, O = Google Trust Services LLC, CN = GTS Root R1
|
||||||
# Label: "DigiCert Assured ID Root CA"
|
# Label: "GTS Root R1"
|
||||||
# Serial: 17154717934120587862167794914071425081
|
# Serial: 0203E5936F31B01349886BA217
|
||||||
# MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72
|
# MD5 Fingerprint: 05:FE:D0:BF:71:A8:A3:76:63:DA:01:E0:D8:52:DC:40
|
||||||
# SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43
|
# SHA1 Fingerprint: E5:8C:1C:C4:91:3B:38:63:4B:E9:10:6E:E3:AD:8E:6B:9D:D9:81:4A
|
||||||
# SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c
|
# SHA256 Fingerprint: D9:47:43:2A:BD:E7:B7:FA:90:FC:2E:6B:59:10:1B:12:80:E0:E1:C7:E4:E4:0F:A3:C6:88:7F:FF:57:A7:F4:CF
|
||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
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
|
||||||
|
bP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3gm3c
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
# Operating CA: Google Trust Services LLC
|
||||||
|
# Subject: C = US, O = Google Trust Services LLC, CN = GTS Root R2
|
||||||
|
# Issuer: C = US, O = Google Trust Services LLC, CN = GTS Root R2
|
||||||
|
# Label: "GTS Root R2"
|
||||||
|
# Serial: 0203E5AEC58D04251AAB1125AA
|
||||||
|
# MD5 Fingerprint=1E:39:C0:53:E6:1E:29:82:0B:CA:52:55:36:5D:57:DC
|
||||||
|
# SHA1 Fingerprint=9A:44:49:76:32:DB:DE:FA:D0:BC:FB:5A:7B:17:BD:9E:56:09:24:94
|
||||||
|
# SHA256 Fingerprint=8D:25:CD:97:22:9D:BF:70:35:6B:DA:4E:B3:CC:73:40:31:E2:4C:F0:0F:AF:CF:D3:2D:C7:6E:B5:84:1C:7E:A8
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjWHYbL
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
# Operating CA: Google Trust Services LLC
|
||||||
|
# Subject: C = US, O = Google Trust Services LLC, CN = GTS Root R3
|
||||||
|
# Issuer: C = US, O = Google Trust Services LLC, CN = GTS Root R3
|
||||||
|
# Label: "GTS Root R3"
|
||||||
|
# Serial: 0203E5B882EB20F825276D3D66
|
||||||
|
# MD5 Fingerprint: 3E:E7:9D:58:02:94:46:51:94:E5:E0:22:4A:8B:E7:73
|
||||||
|
# SHA1 Fingerprint: ED:E5:71:80:2B:C8:92:B9:5B:83:3C:D2:32:68:3F:09:CD:A0:1E:46
|
||||||
|
# SHA256 Fingerprint: 34:D8:A7:3E:E2:08:D9:BC:DB:0D:95:65:20:93:4B:4E:40:E6:94:82:59:6E:8B:6F:73:C8:42:6B:01:0A:6F:48
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYD
|
||||||
|
VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG
|
||||||
|
A1UEAxMLR1RTIFJvb3QgUjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw
|
||||||
|
WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz
|
||||||
|
IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjOPQIBBgUrgQQAIgNi
|
||||||
|
AAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout736G
|
||||||
|
jOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL2
|
||||||
|
4CejQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
|
||||||
|
BBTB8Sa6oC2uhYHP0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7
|
||||||
|
VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azTL818+FsuVbu/3ZL3pAzcMeGiAjEA/Jdm
|
||||||
|
ZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV11RZt+cRLInUue4X
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
# Operating CA: Google Trust Services LLC
|
||||||
|
# Subject: C = US, O = Google Trust Services LLC, CN = GTS Root R4
|
||||||
|
# Issuer: C = US, O = Google Trust Services LLC, CN = GTS Root R4
|
||||||
|
# Label: "GTS Root R4"
|
||||||
|
# Serial: 0203E5C068EF631A9C72905052
|
||||||
|
# MD5 Fingerprint=43:96:83:77:19:4D:76:B3:9D:65:52:E4:1D:22:A5:E8
|
||||||
|
# SHA1 Fingerprint=77:D3:03:67:B5:E0:0C:15:F6:0C:38:61:DF:7C:E1:3B:92:46:4D:47
|
||||||
|
# SHA256 Fingerprint=34:9D:FA:40:58:C5:E2:63:12:3B:39:8A:E7:95:57:3C:4E:13:13:C8:3F:E6:8F:93:55:6C:D5:E8:03:1B:3C:7D
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYD
|
||||||
|
VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG
|
||||||
|
A1UEAxMLR1RTIFJvb3QgUjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw
|
||||||
|
WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz
|
||||||
|
IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjOPQIBBgUrgQQAIgNi
|
||||||
|
AATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzuhXyi
|
||||||
|
QHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvR
|
||||||
|
HYqjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
|
||||||
|
BBSATNbrdP9JNqPV2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D
|
||||||
|
9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/Cr8deVl5c1RxYIigL9zC2L7F8AjEA8GE8
|
||||||
|
p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh4rsUecrNIdSUtUlD
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
# Operating CA: Google Trust Services LLC
|
||||||
|
# Subject: OU = GlobalSign ECC Root CA - R4, O = GlobalSign, CN = GlobalSign
|
||||||
|
# Issuer: OU = GlobalSign ECC Root CA - R4, O = GlobalSign, CN = GlobalSign
|
||||||
|
# Label: "GlobalSign R4"
|
||||||
|
# Serial: 0203E57EF53F93FDA50921B2A6
|
||||||
|
# MD5 Fingerprint: 26:29:F8:6D:E1:88:BF:A2:65:7F:AA:C4:CD:0F:7F:FC
|
||||||
|
# SHA1 Fingerprint: 6B:A0:B0:98:E1:71:EF:5A:AD:FE:48:15:80:77:10:F4:BD:6F:0B:28
|
||||||
|
# SHA256 Fingerprint: B0:85:D7:0B:96:4F:19:1A:73:E4:AF:0D:54:AE:7A:0E:07:AA:FD:AF:9B:71:DD:08:62:13:8A:B7:32:5A:24:A2
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYD
|
||||||
|
VQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2Jh
|
||||||
|
bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgw
|
||||||
|
MTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0g
|
||||||
|
UjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wWTAT
|
||||||
|
BgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkWymOx
|
||||||
|
uYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNV
|
||||||
|
HQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/
|
||||||
|
+wpu+74zyTyjhNUwCgYIKoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147
|
||||||
|
bmF0774BxL4YSFlhgjICICadVGNA3jdgUM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
# Operating CA: DigiCert
|
# Operating CA: DigiCert
|
||||||
@@ -153,36 +267,6 @@ JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv
|
|||||||
6pZjamVFkpUBtA==
|
6pZjamVFkpUBtA==
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
# Operating CA: DigiCert
|
|
||||||
# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com
|
|
||||||
# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com
|
|
||||||
# Label: "DigiCert Global Root CA"
|
|
||||||
# Serial: 10944719598952040374951832963794454346
|
|
||||||
# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e
|
|
||||||
# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36
|
|
||||||
# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
|
|
||||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
|
||||||
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
|
|
||||||
QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
|
|
||||||
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
|
||||||
b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
|
|
||||||
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
|
|
||||||
CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
|
|
||||||
nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
|
|
||||||
43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
|
|
||||||
T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
|
|
||||||
gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
|
|
||||||
BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
|
|
||||||
TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
|
|
||||||
DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
|
|
||||||
hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
|
|
||||||
06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
|
|
||||||
PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
|
|
||||||
YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
|
|
||||||
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Operating CA: DigiCert
|
# Operating CA: DigiCert
|
||||||
# Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com
|
# Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com
|
||||||
@@ -239,37 +323,6 @@ oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8
|
|||||||
sycX
|
sycX
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
# Operating CA: DigiCert
|
|
||||||
# Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com
|
|
||||||
# Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com
|
|
||||||
# Label: "DigiCert High Assurance EV Root CA"
|
|
||||||
# Serial: 3553400076410547919724730734378100087
|
|
||||||
# MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a
|
|
||||||
# SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25
|
|
||||||
# SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs
|
|
||||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
|
||||||
d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
|
|
||||||
ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL
|
|
||||||
MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
|
|
||||||
LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug
|
|
||||||
RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm
|
|
||||||
+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW
|
|
||||||
PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM
|
|
||||||
xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB
|
|
||||||
Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3
|
|
||||||
hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg
|
|
||||||
EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF
|
|
||||||
MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA
|
|
||||||
FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec
|
|
||||||
nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z
|
|
||||||
eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF
|
|
||||||
hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2
|
|
||||||
Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
|
|
||||||
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep
|
|
||||||
+OkuE6N36B9K
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Operating CA: DigiCert
|
# Operating CA: DigiCert
|
||||||
# Issuer: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com
|
# Issuer: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com
|
||||||
@@ -312,36 +365,6 @@ r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1
|
|||||||
gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+
|
gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
# Operating CA: GlobalSign
|
|
||||||
# Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA
|
|
||||||
# Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA
|
|
||||||
# Label: "GlobalSign Root CA"
|
|
||||||
# Serial: 4835703278459707669005204
|
|
||||||
# MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a
|
|
||||||
# SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c
|
|
||||||
# SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG
|
|
||||||
A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
|
|
||||||
b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw
|
|
||||||
MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
|
|
||||||
YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT
|
|
||||||
aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ
|
|
||||||
jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp
|
|
||||||
xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp
|
|
||||||
1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG
|
|
||||||
snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ
|
|
||||||
U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8
|
|
||||||
9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
|
|
||||||
BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B
|
|
||||||
AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz
|
|
||||||
yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE
|
|
||||||
38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP
|
|
||||||
AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad
|
|
||||||
DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME
|
|
||||||
HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Operating CA: GlobalSign
|
# Operating CA: GlobalSign
|
||||||
# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3
|
# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3
|
||||||
# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3
|
# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3
|
||||||
@@ -669,148 +692,3 @@ VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB
|
|||||||
L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG
|
L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG
|
||||||
jjxDah2nGN59PRbxYvnKkKj9
|
jjxDah2nGN59PRbxYvnKkKj9
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
# Operating CA: Google Trust Services LLC
|
|
||||||
# Subject: C = US, O = Google Trust Services LLC, CN = GTS Root R1
|
|
||||||
# Issuer: C = US, O = Google Trust Services LLC, CN = GTS Root R1
|
|
||||||
# Label: "GTS Root R1"
|
|
||||||
# Serial: 0203E5936F31B01349886BA217
|
|
||||||
# MD5 Fingerprint: 05:FE:D0:BF:71:A8:A3:76:63:DA:01:E0:D8:52:DC:40
|
|
||||||
# SHA1 Fingerprint: E5:8C:1C:C4:91:3B:38:63:4B:E9:10:6E:E3:AD:8E:6B:9D:D9:81:4A
|
|
||||||
# SHA256 Fingerprint: D9:47:43:2A:BD:E7:B7:FA:90:FC:2E:6B:59:10:1B:12:80:E0:E1:C7:E4:E4:0F:A3:C6:88:7F:FF:57:A7:F4:CF
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQsw
|
|
||||||
CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU
|
|
||||||
MBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw
|
|
||||||
MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp
|
|
||||||
Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUA
|
|
||||||
A4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaMf/vo
|
|
||||||
27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7w
|
|
||||||
Cl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjw
|
|
||||||
TcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0Pfybl
|
|
||||||
qAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaH
|
|
||||||
szVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4Zor8
|
|
||||||
Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUspzBmk
|
|
||||||
MiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92
|
|
||||||
wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70p
|
|
||||||
aDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrN
|
|
||||||
VjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQID
|
|
||||||
AQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
|
|
||||||
FgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBAJ+qQibb
|
|
||||||
C5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe
|
|
||||||
QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuy
|
|
||||||
h6f88/qBVRRiClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM4
|
|
||||||
7HLwEXWdyzRSjeZ2axfG34arJ45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8J
|
|
||||||
ZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYciNuaCp+0KueIHoI17eko8cdLiA6Ef
|
|
||||||
MgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5meLMFrUKTX5hgUvYU/
|
|
||||||
Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJFfbdT
|
|
||||||
6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ
|
|
||||||
0E6yove+7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm
|
|
||||||
2tIMPNuzjsmhDYAPexZ3FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bb
|
|
||||||
bP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3gm3c
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Operating CA: Google Trust Services LLC
|
|
||||||
# Subject: C = US, O = Google Trust Services LLC, CN = GTS Root R2
|
|
||||||
# Issuer: C = US, O = Google Trust Services LLC, CN = GTS Root R2
|
|
||||||
# Label: "GTS Root R2"
|
|
||||||
# Serial: 0203E5AEC58D04251AAB1125AA
|
|
||||||
# MD5 Fingerprint=1E:39:C0:53:E6:1E:29:82:0B:CA:52:55:36:5D:57:DC
|
|
||||||
# SHA1 Fingerprint=9A:44:49:76:32:DB:DE:FA:D0:BC:FB:5A:7B:17:BD:9E:56:09:24:94
|
|
||||||
# SHA256 Fingerprint=8D:25:CD:97:22:9D:BF:70:35:6B:DA:4E:B3:CC:73:40:31:E2:4C:F0:0F:AF:CF:D3:2D:C7:6E:B5:84:1C:7E:A8
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIFVzCCAz+gAwIBAgINAgPlrsWNBCUaqxElqjANBgkqhkiG9w0BAQwFADBHMQsw
|
|
||||||
CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU
|
|
||||||
MBIGA1UEAxMLR1RTIFJvb3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw
|
|
||||||
MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp
|
|
||||||
Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUA
|
|
||||||
A4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3LvCvpt
|
|
||||||
nfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY
|
|
||||||
6Dlo7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAu
|
|
||||||
MC6C/Pq8tBcKSOWIm8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7k
|
|
||||||
RXuJVfeKH2JShBKzwkCX44ofR5GmdFrS+LFjKBC4swm4VndAoiaYecb+3yXuPuWg
|
|
||||||
f9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7MkogwTZq9TwtImoS1mKPV
|
|
||||||
+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJGr61K8Yzo
|
|
||||||
dDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RW
|
|
||||||
Ir9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKa
|
|
||||||
G73VululycslaVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCq
|
|
||||||
gc7dGtxRcw1PcOnlthYhGXmy5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwID
|
|
||||||
AQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
|
|
||||||
FgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQADggIBAB/Kzt3H
|
|
||||||
vqGf2SdMC9wXmBFqiN495nFWcrKeGk6c1SuYJF2ba3uwM4IJvd8lRuqYnrYb/oM8
|
|
||||||
0mJhwQTtzuDFycgTE1XnqGOtjHsB/ncw4c5omwX4Eu55MaBBRTUoCnGkJE+M3DyC
|
|
||||||
B19m3H0Q/gxhswWV7uGugQ+o+MePTagjAiZrHYNSVc61LwDKgEDg4XSsYPWHgJ2u
|
|
||||||
NmSRXbBoGOqKYcl3qJfEycel/FVL8/B/uWU9J2jQzGv6U53hkRrJXRqWbTKH7QMg
|
|
||||||
yALOWr7Z6v2yTcQvG99fevX4i8buMTolUVVnjWQye+mew4K6Ki3pHrTgSAai/Gev
|
|
||||||
HyICc/sgCq+dVEuhzf9gR7A/Xe8bVr2XIZYtCtFenTgCR2y59PYjJbigapordwj6
|
|
||||||
xLEokCZYCDzifqrXPW+6MYgKBesntaFJ7qBFVHvmJ2WZICGoo7z7GJa7Um8M7YNR
|
|
||||||
TOlZ4iBgxcJlkoKM8xAfDoqXvneCbT+PHV28SSe9zE8P4c52hgQjxcCMElv924Sg
|
|
||||||
JPFI/2R80L5cFtHvma3AH/vLrrw4IgYmZNralw4/KBVEqE8AyvCazM90arQ+POuV
|
|
||||||
7LXTWtiBmelDGDfrs7vRWGJB82bSj6p4lVQgw1oudCvV0b4YacCs1aTPObpRhANl
|
|
||||||
6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjWHYbL
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Operating CA: Google Trust Services LLC
|
|
||||||
# Subject: C = US, O = Google Trust Services LLC, CN = GTS Root R3
|
|
||||||
# Issuer: C = US, O = Google Trust Services LLC, CN = GTS Root R3
|
|
||||||
# Label: "GTS Root R3"
|
|
||||||
# Serial: 0203E5B882EB20F825276D3D66
|
|
||||||
# MD5 Fingerprint: 3E:E7:9D:58:02:94:46:51:94:E5:E0:22:4A:8B:E7:73
|
|
||||||
# SHA1 Fingerprint: ED:E5:71:80:2B:C8:92:B9:5B:83:3C:D2:32:68:3F:09:CD:A0:1E:46
|
|
||||||
# SHA256 Fingerprint: 34:D8:A7:3E:E2:08:D9:BC:DB:0D:95:65:20:93:4B:4E:40:E6:94:82:59:6E:8B:6F:73:C8:42:6B:01:0A:6F:48
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYD
|
|
||||||
VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG
|
|
||||||
A1UEAxMLR1RTIFJvb3QgUjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw
|
|
||||||
WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz
|
|
||||||
IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjOPQIBBgUrgQQAIgNi
|
|
||||||
AAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout736G
|
|
||||||
jOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL2
|
|
||||||
4CejQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
|
|
||||||
BBTB8Sa6oC2uhYHP0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7
|
|
||||||
VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azTL818+FsuVbu/3ZL3pAzcMeGiAjEA/Jdm
|
|
||||||
ZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV11RZt+cRLInUue4X
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Operating CA: Google Trust Services LLC
|
|
||||||
# Subject: C = US, O = Google Trust Services LLC, CN = GTS Root R4
|
|
||||||
# Issuer: C = US, O = Google Trust Services LLC, CN = GTS Root R4
|
|
||||||
# Label: "GTS Root R4"
|
|
||||||
# Serial: 0203E5C068EF631A9C72905052
|
|
||||||
# MD5 Fingerprint=43:96:83:77:19:4D:76:B3:9D:65:52:E4:1D:22:A5:E8
|
|
||||||
# SHA1 Fingerprint=77:D3:03:67:B5:E0:0C:15:F6:0C:38:61:DF:7C:E1:3B:92:46:4D:47
|
|
||||||
# SHA256 Fingerprint=34:9D:FA:40:58:C5:E2:63:12:3B:39:8A:E7:95:57:3C:4E:13:13:C8:3F:E6:8F:93:55:6C:D5:E8:03:1B:3C:7D
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYD
|
|
||||||
VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG
|
|
||||||
A1UEAxMLR1RTIFJvb3QgUjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw
|
|
||||||
WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz
|
|
||||||
IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjOPQIBBgUrgQQAIgNi
|
|
||||||
AATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzuhXyi
|
|
||||||
QHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvR
|
|
||||||
HYqjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
|
|
||||||
BBSATNbrdP9JNqPV2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D
|
|
||||||
9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/Cr8deVl5c1RxYIigL9zC2L7F8AjEA8GE8
|
|
||||||
p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh4rsUecrNIdSUtUlD
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Operating CA: Google Trust Services LLC
|
|
||||||
# Subject: OU = GlobalSign ECC Root CA - R4, O = GlobalSign, CN = GlobalSign
|
|
||||||
# Issuer: OU = GlobalSign ECC Root CA - R4, O = GlobalSign, CN = GlobalSign
|
|
||||||
# Label: "GlobalSign R4"
|
|
||||||
# Serial: 0203E57EF53F93FDA50921B2A6
|
|
||||||
# MD5 Fingerprint: 26:29:F8:6D:E1:88:BF:A2:65:7F:AA:C4:CD:0F:7F:FC
|
|
||||||
# SHA1 Fingerprint: 6B:A0:B0:98:E1:71:EF:5A:AD:FE:48:15:80:77:10:F4:BD:6F:0B:28
|
|
||||||
# SHA256 Fingerprint: B0:85:D7:0B:96:4F:19:1A:73:E4:AF:0D:54:AE:7A:0E:07:AA:FD:AF:9B:71:DD:08:62:13:8A:B7:32:5A:24:A2
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYD
|
|
||||||
VQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2Jh
|
|
||||||
bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgw
|
|
||||||
MTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0g
|
|
||||||
UjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wWTAT
|
|
||||||
BgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkWymOx
|
|
||||||
uYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNV
|
|
||||||
HQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/
|
|
||||||
+wpu+74zyTyjhNUwCgYIKoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147
|
|
||||||
bmF0774BxL4YSFlhgjICICadVGNA3jdgUM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ CLOUDIDENTITY_INBOUND_SSO = 'cloudidentityinboundsso'
|
|||||||
CLOUDIDENTITY_ORGUNITS = 'cloudidentityorgunits'
|
CLOUDIDENTITY_ORGUNITS = 'cloudidentityorgunits'
|
||||||
CLOUDIDENTITY_ORGUNITS_BETA = 'cloudidentityorgunitsbeta'
|
CLOUDIDENTITY_ORGUNITS_BETA = 'cloudidentityorgunitsbeta'
|
||||||
CLOUDIDENTITY_POLICY = 'cloudidentitypolicy'
|
CLOUDIDENTITY_POLICY = 'cloudidentitypolicy'
|
||||||
CLOUDIDENTITY_POLICY_BETA = 'cloudidentitypolicybeta'
|
|
||||||
CLOUDIDENTITY_USERINVITATIONS = 'cloudidentityuserinvitations'
|
CLOUDIDENTITY_USERINVITATIONS = 'cloudidentityuserinvitations'
|
||||||
CLOUDRESOURCEMANAGER = 'cloudresourcemanager'
|
CLOUDRESOURCEMANAGER = 'cloudresourcemanager'
|
||||||
CLOUDRESOURCEMANAGERV1 = 'cloudresourcemanagerv1'
|
CLOUDRESOURCEMANAGERV1 = 'cloudresourcemanagerv1'
|
||||||
@@ -261,7 +260,6 @@ _INFO = {
|
|||||||
CLOUDIDENTITY_ORGUNITS: {'name': 'Cloud Identity API - OrgUnits', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
CLOUDIDENTITY_ORGUNITS: {'name': 'Cloud Identity API - OrgUnits', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
||||||
CLOUDIDENTITY_ORGUNITS_BETA: {'name': 'Cloud Identity API - OrgUnits Beta', 'version': 'v1beta1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
CLOUDIDENTITY_ORGUNITS_BETA: {'name': 'Cloud Identity API - OrgUnits Beta', 'version': 'v1beta1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
||||||
CLOUDIDENTITY_POLICY: {'name': 'Cloud Identity API - Policy', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
CLOUDIDENTITY_POLICY: {'name': 'Cloud Identity API - Policy', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
||||||
CLOUDIDENTITY_POLICY_BETA: {'name': 'Cloud Identity API - Policy Beta', 'version': 'v1beta1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
|
||||||
CLOUDIDENTITY_USERINVITATIONS: {'name': 'Cloud Identity API - User Invitations', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
CLOUDIDENTITY_USERINVITATIONS: {'name': 'Cloud Identity API - User Invitations', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
||||||
CLOUDRESOURCEMANAGER: {'name': 'Resource Manager API v3', 'version': 'v3', 'v2discovery': True},
|
CLOUDRESOURCEMANAGER: {'name': 'Resource Manager API v3', 'version': 'v3', 'v2discovery': True},
|
||||||
CLOUDRESOURCEMANAGERV1: {'name': 'Resource Manager API v1', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudresourcemanager'},
|
CLOUDRESOURCEMANAGERV1: {'name': 'Resource Manager API v1', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudresourcemanager'},
|
||||||
@@ -405,10 +403,6 @@ _CLIENT_SCOPES = [
|
|||||||
'subscopes': READONLY,
|
'subscopes': READONLY,
|
||||||
'roByDefault': True,
|
'roByDefault': True,
|
||||||
'scope': 'https://www.googleapis.com/auth/cloud-identity.policies'},
|
'scope': 'https://www.googleapis.com/auth/cloud-identity.policies'},
|
||||||
{'name': 'Cloud Identity API - Policy Beta',
|
|
||||||
'api': CLOUDIDENTITY_POLICY_BETA,
|
|
||||||
'offByDefault': True,
|
|
||||||
'scope': 'https://www.googleapis.com/auth/cloud-identity.policies'},
|
|
||||||
{'name': 'Cloud Identity API - User Invitations',
|
{'name': 'Cloud Identity API - User Invitations',
|
||||||
'api': CLOUDIDENTITY_USERINVITATIONS,
|
'api': CLOUDIDENTITY_USERINVITATIONS,
|
||||||
'subscopes': READONLY,
|
'subscopes': READONLY,
|
||||||
@@ -641,10 +635,6 @@ _SVCACCT_SCOPES = [
|
|||||||
# 'subscopes': READONLY,
|
# 'subscopes': READONLY,
|
||||||
# 'roByDefault': True,
|
# 'roByDefault': True,
|
||||||
# 'scope': 'https://www.googleapis.com/auth/cloud-identity.policies'},
|
# 'scope': 'https://www.googleapis.com/auth/cloud-identity.policies'},
|
||||||
# {'name': 'Cloud Identity API - Policy Beta',
|
|
||||||
# 'api': CLOUDIDENTITY_POLICY_BETA,
|
|
||||||
# 'offByDefault': True,
|
|
||||||
# 'scope': 'https://www.googleapis.com/auth/cloud-identity.policies'},
|
|
||||||
# {'name': 'Cloud Identity User Invitations API',
|
# {'name': 'Cloud Identity User Invitations API',
|
||||||
# 'api': CLOUDIDENTITY_USERINVITATIONS,
|
# 'api': CLOUDIDENTITY_USERINVITATIONS,
|
||||||
# 'subscopes': READONLY,
|
# 'subscopes': READONLY,
|
||||||
|
|||||||
@@ -462,6 +462,7 @@ PLEASE_CORRECT_YOUR_SYSTEM_TIME = 'Please correct your system time.'
|
|||||||
PLEASE_ENTER_A_OR_M = 'Please enter a or m ...\n'
|
PLEASE_ENTER_A_OR_M = 'Please enter a or m ...\n'
|
||||||
PLEASE_SELECT_ENTITY_TO_PROCESS = '{0} {1} found, please select the correct one to {2} and specify with {3}'
|
PLEASE_SELECT_ENTITY_TO_PROCESS = '{0} {1} found, please select the correct one to {2} and specify with {3}'
|
||||||
PLEASE_SPECIFY_BUILDING_EXACT_CASE_NAME_OR_ID = 'Please specify building by exact case name or ID.'
|
PLEASE_SPECIFY_BUILDING_EXACT_CASE_NAME_OR_ID = 'Please specify building by exact case name or ID.'
|
||||||
|
POLICY_NAME_NOT_FOUND = 'JSON key "name" not found in JSON data'
|
||||||
PREVIEW_ONLY = 'Preview Only'
|
PREVIEW_ONLY = 'Preview Only'
|
||||||
PRIMARY_EMAIL_DID_NOT_MATCH_PATTERN = 'primaryEmail address did not match pattern: {0}'
|
PRIMARY_EMAIL_DID_NOT_MATCH_PATTERN = 'primaryEmail address did not match pattern: {0}'
|
||||||
PROCESS = 'process'
|
PROCESS = 'process'
|
||||||
|
|||||||
@@ -20,6 +20,9 @@ Calendar ACL roles (as seen in Calendar GUI):
|
|||||||
* `owner` - Make changes to events and manage sharing
|
* `owner` - Make changes to events and manage sharing
|
||||||
* `freebusy` & `freebusyreader` - See only free/busy (hide details)
|
* `freebusy` & `freebusyreader` - See only free/busy (hide details)
|
||||||
|
|
||||||
|
Added `writerwithoutprivateaccess` to `<CalendarACLRole>` in 7.44.03; this will become effective 2026-06-29.
|
||||||
|
* See: https://developers.google.com/workspace/calendar/release-notes#June_01_2026
|
||||||
|
|
||||||
## API documentation
|
## API documentation
|
||||||
* [Calendar API - ACLs](https://developers.google.com/google-apps/calendar/v3/reference/acl)
|
* [Calendar API - ACLs](https://developers.google.com/google-apps/calendar/v3/reference/acl)
|
||||||
|
|
||||||
@@ -30,10 +33,15 @@ Calendar ACL roles (as seen in Calendar GUI):
|
|||||||
<CalendarEntity> ::= <CalendarList> | <FileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
<CalendarEntity> ::= <CalendarList> | <FileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||||
See: https://github.com/GAM-team/GAM/wiki/Collections-of-Items
|
See: https://github.com/GAM-team/GAM/wiki/Collections-of-Items
|
||||||
|
|
||||||
<CalendarACLRole> ::= editor|freebusy|freebusyreader|owner|reader|writer
|
<CalendarACLRole> ::=
|
||||||
<CalendarACLScope> ::= <EmailAddress>|user:<EmailAdress>|group:<EmailAddress>|domain:<DomainName>|domain|default
|
editor|freebusy|freebusyreader|owner|reader|writer|writerwithoutprivateaccess|none
|
||||||
<CalendarACLScopeList> ::= "<CalendarACLScope>(,<CalendarACLScope>)*"
|
<CalendarACLScope> ::=
|
||||||
<CalendarACLScopeEntity>::= <CalendarACLScopeList> | <FileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
<EmailAddress>|user:<EmailAdress>|group:<EmailAddress>|
|
||||||
|
domain:<DomainName>|domain|default
|
||||||
|
<CalendarACLScopeList> ::=
|
||||||
|
"<CalendarACLScope>(,<CalendarACLScope>)*"
|
||||||
|
<CalendarACLScopeEntity>::=
|
||||||
|
<CalendarACLScopeList> | <FileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||||
```
|
```
|
||||||
## Manage calendar access
|
## Manage calendar access
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ gam oauth create
|
|||||||
autoupdateexpiration|
|
autoupdateexpiration|
|
||||||
autoupdatethrough|
|
autoupdatethrough|
|
||||||
backlightinfo|
|
backlightinfo|
|
||||||
|
bluetoothadapterinfo|
|
||||||
bootmode|
|
bootmode|
|
||||||
chromeostype|
|
chromeostype|
|
||||||
cpuinfo|
|
cpuinfo|
|
||||||
@@ -131,6 +132,7 @@ gam oauth create
|
|||||||
orgunitpath|org|ou|
|
orgunitpath|org|ou|
|
||||||
osupdatestatus|
|
osupdatestatus|
|
||||||
osversion|
|
osversion|
|
||||||
|
osversioncompliance|
|
||||||
platformversion|
|
platformversion|
|
||||||
recentusers|
|
recentusers|
|
||||||
screenshotfiles|
|
screenshotfiles|
|
||||||
@@ -185,25 +187,30 @@ gam oauth create
|
|||||||
<CrOSActivityListFieldNameList> ::= "<CrOSActivityListFieldName>(,<CrOSActivityListFieldName>)*"
|
<CrOSActivityListFieldNameList> ::= "<CrOSActivityListFieldName>(,<CrOSActivityListFieldName>)*"
|
||||||
|
|
||||||
<CrOSTelemetryFieldName> ::=
|
<CrOSTelemetryFieldName> ::=
|
||||||
|
appreport|
|
||||||
audiostatusreport|
|
audiostatusreport|
|
||||||
batteryinfo|
|
batteryinfo|
|
||||||
batterystatusreport|
|
batterystatusreport|
|
||||||
bootPerformancereport|
|
bootperformancereport|
|
||||||
cpuinfo|
|
cpuinfo|
|
||||||
cpustatusreport|
|
cpustatusreport|
|
||||||
customer|
|
customer|
|
||||||
deviceid|
|
deviceid|
|
||||||
graphicsinfo|
|
graphicsinfo|
|
||||||
graphicsstatusreport|
|
graphicsstatusreport|
|
||||||
|
heartbeatstatusreport|
|
||||||
|
kioskappstatusreport|
|
||||||
memoryinfo|
|
memoryinfo|
|
||||||
memorystatusreport|
|
memorystatusreport|
|
||||||
name|
|
name|
|
||||||
|
networkbandwidthreport|
|
||||||
networkdiagnosticsreport|
|
networkdiagnosticsreport|
|
||||||
networkinfo|
|
networkinfo|
|
||||||
networkstatusreport|
|
networkstatusreport|
|
||||||
orgunitid|
|
orgunitid|
|
||||||
osupdatestatus|
|
osupdatestatus|
|
||||||
peripheralsreport|
|
peripheralsreport|
|
||||||
|
runtimecountersreport|
|
||||||
serialnumber|
|
serialnumber|
|
||||||
storageinfo|
|
storageinfo|
|
||||||
storagestatusreport|
|
storagestatusreport|
|
||||||
@@ -211,20 +218,22 @@ gam oauth create
|
|||||||
<CrOSTelemetryFieldNameList> ::= "<CrOSTelemetryFieldName>(,<CrOSTelemetryFieldName>)*"
|
<CrOSTelemetryFieldNameList> ::= "<CrOSTelemetryFieldName>(,<CrOSTelemetryFieldName>)*"
|
||||||
|
|
||||||
<CrOSTelemetryListFieldName> ::=
|
<CrOSTelemetryListFieldName> ::=
|
||||||
|
appreport|
|
||||||
audiostatusreport|
|
audiostatusreport|
|
||||||
batteryinfo|
|
|
||||||
batterystatusreport|
|
batterystatusreport|
|
||||||
bootperformancereport|
|
bootperformancereport|
|
||||||
cpuinfo|
|
|
||||||
cpustatusreport|
|
cpustatusreport|
|
||||||
graphicsstatusreport|
|
graphicsstatusreport|
|
||||||
|
heartbeatstatusreport|
|
||||||
|
kioskappstatusreport|
|
||||||
memorystatusreport|
|
memorystatusreport|
|
||||||
|
networkbandwidthreport|
|
||||||
networkdiagnosticsreport|
|
networkdiagnosticsreport|
|
||||||
networkstatusreport|
|
networkstatusreport|
|
||||||
osupdatestatus|
|
osupdatestatus|
|
||||||
peripheralsreport|
|
peripheralsreport|
|
||||||
storagestatusreport|
|
runtimecountersreport|
|
||||||
thunderboltinfo
|
storagestatusreport
|
||||||
<CrOSTelemetryListFieldNameList> ::= "<CrOSTelemetryListFieldName>(,<CrOSTelemetryLIstFieldName>)*"
|
<CrOSTelemetryListFieldNameList> ::= "<CrOSTelemetryListFieldName>(,<CrOSTelemetryLIstFieldName>)*"
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -964,19 +973,21 @@ By default, Gam displays the information as an indented list of keys and values:
|
|||||||
gam print crostelemetry [todrive <ToDriveAttribute>*]
|
gam print crostelemetry [todrive <ToDriveAttribute>*]
|
||||||
[(ou|org|orgunit|ou_and_children <OrgUnitItem>)|(cros_sn <SerialNumber>)|(filter <String>)]
|
[(ou|org|orgunit|ou_and_children <OrgUnitItem>)|(cros_sn <SerialNumber>)|(filter <String>)]
|
||||||
<CrOSTelemetryFieldName>* [fields <CrOSTelemetryFieldNameList>]
|
<CrOSTelemetryFieldName>* [fields <CrOSTelemetryFieldNameList>]
|
||||||
[reverselists <CrOSTelemetryListFieldNameList>]
|
[reverselists <CrOSTelemetryListFieldNameList>] [oneitemperrow]
|
||||||
[start <Date>] [end <Date>] [listlimit <Number>]
|
[start <Date>] [end <Date>] [listlimit <Number>]
|
||||||
[formatjson [quotechar <Character>]]
|
[formatjson [quotechar <Character>]]
|
||||||
```
|
```
|
||||||
Use these options to select CrOS devices; if none are chosen, all CrOS devices in the account are selected.
|
Use these options to select CrOS devices; if none are chosen, all CrOS devices in the account are selected.
|
||||||
|
|
||||||
- `ou|org|orgunit <OrgUnitItem>` - Select CrOS devices directly in the OU `<OrgUnitItem>`
|
- `ou|org|orgunit <OrgUnitItem>` - Select CrOS devices directly in the OU `<OrgUnitItem>`
|
||||||
- `ou_and_children <OrgUnitItem>` - Select CrOS devices in the OU `<OrgUnitItem>` and its sub OUs
|
- `ou_and_children <OrgUnitItem>` - Select CrOS devices in the OU `<OrgUnitItem>` and its sub OUs
|
||||||
- `cros_sn <SerialNumber>` - Select the CrOS device with serial number `<SerialNumber>`.
|
- `cros_sn <SerialNumber>` - Select the CrOS device with serial number `<SerialNumber>`.
|
||||||
- `filter <String>` - Select the CrOS device with a filter.
|
- `filter <String>` - Select the CrOS device with a filter.
|
||||||
|
|
||||||
|
Use these options to limit/modify the displayed lists.
|
||||||
- `listlimit <Number>` - Limits the number of repetitions to `<Number>`; if not specified or `<Number>` equals zero, there is no limit.
|
- `listlimit <Number>` - Limits the number of repetitions to `<Number>`; if not specified or `<Number>` equals zero, there is no limit.
|
||||||
- `start <Date>` and `end <Date>` - Constrain list `reportTime` to fall within the specified `<Dates>`. If a `<Date>` isn't specified, there is no filtering in that range.
|
- `start <Date>` and `end <Date>` - Constrain list `reportTime` to fall within the specified `<Dates>`. If a `<Date>` isn't specified, there is no filtering in that range.
|
||||||
- `reverselists <CrOSTelemetryListFieldNameList>` - For each list, change order from ascending (oldest to newest) to descending (newest to oldest); this makes it easy to get the `N` most recent values with `listlimit N reverselists cpustatusreport,memorystatusreport`
|
- `reverselists <CrOSTelemetryListFieldNameList>` - For each list, change order from descending (newest to oldest) to ascending (oldest to newest)
|
||||||
|
- `oneitemrerrow` - Display each instance of a list item on a separate row; by default, all list items are displayed on a single row
|
||||||
|
|
||||||
By default, all telemetry data is displayed, use the following to select specific fields:
|
By default, all telemetry data is displayed, use the following to select specific fields:
|
||||||
- `<CrOSTelemetryFieldName>*` - Specify fields individually
|
- `<CrOSTelemetryFieldName>*` - Specify fields individually
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
- [Definitions](#definitions)
|
- [Definitions](#definitions)
|
||||||
- [Policies](#policies)
|
- [Policies](#policies)
|
||||||
- [Display Cloud Identity Policies](#display-cloud-identity-policies)
|
- [Display Cloud Identity Policies](#display-cloud-identity-policies)
|
||||||
|
- [Create and Update Cloud Identity Policies](#create-and-update-cloud-identity-policies)
|
||||||
|
- [Delete Cloud Identity Policies](#delete-cloud-identity-policies)
|
||||||
|
|
||||||
## API documentation
|
## API documentation
|
||||||
* [Policy API](https://cloud.google.com/identity/docs/reference/rest/v1/policies)
|
* [Policy API](https://cloud.google.com/identity/docs/reference/rest/v1/policies)
|
||||||
@@ -35,6 +37,9 @@ You must enable access to policies in the GCP cloud console.
|
|||||||
* Click Organization Policy Administrator
|
* Click Organization Policy Administrator
|
||||||
* Click Save
|
* Click Save
|
||||||
|
|
||||||
|
The commands to create, update and delete Cloud Identity policies for data loss prevention (DLP) rules and detectors
|
||||||
|
were added in version `7.46.00`.
|
||||||
|
|
||||||
## Definitions
|
## Definitions
|
||||||
```
|
```
|
||||||
<CIPolicyName> ::= policies/<String>|settings/<String>|<String>
|
<CIPolicyName> ::= policies/<String>|settings/<String>|<String>
|
||||||
@@ -87,7 +92,7 @@ gam show policies
|
|||||||
[formatjson]
|
[formatjson]
|
||||||
```
|
```
|
||||||
By default, all policies are displayed.
|
By default, all policies are displayed.
|
||||||
* `filter <String>` - Display filtered policies, See https://cloud.google.com/identity/docs/reference/rest/v1beta1/policies/list
|
* `filter <String>` - Display filtered policies, See https://cloud.google.com/identity/docs/reference/rest/v1/policies/list
|
||||||
* `group <REMatchPattern>` - Only display policies whose group email address matches the `<REMatchPattern>`
|
* `group <REMatchPattern>` - Only display policies whose group email address matches the `<REMatchPattern>`
|
||||||
* `ou|org|orgunit <REMatchPattern>` - Only display policies whose OU path matches the `<REMatchPattern>`
|
* `ou|org|orgunit <REMatchPattern>` - Only display policies whose OU path matches the `<REMatchPattern>`
|
||||||
|
|
||||||
@@ -110,7 +115,7 @@ gam print policies [todrive <ToDriveAttribute>*]
|
|||||||
[formatjson [quotechar <Character>]]
|
[formatjson [quotechar <Character>]]
|
||||||
```
|
```
|
||||||
By default, all policies are displayed:
|
By default, all policies are displayed:
|
||||||
* `filter <String>` - Display filtered policies, See https://cloud.google.com/identity/docs/reference/rest/v1beta1/policies/list
|
* `filter <String>` - Display filtered policies, See https://cloud.google.com/identity/docs/reference/rest/v1/policies/list
|
||||||
* `group <REMatchPattern>` - Only display policies whose group email address matches the `<REMatchPattern>`
|
* `group <REMatchPattern>` - Only display policies whose group email address matches the `<REMatchPattern>`
|
||||||
* `ou|org|orgunit <REMatchPattern>` - Only display policies whose OU path matches the `<REMatchPattern>`
|
* `ou|org|orgunit <REMatchPattern>` - Only display policies whose OU path matches the `<REMatchPattern>`
|
||||||
|
|
||||||
@@ -152,3 +157,32 @@ Print all polices that apply to the OU "/Staff" and its sub-OUs.
|
|||||||
```
|
```
|
||||||
gam redirect csv ./StaffPolicies.csv print policies ou "^/Staff"
|
gam redirect csv ./StaffPolicies.csv print policies ou "^/Staff"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Create and Update Cloud Identity Policies
|
||||||
|
Policies can be complex objects, it is probably easiest to create template policies in the Admin console (under Rules),
|
||||||
|
output the JSON format data for those policies to be used in subsequent create and update commands.
|
||||||
|
|
||||||
|
```
|
||||||
|
gam create policy
|
||||||
|
json <JSONData>
|
||||||
|
[(ou|orgunit <OrgUnitItem>)|(group <GroupItem>)|(query <String>)]
|
||||||
|
gam update policy
|
||||||
|
json <JSONData>
|
||||||
|
[(ou|orgunit <OrgUnitItem>)|(group <GroupItem>)|(query <String>)]
|
||||||
|
```
|
||||||
|
```
|
||||||
|
gam redirect stdout ./policy.json info policies policies/akajj264aoclblvncu
|
||||||
|
Make changes to policy.json and update the policy.
|
||||||
|
gam update policy json file policy.json
|
||||||
|
|
||||||
|
Update the policy to reference a different group.
|
||||||
|
gam update policy json file policy.json group <EmailAddress>
|
||||||
|
|
||||||
|
Make changes to policy.json and create a new policy in a different OU.
|
||||||
|
gam create policy json file policy.json ou <OrgUnitPath>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Delete Cloud Identity Policies
|
||||||
|
```
|
||||||
|
gam delete policies <CIPolicyNameEntity>
|
||||||
|
```
|
||||||
|
|||||||
@@ -10,6 +10,62 @@ 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.46.02
|
||||||
|
|
||||||
|
Updated `gam calendars <CalendarEntity> show settings` to display `dataOwner` field;
|
||||||
|
it is labelled `Owner`.
|
||||||
|
|
||||||
|
### 7.46.01
|
||||||
|
|
||||||
|
Fixed bug in `gam <CrOSTypeEntity> issuecommand command <CrOSCommand> ... csv` where
|
||||||
|
command execution status lines were improperly indented.
|
||||||
|
|
||||||
|
Upgraded to Python 3.14.6.
|
||||||
|
|
||||||
|
### 7.46.00
|
||||||
|
|
||||||
|
Added commands to create, update and delete Cloud Identity policies for data loss prevention (DLP) rules and detectors.
|
||||||
|
|
||||||
|
* See: https://github.com/GAM-team/GAM/wiki/Cloud-Identity-Policies
|
||||||
|
* See: https://workspaceupdates.googleblog.com/2026/06/introducing-workspace-policy-api-mutate-endpoints-for-DLP.html
|
||||||
|
|
||||||
|
### 7.45.00
|
||||||
|
|
||||||
|
Added options `isdisabled [<Boolean>]`, `disabledafter <DateTime>` and `disabledbefore <DateTime>`
|
||||||
|
to `gam print users`. These options along with `issuspended [<Boolean>]` and `isarchived [<Boolean>]`
|
||||||
|
are useful when identifying users to deprovision.
|
||||||
|
|
||||||
|
Added option `movefilepermissions [<Boolean>]]` to `gam <UserTypeEntity> move drivefile` that, when False,
|
||||||
|
causes GAM to remove ACLs from a file before moving it; this will be most useful when moving files to
|
||||||
|
Shared Drives so that only the Shared Drive ACls apply. When not specified or set True, file permissions
|
||||||
|
are not removed; this is the current GAM behavior.
|
||||||
|
|
||||||
|
Upgraded to OpenSSL 4.0.1.
|
||||||
|
|
||||||
|
### 7.44.03
|
||||||
|
|
||||||
|
Added `writerwithoutprivateaccess` to `<CalendarACLRole>`; this will become effective 2026-06-29.
|
||||||
|
* See: https://developers.google.com/workspace/calendar/release-notes#June_01_2026
|
||||||
|
|
||||||
|
### 7.44.02
|
||||||
|
|
||||||
|
Added fields `bluetoothadapterinfo` and `osversioncompliance` to `<CrOSFieldName>` for use
|
||||||
|
in `gam info|print cros`.
|
||||||
|
|
||||||
|
### 7.44.01
|
||||||
|
|
||||||
|
Added option `oneitemperrow` to `gam print crostelemetry` to have each of a device's
|
||||||
|
report field entries displayed on a separate row with all of the other device fields.
|
||||||
|
|
||||||
|
Added additional fields to `<CrOSTelemetryFieldName>`and `<CrOSTelemetryListFieldName>`:
|
||||||
|
```
|
||||||
|
appreport
|
||||||
|
heartbeatstatusreport
|
||||||
|
kioskappstatusreport
|
||||||
|
networkbandwidthreport
|
||||||
|
runtimecountersreport
|
||||||
|
```
|
||||||
|
|
||||||
### 7.44.00
|
### 7.44.00
|
||||||
|
|
||||||
Added support for User data `archivalTime` and `suspensionTime` that is available
|
Added support for User data `archivalTime` and `suspensionTime` that is available
|
||||||
|
|||||||
@@ -251,10 +251,10 @@ writes the credentials into the file oauth2.txt.
|
|||||||
```
|
```
|
||||||
gamteam@server:/Users/gamteam$ rm -f /Users/gamteam/GAMConfig/oauth2.txt
|
gamteam@server:/Users/gamteam$ rm -f /Users/gamteam/GAMConfig/oauth2.txt
|
||||||
gamteam@server:/Users/gamteam$ gam version
|
gamteam@server:/Users/gamteam$ gam version
|
||||||
GAM 7.44.00 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.46.02 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.5 64-bit final
|
Python 3.14.6 64-bit final
|
||||||
macOS Tahoe 26.5 arm64
|
macOS Tahoe 26.5.1 arm64
|
||||||
Path: /Users/gamteam/bin/gam7
|
Path: /Users/gamteam/bin/gam7
|
||||||
Config File: /Users/gamteam/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
Config File: /Users/gamteam/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
||||||
|
|
||||||
@@ -1034,9 +1034,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
|
||||||
GAM 7.44.00 - https://github.com/GAM-team/GAM - pythonsource
|
GAM 7.46.02 - https://github.com/GAM-team/GAM - pythonsource
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.5 64-bit final
|
Python 3.14.6 64-bit final
|
||||||
Windows 11 10.0.26200 AMD64
|
Windows 11 10.0.26200 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
|
||||||
|
|||||||
@@ -14,6 +14,9 @@ Calendar ACL roles (as seen in Calendar GUI):
|
|||||||
* `owner` - Make changes to events and manage sharing
|
* `owner` - Make changes to events and manage sharing
|
||||||
* `freebusy` & `freebusyreader` - See only free/busy (hide details)
|
* `freebusy` & `freebusyreader` - See only free/busy (hide details)
|
||||||
|
|
||||||
|
Added `writerwithoutprivateaccess` to `<CalendarACLRole>` in 7.44.03; this will become effective 2026-06-29.
|
||||||
|
* See: https://developers.google.com/workspace/calendar/release-notes#June_01_2026
|
||||||
|
|
||||||
## API documentation
|
## API documentation
|
||||||
* [Calendar API - ACLs](https://developers.google.com/google-apps/calendar/v3/reference/acl)
|
* [Calendar API - ACLs](https://developers.google.com/google-apps/calendar/v3/reference/acl)
|
||||||
|
|
||||||
@@ -55,10 +58,10 @@ Calendar ACL roles (as seen in Calendar GUI):
|
|||||||
(timezone <TimeZone>)
|
(timezone <TimeZone>)
|
||||||
|
|
||||||
<CalendarACLRole> ::=
|
<CalendarACLRole> ::=
|
||||||
editor|freebusy|freebusyreader|owner|reader|writer
|
editor|freebusy|freebusyreader|owner|reader|writer|writerwithoutprivateaccess|none
|
||||||
<CalendarACLScope> ::=
|
<CalendarACLScope> ::=
|
||||||
<EmailAddress>|user:<EmailAdress>|group:<EmailAddress>|
|
<EmailAddress>|user:<EmailAdress>|group:<EmailAddress>|
|
||||||
domain:<DomainName>|domain|default
|
domain:<DomainName>|domain|default
|
||||||
<CalendarACLScopeList> ::=
|
<CalendarACLScopeList> ::=
|
||||||
"<CalendarACLScope>(,<CalendarACLScope>)*"
|
"<CalendarACLScope>(,<CalendarACLScope>)*"
|
||||||
<CalendarACLScopeEntity>::=
|
<CalendarACLScopeEntity>::=
|
||||||
@@ -150,3 +153,4 @@ This capability is no longer available, see: https://developers.google.com/works
|
|||||||
|
|
||||||
Data ownership can be transferred in the Google Calendar UI.
|
Data ownership can be transferred in the Google Calendar UI.
|
||||||
|
|
||||||
|
See: https://workspaceupdates.googleblog.com/2026/03/an-update-on-secondary-calendar-lifecycle-changes-and-a-new-API.html
|
||||||
|
|||||||
@@ -81,8 +81,8 @@ gam <UserTypeEntity> print driveactivity [todrive <ToDriveAttributes>*]
|
|||||||
By default, drive activity for all files in the top level of My Drive will be displayed.
|
By default, drive activity for all files in the top level of My Drive will be displayed.
|
||||||
* `fileid <DriveFileID>` - Display drive activity for file `<DriveFileID>`
|
* `fileid <DriveFileID>` - Display drive activity for file `<DriveFileID>`
|
||||||
* `folderid <DriveFolderID>` - Display drive activity for all files in folder `<DriveFolderID>`
|
* `folderid <DriveFolderID>` - Display drive activity for all files in folder `<DriveFolderID>`
|
||||||
* `drivefilename <DriveFileName>` - Display drive activity for the file with name `<DriveFolderID>`
|
* `drivefilename <DriveFileName>` - Display drive activity for the file with name `<DriveFileName>`
|
||||||
* `drivefoldername <DriveFolderName>` - Display drive activity for all files in the folder with name `<DriveFolderName>`
|
* `drivefoldername <DriveFolderName>` - Display drive activity for all files in the folder with name `<DriveFolderName>`
|
||||||
* `query` - Display drive activity for all files/folders selected by the query
|
* `query` - Display drive activity for all files/folders selected by the query
|
||||||
|
|
||||||
Activities can be filtered by time.
|
Activities can be filtered by time.
|
||||||
|
|||||||
@@ -583,6 +583,7 @@ gam <UserTypeEntity> move drivefile <DriveFileEntity> [newfilename <DriveFileNam
|
|||||||
[copysubfolderpermissions [<Boolean>]]
|
[copysubfolderpermissions [<Boolean>]]
|
||||||
[copysubfolderinheritedpermissions [<Boolean>]]
|
[copysubfolderinheritedpermissions [<Boolean>]]
|
||||||
[copysubfoldernoninheritedpermissions never|always|syncallfolders|syncupdatedfolders]
|
[copysubfoldernoninheritedpermissions never|always|syncallfolders|syncupdatedfolders]
|
||||||
|
[movefilepermissions [<Boolean>]]
|
||||||
[excludepermissionsfromdomains|includepermissionsfromdomains <DomainNameList>]
|
[excludepermissionsfromdomains|includepermissionsfromdomains <DomainNameList>]
|
||||||
(mappermissionsemail <EmailAddress> <EmailAddress)* [mappermissionsemailfile <CSVFileInput> endcsv]
|
(mappermissionsemail <EmailAddress> <EmailAddress)* [mappermissionsemailfile <CSVFileInput> endcsv]
|
||||||
(mappermissionsdomain <DomainName> <DomainName>)*
|
(mappermissionsdomain <DomainName> <DomainName>)*
|
||||||
@@ -729,6 +730,8 @@ and any remaining copy errors.
|
|||||||
### Moved File Permissions
|
### Moved File Permissions
|
||||||
By default, the permissions of a moved file are not modified.
|
By default, the permissions of a moved file are not modified.
|
||||||
|
|
||||||
|
When `movefilerpermissions false` is specified, all ACLs are removed.
|
||||||
|
|
||||||
When `excludepermissionsfromdomains <DomainNameList>` is specified, any ACL that references a domain in `<DomainNameList>` will be removed.
|
When `excludepermissionsfromdomains <DomainNameList>` is specified, any ACL that references a domain in `<DomainNameList>` will be removed.
|
||||||
|
|
||||||
When `includepermissionsfromdomains <DomainNameList>` is specified, any ACLs that references a domain not in `<DomainNameList>` will be removed.
|
When `includepermissionsfromdomains <DomainNameList>` is specified, any ACLs that references a domain not in `<DomainNameList>` will be removed.
|
||||||
|
|||||||
@@ -535,6 +535,14 @@ User: user@domain.com, Delete maximum of 15 Other Contacts
|
|||||||
User: user@domain.com, Other Contact: otherContacts/c6318452176100245073, Deleted
|
User: user@domain.com, Other Contact: otherContacts/c6318452176100245073, Deleted
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Bulk delete Other Contacts
|
||||||
|
|
||||||
|
Let's suppose you have a CSV file (OtherContacts.csv) with at least these two headers: User,resourceName
|
||||||
|
The file can contain multiple users and their other contacts. This is the most API effecient way to delete the contacts.
|
||||||
|
```
|
||||||
|
gam redirect stdout ./DeleteOtherContacts.txt redirect stderr stdout csvkmd users OtherContacts.csv keyfield User datafield resourceName delete othercontacts csvdata resourceName
|
||||||
|
```
|
||||||
|
|
||||||
## Display User Other Contacts
|
## Display User Other Contacts
|
||||||
### Display as an indented list of keys and values.
|
### Display as an indented list of keys and values.
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1093,7 +1093,9 @@ gam print users [todrive <ToDriveAttribute>*]
|
|||||||
(filtermultiattrcustom <UserMultiAttributeFilterName> <String>)*
|
(filtermultiattrcustom <UserMultiAttributeFilterName> <String>)*
|
||||||
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
||||||
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
||||||
[issuspended <Boolean>] [isarchived <Boolean>] [aliasmatchpattern <REMatchPattern>]
|
([issuspended [<Boolean>]] [isarchived [<Boolean>]])|(isdisabled [<Boolean>])]
|
||||||
|
[disabledafter <DateTime>] [disabledbefore <DateTime>]
|
||||||
|
[aliasmatchpattern <REMatchPattern>]
|
||||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -1103,8 +1105,45 @@ By default, users in all domains in the account are selected; these options allo
|
|||||||
* `(query <QueryUser>)|(queries <QueryUserList>)` - Limit users to those that match a query; each query is run against each domain
|
* `(query <QueryUser>)|(queries <QueryUserList>)` - Limit users to those that match a query; each query is run against each domain
|
||||||
* `limittoou <OrgUnitPath>|<OrgUnitID>` - Limit users to those in the specified `<OrgUnitItem>>`
|
* `limittoou <OrgUnitPath>|<OrgUnitID>` - Limit users to those in the specified `<OrgUnitItem>>`
|
||||||
* `deleted_only|only_deleted` - Only display deleted users
|
* `deleted_only|only_deleted` - Only display deleted users
|
||||||
* `issuspended <Boolean>` - Limit users based on their status
|
|
||||||
* `isarchived <Boolean>` - Limit users based on their status
|
The `isarchived`, `issuspended` and `isdisabled` options can be used to select users based on their archival/suspension status.
|
||||||
|
|
||||||
|
| Options | Users Displayed |
|
||||||
|
|---------|-----------------|
|
||||||
|
| None | All Users|
|
||||||
|
| isarchived [true] | Archived Users |
|
||||||
|
| isarchived false | Non-Archived Users |
|
||||||
|
| issuspended [true] | Suspended Users |
|
||||||
|
| issuspended false | Non-Suspended Users |
|
||||||
|
| isarchived [true] issuspended [true] | Archived Users that are Suspended |
|
||||||
|
| isarchived [true] issuspended false | Archived Users that are not Suspended |
|
||||||
|
| isarchived false issuspended [true] | Suspended Users that are not Archived |
|
||||||
|
| isarchived false issuspended false | Non-Archived and Non-Suspended Users |
|
||||||
|
| isdisabled [true] | Archived or Suspended Users |
|
||||||
|
| isdisabled false | Non-Archived and Non-Suspended Users |
|
||||||
|
|
||||||
|
When none of `isarchived`, `issuspended`, `isdisabled` are specified,
|
||||||
|
but one or both of `disabledafter` or `disabledbefore` is specified,
|
||||||
|
then `isdisabled true` is selected.
|
||||||
|
|
||||||
|
When any of `isarchived [true]`, `issuspended [true]`, `isdisabled [true]` are specified,
|
||||||
|
the following options can be used to further limit the users displayed.
|
||||||
|
* `disabledafter <DateTime>` - Display users disabled on/after `<DateTime>`
|
||||||
|
* `disabledbefore <DateTime>` - Display users disabled before `<DateTime>`
|
||||||
|
|
||||||
|
### Examples
|
||||||
|
Display users suspended more than 90 days ago.
|
||||||
|
```
|
||||||
|
gam print users issuspended disabledbefore -90d
|
||||||
|
```
|
||||||
|
Display users archived within the last 10 days.
|
||||||
|
```
|
||||||
|
gam print users isarchived disabledafter -10d
|
||||||
|
```
|
||||||
|
Display users archived/suspended within a range.
|
||||||
|
```
|
||||||
|
gam print users isdisabled disabledafter -60d disabledbefore -30d
|
||||||
|
```
|
||||||
|
|
||||||
### Print a header row and fields for users specified by `<UserTypeEntity>`
|
### Print a header row and fields for users specified by `<UserTypeEntity>`
|
||||||
```
|
```
|
||||||
@@ -1121,7 +1160,9 @@ gam print users [todrive <ToDriveAttribute>*] select <UserTypeEntity>
|
|||||||
(filtermultiattrcustom <UserMultiAttributeFilterName> <String>)*
|
(filtermultiattrcustom <UserMultiAttributeFilterName> <String>)*
|
||||||
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
||||||
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
||||||
[issuspended <Boolean>] [isarchived <Boolean>] [aliasmatchpattern <REMatchPattern>]
|
([issuspended [<Boolean>]] [isarchived [<Boolean>]])|(isdisabled [<Boolean>])]
|
||||||
|
[disabledafter <DateTime>] [disabledbefore <DateTime>]
|
||||||
|
[aliasmatchpattern <REMatchPattern>]
|
||||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||||
|
|
||||||
gam <UserTypeEntity> print users [todrive <ToDriveAttribute>*]
|
gam <UserTypeEntity> print users [todrive <ToDriveAttribute>*]
|
||||||
@@ -1137,7 +1178,9 @@ gam <UserTypeEntity> print users [todrive <ToDriveAttribute>*]
|
|||||||
(filtermultiattrcustom <UserMultiAttributeFilterName> <String>)*
|
(filtermultiattrcustom <UserMultiAttributeFilterName> <String>)*
|
||||||
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
||||||
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
||||||
[issuspended <Boolean>] [isarchived <Boolean>] [aliasmatchpattern <REMatchPattern>]
|
([issuspended [<Boolean>]] [isarchived [<Boolean>]])|(isdisabled [<Boolean>])]
|
||||||
|
[disabledafter <DateTime>] [disabledbefore <DateTime>]
|
||||||
|
[aliasmatchpattern <REMatchPattern>]
|
||||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -1175,6 +1218,45 @@ of a specified `type` or `customType`.
|
|||||||
* `filtermultiattrtype <UserMultiAttributeFilterName> <String>` - Display `<UserMultiAttributeFilterName>` if its `type` is `<String>`
|
* `filtermultiattrtype <UserMultiAttributeFilterName> <String>` - Display `<UserMultiAttributeFilterName>` if its `type` is `<String>`
|
||||||
* `filtermultiattrcustom <UserMultiAttributeFilterName> <String>` - Display `<UserMultiAttributeFilterName>` if its `customType` is `<String>`
|
* `filtermultiattrcustom <UserMultiAttributeFilterName> <String>` - Display `<UserMultiAttributeFilterName>` if its `customType` is `<String>`
|
||||||
|
|
||||||
|
The `isarchived`, `issuspended` and `isdisabled` options can be used to select users from `<UserTypeEntity>` based on their archival/suspension status.
|
||||||
|
|
||||||
|
| Options | Users Displayed |
|
||||||
|
|---------|-----------------|
|
||||||
|
| None | All Users|
|
||||||
|
| isarchived [true] | Archived Users |
|
||||||
|
| isarchived false | Non-Archived Users |
|
||||||
|
| issuspended [true] | Suspended Users |
|
||||||
|
| issuspended false | Non-Suspended Users |
|
||||||
|
| isarchived [true] issuspended [true] | Archived Users that are Suspended |
|
||||||
|
| isarchived [true] issuspended false | Archived Users that are not Suspended |
|
||||||
|
| isarchived false issuspended [true] | Suspended Users that are not Archived |
|
||||||
|
| isarchived false issuspended false | Non-Archived and Non-Suspended Users |
|
||||||
|
| isdisabled [true] | Archived or Suspended Users |
|
||||||
|
| isdisabled false | Non-Archived and Non-Suspended Users |
|
||||||
|
|
||||||
|
When none of `isarchived`, `issuspended`, `isdisabled` are specified,
|
||||||
|
but one or both of `disabledafter` or `disabledbefore` is specified,
|
||||||
|
then `isdisabled true` is selected.
|
||||||
|
|
||||||
|
When any of `isarchived [true]`, `issuspended [true]`, `isdisabled [true]` are specified,
|
||||||
|
the following options can be used to further limit the users displayed.
|
||||||
|
* `disabledafter <DateTime>` - Display users disabled on/after `<DateTime>`
|
||||||
|
* `disabledbefore <DateTime>` - Display users disabled before `<DateTime>`
|
||||||
|
|
||||||
|
### Examples
|
||||||
|
Display staff users suspended more than 90 days ago.
|
||||||
|
```
|
||||||
|
gam ou /Staff print users issuspended disabledbefore -90d
|
||||||
|
```
|
||||||
|
Display staff users archived within the last 10 days.
|
||||||
|
```
|
||||||
|
gam ou /Staff print users isarchived disabledafter -10d
|
||||||
|
```
|
||||||
|
Display staff users archived/suspended within a range.
|
||||||
|
```
|
||||||
|
gam ou /Staff print users isdisabled disabledafter -60d disabledbefore -30d
|
||||||
|
```
|
||||||
|
|
||||||
By default, when aliases are displayed, all aliases are displayed. Use `aliasmatchpattern <REMatchPattern>`
|
By default, when aliases are displayed, all aliases are displayed. Use `aliasmatchpattern <REMatchPattern>`
|
||||||
to limit the display of aliases to those that match `<REMatchPattern>`.
|
to limit the display of aliases to those that match `<REMatchPattern>`.
|
||||||
|
|
||||||
|
|||||||
@@ -376,7 +376,7 @@ For `corpus calendar`, you can specify advanced search options:
|
|||||||
* `minuswords <StringList>`
|
* `minuswords <StringList>`
|
||||||
* Matches only those events that do not contain any of the words in the given set in title, description, location, or attendees.
|
* Matches only those events that do not contain any of the words in the given set in title, description, location, or attendees.
|
||||||
* Entries in the set are considered in "or".
|
* Entries in the set are considered in "or".
|
||||||
* `responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*
|
* `responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*`
|
||||||
* Matches only events for which the custodian gave one of these responses. If the set is empty, there will be no filtering on responses.
|
* Matches only events for which the custodian gave one of these responses. If the set is empty, there will be no filtering on responses.
|
||||||
* `calendarversiondate <Date>|<Time>`
|
* `calendarversiondate <Date>|<Time>`
|
||||||
* Search the current version of the Calendar event, but export the contents of the last version saved before 12:00 AM UTC on the specified date.
|
* Search the current version of the Calendar event, but export the contents of the last version saved before 12:00 AM UTC on the specified date.
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
Print the current version of Gam with details
|
Print the current version of Gam with details
|
||||||
```
|
```
|
||||||
gam version
|
gam version
|
||||||
GAM 7.44.00 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.46.02 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.5 64-bit final
|
Python 3.14.6 64-bit final
|
||||||
macOS Tahoe 26.5 arm64
|
macOS Tahoe 26.5.1 arm64
|
||||||
Path: /Users/gamteam/bin/gam7
|
Path: /Users/gamteam/bin/gam7
|
||||||
Config File: /Users/gamteam/GamConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
Config File: /Users/gamteam/GamConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
||||||
Time: 2026-02-15T07:51:00-08:00
|
Time: 2026-02-15T07:51:00-08:00
|
||||||
@@ -15,10 +15,10 @@ Time: 2026-02-15T07:51:00-08: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.44.00 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.46.02 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.5 64-bit final
|
Python 3.14.6 64-bit final
|
||||||
macOS Tahoe 26.5 arm64
|
macOS Tahoe 26.5.1 arm64
|
||||||
Path: /Users/gamteam/bin/gam7
|
Path: /Users/gamteam/bin/gam7
|
||||||
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
||||||
Your system time differs from www.googleapis.com by less than 1 second
|
Your system time differs from www.googleapis.com by less than 1 second
|
||||||
@@ -27,29 +27,29 @@ 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.44.00 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.46.02 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.5 64-bit final
|
Python 3.14.6 64-bit final
|
||||||
macOS Tahoe 26.5 arm64
|
macOS Tahoe 26.5.1 arm64
|
||||||
Path: /Users/gamteam/bin/gam7
|
Path: /Users/gamteam/bin/gam7
|
||||||
Config File: /Users/gamteam/GamConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
Config File: /Users/gamteam/GamConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
||||||
Time: 2026-02-15T07:51:00-08:00
|
Time: 2026-02-15T07:51:00-08:00
|
||||||
Your system time differs from admin.googleapis.com by less than 1 second
|
Your system time differs from admin.googleapis.com by less than 1 second
|
||||||
OpenSSL 4.0.0 14 Apr 2026
|
OpenSSL 4.0.1 9 Jun 2026
|
||||||
arrow 1.4.0
|
arrow 1.4.0
|
||||||
chardet 5.2.0
|
chardet 7.4.3
|
||||||
cryptography 46.0.5
|
cryptography 48.0.0
|
||||||
filelock 3.21.2
|
filelock 3.29.0
|
||||||
google-api-python-client 2.190.0
|
google-api-python-client 2.196.0
|
||||||
google-auth-httplib2 0.3.0
|
google-auth-httplib2 0.4.0
|
||||||
google-auth-oauthlib 1.2.4
|
google-auth-oauthlib 1.4.0
|
||||||
google-auth 2.48.0
|
google-auth 2.53.0
|
||||||
lxml 6.0.2
|
lxml 6.1.1
|
||||||
httplib2 0.31.2
|
httplib2 0.31.2
|
||||||
passlib 1.7.4
|
passlib 1.7.4
|
||||||
pathvalidate 3.3.1
|
pathvalidate 3.3.1
|
||||||
pyscard 2.3.1
|
pyscard 2.3.1
|
||||||
yubikey-manager 5.9.0
|
yubikey-manager 5.9.1
|
||||||
admin.googleapis.com connects using TLSv1.3 TLS_AES_256_GCM_SHA384
|
admin.googleapis.com connects using TLSv1.3 TLS_AES_256_GCM_SHA384
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ MacOS High Sierra 10.13.6 x86_64
|
|||||||
Path: /Users/gamteam/bin/gam7
|
Path: /Users/gamteam/bin/gam7
|
||||||
Version Check:
|
Version Check:
|
||||||
Current: 5.35.08
|
Current: 5.35.08
|
||||||
Latest: 7.44.00
|
Latest: 7.46.02
|
||||||
echo $?
|
echo $?
|
||||||
1
|
1
|
||||||
```
|
```
|
||||||
@@ -76,7 +76,7 @@ echo $?
|
|||||||
Print the current version number without details
|
Print the current version number without details
|
||||||
```
|
```
|
||||||
gam version simple
|
gam version simple
|
||||||
7.44.00
|
7.46.02
|
||||||
```
|
```
|
||||||
In Linux/MacOS you can do:
|
In Linux/MacOS you can do:
|
||||||
```
|
```
|
||||||
@@ -86,10 +86,10 @@ echo $VER
|
|||||||
Print the current version of Gam and address of this Wiki
|
Print the current version of Gam and address of this Wiki
|
||||||
```
|
```
|
||||||
gam help
|
gam help
|
||||||
GAM 7.44.00 - https://github.com/GAM-team/GAM
|
GAM 7.46.02 - https://github.com/GAM-team/GAM
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.5 64-bit final
|
Python 3.14.6 64-bit final
|
||||||
macOS Tahoe 26.5 arm64
|
macOS Tahoe 26.5.1 arm64
|
||||||
Path: /Users/gamteam/bin/gam7
|
Path: /Users/gamteam/bin/gam7
|
||||||
Config File: /Users/gamteam/GamConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
Config File: /Users/gamteam/GamConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
||||||
Time: 2026-02-15T07:51:00-08:00
|
Time: 2026-02-15T07:51:00-08:00
|
||||||
|
|||||||
Reference in New Issue
Block a user