mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-04 14:21:39 +00:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
42ee41d218 | ||
|
|
d8f0666e70 | ||
|
|
3d15d2a820 | ||
|
|
0c593b5809 | ||
|
|
d76ef999c5 | ||
|
|
ddaad4d655 | ||
|
|
36a1bdc56b | ||
|
|
089a5994aa | ||
|
|
3e9b46b650 |
@@ -18,7 +18,7 @@ dependencies = [
|
||||
"google-auth-oauthlib==1.4.0",
|
||||
"google-auth==2.53.0",
|
||||
"httplib2==0.31.2",
|
||||
"lxml==6.1.0",
|
||||
"lxml==6.1.1",
|
||||
"passlib==1.7.4",
|
||||
"pathvalidate==3.3.1",
|
||||
"pysocks==1.7.1",
|
||||
|
||||
@@ -1665,11 +1665,15 @@ gam <UserTypeEntity> show analyticdatastreams
|
||||
<CalendarEntity> ::=
|
||||
<CalendarList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||
|
||||
<CalendarACLRole> ::= editor|freebusy|freebusyreader|owner|reader|writer|none
|
||||
<CalendarACLScope> ::= <EmailAddress>|user:<EmailAdress>|group:<EmailAddress>|domain:<DomainName>|domain|default
|
||||
<CalendarACLScopeList> ::= "<CalendarACLScope>(,<CalendarACLScope>)*"
|
||||
<CalendarACLScopeEntity> ::=
|
||||
<CalendarACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||
<CalendarACLRole> ::=
|
||||
editor|freebusy|freebusyreader|owner|reader|writer|writerwithoutprivateaccess|none
|
||||
<CalendarACLScope> ::=
|
||||
<EmailAddress>|user:<EmailAdress>|group:<EmailAddress>|
|
||||
domain:<DomainName>|domain|default
|
||||
<CalendarACLScopeList> ::=
|
||||
"<CalendarACLScope>(,<CalendarACLScope>)*"
|
||||
<CalendarACLScopeEntity>::=
|
||||
<CalendarACLScopeList> | <FileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||
|
||||
gam calendars <CalendarEntity> create|add acls|calendaracls <CalendarACLRole> <CalendarACLScopeEntity> [sendnotifications <Boolean>]
|
||||
gam calendars <CalendarEntity> update acls|calendaracls <CalendarACLRole> <CalendarACLScopeEntity> [sendnotifications <Boolean>]
|
||||
@@ -2511,6 +2515,7 @@ gam <CrOSTypeEntity> update <CrOSAttribute>+ [quickcrosmove [<Boolean>]] [nobatc
|
||||
autoupdateexpiration|
|
||||
autoupdatethrough|
|
||||
backlightinfo|
|
||||
bluetoothadapterinfo|
|
||||
bootmode|
|
||||
chromeostype|
|
||||
cpuinfo|
|
||||
@@ -2544,6 +2549,7 @@ gam <CrOSTypeEntity> update <CrOSAttribute>+ [quickcrosmove [<Boolean>]] [nobatc
|
||||
orgunitpath|org|ou|
|
||||
osupdatestatus|
|
||||
osversion|
|
||||
osversioncompliance|
|
||||
platformversion|
|
||||
recentusers|
|
||||
screenshotfiles|
|
||||
@@ -4892,10 +4898,15 @@ gam print resources [todrive <ToDriveAttribute>*] [allfields|<ResourceFieldName>
|
||||
[formatjson [quotechar <Character>]]
|
||||
[showitemcountonly]
|
||||
|
||||
<CalendarACLRole> ::= editor|freebusy|freebusyreader|owner|reader|writer|none
|
||||
<CalendarACLScope> ::= <EmailAddress>|user:<EmailAdress>|group:<EmailAddress>|domain:<DomainName>|domain|default
|
||||
<CalendarACLScopeList> ::= "<CalendarACLScope>(,<CalendarACLScope>)*"
|
||||
<CalendarACLScopeEntity> ::= <CalendarACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||
<CalendarACLRole> ::=
|
||||
editor|freebusy|freebusyreader|owner|reader|writer|writerwithoutprivateaccess|none
|
||||
<CalendarACLScope> ::=
|
||||
<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> update acls|calendaracls <CalendarACLRole> <CalendarACLScopeEntity> [sendnotifications <Boolean>]
|
||||
@@ -6124,7 +6135,8 @@ gam <UserTypeEntity> print businessprofileaccounts [todrive <ToDriveAttribute>*]
|
||||
|
||||
# Users - Calendars
|
||||
|
||||
<CalendarACLRole> ::= editor|freebusy|freebusyreader|owner|reader|writer
|
||||
<CalendarACLRole> ::=
|
||||
editor|freebusy|freebusyreader|owner|reader|writer|writerwithoutprivateaccess|none
|
||||
|
||||
<CalendarSelectProperty> ::=
|
||||
(minaccessrole <CalendarACLRole>)|
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
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
|
||||
|
||||
@@ -25,7 +25,7 @@ https://github.com/GAM-team/GAM/wiki
|
||||
"""
|
||||
|
||||
__author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
|
||||
__version__ = '7.44.01'
|
||||
__version__ = '7.44.03'
|
||||
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
||||
|
||||
# pylint: disable=wrong-import-position
|
||||
@@ -24649,7 +24649,7 @@ def _getFilterDateTime():
|
||||
return (filterDate, filterDate.replace(tzinfo='UTC'))
|
||||
|
||||
CROS_FIELDS_CHOICE_MAP = {
|
||||
'activetimeranges': ['activeTimeRanges.activeTime', 'activeTimeRanges.date'],
|
||||
'activetimeranges': 'activeTimeRanges',
|
||||
'annotatedassetid': 'annotatedAssetId',
|
||||
'annotatedlocation': 'annotatedLocation',
|
||||
'annotateduser': 'annotatedUser',
|
||||
@@ -24658,12 +24658,13 @@ CROS_FIELDS_CHOICE_MAP = {
|
||||
'autoupdateexpiration': 'autoUpdateExpiration',
|
||||
'autoupdatethrough': 'autoUpdateThrough',
|
||||
'backlightinfo': 'backlightInfo',
|
||||
'bluetoothadapterinfo': 'bluetoothAdapterInfo',
|
||||
'bootmode': 'bootMode',
|
||||
'chromeostype': 'chromeOsType',
|
||||
'cpuinfo': 'cpuInfo',
|
||||
'cpustatusreports': 'cpuStatusReports',
|
||||
'deprovisionreason': 'deprovisionReason',
|
||||
'devicefiles': ['deviceFiles.type', 'deviceFiles.createTime'],
|
||||
'devicefiles': 'deviceFiles',
|
||||
'deviceid': 'deviceId',
|
||||
'devicelicensetype': 'deviceLicenseType',
|
||||
'diskspaceusage': 'diskSpaceUsage',
|
||||
@@ -24693,9 +24694,10 @@ CROS_FIELDS_CHOICE_MAP = {
|
||||
'orgunitpath': 'orgUnitPath',
|
||||
'osupdatestatus': 'osUpdateStatus',
|
||||
'osversion': 'osVersion',
|
||||
'osversioncompliance': 'osVersionCompliance',
|
||||
'ou': 'orgUnitPath',
|
||||
'platformversion': 'platformVersion',
|
||||
'recentusers': ['recentUsers.email', 'recentUsers.type'],
|
||||
'recentusers': 'recentUsers',
|
||||
'screenshotfiles': 'screenshotFiles',
|
||||
'serialnumber': 'serialNumber',
|
||||
'status': 'status',
|
||||
@@ -24703,11 +24705,11 @@ CROS_FIELDS_CHOICE_MAP = {
|
||||
'systemramfreereports': 'systemRamFreeReports',
|
||||
'systemramtotal': 'systemRamTotal',
|
||||
'tag': 'annotatedAssetId',
|
||||
'timeranges': ['activeTimeRanges.activeTime', 'activeTimeRanges.date'],
|
||||
'times': ['activeTimeRanges.activeTime', 'activeTimeRanges.date'],
|
||||
'timeranges': 'activeTimeRanges',
|
||||
'times': 'activeTimeRanges',
|
||||
'tpmversioninfo': 'tpmVersionInfo',
|
||||
'user': 'annotatedUser',
|
||||
'users': ['recentUsers.email', 'recentUsers.type'],
|
||||
'users': 'recentUsers',
|
||||
'willautorenew': 'willAutoRenew',
|
||||
}
|
||||
CROS_BASIC_FIELDS_LIST = ['deviceId', 'annotatedAssetId', 'annotatedLocation', 'annotatedUser', 'lastSync', 'notes', 'serialNumber', 'status']
|
||||
@@ -24728,6 +24730,7 @@ CROS_SCALAR_PROPERTY_PRINT_ORDER = [
|
||||
'firmwareVersion',
|
||||
'platformVersion',
|
||||
'osVersion',
|
||||
'osVersionCompliance',
|
||||
'bootMode',
|
||||
'meid',
|
||||
'dockMacAddress',
|
||||
@@ -24976,6 +24979,9 @@ def infoCrOSDevices(entityList):
|
||||
backlightInfo = _filterBasicList(cros, 'backLightInfo', True, listLimit)
|
||||
if backlightInfo:
|
||||
showJSON('backlightInfo', backlightInfo, dictObjectsKey={'backlightInfo': 'path'})
|
||||
bluetoothAdapterInfo = _filterBasicList(cros, 'bluetoothAdapterInfo', True, listLimit)
|
||||
if bluetoothAdapterInfo:
|
||||
showJSON('bluetoothAdapterInfo', bluetoothAdapterInfo, dictObjectsKey={'bluetoothAdapterInfo': 'address'})
|
||||
fanInfo = _filterBasicList(cros, 'fanInfo', True, listLimit)
|
||||
if fanInfo:
|
||||
showJSON('fanInfo', fanInfo)
|
||||
@@ -25205,7 +25211,8 @@ CROS_ENTITIES_MAP = {
|
||||
}
|
||||
|
||||
CROS_INDEXED_TITLES = ['activeTimeRanges', 'recentUsers', 'deviceFiles',
|
||||
'cpuStatusReports', 'cpuInfo', 'backlightInfo', 'fanInfo', 'diskVolumeReports', 'lastKnownNetwork', 'screenshotFiles', 'systemRamFreeReports']
|
||||
'cpuStatusReports', 'cpuInfo', 'backlightInfo', 'bluetoothAdapterInfo', 'fanInfo',
|
||||
'diskVolumeReports', 'lastKnownNetwork', 'screenshotFiles', 'systemRamFreeReports']
|
||||
|
||||
# gam print cros [todrive <ToDriveAttribute>*]
|
||||
# [(query <QueryCrOS>)|(queries <QueryCrOSList>) [querytime<String> <Time>]
|
||||
@@ -25279,7 +25286,7 @@ def doPrintCrOSDevices(entityList=None):
|
||||
return
|
||||
row = {}
|
||||
for attrib in cros:
|
||||
if attrib in {'cpuInfo', 'backlightInfo', 'fanInfo'}:
|
||||
if attrib in {'cpuInfo', 'backlightInfo', 'bluetoothAdapterInfo', 'fanInfo'}:
|
||||
flattenJSON({attrib: cros[attrib]}, flattened=row)
|
||||
elif attrib not in {'kind', 'etag', 'diskSpaceUsage', 'osUpdateStatus', 'tpmVersionInfo', 'activeTimeRanges', 'recentUsers',
|
||||
'deviceFiles', 'cpuStatusReports', 'diskVolumeReports', 'lastKnownNetwork', 'screenshotFiles', 'systemRamFreeReports'}:
|
||||
@@ -25311,7 +25318,7 @@ def doPrintCrOSDevices(entityList=None):
|
||||
for key in ['email', 'type']:
|
||||
new_row[f'recentUsers{GC.Values[GC.CSV_OUTPUT_SUBFIELD_DELIMITER]}{key}'] = recentUsers[i][key]
|
||||
if i < lenDF:
|
||||
for key in ['type', 'createTime']:
|
||||
for key in ['name', 'type', 'downloadUrl', 'createTime']:
|
||||
new_row[f'deviceFiles{GC.Values[GC.CSV_OUTPUT_SUBFIELD_DELIMITER]}{key}'] = deviceFiles[i][key]
|
||||
if i < lenCSR:
|
||||
new_row[f'cpuStatusReports{GC.Values[GC.CSV_OUTPUT_SUBFIELD_DELIMITER]}reportTime'] = cpuStatusReports[i]['reportTime']
|
||||
@@ -40987,6 +40994,7 @@ CALENDAR_ACL_ROLES_MAP = {
|
||||
'read': 'reader',
|
||||
'reader': 'reader',
|
||||
'writer': 'writer',
|
||||
'writerwithoutprivateaccess': 'writerWithoutPrivateAccess',
|
||||
'none': 'none',
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,9 @@ Calendar ACL roles (as seen in Calendar GUI):
|
||||
* `owner` - Make changes to events and manage sharing
|
||||
* `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
|
||||
* [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>
|
||||
See: https://github.com/GAM-team/GAM/wiki/Collections-of-Items
|
||||
|
||||
<CalendarACLRole> ::= editor|freebusy|freebusyreader|owner|reader|writer
|
||||
<CalendarACLScope> ::= <EmailAddress>|user:<EmailAdress>|group:<EmailAddress>|domain:<DomainName>|domain|default
|
||||
<CalendarACLScopeList> ::= "<CalendarACLScope>(,<CalendarACLScope>)*"
|
||||
<CalendarACLScopeEntity>::= <CalendarACLScopeList> | <FileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||
<CalendarACLRole> ::=
|
||||
editor|freebusy|freebusyreader|owner|reader|writer|writerwithoutprivateaccess|none
|
||||
<CalendarACLScope> ::=
|
||||
<EmailAddress>|user:<EmailAdress>|group:<EmailAddress>|
|
||||
domain:<DomainName>|domain|default
|
||||
<CalendarACLScopeList> ::=
|
||||
"<CalendarACLScope>(,<CalendarACLScope>)*"
|
||||
<CalendarACLScopeEntity>::=
|
||||
<CalendarACLScopeList> | <FileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||
```
|
||||
## Manage calendar access
|
||||
```
|
||||
|
||||
@@ -98,6 +98,7 @@ gam oauth create
|
||||
autoupdateexpiration|
|
||||
autoupdatethrough|
|
||||
backlightinfo|
|
||||
bluetoothadapterinfo|
|
||||
bootmode|
|
||||
chromeostype|
|
||||
cpuinfo|
|
||||
@@ -131,6 +132,7 @@ gam oauth create
|
||||
orgunitpath|org|ou|
|
||||
osupdatestatus|
|
||||
osversion|
|
||||
osversioncompliance|
|
||||
platformversion|
|
||||
recentusers|
|
||||
screenshotfiles|
|
||||
@@ -185,25 +187,30 @@ gam oauth create
|
||||
<CrOSActivityListFieldNameList> ::= "<CrOSActivityListFieldName>(,<CrOSActivityListFieldName>)*"
|
||||
|
||||
<CrOSTelemetryFieldName> ::=
|
||||
appreport|
|
||||
audiostatusreport|
|
||||
batteryinfo|
|
||||
batterystatusreport|
|
||||
bootPerformancereport|
|
||||
bootperformancereport|
|
||||
cpuinfo|
|
||||
cpustatusreport|
|
||||
customer|
|
||||
deviceid|
|
||||
graphicsinfo|
|
||||
graphicsstatusreport|
|
||||
heartbeatstatusreport|
|
||||
kioskappstatusreport|
|
||||
memoryinfo|
|
||||
memorystatusreport|
|
||||
name|
|
||||
networkbandwidthreport|
|
||||
networkdiagnosticsreport|
|
||||
networkinfo|
|
||||
networkstatusreport|
|
||||
orgunitid|
|
||||
osupdatestatus|
|
||||
peripheralsreport|
|
||||
runtimecountersreport|
|
||||
serialnumber|
|
||||
storageinfo|
|
||||
storagestatusreport|
|
||||
@@ -211,20 +218,22 @@ gam oauth create
|
||||
<CrOSTelemetryFieldNameList> ::= "<CrOSTelemetryFieldName>(,<CrOSTelemetryFieldName>)*"
|
||||
|
||||
<CrOSTelemetryListFieldName> ::=
|
||||
appreport|
|
||||
audiostatusreport|
|
||||
batteryinfo|
|
||||
batterystatusreport|
|
||||
bootperformancereport|
|
||||
cpuinfo|
|
||||
cpustatusreport|
|
||||
graphicsstatusreport|
|
||||
heartbeatstatusreport|
|
||||
kioskappstatusreport|
|
||||
memorystatusreport|
|
||||
networkbandwidthreport|
|
||||
networkdiagnosticsreport|
|
||||
networkstatusreport|
|
||||
osupdatestatus|
|
||||
peripheralsreport|
|
||||
storagestatusreport|
|
||||
thunderboltinfo
|
||||
runtimecountersreport|
|
||||
storagestatusreport
|
||||
<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>*]
|
||||
[(ou|org|orgunit|ou_and_children <OrgUnitItem>)|(cros_sn <SerialNumber>)|(filter <String>)]
|
||||
<CrOSTelemetryFieldName>* [fields <CrOSTelemetryFieldNameList>]
|
||||
[reverselists <CrOSTelemetryListFieldNameList>]
|
||||
[reverselists <CrOSTelemetryListFieldNameList>] [oneitemperrow]
|
||||
[start <Date>] [end <Date>] [listlimit <Number>]
|
||||
[formatjson [quotechar <Character>]]
|
||||
```
|
||||
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_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>`.
|
||||
- `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.
|
||||
- `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:
|
||||
- `<CrOSTelemetryFieldName>*` - Specify fields individually
|
||||
|
||||
@@ -10,6 +10,30 @@ 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
|
||||
|
||||
### 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
|
||||
|
||||
Added support for User data `archivalTime` and `suspensionTime` that is available
|
||||
|
||||
@@ -251,7 +251,7 @@ writes the credentials into the file oauth2.txt.
|
||||
```
|
||||
gamteam@server:/Users/gamteam$ rm -f /Users/gamteam/GAMConfig/oauth2.txt
|
||||
gamteam@server:/Users/gamteam$ gam version
|
||||
GAM 7.44.00 - https://github.com/GAM-team/GAM - pyinstaller
|
||||
GAM 7.44.03 - https://github.com/GAM-team/GAM - pyinstaller
|
||||
GAM Team <google-apps-manager@googlegroups.com>
|
||||
Python 3.14.5 64-bit final
|
||||
macOS Tahoe 26.5 arm64
|
||||
@@ -1034,7 +1034,7 @@ writes the credentials into the file oauth2.txt.
|
||||
```
|
||||
C:\>del C:\GAMConfig\oauth2.txt
|
||||
C:\>gam version
|
||||
GAM 7.44.00 - https://github.com/GAM-team/GAM - pythonsource
|
||||
GAM 7.44.03 - https://github.com/GAM-team/GAM - pythonsource
|
||||
GAM Team <google-apps-manager@googlegroups.com>
|
||||
Python 3.14.5 64-bit final
|
||||
Windows 11 10.0.26200 AMD64
|
||||
|
||||
@@ -14,6 +14,9 @@ Calendar ACL roles (as seen in Calendar GUI):
|
||||
* `owner` - Make changes to events and manage sharing
|
||||
* `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
|
||||
* [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>)
|
||||
|
||||
<CalendarACLRole> ::=
|
||||
editor|freebusy|freebusyreader|owner|reader|writer
|
||||
editor|freebusy|freebusyreader|owner|reader|writer|writerwithoutprivateaccess|none
|
||||
<CalendarACLScope> ::=
|
||||
<EmailAddress>|user:<EmailAdress>|group:<EmailAddress>|
|
||||
domain:<DomainName>|domain|default
|
||||
domain:<DomainName>|domain|default
|
||||
<CalendarACLScopeList> ::=
|
||||
"<CalendarACLScope>(,<CalendarACLScope>)*"
|
||||
<CalendarACLScopeEntity>::=
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Print the current version of Gam with details
|
||||
```
|
||||
gam version
|
||||
GAM 7.44.00 - https://github.com/GAM-team/GAM - pyinstaller
|
||||
GAM 7.44.03 - https://github.com/GAM-team/GAM - pyinstaller
|
||||
GAM Team <google-apps-manager@googlegroups.com>
|
||||
Python 3.14.5 64-bit final
|
||||
macOS Tahoe 26.5 arm64
|
||||
@@ -15,7 +15,7 @@ Time: 2026-02-15T07:51:00-08:00
|
||||
Print the current version of Gam with details and time offset information
|
||||
```
|
||||
gam version timeoffset
|
||||
GAM 7.44.00 - https://github.com/GAM-team/GAM - pyinstaller
|
||||
GAM 7.44.03 - https://github.com/GAM-team/GAM - pyinstaller
|
||||
GAM Team <google-apps-manager@googlegroups.com>
|
||||
Python 3.14.5 64-bit final
|
||||
macOS Tahoe 26.5 arm64
|
||||
@@ -27,7 +27,7 @@ Your system time differs from www.googleapis.com by less than 1 second
|
||||
Print the current version of Gam with extended details and SSL information
|
||||
```
|
||||
gam version extended
|
||||
GAM 7.44.00 - https://github.com/GAM-team/GAM - pyinstaller
|
||||
GAM 7.44.03 - https://github.com/GAM-team/GAM - pyinstaller
|
||||
GAM Team <google-apps-manager@googlegroups.com>
|
||||
Python 3.14.5 64-bit final
|
||||
macOS Tahoe 26.5 arm64
|
||||
@@ -68,7 +68,7 @@ MacOS High Sierra 10.13.6 x86_64
|
||||
Path: /Users/gamteam/bin/gam7
|
||||
Version Check:
|
||||
Current: 5.35.08
|
||||
Latest: 7.44.00
|
||||
Latest: 7.44.03
|
||||
echo $?
|
||||
1
|
||||
```
|
||||
@@ -76,7 +76,7 @@ echo $?
|
||||
Print the current version number without details
|
||||
```
|
||||
gam version simple
|
||||
7.44.00
|
||||
7.44.03
|
||||
```
|
||||
In Linux/MacOS you can do:
|
||||
```
|
||||
@@ -86,7 +86,7 @@ echo $VER
|
||||
Print the current version of Gam and address of this Wiki
|
||||
```
|
||||
gam help
|
||||
GAM 7.44.00 - https://github.com/GAM-team/GAM
|
||||
GAM 7.44.03 - https://github.com/GAM-team/GAM
|
||||
GAM Team <google-apps-manager@googlegroups.com>
|
||||
Python 3.14.5 64-bit final
|
||||
macOS Tahoe 26.5 arm64
|
||||
|
||||
Reference in New Issue
Block a user