mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-03 22:01: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-oauthlib==1.4.0",
|
||||||
"google-auth==2.53.0",
|
"google-auth==2.53.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",
|
||||||
|
|||||||
@@ -1665,11 +1665,15 @@ 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>
|
||||||
|
|
||||||
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 +2515,7 @@ gam <CrOSTypeEntity> update <CrOSAttribute>+ [quickcrosmove [<Boolean>]] [nobatc
|
|||||||
autoupdateexpiration|
|
autoupdateexpiration|
|
||||||
autoupdatethrough|
|
autoupdatethrough|
|
||||||
backlightinfo|
|
backlightinfo|
|
||||||
|
bluetoothadapterinfo|
|
||||||
bootmode|
|
bootmode|
|
||||||
chromeostype|
|
chromeostype|
|
||||||
cpuinfo|
|
cpuinfo|
|
||||||
@@ -2544,6 +2549,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|
|
||||||
@@ -4892,10 +4898,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>]
|
||||||
@@ -6124,7 +6135,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>)|
|
||||||
|
|||||||
@@ -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
|
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
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ https://github.com/GAM-team/GAM/wiki
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
__author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
|
__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)'
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
||||||
|
|
||||||
# pylint: disable=wrong-import-position
|
# pylint: disable=wrong-import-position
|
||||||
@@ -24649,7 +24649,7 @@ def _getFilterDateTime():
|
|||||||
return (filterDate, filterDate.replace(tzinfo='UTC'))
|
return (filterDate, filterDate.replace(tzinfo='UTC'))
|
||||||
|
|
||||||
CROS_FIELDS_CHOICE_MAP = {
|
CROS_FIELDS_CHOICE_MAP = {
|
||||||
'activetimeranges': ['activeTimeRanges.activeTime', 'activeTimeRanges.date'],
|
'activetimeranges': 'activeTimeRanges',
|
||||||
'annotatedassetid': 'annotatedAssetId',
|
'annotatedassetid': 'annotatedAssetId',
|
||||||
'annotatedlocation': 'annotatedLocation',
|
'annotatedlocation': 'annotatedLocation',
|
||||||
'annotateduser': 'annotatedUser',
|
'annotateduser': 'annotatedUser',
|
||||||
@@ -24658,12 +24658,13 @@ CROS_FIELDS_CHOICE_MAP = {
|
|||||||
'autoupdateexpiration': 'autoUpdateExpiration',
|
'autoupdateexpiration': 'autoUpdateExpiration',
|
||||||
'autoupdatethrough': 'autoUpdateThrough',
|
'autoupdatethrough': 'autoUpdateThrough',
|
||||||
'backlightinfo': 'backlightInfo',
|
'backlightinfo': 'backlightInfo',
|
||||||
|
'bluetoothadapterinfo': 'bluetoothAdapterInfo',
|
||||||
'bootmode': 'bootMode',
|
'bootmode': 'bootMode',
|
||||||
'chromeostype': 'chromeOsType',
|
'chromeostype': 'chromeOsType',
|
||||||
'cpuinfo': 'cpuInfo',
|
'cpuinfo': 'cpuInfo',
|
||||||
'cpustatusreports': 'cpuStatusReports',
|
'cpustatusreports': 'cpuStatusReports',
|
||||||
'deprovisionreason': 'deprovisionReason',
|
'deprovisionreason': 'deprovisionReason',
|
||||||
'devicefiles': ['deviceFiles.type', 'deviceFiles.createTime'],
|
'devicefiles': 'deviceFiles',
|
||||||
'deviceid': 'deviceId',
|
'deviceid': 'deviceId',
|
||||||
'devicelicensetype': 'deviceLicenseType',
|
'devicelicensetype': 'deviceLicenseType',
|
||||||
'diskspaceusage': 'diskSpaceUsage',
|
'diskspaceusage': 'diskSpaceUsage',
|
||||||
@@ -24693,9 +24694,10 @@ CROS_FIELDS_CHOICE_MAP = {
|
|||||||
'orgunitpath': 'orgUnitPath',
|
'orgunitpath': 'orgUnitPath',
|
||||||
'osupdatestatus': 'osUpdateStatus',
|
'osupdatestatus': 'osUpdateStatus',
|
||||||
'osversion': 'osVersion',
|
'osversion': 'osVersion',
|
||||||
|
'osversioncompliance': 'osVersionCompliance',
|
||||||
'ou': 'orgUnitPath',
|
'ou': 'orgUnitPath',
|
||||||
'platformversion': 'platformVersion',
|
'platformversion': 'platformVersion',
|
||||||
'recentusers': ['recentUsers.email', 'recentUsers.type'],
|
'recentusers': 'recentUsers',
|
||||||
'screenshotfiles': 'screenshotFiles',
|
'screenshotfiles': 'screenshotFiles',
|
||||||
'serialnumber': 'serialNumber',
|
'serialnumber': 'serialNumber',
|
||||||
'status': 'status',
|
'status': 'status',
|
||||||
@@ -24703,11 +24705,11 @@ CROS_FIELDS_CHOICE_MAP = {
|
|||||||
'systemramfreereports': 'systemRamFreeReports',
|
'systemramfreereports': 'systemRamFreeReports',
|
||||||
'systemramtotal': 'systemRamTotal',
|
'systemramtotal': 'systemRamTotal',
|
||||||
'tag': 'annotatedAssetId',
|
'tag': 'annotatedAssetId',
|
||||||
'timeranges': ['activeTimeRanges.activeTime', 'activeTimeRanges.date'],
|
'timeranges': 'activeTimeRanges',
|
||||||
'times': ['activeTimeRanges.activeTime', 'activeTimeRanges.date'],
|
'times': 'activeTimeRanges',
|
||||||
'tpmversioninfo': 'tpmVersionInfo',
|
'tpmversioninfo': 'tpmVersionInfo',
|
||||||
'user': 'annotatedUser',
|
'user': 'annotatedUser',
|
||||||
'users': ['recentUsers.email', 'recentUsers.type'],
|
'users': 'recentUsers',
|
||||||
'willautorenew': 'willAutoRenew',
|
'willautorenew': 'willAutoRenew',
|
||||||
}
|
}
|
||||||
CROS_BASIC_FIELDS_LIST = ['deviceId', 'annotatedAssetId', 'annotatedLocation', 'annotatedUser', 'lastSync', 'notes', 'serialNumber', 'status']
|
CROS_BASIC_FIELDS_LIST = ['deviceId', 'annotatedAssetId', 'annotatedLocation', 'annotatedUser', 'lastSync', 'notes', 'serialNumber', 'status']
|
||||||
@@ -24728,6 +24730,7 @@ CROS_SCALAR_PROPERTY_PRINT_ORDER = [
|
|||||||
'firmwareVersion',
|
'firmwareVersion',
|
||||||
'platformVersion',
|
'platformVersion',
|
||||||
'osVersion',
|
'osVersion',
|
||||||
|
'osVersionCompliance',
|
||||||
'bootMode',
|
'bootMode',
|
||||||
'meid',
|
'meid',
|
||||||
'dockMacAddress',
|
'dockMacAddress',
|
||||||
@@ -24976,6 +24979,9 @@ def infoCrOSDevices(entityList):
|
|||||||
backlightInfo = _filterBasicList(cros, 'backLightInfo', True, listLimit)
|
backlightInfo = _filterBasicList(cros, 'backLightInfo', True, listLimit)
|
||||||
if backlightInfo:
|
if backlightInfo:
|
||||||
showJSON('backlightInfo', backlightInfo, dictObjectsKey={'backlightInfo': 'path'})
|
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)
|
fanInfo = _filterBasicList(cros, 'fanInfo', True, listLimit)
|
||||||
if fanInfo:
|
if fanInfo:
|
||||||
showJSON('fanInfo', fanInfo)
|
showJSON('fanInfo', fanInfo)
|
||||||
@@ -25205,7 +25211,8 @@ CROS_ENTITIES_MAP = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CROS_INDEXED_TITLES = ['activeTimeRanges', 'recentUsers', 'deviceFiles',
|
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>*]
|
# gam print cros [todrive <ToDriveAttribute>*]
|
||||||
# [(query <QueryCrOS>)|(queries <QueryCrOSList>) [querytime<String> <Time>]
|
# [(query <QueryCrOS>)|(queries <QueryCrOSList>) [querytime<String> <Time>]
|
||||||
@@ -25279,7 +25286,7 @@ def doPrintCrOSDevices(entityList=None):
|
|||||||
return
|
return
|
||||||
row = {}
|
row = {}
|
||||||
for attrib in cros:
|
for attrib in cros:
|
||||||
if attrib in {'cpuInfo', 'backlightInfo', 'fanInfo'}:
|
if attrib in {'cpuInfo', 'backlightInfo', 'bluetoothAdapterInfo', 'fanInfo'}:
|
||||||
flattenJSON({attrib: cros[attrib]}, flattened=row)
|
flattenJSON({attrib: cros[attrib]}, flattened=row)
|
||||||
elif attrib not in {'kind', 'etag', 'diskSpaceUsage', 'osUpdateStatus', 'tpmVersionInfo', 'activeTimeRanges', 'recentUsers',
|
elif attrib not in {'kind', 'etag', 'diskSpaceUsage', 'osUpdateStatus', 'tpmVersionInfo', 'activeTimeRanges', 'recentUsers',
|
||||||
'deviceFiles', 'cpuStatusReports', 'diskVolumeReports', 'lastKnownNetwork', 'screenshotFiles', 'systemRamFreeReports'}:
|
'deviceFiles', 'cpuStatusReports', 'diskVolumeReports', 'lastKnownNetwork', 'screenshotFiles', 'systemRamFreeReports'}:
|
||||||
@@ -25311,7 +25318,7 @@ def doPrintCrOSDevices(entityList=None):
|
|||||||
for key in ['email', 'type']:
|
for key in ['email', 'type']:
|
||||||
new_row[f'recentUsers{GC.Values[GC.CSV_OUTPUT_SUBFIELD_DELIMITER]}{key}'] = recentUsers[i][key]
|
new_row[f'recentUsers{GC.Values[GC.CSV_OUTPUT_SUBFIELD_DELIMITER]}{key}'] = recentUsers[i][key]
|
||||||
if i < lenDF:
|
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]
|
new_row[f'deviceFiles{GC.Values[GC.CSV_OUTPUT_SUBFIELD_DELIMITER]}{key}'] = deviceFiles[i][key]
|
||||||
if i < lenCSR:
|
if i < lenCSR:
|
||||||
new_row[f'cpuStatusReports{GC.Values[GC.CSV_OUTPUT_SUBFIELD_DELIMITER]}reportTime'] = cpuStatusReports[i]['reportTime']
|
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',
|
'read': 'reader',
|
||||||
'reader': 'reader',
|
'reader': 'reader',
|
||||||
'writer': 'writer',
|
'writer': 'writer',
|
||||||
|
'writerwithoutprivateaccess': 'writerWithoutPrivateAccess',
|
||||||
'none': 'none',
|
'none': 'none',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
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
|
### 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,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$ 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.44.03 - 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.5 64-bit final
|
||||||
macOS Tahoe 26.5 arm64
|
macOS Tahoe 26.5 arm64
|
||||||
@@ -1034,7 +1034,7 @@ writes the credentials into the file oauth2.txt.
|
|||||||
```
|
```
|
||||||
C:\>del C:\GAMConfig\oauth2.txt
|
C:\>del C:\GAMConfig\oauth2.txt
|
||||||
C:\>gam version
|
C:\>gam version
|
||||||
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>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.5 64-bit final
|
Python 3.14.5 64-bit final
|
||||||
Windows 11 10.0.26200 AMD64
|
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
|
* `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>::=
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
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.44.03 - 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.5 64-bit final
|
||||||
macOS Tahoe 26.5 arm64
|
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
|
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.44.03 - 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.5 64-bit final
|
||||||
macOS Tahoe 26.5 arm64
|
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
|
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.44.03 - 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.5 64-bit final
|
||||||
macOS Tahoe 26.5 arm64
|
macOS Tahoe 26.5 arm64
|
||||||
@@ -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.44.03
|
||||||
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.44.03
|
||||||
```
|
```
|
||||||
In Linux/MacOS you can do:
|
In Linux/MacOS you can do:
|
||||||
```
|
```
|
||||||
@@ -86,7 +86,7 @@ echo $VER
|
|||||||
Print the current version of Gam and address of this Wiki
|
Print the current version of Gam and address of this Wiki
|
||||||
```
|
```
|
||||||
gam help
|
gam help
|
||||||
GAM 7.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>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.5 64-bit final
|
Python 3.14.5 64-bit final
|
||||||
macOS Tahoe 26.5 arm64
|
macOS Tahoe 26.5 arm64
|
||||||
|
|||||||
Reference in New Issue
Block a user