This document describes the GAM command line syntax in modified BNF, see https://en.wikipedia.org/wiki/Backus-Naur_Form
Skip the History section and start reading at Introduction.

Items on the command line are space separated, when an actual space character is required, it will be indicated by <Space>.
If an item contains spaces, it should be surrounded by ".

[] optional item
() group items
* item may appear zero or more times
+ item may appear one or more times
| separates alternative items

## Primitives

<Character> ::= a single character
<Digit> ::= 0|1|2|3|4|5|6|7|8|9
<Number> ::= <Digit>+
<Float> ::= <Digit>*.<Digit>+
<Hex> ::= <Digit>|a|b|c|d|e|f|A|B|C|D|E|F
<Space> ::= an actual space character
<String> ::= a string of characters, surrounded by " if it contains spaces
<TrueValues> ::= true|on|yes|enabled|1
<FalseValues>= false|off|no|disabled|0

<Charset> ::= ascii|latin1|mbcs|utf-8|utf-8-sig|utf-16|<String>
<ColorName> ::=
	aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|
	cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|
	darkblue|darkcyan|darkgoldenrod|darkgray|darkgrey|darkgreen|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|
	darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|
	firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|grey|green|greenyellow|
	honeydew|hotpink|indianred|indigo|ivory|khaki|
	lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgrey|lightgreen|lightpink|
	lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|
	magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|
	mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|
	oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|
	papayawhip|peachpuff|peru|pink|plum|powderblue|purple|red|rosybrown|royalblue|
	saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|
	tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen
<DayOfWeek> ::= mon|tue|wed|thu|fri|sat|sun
<FileFormat> ::=
	csv|html|txt|tsv|jpeg|jpg|png|svg|pdf|rtf|pptx|xlsx|docx|odt|ods|openoffice|ms|microsoft|micro$oft
<LabelColorHex> ::=
	#000000|#076239|#0b804b|#149e60|#16a766|#1a764d|#1c4587|#285bac|
	#2a9c68|#3c78d8|#3dc789|#41236d|#434343|#43d692|#44b984|#4a86e8|
	#653e9b|#666666|#68dfa9|#6d9eeb|#822111|#83334c|#89d3b2|#8e63ce|
	#999999|#a0eac9|#a46a21|#a479e2|#a4c2f4|#aa8831|#ac2b16|#b65775|
	#b694e8|#b9e4d0|#c6f3de|#c9daf8|#cc3a21|#cccccc|#cf8933|#d0bcf1|
	#d5ae49|#e07798|#e4d7f5|#e66550|#eaa041|#efa093|#efefef|#f2c960|
	#f3f3f3|#f691b3|#f6c5be|#f7a7c0|#fad165|#fb4c2f|#fbc8d9|#fcda83|
	#fcdee8|#fce8b3|#fef1d1|#ffad47|#ffbc6b|#ffd6a2|#ffe6c7|#ffffff
<Language> ::=
	ach|af|ag|ak|am|ar|az|be|bem|bg|bn|br|bs|ca|chr|ckb|co|crs|cs|cy|da|de|ee|el|en|en-gb|en-us|eo|es|es-419|et|eu|
	fa|fi|fo|fr|fr-ca|fy|ga|gaa|gd|gl|gn|gu|ha|haw|he|hi|hr|ht|hu|hy|ia|id|ig|in|is|it|iw|ja|jw|
	ka|kg|kk|km|kn|ko|kri|ku|ky|la|lg|ln|lo|loz|lt|lua|lv|mfe|mg|mi|mk|ml|mn|mo|mr|ms|mt|my|
	ne|nl|nn|no|nso|ny|nyn|oc|om|or|pa|pcm|pl|ps|pt-br|pt-pt|qu|rm|rn|ro|ru|rw|
	sd|sh|si|sk|sl|sn|so|sq|sr|sr-me|st|su|sv|sw|ta|te|tg|th|ti|tk|tl|tn|to|tr|tt|tum|tw|
	ug|uk|ur|uz|vi|wo|xh|yi|yo|zh-cn|zh-hk|zh-tw|zu
<MimeType> ::=
	gdoc|gdocument|
	gdrawing|
	gfolder|gdirectory|
	gform|
	gfusion|
	gmap|
	gpresentation|
	gscript|
	gsite|
	gsheet|gspreadsheet|
	gshortcut|
	g3pshortcut
<ProductID> ::=
	Google-Apps|
	Google-Chrome-Device-Management|
	Google-Drive-storage|
	Google-Vault|
	101001|101005|101031|101033|101034|101037
<SKUID> ::=
	cloudidentity|identity|1010010001|
	cloudidentitypremium|identitypremium|1010050001|
	free|standard|Google-Apps|
	gafb|gafw|basic|gsuitebasic|Google-Apps-For-Business|
	gafg|gsuitegovernment|gsuitegov|Google-Apps-For-Government|
	gams|postini|gsuitegams|gsuitepostini|gsuitemessagesecurity|Google-Apps-For-Postini|
	gal|gsl|lite|gsuitelite|Google-Apps-Lite|
	gau|gsb|unlimited|gsuitebusiness|Google-Apps-Unlimited|
	gwep|workspaceeducationplus|1010310008|
	gwepstaff|workspaceeducationplusstaff|1010310009|
	gwepstudent|workspaceeducationplusstudent|1010310010|
	gwes|workspaceeducationstandard|1010310005|
	gwesstaff|workspaceeducationstandardstaff|1010310006|
	gwesstudent|workspaceeducationstandardstudent|1010310007|
	gwetlu|workspaceeducationupgrade|1010370001|
	wsentplus|workspaceenterpriseplus|gae|gse|enterprise|gsuiteenterprise|1010020020|
	wsbizplus|workspacebusinessplus|1010020025|
	wsentstan|workspaceenterprisestandard|'1010020026|
	wsbizstart|workspacebusinessstarter|1010020027|
	wsbizstan|workspacebusinessstandard|1010020028|
	gsefe|e4e|gsuiteenterpriseeducation|1010310002|
	gsefes|e4es|gsuiteenterpriseeducationstudent|1010310003|
	gsbau|businessarchived|gsuitebusinessarchived|
	gseau|enterprisearchived|gsuiteenterprisearchived|
	chrome|cdm|googlechromedevicemanagement|Google-Chrome-Device-Management|
	wsess|workspaceesentials|gsuiteessentials|essentials|d4e|driveenterprise|drive4enterprise|1010060001|
	wsentess|workspaceenterpriseessentials|1010060003|
	drive20gb|20gb|googledrivestorage20gb|Google-Drive-storage-20GB|
	drive50gb|50gb|googledrivestorage50gb|Google-Drive-storage-50GB|
	drive200gb|200gb|googledrivestorage200gb|Google-Drive-storage-200GB|
	drive400gb|400gb|googledrivestorage400gb|Google-Drive-storage-400GB|
	drive1tb|1tb|googledrivestorage1tb|Google-Drive-storage-1TB|
	drive2tb|2tb|googledrivestorage2tb|Google-Drive-storage-2TB|
	drive4tb|4tb|googledrivestorage4tb|Google-Drive-storage-4TB|
	drive8tb|8tb|googledrivestorage8tb|Google-Drive-storage-8TB|
	drive16tb|16tb|googledrivestorage16tb|Google-Drive-storage-16TB|
	vault|googlevault|Google-Vault|
	vfe|googlevaultformeremployee|Google-Vault-Former-Employee|
	workspacefrontline|workspacefrontlineworker|1010020030

## Basic items built from primitives

<Boolean> ::= <TrueValues>|<FalseValues>
<ByteCount> ::= <Number>[m|k|b]
<CIDRnetmask> ::= <Number>.<Number>.<Number>.<Number>/<Number>
<ColorHex> ::= #<Hex><Hex><Hex><Hex><Hex><Hex>
<DomainName> ::= <String>(.<String>)+
<EmailAddress> ::= <String>@<DomainName>
<Year> ::= <Digit><Digit><Digit><Digit>
<Month> ::= <Digit><Digit>
<Day> ::= <Digit><Digit>
<Hour> ::= <Digit><Digit>
<Minute> ::= <Digit><Digit>
<Second> ::= <Digit><Digit>
<MilliSeconds> ::= <Digit><Digit><Digit>
<Date> ::=
	<Year>-<Month>-<Day> |
	(+|-)<Number>(d|w|y)
<Time> ::=
	<Year>-<Month>-<Day>(<Space>|T)<Hour>:<Minute>:<Second>[.<MilliSeconds>](Z|(+|-(<Hour>:<Minute>))) |
	(+|-)<Number>(m|h|d|w)
<RegularExpression> ::= <Python Regular Expression, see: https://docs.python.org/2/library/re.html>
<ProjectID> ::= <String> # Must match this Python Regular Expression: [a-z][a-z0-9-]{4,28}[a-z0-9]
<Tag> ::= <String>
<UniqueID> ::= uid:<String>

## Named items

<AccessToken> ::= <String>
<ACLScope> ::= [user:]<EmailAddress>|group:<EmailAddress>|domain[:<DomainName>]|default
<APIScopeURL> ::= <String>
<APPID> ::= <String>
<ASPID> ::= <String>
<AssetTag> ::= <String>
<BrowserTokenPermanentID> ::= <String>
<BuildingID> ::= <String>|id:<String>
<CalendarACLRole> ::= editor|freebusy|freebusyreader|owner|reader|writer
<CalendarACLRuleID> ::= user:<EmailAddress>|group:<EmailAddress>|domain:<DomainName>|default
<CalendarColorIndex> ::= <Number in range 1-24>
<CalendarItem> ::= <EmailAddress>|<String>
<ChatRoom> ::= <String>
<ChatSpace> ::= <String>
<ClientID> ::= <String>
<ColorValue> ::= <ColorName>|<ColorHex>
<CollaboratorItem> ::= <EmailAddress>|<UniqueID>|<String>
<CourseAlias> ::= <String>
<CourseID> ::= <Number>|d:<CourseAlias>
<CourseParticipantType> ::= teacher|teachers|student|students
<CourseState> ::= active|archived|provisioned|declined
<CrOSID> ::= <String>
<CustomerID> ::= <String>
<DeviceID> ::= devices/<String>
<DeviceType> ::= android|chrome_os|google_sync|ios|linux|mac_os|windows
<DeviceUserID> ::= devices/<String>/deviceUsers/<String>
<DomainAlias> ::= <String>
<DriveFileACLRole> ::= commenter|contentmanager|editor|fileorganizer|organizer|owner|reader|writer
<DriveFileID> ::= <String>
<DriveFileURL> ::= https://docs.google.com/a/<DomainName>/document/d/<DriveFileID>/<String>
<DriveFileItem> ::= <DriveFileID>|<DriveFileURL>
<DriveFileName> ::= <String>
<DriveFolderID> ::= <String>
<DriveFolderName> ::= <String>
<EmailItem> ::= <EmailAddress>|<UniqueID>|<String>
<EventColorIndex> ::= <Number in range 1-11>
<EventID> ::= <String>
<ExportItem> ::= <UniqueID>|<String>
<FeatureName> ::= <String>
<FieldName> ::= <String>
<FileName> ::= <String>
<FileNamePattern> ::= <String>
<FilterID> ::= <Sttring>
<FloorName> ::= <String>
<GroupItem> ::= <EmailAddress>|<UniqueID>|<String>
<GroupRole> :;= owner|manager|member
<GuardianItem> ::= <EmailAddress>|<UniqueID>|<String>
<GuardianInvitationID> ::= <String>
<HoldItem> ::= <UniqueID>|<String>
<HostName> ::= <String>
<Key> ::= <String>
<LabelID> ::= <String>
<LabelName> ::= <String>
<LabelReplacement> ::= <String>
<Marker> ::= <String>
<MatterItem> ::= <UniqueID>|<String>
<MaximumNumberOfSeats> ::= <Number>
<MobileID> ::= <String>
<Name> ::= <String>
<Namespace> ::= <String>
<NotificationID> ::= <String>
<NumberOfSeats> ::= <Number>
<OrgUnitID> ::= id:<String>
<OrgUnitPath> ::= /|(/<String)+
<OrgUnitItem> ::= <OrgUnitID>|<OrgUnitPath>
<ParameterKey> ::= <String>
<ParameterValue> ::= <String>
<Password> ::= <String>
<PermissionID> ::= id:<String>|<EmailAddress>|anyone|anyonewithlink
<PrinterID> ::= <String>
<PropertyKey> ::= <String>
<PropertyValue> ::= <String>
<QueryBrowser> ::= <String> See: https://support.google.com/chrome/a/answer/9681204#retrieve_all_chrome_devices_for_an_account
<QueryBrowserToken> ::= <String> See: https://support.google.com/chrome/a/answer/9949706?ref_topic=9301744
<QueryCalendar> ::= <String>
<QueryContact> ::= <String> See: https://developers.google.com/google-apps/contacts/v3/reference#contacts-query-parameters-reference
<QueryCrOS> ::= <String> See: https://support.google.com/chrome/a/answer/1698333?hl=en
<QueryDriveFile> ::= <String> See: https://developers.google.com/drive/v2/web/search-parameters
<QueryDynamicGroup> ::= <String> See: https://cloud.google.com/identity/docs/reference/rest/v1beta1/groups#dynamicgroupquery
<QueryGmail> ::= <String> See: https://support.google.com/mail/answer/7190
<QueryGroup> ::= <String> See: https://developers.google.com/admin-sdk/directory/v1/guides/search-groups
<QueryMemberRestrictions> ::= <String> See: https://cloud.google.com/identity/docs/reference/rest/v1beta1/SecuritySettings#MemberRestriction
<QueryMobile> ::= <String> See: https://support.google.com/a/answer/7549103
<QueryTeamDrive> ::= <String> See: https://developers.google.com/drive/api/v3/search-shareddrives
<QueryUser> ::= <String> See: https://developers.google.com/admin-sdk/directory/v1/guides/search-users
<QueryVaultCorpus> ::= <String> See: https://developers.google.com/vault/reference/rest/v1/matters.holds#CorpusQuery
<RequestID> ::= <String>
<ResourceID> ::= <String>
<RoleItem> ::= <UniqueID>|<String>
<RoleAssignmentID> ::= <String>
<SchemaName> ::= <String>
<Section> ::= <String>
<SerialNumber> ::= <String>
<ServiceAccountKey> ::= <String>
<S/MIMEID> ::= <String>
<SMTPHostName> ::= <String>
<StudentItem> ::= <EmailAddress>|<UniqueID>|<String>
<TeamDriveID> ::= <String>
<TeamDriveName> ::= <String>
<Timezone> ::= <String>
<Title> ::= <String>
<URI> ::= <String>
<URL> ::= <String>
<UserItem> ::= <EmailAddress>|<UniqueID>|<String>
<UserName> ::= <<String>

<CourseFieldName> ::=
	alternatelink|
	coursegroupemail|
	coursematerialsets|
	coursestate|
	creationtime|
	description|
	descriptionheading|
	enrollmentcode|
	guardiansenabled|
	id|
	name|
	ownerid|
	room|
	section|
	teacherfolder|
	teachergroupemail|
	updatetime
<CourseFieldNameList> ::= "<CourseFieldName>(,<CourseFieldName>)*"

<CrOSFieldName> ::=
	activetimeranges|timeranges|
	annotatedassetid|assedid|asset|
	annotatedlocation|location|
	annotateduser|user|
	autoupdateexpiration|
	bootmode|
	cpustatusreports|
	devicefiles|
	deviceid|
	diskvolumereports|
	dockmacaddress|
	ethernetmacaddress|
	ethernetmacaddress0|
	firmwareversion|
	lastenrollmenttime|
	lastsync|
	macaddress|
	manufacturedate|
	meid|
	model|
	notes|
	ordernumber|
	orgunitpath|org|ou|
	osversion|
	platformversion|
	recentusers|
	serialnumber|
	status|
	supportenddate|
	tpmversioninfo|
	systemramtotal|
	systemramfreereports|
	willautorenew

<CrOSListFieldName> ::=
	activetimeranges|timeranges|
	cpustatusreports|
	devicefiles|
	diskvolumereports|
	recentusers|
	systemramfreereports

<CrOSOrderByFieldName> ::=
	lastsync|location|notes|serialnumber|status|supportenddate|user

<CrOSTelemetryFieldName> ::=
	batteryinfo|
	batterystatusreport|
	cpuinfo|
	cpustatusreport|
	customer|
	deviceid|
	graphicsinfo|
	graphicsstatusreport|
	memoryinfo|
	memorystatusreport|
	name|
	networkstatusreport|
	orgunitid|
	osupdatestatus|
	serialnumber|
	storageinfo|
	storagestatusreport

<DriveFieldName> ::=
	appdatacontents|
	cancomment|
	canreadrevisions|
	contentrestrictions|
	copyable|
	copyrequireswriterpermission|
	createddate|createdtime|
	description|
	editable|
	explicitlytrashed|
	driveid|
	fileextension|
	filesize|
	foldercolorrgb|
	fullfileextension|
	headrevisionid|
	iconlink|
	id|
	lastmodifyinguser|
	lastmodifyingusername|
	lastviewedbyme|lastviewedbymedate|lastviewedbymetime|lastviewedbyuser|
	linksharemetadata|
	md5|md5checksum|md5sum|
	mime|mimetype|
	modifiedbyme|modifiedbymedate|modifiedbymetime|modifiedbyuser|
	modifieddate|modifiedtime|
	name|
	originalfilename|
	ownedbyme|
	ownernames|
	owners|
	parents|
	permissions|
	quotabytesused|quotaused|
	resourcekey|
	restricted|
	shareable|
	shared|
	sharedwithmedate|sharedwithmetime|
	sharinguser|
	shortcutdetails|
	size|
	spaces|
	starred|
	thumbnaillink|
	title|
	trashed
	userpermission|
	version|
	viewed|
	viewerscancopycontent|
	webcontentlink|
	webviewlink|
	writerscanshare

<DriveOrderByFieldName> ::=
	createddate|
	folder|
	lastviewedbyme|lastviewedbymedate|lastviewedbyuser|
	modifiedbyme|modifiedbymedate|modifiedbyuser|
	modifieddate|
	name|
	quotabytesused|quotaused|
	recency|
	sharedwithmedate|
	starred|
	title|
	viewedbymedate

<GroupFieldName> ::=
	admincreated|
	aliases|
	allowexternalmembers|
	allowwebposting|
	archiveonly|
	customfootertext|
	customreplyto|
	customrolesenabledforsettingstobemerged|
	defaultmessagedenynotificationtext|
	description|
	directmemberscount|
	email|
	enablecollaborativeinbox|collaborative|
	id|
	includecustomfooter|
	includeinglobaladdresslist|gal|
	isarchived|
	memberscanpostasthegroup|
	messagemoderationlevel|
	name|
	primarylanguage|
	replyto|
	sendmessagedenynotification|
	showingroupdirectory|
	spammoderationlevel|
	whocanadd|
	whocanapprovemessages|
	whocanassigntopics|
	whocanassistcontent|
	whocancontactowner|
	whocandeleteanypost|
	whocandeletetopics|
	whocandiscovergroup|
	whocanenterfreeformtags|
	whocanhideabuse|
	whocaninvite|
	whocanjoin|
	whocanleavegroup|
	whocanlocktopics|
	whocanmaketopicssticky|
	whocanmarkduplicate|
	whocanmarkfavoritereplyonanytopic|
	whocanmarknoresponseneeded|
	whocanmoderatecontent|
	whocanmodifytagsandcategories|
	whocanmovetopicsin|
	whocanmovetopicsout|
	whocanpostannouncements|
	whocanpostmessage|
	whocantaketopics|
	whocanunassigntopic|
	whocanunmarkfavoritereplyonanytopic|
	whocanviewgroup|
	whocanviewmembership

<GuardianState> ::=
	complete|
	pending

<MembersFieldName> ::=
	email|
	id|
	role|
	status|
	type

<MobileFieldName> ::=
	adbstatus|
	applications|
	basebandversion|
	bootloaderversion|
	brand|
	buildnumber|
	defaultlanguage|
	developeroptionsstatus|
	devicecompromisedstatus|
	deviceid|
	devicepasswordstatus|
	email|
	encryptionstatus|
	firstsync|
	hardware|
	hardwareid|
	imei|
	kernelversion|
	lastsync|
	managedaccountisonownerprofile|
	manufacturer|
	meid|
	model|
	name|
	networkoperator|
	os|
	otheraccountsinfo|
	privilege|
	releaseversion|
	resourceid|
	securitypatchlevel|
	serialnumber|
	status|
	supportsworkprofile|
	type|
	unknownsourcesstatus|
	useragent|
	wifimacaddress
<MobileFieldNameList> ::= "<MobileFieldName>(,<MobileFieldName>)*"

<MobileOrderByFieldName> ::=
	deviceid|email|lastsync|model|name|os|status|type

<OrgUnitFieldName> ::=
	description|id|inherit|name|orgunitpath|parent|parentid|inherit
<OrgUnitFieldNameList> ::= "<OrgUnitFieldName>(,<OrgUnitFieldName>)*"

<ResourceFieldName> ::=
	buildingid|
	capacity|
	category|
	description|
	email|
	features|
	floor|
	floorsection|
	generatedresourcename|
	id|
	name|
	type|
	uservisibledescription

<UserFieldName> ::=
	addresses|address|
	agreedtoterms|agreed2terms|
	aliases|
	changepasswordatnextlogin|changepassword|
	creationtime|
	deletiontime|
	email|emails|otheremail|otheremails|
	externalids|externalid|
	familyname|firstname|fullname|givenname|lastname|name|
	gender|
	id|
	ims|im|
	includeinglobaladdresslist|gal|
	ipwhitelisted|
	isdelegatedadmin|admin|isadmin|
	ismailboxsetup|
	isenforcedin2sv|is2svenforced|
	isenrolledin2sv|is2svenrolled|
	keyword|keywords|
	language|languages|
	lastlogintime|
	locations|location|
	noneditablealiases|aliases|nicknames|
	notes|note|
	organizations|organization|
	orgunitpath|org|ou|
	phones|phone|
	posixaccounts|posix|
	primaryemail|username|
	recoveryemail|
	recoveryphone|
	relations|relation|
	ssh|sshkeys|sshpublickeys|
	suspended|
	thumbnailphotourl|photo|photourl|
	websites|website|

<UserOrderByFieldName> ::=
	familyname|lastname|givenname|firstname|email

## Named Lists

Items in a list can be separated by commas or spaces; if an item itself contains a comma, a space or a single quote, special quoting must be used.
Typically, you will enclose the entire list in double quotes and quote each item in the list as detailed below.

Items, separated by commas, without spaces, commas or single quotes in the items themselves
    "item,item,item"
Items, separated by spaces, without spaces, commas or single quotes in the items themselves
    "item item item"
Items, separated by commas, with spaces, commas or single quotes in the items themselves
    "'it em','it,em',\"it'em\""
Items, separated by spaces, with spaces, commas or single quotes in the items themselves
    "'it em' 'it,em' \"it'em\""

<ACLList> ::= "<ACLScope>(,<ACLScope>)*"
<APIScopeURLList> ::= "<APIScopeURL>(,<APIScopeURL>)*"
<ASPIDList> ::= "<ASPID>(,<ASPID>)*"
<AssetTagList> ::= "<AssetTag>(,<AssetTa>g)*"
<CalendarList> ::= "<CalendarItem>(,<CalendarItem>)*"
<ChatRoomList> ::= "<ChatRoom>(,<ChatRoom>)*"
<CollaboratorItemList> ::= "<CollaboratorItem>(,<CollaboratorItem>)*"
<CourseAliasList> ::= "<CourseAlias>(,<CourseAlias>)*"
<CourseIDList> ::= "<CourseID>(,<CourseID>)*"
<CourseStateList> ::= "<CourseState>(,<CourseState>)*"
<CrOSFieldNameList> ::= "<CrOSFieldName>(,<CrOSFieldName>)*"
<CrOSIDList> ::= "<CrOSID>(,<CrOSID>)*"
<CrOSTelemetryFieldNameList> ::= "<CrOSFieldName>(,<CrOSFieldName>)*"
<DriveFileList> ::= "<DriveFileItem>(,<DriveFileItem>)*"
<EmailAddressList> ::= "<EmailAddress>(,<EmailAddress>)*"
<EmailItemList> ::= "<EmailItem>(,<EmailItem>)*"
<EventIDList> ::= "<EventID>(,<EventID>)*"
<FeatureNameList> ::= "<FeatureName>(,<FeatureName>)*"
<FileFormatList> ::= "<FileFormat>(,<FileFormat)*"
<FilterIDList> ::= "<FilterID>(,<FilterID>)*"
<FloorNameList> ::= "<FloorName>(,<FloorName>)*"
<GroupFieldNameList> ::= "<GroupFieldName>(,<GroupFieldName>)*"
<GroupList> ::= "<GroupItem>(,<GroupItem>)*"
<GroupRoleList> ::= "<GroupRole>(,<GroupRole>)*"
<GuardianStateList> ::= "<GuardianState>(,<GuardianState>)*"
<LabelNameList> ::= "<LabelName>(,<LabelName)*"
<LanguageList> ::= "<Language>[+|-](,<Language>[+|-])*"
<MatterItemList> ::= "<MatterItem>(,<MatterItem>)*"
<MembersFieldNameList> ::= "<MembersFieldName>(,<MembersFieldName>)*"
<MobileList> ::= "<MobileId>(,<MobileId>)*"
<NamespaceList> ::= "<Namespace>(,<Namespace)*"
<OrgUnitList> ::= "<OrgUnitPath>(,<OrgUnitPath>)*"
<PrinterIDList> ::= "<PrinterID>)(,<PrinterID>)*"
<ProductIDList> ::= "(<ProductID>|SKUID>)(,<ProductID>|SKUID>)*"
<QueryCrOSList> ::= "<QueryCrOS>(,<QueryCrOS>)*"
<QueryMobileList> ::= "<QueryMobile>(,<QueryMobile>)*"
<QueryUserList> ::= "<QueryUser>(,<QueryUser>)*"
<ResourceIDList> ::= "<ResourceID>(,<ResourceID>)*"
<SKUIDList> ="<SKUID>(,<SKUID>)*"
<SchemaNameList> ::= "<SchemaName>(,<SchemaName>)*"
<SerialNumberList> ::= "<SerialNumber>(,<SerialNumber>)*"
<ServiceAccountKeyList> ::= "<ServiceAccountKey>(,<ServiceAccountKey>)*"
<StringList> ::= "<String>(,<String>)*"
<TeamDriveIDList> ::= "<TeamDriveID>(,<TeamDriveID>)*"
<UserFieldNameList> ::= "<UserFieldName>(,<UserFieldName>)*"
<UserList> ::= "<UserItem>(,<UserItem>)*"

## Collections of ChromeOs Devices

Specify a collection of ChromeOS devices by directly specifying them

<CrOSEntity> ::=
	<CrOSIDList> | (cros_sn <SerialNumberList>) |
	(query:<QueryCrOS>)|(query:orgunitpath:<OrgUnitPath>)|(query <QueryCrOS>)

<CrOSTypeEntity> ::=
	(all cros)|
	(cros <CrOSIDList>)|
	(cros_sn <SerialNumberList>)|
	(crosfile <FileName>)|
	(croscsvfile <FileName>:<FieldName>)|
	(crosquery <QueryCrOS>)|
	(crosqueries <QueryCrOSList>)|
	(cros_ou|cros_ou_and_children <OrgUnitPath>)

## Collections of Users

Specify a collection of Users by directly specifying them or by specifying items that will yield a list of users

<UserTypeEntity> ::=
	(all users)|
	(user <UserItem>)|
	(users <UserList>)|
	(group|group_ns|group_susp <GroupItem)|
	(ou|org <OrgUnitPath>)|
	(ou_ns|org_ns <OrgUnitPath>)|
	(ou_susp|org_susp <OrgUnitPath>)|
	(ou_and_children|ou_and_child <OrgUnitPath>)|
	(ou_and_children_ns|ou_and_child_ns <OrgUnitPath>)|
	(ou_and_children_susp|ou_and_child_susp <OrgUnitPath>)|
	(courseparticipants <CourseID>)|
	(students <CourseID>)|
	(teachers <CourseID>)|
	(file <FileName>)|
	(csvfile <FileName>:<FieldName>)|
	(license|licenses|licence|licences <SKUIDList>)|
	(query <QueryUser>)|
	(queries <QueryUserList>)

## Item attributes

<BuildingAttribute> ::=
	(address|addresslines <String>)|
	(city|locality <String>)|
	(country|regioncode <String>)|
	(description <String>)|
	(floors <FloorNameList>)|
	(id <String>)|
	(language|languageCode <Language>)|
	(latitude <Float>)|
	(longitude <Float>)|
	(name <String>)
	(state|administrativearea <String>)|
	(sublocality <String>)|
	(zipcode|postalcode <String>)

<CalendarAttribute> ::=
	(selected <Boolean>)|(hidden <Boolean>)|(summary <String>)|(colorindex|colorid <CalendarColorIndex>)|(backgroundcolor <ColorValue>)|(foregroundcolor <ColorValue>)|
	(reminder clear|(email|sms|pop <Number>))|
	(notification clear|(email|sms eventcreation|eventchange|eventcancellation|eventresponse|agenda))

<CalendarSettings> ::=
	(summary <String>)|(description <String>)|(location <String>)|(timezone <TimeZone>)

<CourseAttribute> ::=
	(description <String>)|
	(heading <String>)|
	(name <String>)|
	(room <String>)|
	(section <string>)|
	(state|status <CourseState>)|
	(owner|ownerid|teacher <UserItem>)

<CrOSAttribute> ::=
	(asset|assetid|tag <String>)|
	(location <String>)|
	(notes <String>)|
	(org|ou <OrgUnitPath>)|
	(user <Name>)

<CIGroupAttribute> ::=
	(description <String>)|
	(name <String>)

<DriveFileAddAttribute> ::=
	(localfile <FileName>|-)|
	(convert)|(ocr)|(ocrlanguage <Language>)|
	(restricted|restrict)|(starred|star)|(trashed|trash)|(viewed|view)|
	(contentrestrictions readonly false)|
	(contentrestrictions readonly true [reason <String>])|
	copyrequireswriterpermission|
	(lastviewedbyme <Time>)|(modifieddate|modifiedtime <Time>)|(description <String>)|(mimetype <MimeType>)|
	(parentid <DriveFolderID>)|(parentname <DriveFolderName>)|(anyownerparentname <DriveFolderName>)|
	(securityupdate <Boolean>)|
	(shortcut <DriveFileID>)|
	writerscantshare|writerscanshare
<DriveFileUpdateAttribute> ::=
	(localfile <FileName>|-)|
	(convert)|(ocr)|(ocrlanguage <Language>)|
	(restricted|restrict <Boolean>)|(starred|star <Boolean>)|(trashed|trash <Boolean>)|(viewed|view <Boolean>)|
	(contentrestrictions readonly false)|
	(contentrestrictions readonly true [reason <String>])|
	(copyrequireswriterpermission <Boolean>)|
	(lastviewedbyme <Time>)|(modifieddate <Time>)|(description <String>)|(mimetype <MimeType>)|
	(parentid <DriveFolderID>)|(parentname <DriveFolderName>)|(anyownerparentname <DriveFolderName>)|
	(securityupdate <Boolean>)|
	(shortcut <DriveFileID>)|
	writerscantshare|writerscanshare
<GroupSettingsAttribute> ::=
	(allowexternalmembers <Boolean>)|
	(allowwebposting <Boolean>)|
	(archiveonly <Boolean>)|
	(customfootertext <String>)|
	(customreplyto <EmailAddress>)|
	(defaultmessagedenynotificationtext <String>)|
	(defaultsender default_self|group)|
	(description <String>)|
	(enablecollaborativeinbox|collaborative <Boolean>)|
	(includeinglobaladdresslist|gal <Boolean>)|
	(includecustomfooter <Boolean>)|
	(isarchived <Boolean>)|
	(memberscanpostasthegroup <Boolean>)|
	(messagemoderationlevel moderate_all_messages|moderate_non_members|moderate_new_members|moderate_none)|
	(name <String>)|
	(primarylanguage <Language>)|
	(replyto reply_to_custom|reply_to_sender|reply_to_list|reply_to_owner|reply_to_ignore|reply_to_managers)|
	(sendmessagedenynotification <Boolean>)|
	(spammoderationlevel allow|moderate|silently_moderate|reject)|
	(whocanadd all_members_can_add|all_managers_can_add|all_owners_can_add|none_can_add)|
	(whocancontactowner anyone_can_contact|all_in_domain_can_contact|all_members_can_contact|all_managers_can_contact)|
	(whocanjoin anyone_can_join|all_in_domain_can_join|invited_can_join|can_request_to_join)|
	(whocanleavegroup all_members_can_leave|all_managers_can_leave|all_owners_can_leave|none_can_leave)|
	(whocanpostmessage none_can_post|all_managers_can_post|all_members_can_post|all_owners_can_post|all_in_domain_can_post|anyone_can_post)|
	(whocanviewgroup anyone_can_view|all_in_domain_can_view|all_members_can_view|all_managers_can_view|all_owners_can_view)|
	(whocanviewmembership all_in_domain_can_view|all_members_can_view|all_managers_can_view|all_owners_can_view)
<GroupWhoCanDiscoverGroupAttribute> ::=
	(whocandiscovergroup allmemberscandiscover|allindomaincandiscover|anyonecandiscover)|
	(showingroupdirectory <Boolean>)
<GroupWhoCanAssistContentAttribute> ::=
	(whocanassistcontent all_members|owners_and_managers|managers_only|owners_only|none)|
	(whocanassigntopics all_members|owners_and_managers|managers_only|owners_only|none)|
	(whocanenterfreeformtags all_members|owners_and_managers|managers_only|owners_only|none)|
	(whocanhideabuse all_members|owners_and_managers|managers_only|owners_only|none)|
	(whocanmaketopicssticky all_members|owners_and_managers|managers_only|owners_only|none)|
	(whocanmarkduplicate all_members|owners_and_managers|managers_only|owners_only|none)|
	(whocanmarkfavoritereplyonanytopic all_members|owners_and_managers|managers_only|owners_only|none)|
	(whocanmarknoresponseneeded all_members|owners_and_managers|managers_only|owners_only|none)|
	(whocanmodifytagsandcategories all_members|owners_and_managers|managers_only|owners_only|none)|
	(whocantaketopics all_members|owners_and_managers|managers_only|owners_only|none)|
	(whocanunassigntopic all_members|owners_and_managers|managers_only|owners_only|none)|
	(whocanunmarkfavoritereplyonanytopic all_members|owners_and_managers|managers_only|owners_only|none)
<GroupWhoCanModerateContentAttribute> ::=
	(whocanmoderatecontent all_members|owners_and_managers|owners_only|none)|
	(whocanapprovemessages all_members|owners_and_managers|owners_only|none)|
	(whocandeleteanypost all_members|owners_and_managers|owners_only|none)|
	(whocandeletetopics all_members|owners_and_managers|owners_only|none)|
	(whocanlocktopics all_members|owners_and_managers|owners_only|none)|
	(whocanmovetopicsin all_members|owners_and_managers|owners_only|none)|
	(whocanmovetopicsout all_members|owners_and_managers|owners_only|none)|
	(whocanpostannouncements all_members|owners_and_managers|owners_only|none)
<GroupWhoCanModerateMembersAttribute> ::=
	(whocanmoderatemembers all_members|owners_and_managers|owners_only|none)|
	(whocanadd all_members_can_add|all_managers_can_add|none_can_add)|
	(whocanapprovemembers all_members_can_approve|all_managers_can_approve|all_owners_can_approve|none_can_approve)|
	(whocanbanusers all_members|owners_and_managers|owners_only|none)|
	(whocaninvite all_members_can_invite|all_managers_can_invite|all_owners_can_invite|none_can_invite)|
	(whocanmodifymembers all_members|owners_and_managers|owners_only|none)
<GroupAttribute> ::=
	<GroupSettingsAttribute>|
	<GroupWhoCanDiscoverGroupAttribute>|
	<GroupWhoCanAssistContentAttribute>|
	<GroupWhoCanModerateContentAttribute>|
	<GroupWhoCanModerateMembersAttribute>

<MobileAction> ::=
	admin_remote_wipe|wipe|admin_account_wipe|accountwipe|wipeaccount|approve|block|cancel_remote_wipe_then_activate|cancel_remote_wipe_then_block

<ResourceAttribute> ::=
	(buildingid <BuildingID>)|
	(capacity <Number>)|
	(category other|room|conference_room|category_unknown)|
	(description <String>)|
	(features <FeatureNameList>)|
	(floor <FloorName>)|
	(floorsection <String>)|
	(name <String>)|
	(type <String>)|
	(uservisibledescription <String>)

<SchemaFieldDefinition> ::=
	field <FieldName> (type bool|date|double|email|int64|phone|string) [multivalued|multivalue] [indexed] [restricted] [range <Number> <Number>] endfield

<UserBasicAttribute> ::=
	(changepassword|changepasswordatnextlogin <Boolean>)|
	(base64-md5|base64-sha1|crypt|sha|sha1|sha-1|md5|nohash)|
	(customerid <String>)|
	(email|primaryemail|username <EmailAddress>)|
	(firstname|givenname <String>)|
	(gal|includeinglobaladdresslist <Boolean>)|
	(gender clear|(female|male|unknown|(other <String>) [addressmeas <String>]))|
	(ipwhitelisted <Boolean>)|
	(language clear|<LanguageList>)|
	(lastname|familyname <String>)|
	(note clear|([text_html|text_plain] <String>|(file <FileName> [charset <Charset>])))|
	(org|ou|orgunitpath <OrgUnitPath>)
	(password random|<Password>)|
	(recoveryemail <EmailAddress>)|
	(recoveryphone <string>)|
	(suspended <Boolean>)|
	(<SchemaName>.<FieldName> [multivalued|multivalue|value|multinonempty [type home|other|work|(custom <String>)]] <String>)
<UserMultiAttribute> ::=
	(address clear|(type home|other|work|(custom <String>) [unstructured|formatted <String>] [pobox <String>] [extendedaddress <String>] [streetaddress <String>]
		[locality <String>] [region <String>] [postalcode <String>] [country <String>] [countrycode <String>] notprimary|primary))|
	(otheremail clear|(home|other|work|<String> <String>))|
	(externalid clear|(account|customer|login_id|network|organization|<String> <String>))|
	(im clear|(type home|other|work|(custom <String>) protocol aim|gtalk|icq|jabber|msn|net_meeting|qq|skype|yahoo|(custom_protocol <String>) <String> [notprimary|primary]))|
	(keyword clear|(mission|occupation|outlook|(custom <string>) <String>))|
	(location clear|(type default|desk|<String> area <String> [building|buildingid <String>] [floor|floorname <String>] [section|floorsection <String>] [desk|deskcode <String>] endlocation))|
	(organization clear|([type domain_only|school|unknown|work] [customtype <String>] [name <String>] [title <String>] [department <String>] [symbol <String>]
		[costcenter <String>]  [location <String>] [description <String>] [domain <String>] [fulltimeequivalent <Integer>] notprimary|primary))|
	(phone clear|([type assistant|callback|car|company_main|grand_central|home|home_fax|isdn|main|mobile|other|other_fax|pager|radio|telex|tty_tdd|work|work_fax|work_mobile|work_pager|(custom <String>)]
		[value <String>] notprimary|primary))|
	(posix clear|(username <String> uid <Integer> gid <Integer> [system|systemid <String>] [home|homedirectory <String>] [shell <String>]
		[gecos <String>] [os|operatingSystemType linux|unspecified|windows] [primary <Boolean>] endposix))|
	(relation clear|(admin_assistant|assistant|brother|child|domestic_partner|dotted-line_manager|exec_assistant|father|friend|manager|mother|parent|partner|referred_by|relative|sister|spouse|<String> <String>))|
	(sshkeys clear|(key <String> [expires <Integer>] endssh))|
	(website clear|(app_install_page|blog|ftp|home|home_page|other|profile|reservations|resume|work|<String> <URL> [notprimary|primary]))
<UserAttribute> ::=
	<UserBasicAttribute>|
	<UserMultiAttribute>

gam checkconnection
gam version [check|checkrc|simple|extended] [timeoffset] [location <HostName>]
gam help

gam batch <FileName>|- [charset <Charset>]
gam csv <FileName>|- [charset <Charset>] gam <GAM argument list>
gam csvtest <FileName>|- [charset <Charset>] gam <GAM argument list>

You can make substitutions in <GAMArgumentList> with values from the CSV file.
An argument containing exactly ~xxx is replaced by the value of field xxx from the CSV file
An argument containing instances of ~~xxx~~ has xxx replaced by the value of field xxx from the CSV file

Example: gam csv Users.csv gam update user "~primaryEmail" address type work unstructured "~~Street~~, ~~City~~, ~~State~~ ~~ZIP~~"
Each user (~primaryEmail, e.g. foo@bar.com) would have their work address updated

gam create gcpfolder <String>

gam create project [<EmailAddress>] [<ProjectID>]
gam create project [admin <EmailAddress>] [project <ProjectID>] [parent <String>]
gam use project [<EmailAddress>] [<ProjectID>]
gam use project [admin <EmailAddress>] [project <ProjectID>]
gam update project [<EmailAddress>] [gam|<ProjectID>|(filter <String>)]
gam delete project [<EmailAddress>] [gam|<ProjectID>|(filter <String>)]
gam show projects [<EmailAddress>] [all|gam|<ProjectID>|(filter <String>)]
gam print projects [<EmailAddress>] [all|gam|<ProjectID>|(filter <String>)] [todrive]

gam rotate sakey|sakeys [retain_none|retain_existing|replace_current]
	[(algorithm KEY_ALG_RSA_1024|KEY_ALG_RSA_2048)|(localkeysize 1024|2048|4096)]
gam delete sakey|sakeys <ServiceAccountKeyList>+ [doit]
gam show sakey|sakeys [all|system|user]

gam oauth|oauth2 create|request [<EmailAddress>]
gam oauth|oauth2 create|request [admin <EmailAddress>] [scope|scopes <APIScopeURLList>]
gam oauth|oauth2 delete|revoke
gam oauth|oauth2 info|verify [accesstoken <AccessToken>] [idtoken <IDToken>] [showsecret]
gam oauth|oauth2 refresh

gam <UserTypeEntity> check serviceaccount [scope|scopes <APIScopeURLList>]

gam yubikey resetpiv [yubikeyserialnumber <Number>]
gam rotate sakey yubikey yubikey_pin yubikey_slot AUTHENTICATION yubikeyserialnumber <Number>

gam create [gcpserviceaccount|signjwtserviceaccount]
gam enable apis [auto|manual]

gam whatis <EmailItem>

<ResoldCustomerAttribute> ::=
	(email|alternateemail <EmailAddress>)|
	(contact|contactname <String>)|
	(phone|phonenumber <String>)|
	(name|organizationname <String>)|
	(address|address1|addressline1 <String>)|
	(address2|addressline2 <String>)|
	(address3|addressline3 <String>)|
	(city|locality <String>)|
	(state|region <String>)|
	(zipcode|postal|postalcode <String>)|
	(country|countrycode <String>)

gam create resoldcustomer <CustomerDomain> (customer_auth_token <String>) <ResoldCustomerAttribute>+
gam update resoldcustomer <CustomerID> [customer_auth_token <String>] <ResoldCustomerAttribues>+
gam info resoldcustomer <CustomerID>

gam create resoldsubscription <CustomerID> (sku <SKUID>)
	 (plan annual_monthly_pay|annual_yearly_pay|flexible|trial) (seats <NumberOfSeats> <MaximumNumberOfSeats>)
	 [customer_auth_token <String>] [deal <String>] [purchaseorderid <String>]
gam update resoldsubscription <CustomerID> <SKUID>
	activate|suspend|startpaidservice|
	(renewal auto_renew_monthly_pay|auto_renew_yearly_pay|cancel|renew_current_users_monthly_pay|renew_current_users_yearly_pay|switch_to_pay_as_you_go)|
	(seats <NumberOfSeats> [<MaximumNumberOfSeats>])|
	(plan annual_monthly_pay|annual_yearly_pay|flexible|trial [deal <String>] [purchaseorderid <String>] [seats <NumberOfSeats> [<MaximumNumberOfSeats>]])
gam delete resoldsubscription <CustomerID> <SKUID> cancel|downgrade|transfer_to_direct
gam info resoldsubscriptions <CustomerID> [customer_auth_token <String>]

<ActivityApplicationName> ::=
	access_transparency|
	admin|
	calendar|
	chat|
	chrome|
	context_aware_access|
	data_studio|
	drive|
	gcp|
	gplus|
	groups|
	groups_enterprise|
	jamboard|
	keep|
	login|
	meet|
	mobile|
	rules|
	saml|
	token|
	user_accounts

<ReportsApp> ::=
	accounts|
	app_maker|
	apps_scripts|
	calendar|
	classroom|
	cros|
	device_management|
	drive|
	gmail|
	meet|
	mobile|
	sites
<ReportsAppList> ::= "<ReportsApp>(,<ReportsApp>)*"

gam report usageparameters customer|user [todrive]
gam report usage user [todrive]
	[<UserTypeItem>)|(orgunit|org|ou <OrgUnitPath>)]
	[startdate <Date>] [enddate <Date>]
	[skipdates <Date>[:<Date>](,<Date>[:<Date>])*] [skipdaysofweek <DayOfWeek>(,<DayOfWeek>)*]
	[fields|parameters <String>]
gam report usage customer [todrive]
	[startdate <Date>] [enddate <Date>]
	[skipdates <Date>[:<Date>](,<Date>[:<Date>])*] [skipdaysofweek <DayOfWeek>(,<DayOfWeek>)*]
	[fields|parameters <String>]

gam report users|user [todrive]
	[(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath>)]
	[date <Date>] [fulldatarequired all|<ReportsAppList>]
	[filter|filters <String>] [fields|parameters <String>]
gam report customers|customer|domain [todrive]
	[date <Date>] [fulldatarequired all|<ReportsAppList>]
	[fields|parameters <String>]
gam report <ActivityApplicationName> [todrive]
	[(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath>)]
	[start <Time>] [end <Time>]
	[filter|filters <String>] [event <String>] [ip <String>]
	[groupidfilter <String>]

gam create admin <UserItem> <RoleItem> customer|(org_unit <OrgUnitItem>) [condition securitygroup|nonsecuritygroup]
gam delete admin <RoleAssignmentId>
gam print admins [todrive] [user <UserItem>] [role <RoleItem>] [condition]
gam create adminrole <String> privileges all|all_ou|<PrivilegesList> [description <String>]
gam update adminrole <RoleItem> [name <String>] [privileges all|all_ou|<PrivilegesList>] [description <String>]
gam delete adminrole <RoleItem>
gam print adminroles|roles [todrive]

gam create domain <DomainName>
gam update domain <DomainName> primary
gam delete domain <DomainName>
gam info domain [<DomainName>]
gam print domains [todrive]

gam create domainalias|aliasdomain <DomainAlias> <DomainName>
gam delete domainalias|aliasdomain <DomainAlias>
gam info domainalias|aliasdomain <DomainAlias>
gam print domainaliases|aliasdomains [todrive]

<CustomerAttribute> ::=
	(primary <DomainName>)|
	(adminsecondaryemail|alternateemail <EmailAddress>)|
	(contact|contactname <String>)|
	(language <LanguageCode>)|
	(phone|phonenumber <String>)|
	(name|organizationname <String>)|
	(address|address1|addressline1 <String>)|
	(address2|addressline2 <String>)|
	(address3|addressline3 <String>)|
	(city|locality <String>)|
	(state|region <String>)|
	(zipcode|postal|postalcode <String>)|
	(country|countrycode <String>)

gam update customer <CustomerAttribute>*

gam info customer

<DataTransferService> ::=
	calendar|
	currents|
	datastudio|"google data studio"|
	googledrive|gdrive|drive|"drive and docs"
<DataTransferServiceList> ::= "<DataTransferService>(,<DataTransferService>)*"

gam create datatransfer|transfer <OldOwnerID> <DataTransferServiceList> <NewOwnerID> (<ParameterKey> <ParameterValue>)*
gam info datatransfer|transfer <TransferID>
gam print datatransfers|transfers [todrive] [olduser|oldowner <UserItem>] [newuser|newowner <UserItem>]
	[status completed|failed|inprogress]

gam print transferapps

gam create org|ou <Name> [description <String>] [parent <OrgUnitPath>] [inherit|noinherit]
gam update org|ou <OrgUnitPath> [name <Name>] [description <String>] [parent <OrgUnitPath>] [inherit|noinherit]
gam update org|ou <OrgUnitPath> add|move <CrOSTypeEntity>|<UserTypeEntity>
gam delete org|ou <OrgUnitPath>
gam info org|ou <OrgUnitPath> [nousers|notsuspended|suspended] [children|child]
gam print orgs|ous [todrive] [toplevelonly] [from_parent <OrgUnitPath>] [allfields|(fields <OrgUnitFieldNameList>)]

gam create alias|nickname <EmailAddress> user|group|target <UniqueID>|<EmailAddress> [verifynotinvitable]
gam update alias|nickname <EmailAddress> user|group|target <UniqueID>|<EmailAddress> [notargetverify]
gam delete alias|nickname [user|group|target] <UniqueID>|<EmailAddress>
gam info alias|nickname <EmailAddress>
gam print aliases|nicknames [todrive] [shownoneditable] [nogroups] [nousers] [(query <QueryUser>)|(queries <QueryUserList)]

gam calendar <CalendarItem> add <CalendarACLRole> ([user] <EmailAddress>)|(group <EmailAddress>)|(domain <DomainName>)|domain|default [sendnotifications <Boolean>]
gam calendar <CalendarItem> update <CalendarACLRole> ([user] <EmailAddress>)|(group <EmailAddress>)|(domain <DomainName>)|domain|default [sendnotifications <Boolean>]
gam calendar <CalendarItem> del|delete ([user] <EmailAddress>)|(group <EmailAddress>)|(domain <DomainName>)|domain|default
gam calendar <CalendarItem> del|delete id <CalendarACLRuleID>
gam calendar <CalendarItem> showacl
gam calendar <CalendarItem> printacl [todrive]

<EventNotificationAttribute> ::=
	notifyattendees|(sendnotifications <Boolean>)|(sendupdates all|enternalonly|none)

The following attributes are equivalent:
	notifyattendees - sendupdates all
	sendnotifications false - sendupdates none
	sendnotifications true - sendupdates all

<EventAttribute> ::=
	anyonecanaddself|
	(attendee <EmailAddress>)|
	available|
	(colorindex|colorid <EventColorIndex>)
	(description <String>)|
	(end (allday <Date>)|<Time>)|
	(guestscaninviteothers <Boolean>)|
	guestscantinviteothers|
	(guestscanmodify <Boolean>)|
	(guestscanseeothers <Boolean>)|
	guestscantseeothers|
	hangoutsmeet|
	(location <String>)|
	(noreminders| (reminder <Number> email|popup|sms))|
	(optionalattendee <EmailAddress>)|
	(privateproperty <PropertyKey> <PropertyValue>)|
	(recurrence <RRULE, EXRULE, RDATE and EXDATE line>)|
	(sharedproperty <PropertyKey> <PropertyValue>)|
	(source <String> <URL>)|
	(start (allday <Date>)|<Time>)|
	(summary <String>)|
	tentative|
	(timezone <Timezone>)|
	(visibility default|public|prvate)

<EventUpdateAttribute> ::=
	<EventAttribute>|
	(removeattendee <EmailAddress>)|
	(replacedescription <RegularExpression> <String>)

<EventSelectProperty:> ::=
	(after <Time>)|
	(before <Time>)|
	includeeleted|
	includehidden|
	(query <QueryCalendar>)|
	(updatedmin <Time>)

<EventDisplayProperty> ::=
	(timezone <TimeZone>)

gam calendar <CalendarItem> addevent [id <String>] <EventAttribute>+ [<EventNotificationAttribute>]
gam calendar <CalendarItem> deleteevent id|eventid <EventID> [doit] [<EventNotificationAttribute>]
gam calendar <CalendarItem> moveevent id|eventid <EventID> [doit] [<EventNotificationAttribute>]
gam calendar <CalendarItem> updateevent <EventID> <EventUpdateAttribute>+ [<EventNotificationAttribute>]
gam calendar <CalendarItem> wipe
gam calendar <CalendarItem> printevents <EventSelectProperty>* <EventDisplayProperty>* [todrive]

<CalendarSettings> ::=
	summary <String>|
	description <String>|
	location <String>|
	timezone <TimeZone>

gam calendar <CalendarItem> modify <CalendarSettings>+

<BrowserAttribute> ::=
	(assetid <String>)|
	(location <String>)|
	(notes <String>)|
	(user <String>

<BrowserFieldName> ::=
	annotatedAssetId|
	annotatedLocation|
	annotatedNotes|
	annotatedUser|
	browsers|
	browserVersions|
	deviceId|
	extensionCount|
	installedBrowserVersion|
	lastActivityTime|
	lastDeviceUser|
	lastDeviceUsers|
	lastPolicyFetchTime|
	lastRegistrationTime|
	lastStatusReportTime|
	machineextensionpolicies|
	machineName|
	machinePolicies|
	orgUnitPath|
	osArchitecture|
	osPlatform|
	osPlatformVersion|
	osVersion|
	orgUnitPath|
	policyCount|
	safeBrowsingClickThroughCount|
	serialNumber|
	virtualDeviceId
<BrowserFieldNameList> ::= "<BrowseFieldName>(,<BrowserFieldName>)*"

gam move browsers ou|org|orgunit <OrgUnitPath>
	((ids <DeviceIDList>) |
	 (query <QueryBrowser>) |
	 (file  <FileName>) |
	 (csvfile <FileName>:<FieldName>))
	[batchsize <Integer>]
gam update browser <DeviceID> <BrowserAttibute>+

gam info browser <DeviceID>
	[basic|full]
	[fields <BrowserFieldNameList>]

gam print browsers [todrive]
	[ou|org|orgunit <OrgUnitPath>] [query <QueryBrowser>]
	[projection basic|full]
	[fields <BrowserFieldNameList>]
	[sortheaders]

gam create browsertoken
	[ou|org|orgunit <OrgUnitPath>] [expire|expires <Time>]
gam revoke browsertoken <BrowserTokenPermanentID>

<BrowserTokenFieldName> ::=
	createTime|
	creatorId|
	customerId|
	expireTime|
	orgUnitPath|
	revokeTime|
	revokerId|
	state|
	token|
	tokenPermanentId
<BrowserTokenFieldNameList> ::= "<BrowseTokenFieldName>(,<BrowserTokenFieldName>)*"

gam show browsertokens
	[query <QueryBrowserToken>]
	[fields <BrowserTokenFieldNameList>]

gam print browsertokens [todrive]
	[query <QueryBrowserToken>]
	[fields <BrowserTokenFieldNameList>]
	[sortheaders]

<CAAAllowedEncryptionStatus> ::=
	encryption_unsupported |
	encrypted |
	unencrypted
<CAAAllowedEncryptionStatusList> ::= "<CAAAllowedEncryptionStatus>(,<CAAAllowedEncryptionStatus>)"

<CAAAllowedDeviceManagementLevel> ::=
	basic |
	advanced|complete |
	none
<CAAAllowedDeviceManagementLevelList> ::= "<CAAAllowedDeviceManagementLevel>(,<CAAAllowedDeviceManagementLevel>)"

<CAACombiningFunction> ::=
	and |
	or

<CAAIPSubNetwork> ::=
	<CIDRnetmask>
<CAAIPSubNetworkList> ::= "<CAAIPSubNetwork>(,<CAAIPSubNetwork>)"

<CAAMember> ::=
	user:<EmailAddress> |
	serviceAccount:<EmailAddress>
<CAAMemberList> ::= "<CAAMember>(,<CAAMember>)"

<CAAOsType> ::=
	DESKTOP_MAC |
	DESKTOP_WINDOWS |
	DESKTOP_LINUX |
	DESKTOP_CHROME_OS |
	VERIFIED_DESKTOP_CHROME_OS |
	ANDROID |
	IOS

<CAAOsConstraint> ::=
	<CAAOsType> |
	<CAAOsType>:<String>.<String>.<String>
<CAAOsConstraintList> ::= "<CAAOsConstraint>(,<CAAOsConstraint>)"

<CAARegion> ::=
	<Character><Character>
<CAARegionList> ::= "<CAARegion>(,<CAARegion>)"
	See: https://www.iso.org/obp/ui/#search

<CAADevicePolicyAttribute> ::=
	(requirescreenlock <Boolean>) |
	(allowedencryptionstatuses <CAAAllowedEncryptionStatusList>) |
	(osconstraints <CAAOsConstraintList>) |
	(alloweddevicemanagementlevels <CAAAllowedDeviceManagementLevelList>) |
	(requireadminapproval <Boolean>) |
	(requirecorpowned <Boolean>)

<CAAConditionAttribute> ::=
	(ipsubnetworks <CAAIPSubNetworkList>) |
	(devicepolicy <CAADevicePolicyAttribute> enddevicepolicy) |
	(requiredaccesslevels <StringList>) |
	(negate <Boolean>) |
	(members <CAARegionList>) |
	(regions <CAAMemberList>)
	
<CAABasicAttribute> ::+
	(combiningfunction <CAACombiningFunction>) |
	(condition <CAAConditionAttribute>+ endcondition)

gam create caalevel <String> (basic <CAABasicAttribute>+)|(custom <String>)
gam update caalevel <CAALevelName> (basic <CAABasicAttribute>+)|(custom <String>)
gam delete caalevel <CAALevelName>
gam show caalevels
gam print caalevels [todrive]

gam print chatspaces [todrive]
gam print chatmembers space <ChatSpace> [todrive]
gam create chatmessage space <ChatSpace> [thread <String>]
	(text <String>)|(textfile <FileName> [charset <CharSet>])
gam delete chatmessage name <String>
gam update chatmessage name <String>
	(text <String>)|(textfile <FileName> [charset <CharSet>])

<CrOSAction> ::=
	deprovision_same_model_replace|
	deprovision_different_model_replace|
	deprovision_retiring_device|
	deprovision_upgrade_transfer|
	disable|
	reenable|
	pre_provisioned_disable|
	pre_provisioned_reenable

gam update cros <CrOSEntity> action <CrOSAction> [acknowledge_device_touch_requirement]

<CrOSCommand>
	wipe_users|
	remote_powerwash|
	reboot|
	set_volume <0-100>|
	take_a_screenshot

gam issuecommand cros <CrOSEntity> command <CrOSCommand> [times_to_check_status <0-1000+>] [doit]
gam getcommand cros <CrOSEntity> commandid <CommandID> [times_to_check_status <0-1000+>]

gam update cros <CrOSEntity> <CrOSAttribute>+
gam info cros <CrOSEntity> [nolists] [listlimit <Number>] [start <Date>] [end <Date>]
	[basic|full|allfields] <CrOSFieldName>* [fields <CrOSFieldNameList>] [downloadfile latest|<Time>] [targetfolder <FilePath>]

gam print cros [todrive] [(query <QueryCrOS>)|(queries <QueryCrOSList>)] [limittoou|cros_ou|cros_ou_and_children <OrgUnitItem>]
	[orderby <CrOSOrderByFieldName> [ascending|descending]] [nolists|<CrOSListFieldName>*] [listlimit <Number>] [start <Date>] [end <Date>]
	[basic|full|allfields] <CrOSFieldName>* [fields <CrOSFieldNameList>] [sortheaders]
gam <CrOSTypeEntity> print

Summary of printing:
gam print cros
Prints a header row and deviceId for all CrOS devices.
gam <CrOSTypeEntity> print
Prints no header row and deviceId for specified CrOS devices.
gam print cros ... basic|full
Prints a header row and selected fields for specified CrOS devices.

The basic argument outputs these column headers: deviceId,annotatedAssetId,annotatedLocation,annotatedUser,lastSync,notes,serialNumber,status.
The allfields/full arguments output all column headers including six headers: activeTimeRanges, cpuStatusReports, deviceFiles, diskVolumeReports, recentUsers and systemRamFreeReports
that repeat with multiple subvalues each, yielding a large number of columns that make the output hard to process.
The nolists argument suppresses these six headers; if you want these headers in a more manageable form specify <CrOSListFieldName> values as desired.
One set of values for all <CrOSListFieldName> fields specified will be output on a separate row with all of the other headers.

The listlimit <Number> argument limits the number of repetitions to <Number>; if not specified or <Number> equals zero, there is no limit.
The start <Date> and end <Date> arguments constrain activeTimeRanges, cpuStatusReports, deviceFiles and systemRamFreeReports to fall within the specified <Dates>.

gam print crosactivity [todrive] [(query <QueryCrOS>)|(queries <QueryCrOSList>)] [limittoou|cros_ou|cros_ou_and_children <OrgUnitItem>]
	[recentusers] [timeranges] [both] [devicefiles] [all] [listlimit <Number>] [start <Date>] [end <Date>] [delimiter <Character>]

The basic column headers are: deviceId,annotatedAssetId,annotatedLocation,serialNumber,orgUnitPath.

If recentusers is specified, all of the recent users email addresses, separated by the delimiter <Character>,
with header recentUsers.email, are output with the basic headers.

If timeranges is specified, for each time range entry, activeTimeRanges.date and activeTimeRanges.duration and activeTimeRanges.minutes
are output on a separate row with the basic headers.

If devicefiles is specified, for each deviceFile, deviceFiles.type and deviceFiles.createTime
are output on a separate row with the basic headers.

The both option specifies recentusers and timeranges.
The all option specifies recentusers, timeranges and devicefiles..
The default is to include recentusers and timeranges.

The listlimit <Number> argument limits the number of recent users, time ranges and device files to <Number>; if not specified or <Number> equals zero, there is no limit.
The start <Date> and end <Date> arguments filter the time ranges.
Delimiter defaults to comma.

gam info crostelemetry <SerialNumber>
	<CrOSTelemetryFieldName>* [fields <CrOSTelemetryFieldNameList>]
	[storagepercentonly] [showorgunitpath]
gam show crostelemetry
	[(ou|org|orgunit <OrgUnitItem>)|(cros_sn <SerialNumber>)|(filter <String>)]
	<CrOSTelemetryFieldName>* [fields <CrOSTelemetryFieldNameList>]
	[storagepercentonly] [showorgunitpath]
gam print crostelemetry [todrive]
	[(ou|org|orgunit <OrgUnitItem>)|(cros_sn <SerialNumber>)|(filter <String>)]
	<CrOSTelemetryFieldName>* [fields <CrOSTelemetryFieldNameList>]
	[storagepercentonly] [showorgunitpath]

gam print chromeapps [todrive]
	[ou|org|orgunit <OrgUnitItem>]
	[filter <String>]
	[orderby appname|apptype|installtype|numberofpermissions|totalinstallcount]

gam print chromeappdevices [todrive]
	appid <AppID> apptype extension|app|theme|hostedapp|androidapp
	[ou|org|orgunit <OrgUnitItem>]
	[start <Date>] [end <Date>]
	[orderby deviceid|machine]

gam print chromeaues [todrive]
	[ou|org|orgunit <OrgUnitItem>]
	[minauedate <Date>] [maxauedate <Date>]

gam print chromeneedsattn [todrive]
	[ou|org|orgunit <OrgUnitItem>]

gam print chromeversions [todrive]
	[ou|org|orgunit <OrgUnitItem>]
	[start <Date>] [end <Date>] [recentfirst]

<ChromePlatformType>> ::=
	all'|
	android'|
	ios'|
	lacros'|
	linux'|
	mac'|
	macarm64'|
	sebview'|
	win'|
	win64'
<ChromeChannelType> ::=
	beta'|
	canary'|
	canaryasan'|
	dev'|
	stable'
<ChromeVersionsOrderByFieldName> ::=
	channel|
	name|
	platform|
	version|
<ChromeReleasesOrderByFieldName> ::=
	channel|
	endtime|
	fraction|
	name|
	platform|
	starttime|
	version

gam print chromehistory platforms [todrive]
gam print chromehistory channels [todrive]
	[platform <ChromePlatformType>]
gam print chromehistory versions [todrive]
	[platform <ChromePlatformType>] [channel <ChromeChannelType>]
	[filter <String>]
	(orderby <ChromeVersionsOrderByFieldName> [ascending|descending])*
gam print chromehistory releases [todrive]
	[platform <ChromePlatformType>] [channel <ChromeChannelType>] [version <String>]
	[filter <String>]
	(orderby <ChromeReleasessOrderByFieldName> [ascending|descending])*

gam delete chromepolicy <SchemaName>+ ou|org|orgunit <OrgUnitItem> [(printerid <PrinterID>)|(appid <AppID>)]
gam update chromepolicy (<SchemaName> (<Field> <Value>)+)+ ou|org|orgunit <OrgUnitItem> [(printerid <PrinterID>)|(appid <AppID>)]
gam show chromepolicy ou|org|orgunit <OrgUnitItem> [(printerid <PrinterID>)|(appid <AppID>)] [namespace <NamespaceList>]
gam show chromeschema [filter <String>]

<DeviceID> ::= devices/<String>
<DeviceType> ::= android|chrome_os|google_sync|ios|linux|mac_os|windows
<DeviceUserID> ::= devices/<String>/deviceUsers/<String>
<DeviceOrderbyFieldName> ::=
	createtime|devicetype|lastsynctime|model|osversion|serialnumber

gam create device serialnumber <String> devicetype <DeviceType> [assetid <String>]
gam info device [id] <DeviceID>
gam delete device [id] <DeviceID>
gam cancelwipe device [id] <DeviceID>
gam wipe device [id] <DeviceID>
gam print devices [todrive] [filter|query <QueryDevice>]
	[orderby <DeviceOrderByFieldName> [ascending|descending]]
	[company|personal|nocompanydevices|nopersonaldevices]
	[nodeviceusers]
gam sync devices [filter|query <QueryDevice>]
	csvfile <FileName>
	(devicetype_column <String>)|(static_devicetype <DeviceType>)
	serialnumber_column <String>
	[assettag_column <String>]
	[unassigned_missing_action delete|wipe|donothing]
	[assigned_missing_action delete|wipe|donothing]

gam approve deviceuser [id] <DeviceUserID>
gam block deviceuser [id] <DeviceUserID>
gam delete deviceuser [id] <DeviceUserID>
gam cancelwipe deviceuser [id] <DeviceUserID>
gam wipe deviceuser [id] <DeviceUserID>

gam info deviceuserstate [id] <DeviceUserID> [clientid <String>]
gam update deviceuserstate [id] <DeviceUserID> [clientid <String>]
	[customid <String>] [assettags clear|<AssetTagList>]
	[compliantstate|compliancestate compliant|noncompliant] [managedstate clear|managed|unmanaged]
	[healthscore very_poor|poor|neutral|good|very_good] [scorereason clear|<String>]
	(customvalue (bool <Boolean>)|(number <Integer>)|(string <String>))*

gam update mobile <MobileID>|query:<QueryMobile> action <MobileAction> [doit] [if_users|match_users <UserTypeEntity>]
gam delete mobile <MobileID>
gam info mobile <MobileID>
gam print mobile [todrive] [(query <QueryMobile>)|(queries <QueryMobileList>)] [basic|full] [orderby <MobileOrderByFieldName> [ascending|descending]]
	fields <MobileFieldNameList>] [delimiter <Character>] [appslimit <Number>] [listlimit <Number>]

<PrinterAttribute> ::=
	(description <String>)|
	(displayname <String>)|
	(makeandmodel <String>)|
	(ou|org|orgunit|orgunitid <OrgUnitItem>)|
	(ownerid <EmailAddress>)|
	(uri <String>)|
	(driverless|usedriverlessconfig)

gam create printer <PrinterAttribute>+
gam update printer <PrinterID> <PrinterAttribute>+
gam delete printer <PrinterIDList>|(file <FileName>)|(csvfile <FileName>:<FieldName>)

gam info printer <PrinterID>
gam print printers [todrive] [filter <String>]
gam print printermodels [todrive] [filter <String>]

gam create cigroup <EmailAddress> <CIGroupAttribute>*
	[makeowner] [alias|aliases <AliasList>] [dynamic <QueryDynamicGroup>]
gam update cigroup <GroupItem> [email <EmailAddress>] <CIGroupAttribute>*
	[security|dynamicsecurity] [dynamic <QueryDynamicGroup>]
	[memberrestrictions <QueryMemberRestrictions>]
gam update cigroup <GroupItem> add [owner|manager|member] [notsuspended|suspended] [expires never|<Time>] <UserTypeEntity>
gam update cigroup <GroupItem> delete|remove [owner|manager|member] [notsuspended|suspended] <UserTypeEntity>
gam update cigroup <GroupItem> sync [owner|manager|member] [notsuspended|suspended] [expires never|<Time>] <UserTypeEntity>
gam update cigroup <GroupItem> update [owner|manager|member] [notsuspended|suspended] [expires never|<Time>] <UserTypeEntity>
gam update cigroup <GroupItem> clear [member] [manager] [owner] [notsuspended|suspended]
gam delete cigroup <GroupItem>
gam info cigroup <GroupItem> [nousers] [nojoindate] [showupdatedate] [membertree] [nosecurity|nosecuritysettings]

gam print cigroups [todrive]
	[enterprisemember <UserItem>]
	[members|memberscount] [managers|managerscount] [owners|ownerscount]
	[memberrestrictions]
	[delimiter <Character>] [sortheaders]

gam info cimember <UserItem> <GroupItem>
gam print cigroup-members|cigroups-members [todrive]
	[(enterprisemember <UserItem>)|(cigroup <GroupItem>)]
	[roles <GroupRoleList>]

gam create group <EmailAddress> <GroupAttribute>* [verifynotinvitable]
gam update group <GroupItem> [email <EmailAddress>] <GroupAttribute>* [verifynotinvitable]
gam update group <GroupItem> add [owner|manager|member] [notsuspended|suspended] [allmail|daily|digest|none|nomail] <UserTypeEntity>
gam update group <GroupItem> delete|remove [owner|manager|member] <UserTypeEntity>
gam update group <GroupItem> sync [owner|manager|member] [notsuspended|suspended] [allmail|daily|digest|none|nomail] <UserTypeEntity>
gam update group <GroupItem> update [owner|manager|member] [notsuspended|suspended] [allmail|daily|digest|none|nomail] <UserTypeEntity>
gam update group <GroupItem> clear [member] [manager] [owner] [notsuspended|suspended]
gam delete group <GroupItem>
gam info group <GroupItem> [nousers] [noaliases] [groups]

gam print groups [todrive] ([domain <DomainName>] ([member <UserItem>]|[query <QueryGroup>])
	[maxresults <Number>] [allfields|([settings] <GroupFieldName>* [fields <GroupFieldNameList>])]
	[members|memberscount] [managers|managerscount] [owners|ownerscount]
	[delimiter <Character>] [sortheaders]

gam info member <UserItem> <GroupItem>
gam print group-members|groups-members [todrive]
	([domain <DomainName>] ([member <UserItem>]|[query <QueryGroup>]))|[group|group_ns|group_susp <GroupItem>] [notsuspended|suspended]
	[roles <GroupRoleList>] [membernames] [fields <MembersFieldNameList>]
	[includederivedmembership]

<SSOProfileDisplayName> ::= <String>
<SSOProfileName> ::= id:inboundSamlSsoProfiles/<String>
<SSOProfileItem> ::= <SSOProfileDisplayName>|<SSOProfileName>
<SSOProfileItemList> ::= "<SSOProfileItem>(,<SSOProfileItem>)*"

gam create inboundssoprofile [name <SSOProfileDisplayName>]
	[entityid <String>] [loginurl <URL>] [logouturl <URL>] [changepasswordurl <URL>]
	[returnnameonly]
gam update inboundssoprofile <SSOProfileItem>
	[entityid <String>] [loginurl <URL>] [logouturl <URL>] [changepasswordurl <URL>]
	[returnnameonly]
gam delete inboundssoprofile <SSOProfileItem>
gam info inboundssoprofile <SSOProfileItem>
gam show inboundssoprofiles
gam print inboundssoprofiles [todrive]

<SSOCredentialsName> ::= [id:]inboundSamlSsoProfiles/<String>/idpCredentials/<String>

gam create inboundssocredential profile <SSOProfileItem>
	(pemfile <FileName>)|(generatekey [keysize 1024|2048|4096]) [replaceolddest]
gam delete inboundssocredential <SSOCredentialsName>
gam show inboundssocredentials [profile|profiles <SSOProfileItemList>]
gam print inboundssocredentials [profile|profiles <SSOProfileItemList>] [todrive]

<SSOAssignmentSelector> ::=
	groups/<String> |
	group:<EmailAddress> |
	orgunits/<String> |
	orgunit:<OrgUnitPath>

gam create inboundssoassignment (group <GroupItem> rank <Number>)|(ou|org|orgunit <OrgUnitItem>)
	(mode sso_off)|(mode saml_sso profile <SSOProfileItem>)(mode domain_wide_saml_if_enabled) [neverredirect]
gam update inboundssoassignment [(group <GroupItem> rank <Number>)|(ou|org|orgunit <OrgUnitItem>)]
	[(mode sso_off)|(mode saml_sso profile <SSOProfileItem>)(mode domain_wide_saml_if_enabled)] [neverredirect]
gam delete inboundssoassignment <SSOAssignmentSelector>
gam info inboundssoassignment <SSOAssignmentSelector>
gam show inboundssoassignments
gam print inboundssoassignments [todrive]

gam send userinvitation <EmailAddress>
gam cancel userinvitation <EmailAddress>
gam check userinvitation|isinvitable <EmailAddress>
gam info userinvitation <EmailAddress>
gam print userinvitations [todrive]
	[state notyetsent|invited|accepted|declined]]
	[orderby email|updatetime [ascending|descending]]
gam <UserTypeEntity> check isinvitable [todrive]

gam print licenses [todrive] [(products|product <ProductIDList>)|(skus|sku <SKUIDList>)|allskus|gsuite] [countsonly]
gam show license|licenses|licence|licences [(products|product <ProductIDList>)|(skus|sku <SKUIDList>)|allskus|gsuite]

gam create building <Name> <BuildingAttribute>*
gam update building <BuildIngID> <BuildingAttribute>*
gam delete building <BuildingID>
gam info building <BuildingID>
gam print buildings [todrive]

gam create feature name <Name>
gam update feature <Name> name <Name>
gam delete feature <Name>
gam print features [todrive]

gam show oushareddrives|orgunitshareddrives [ou|org|orgunit <OrgUnitItem>]
gam print oushareddrives|orgunitshareddrives [todrive] [ou|org|orgunit <OrgUnitItem>]

gam create resource <ResourceID> <Name> <ResourceAttribute>*
gam update resource <ResourceID> <ResourceAttribute>*
gam delete resource <ResourceID>
gam info resource <ResourceID>
gam print resources [todrive] [allfields] <ResourceFieldName>* [query <String>]

gam create schema|schemas <SchemaName> <SchemaFieldDefinition>+
gam update schema <SchemaName> <SchemaFieldDefinition>* (deletefield <FieldName>)*
gam delete schema <SchemaName>
gam info schema <SchemaName>
gam show schema|schemas
gam print schema|schemas

gam create user <EmailAddress> <UserAttribute>* [verifynotinvitable]
gam update user <UserItem> <UserAttribute>* [clearschema <SchemaName>] [clearschema <SchemaName>.<FieldName>] [verifynotinvitable]
gam delete user <UserItem>
gam undelete user <UserItem> [org|ou <OrgUnitPath>]
gam info user [<UserItem>]
	[quick] [noaliases] [nogroups] [nolicenses|nolicences] [noschemas]
	[skus|sku <SKUIDList>] [grouptree]
	[userview] <UserFieldName>* [fields <UserFieldNameList>]
	[schemas|custom all|<SchemaNameList>]

Print fields for selected users; use domain, query/queries and deleted_only to select users to print;
if none of these options are specified, all users are printed.
The first column will always be primaryEmail; the remaining field names will be sorted if allfields, basic, full or sortheaders is specified;
otherwise, the remaining field names will appear in the order specified.

gam print users [todrive]
	([domain <DomainName>] [(query <QueryUser>)|(queries <QueryUserList>)]
	[limittoou <OrgUnitPath>] [deleted_only|only_deleted])
	[groups] [license|licenses|licence|licences] [emailpart|emailparts|username]
	[orderby <UserOrderByFieldName> [ascending|descending]]
	[userview] [allfields|basic|full | (<UserFieldName>* | fields <UserFieldNameList>)]
	[schemas|custom all|<SchemaNameList>])]
	[delimiter <Character>] [sortheaders]

gam create verify|verification <DomainName>
gam update verify|verification <DomainName> cname|txt|text|site|file
gam info verify|verification

gam create course [id|alias <CourseAlias>] <CourseAttribute>*
gam update course <CourseID> <CourseAttribute>+
gam delete course <CourseID>
gam info course <CourseID>
gam print courses [todrive] [teacher <UserItem>] [student <UserItem>] [states <CourseStateList>]
	[owneremail] [alias|aliases] [delimiter <Character>] [show all|students|teachers] [countsonly]
	[fields <CourseFieldNameList>] [skipfields <CourseFieldNameList>]

gam course <CourseID> add alias <CourseAlias>
gam course <CourseID> delete alias <CourseAlias>
gam course <CourseID> add teachers|students <UserItem>
gam course <CourseID> delete|remove teachers|students <UserItem>
gam course <CourseID> sync teachers|students <UserTypeEntity>
gam print course-participants [todrive] (course|class <CourseID>)*|([teacher <UserItem>] [student <UserItem>] [states <CourseStateList>]) [show all|students|teachers]

gam create guardian|guardianinvite|inviteguardian <EmailAddress> <StudentItem>
gam delete guardian|guardians <GuardianItem> <StudentItem> [invitation]
gam show guardian|guardians [invitedguardian <EmailAddress>] [student <StudentItem>] [invitations] [states <GuardianStateList>] [<UserTypeEntity>]
gam print guardian|guardians [todrive] [invitedguardian <EmailAddress>] [student <StudentItem>] [invitations [states <GuardianStateList>]] [<UserTypeEntity>]
gam cancel guardianinvitation|guardianinvitations <GuardianInvitationID> <StudentItem>

gam download storagebucket <URL>
gam copy storagebucket sourcebucket <URL> targetbucket <URL> [sourceprefix <String>] [targetprefix <String>]

gam create vaultexport|export matter <MatterItem> [name <name>] corpus <drive|mail|groups|hangouts_chat>
	(accounts <EmailAddressList>) | (orgunit|ou <OrgUnitPath>) | (teamdrives <TeamDriveList>) | (rooms <ChatRoomList>) | everyone
	[scope <all_data|held_data|unprocessed_data>]
	[terms <terms>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
	[excludedrafts <Boolean>] [format mbox|pst] [showconfidentialmodecontent <Boolean>]
	[includerooms]
	[driveversiondate <Date>|<Time>] [includeshareddrives|includeteamdrives] [includeaccessinfo <Boolean>]
	[region any|europe|us]
gam delete export <MatterItem> <ExportItem>
gam info export <MatterItem> <ExportItem>
gam print exports [todrive] [matters <MatterItemList>]
gam download export <MatterItem> <ExportItem> [noverify] [noextract] [targetfolder <FilePath>]
gam copy export <MatterItem> <ExportItem> targetbucket <URL> [targetprefix <String>]

gam create vaulthold|hold corpus drive|groups|mail matter <MatterItem> [name <String>] [query <QueryVaultCorpus>]
	[(accounts|groups|users <EmailItemList>) | (orgunit|ou <OrgUnit>)]
	[start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
gam update vaulthold|hold <HoldItem> matter <MatterItem> [query <QueryVaultCorpus>]
	[([addaccounts|addgroups|addusers <EmailItemList>] [removeaccounts|removegroups|removeusers <EmailItemList>]) | (orgunit|ou <OrgUnit>)]
	[start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
gam delete vaulthold|hold <HoldItem> matter <MatterItem>
gam info vaulthold|hold <HoldItem> matter <MatterItem>
gam print vaultholds|holds [todrive] [matters <MatterItemList>]
gam <UserTypeEntity> show vaultholds|holds

gam create vaultmatter|matter [name <String>] [description <string>]
	[collaborator|collaborators <CollaboratorItemList>]
gam update vaultmatter|matter <MatterItem> [name <String>] [description <string>]
	[addcollaborator|addcollaborators <CollaboratorItemList>] [removecollaborator|removecollaborators <CollaboratorItemList>]
gam update vaultmatter|matter <MatterItem> action close|reopen|delete|undelete
gam close vaultmatter|matter <MatterItem>
gam reopen vaultmatter|matter <MatterItem>
gam delete vaultmatter|matter <MatterItem>
gam undelete vaultmatter|matter <MatterItem>
gam info vaultmatter|matter <MatterItem>
gam print vaultmatters|matters [todrive] [basic|full] [matterstate open|closed|deleted]

gam print vaultcounts [todrive]
	matter <MatterItem> corpus mail|groups
	(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
	[scope <all_data|held_data|unprocessed_data>]
	[terms <terms>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
	[excludedrafts <Boolean>]
	[wait <Integer>]

gam print vaultcounts [todrive]
	matter <MatterItem> operation <String>
	[wait <Integer>]

gam <UserTypeEntity> delete|del asp|asps|applicationspecificpasswords all|<ASPIDList>
gam <UserTypeEntity> show asps|asp|applicationspecificpasswords

gam <UserTypeEntity> update backupcodes|backupcode|verificationcodes
gam <UserTypeEntity> delete|del backupcodes|backupcode|verificationcodes
gam <UserTypeEntity> show backupcodes|backupcode|verificationcodes

gam <UserTypeEntity> add calendar <CalendarItem> <CalendarAttribute>*
gam <UserTypeEntity> update calendar <CalendarItem>|primary <CalendarAttribute>+
gam <UserTypeEntity> delete|del calendar <CalendarItem>
gam <UserTypeEntity> show calendars
gam <UserTypeEntity> info calendar <CalendarItem>|primary
gam <UserTypeEntity> print calendars [todrive]

gam <UserTypeEntity> show calsettings
gam <UserTypeEntity> update calattendees csv <FileName> [dryrun] [start <Date>] [end <Date>] [allevents]
gam <UserTypeEntity> transfer seccals <UserItem> [keepuser] [sendnotifications <Boolean>]

gam <UserTypeEntity> print|show driveactivity [todrive] [fileid <DriveFileID>] [folderid <DriveFolderID>]
gam <UserTypeEntity> print|show drivesettings [todrive]
gam <UserTypeEntity> print|show filelist [todrive] [anyowner] [query <QueryDriveFile>] [fullquery <QueryDriveFile>]
	[allfields|<DriveFieldName>*] (orderby <DriveOrderByFieldName> [ascending|descending])*

gam <UserTypeEntity> show fileinfo <DriveFileID> [allfields|<DriveFieldName>*]
gam <UserTypeEntity> show filerevisions <DriveFileID>
gam <UserTypeEntity> show filetree [anyowner] (orderby <DriveOrderByFieldName> [ascending|descending])*

gam <UserTypeEntity> create|add drivefile [drivefilename <DriveFileName>] <DriveFileAddAttribute>* [csv] [todrive] [returnidonly]
gam <UserTypeEntity> update drivefile (id <DriveFileID)|(drivefilename <DriveFileName>)|(query <QueryDriveFile) [copy] [newfilename <DriveFileName>] <DriveFileUpdateAttribute>*
gam <UserTypeEntity> get drivefile (id <DriveFileID>)|(drivefilename <DriveFileName>)|(query <QueryDriveFile>)
	[revision <Number>] [(format <FileFormatList>)|(csvsheet <String>)]
	[targetfolder <FilePath>] [targetname -|<FileName>] [overwrite] [showprogress]
gam <UserTypeEntity> delete|del drivefile <DriveFileID>|<DriveFileURL>|(query:<QueryDriveFile>) [purge|untrash]
gam <UserTypeEntity> transfer drive <UserItem> [keepuser]
gam <UserTypeEntity> delete|del emptydrivefolders
gam <UserTypeEntity> empty drivetrash

gam <UserTypeEntity> create|add drivefileacl <DriveFileID> anyone|(user <UserItem>)|(group <GroupItem>)|(domain <DomainName>) [asadmin]
	(role <DriveFileACLRole>) [withlink|discoverable] [expires <Time>] [sendemail] [emailmessage <String>]
gam <UserTypeEntity> update drivefileacl <DriveFileID> <PermissionID> [asadmin]
	(role <DriveFileACLRole>) [expires <Time>] [removeexpiration]
gam <UserTypeEntity> delete|del drivefileacl <DriveFileID> <PermissionID> [asadmin]
gam <UserTypeEntity> show drivefileacl <DriveFileID> [asadmin]

gam <UserTypeEntity> delete|del alias|aliases

gam <UserTypeEntity> delete|del group|groups

gam <UserTypeEntity> create|add license <SKUID> [product|productid <ProductID>]
gam <UserTypeEntity> update license <SKUID> [product|productid <ProductID>] [from] <SKUID>
gam <UserTypeEntity> delete|del license <SKUID> [product|productid <ProductID>]
gam <UserTypeEntity> sync license <SKUID> [product|productid <ProductID>]

gam <UserTypeEntity> update photo <FileNamePattern>
gam <UserTypeEntity> delete|del photo
gam <UserTypeEntity> get photo [drivedir|(targetfolder <FilePath>)] [noshow]

gam <UserTypeEntity> profile share|shared|unshare|unshared
gam <UserTypeEntity> show profile

gam <UserTypeEntity> delete|del token|tokens clientid <ClientID>
gam <UserTypeEntity> show tokens|token [clientid <ClientID>]
gam <UserTypeEntity> print tokens|token [todrive] [clientid <ClientID>]
gam print tokens|token [todrive] [clientid <ClientID>] [<UserTypeEntity>]

gam <UserTypeEntity> update user <UserAttribute>

gam <UserTypeEntity> deprovision|deprov

gam <UserTypeEntity> [create|add] label|labels <Name> [messagelistvisibility hide|show] [labellistvisibility hide|show|showifunread]
	[backgroundcolor <LabelColorHex>] [textcolor <LabelColorHex>]
gam <UserTypeEntity> update labelsettings <LabelName> [name <Name>] [messagelistvisibility hide|show] [labellistvisibility hide|show|showifunread]
	[backgroundcolor <LabelColorHex>] [textcolor <LabelColorHex>]
gam <UserTypeEntity> update label|labels [search <RegularExpression>] [replace <LabelReplacement>] [merge]
gam <UserTypeEntity> delete|del label|labels <LabelName>|regex:<RegularExpression>|--ALL_LABELS--
gam <UserTypeEntity> show labels|label [onlyuser] [showcounts]
gam <UserTypeEntity> print labels|label [todrive] [onlyuser] [showcounts]

gam <UserTypeEntity> delete messages query <QueryGmail> [doit] [max_to_delete|max_to_process <Number>]
gam <UserTypeEntity> modify messages query <QueryGmail> [doit] [max_to_modify|max_to_process <Number>] (addlabel <LabelName>)* (removelabel <LabelName>)*
gam <UserTypeEntity> trash messages query <QueryGmail> [doit] [max_to_trash|max_to_process <Number>]
gam <UserTypeEntity> untrash messages query <QueryGmail> [doit] [max_to_untrash|max_to_process <Number>]

gam <UserTypeEntity> show gmailprofile [todrive]

gam <UserTypeEntity> draftemail [recipient|to <EmailAddress>] [from <EmailAddress>]
	[subject <String>] [(message <String>)|(file <FileName> [charset <Charset>])]
gam <UserTypeEntity> importemail [recipient|to <EmailAddress>] [from <EmailAddress>]
	[subject <String>] [(message <String>)|(file <FileName> [charset <Charset>])]
	[labels <LabelNameList>] (header <String> <String>)*
	[deleted] [date <Time>]
	[nevercheckspam] [processforcalendar]
gam <UserTypeEntity> insertemail [recipient|to <EmailAddress>] [from <EmailAddress>]
	[subject <String>] [(message <String>)|(file <FileName> [charset <Charset>])]
	[labels <LabelNameList>] (header <String> <String>)*
	[deleted] [date <Time>]
gam <UserTypeEntity> sendemail [recipient|to <EmailAddress>] [from <EmailAddress>]
	[subject <String>] [(message <String>)|(file <FileName> [charset <Charset>])]
	(header <String> <String>)*

gam <UserTypeEntity> create|add delegate|delegates [convertalias] <EmailAddress>
gam <UserTypeEntity> delegate|delegates to [convertalias] <EmailAddress>
gam <UserTypeEntity> delete|del delegate|delegates [convertalias] <EmailAddress>
gam <UserTypeEntity> show delegates|delegate [csv]
gam <UserTypeEntity> print delegates [todrive]

gam <UserTypeEntity> create|add contactdelegate <EmailAddress>
gam <UserTypeEntity> delete|del contactdelegate <EmailAddress>
gam <UserTypeEntity> show contactdelegates [csv]
gam <UserTypeEntity> print contactdelegates [todrive]

gam <UserTypeEntity> [create|add] filter [from <EmailAddress>] [to <EmailAddress>] [subject <String>] [haswords|query <List>] [nowords|negatedquery <List>] [musthaveattachment|hasattachment] [excludechats] [size larger|smaller <ByteCount>]
	[label <LabelID>] [important|notimportant] [star] [trash] [markread] [archive] [neverspam] [forward <EmailAddress>]
gam <UserTypeEntity> delete filters <FilterIDEntity>
gam <UserTypeEntity> show filters
gam <UserTypeEntity> info filters <FilterIDEntity>
gam <UserTypeEntity> print filters [todrive]

gam <UserTypeEntity> forward <FalseValues>
gam <UserTypeEntity> forward <TrueValues> keep|leaveininbox|archive|delete|trash|markread <EmailAddress>
gam <UserTypeEntity> show forward
gam <UserTypeEntity> print forward [todrive]

gam <UserTypeEntity> create|add forwardingaddress|forwardingaddresses <EmailAddress>
gam <UserTypeEntity> delete forwardingaddress|forwardingaddresses <EmailAddress>
gam <UserTypeEntity> show forwardingaddress|forwardingaddresses
gam <UserTypeEntity> info forwardingaddress|forwardingaddresses <EmailAddress>
gam <UserTypeEntity> print forwardingaddress|forwardingaddresses [todrive]

gam <UserTypeEntity> imap|imap4 <Boolean> [noautoexpunge] [expungebehavior archive|deleteforever|trash] [maxfoldersize 0|1000|2000|5000|10000]
gam <UserTypeEntity> show imap|imap4

gam <UserTypeEntity> pop|pop3 <Boolean> [for allmail|newmail|mailfromnowon|fromnowown] [action keep|leaveininbox|archive|delete|trash|markread]
gam <UserTypeEntity> show pop|pop3

gam <UserTypeEntity> language <Language>
gam <UserTypeEntity> show language

gam <UserTypeEntity> [create|add] sendas <EmailAddress> <Name> [signature|sig <String>|(file <FileName> [charset <Charset>]) (replace <Tag> <String>)*] [html] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
	[smtpmsa.host <SMTPHostName> smtpmsa.port 25|465|587 smtpmsa.username <UserName> smtpmsa.password <Password> [smtpmsa.securitymode none|ssl|starttls]]
gam <UserTypeEntity> update sendas <EmailAddress> [name <Name>] [signature|sig <String>|(file <FileName> [charset <Charset>]) (replace <Tag> <String>)*] [html] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
gam <UserTypeEntity> delete sendas <EmailAddress>
gam <UserTypeEntity> show sendas [format]
gam <UserTypeEntity> info sendas <EmailAddress> [format]
gam <UserTypeEntity> print sendas [todrive]

gam <UserTypeEntity> create|add smime file <FileName> [password <Password>] [sendas|sendasemail <EmailAddress>] [default]
gam <UserTypeEntity> update smime [id <S/MIMEID>] [sendas|sendasemail <EmailAddress>] [default]
gam <UserTypeEntity> delete smime [id <S/MIMEID>] [sendas|sendasemail <EmailAddress>]
gam <UserTypeEntity> show smime [primaryonly]
gam <UserTypeEntity> print smime [todrive] [primaryonly]

gam <UserTypeEntity> signature|sig <String>|(file <FileName> [charset <Charset>]) (replace <Tag> <String>)* [html] [name <String>] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
gam <UserTypeEntity> show signature|sig [format]

<TeamDriveRestrictionsSubfieldName> ::=
	adminmanagedrestrictions|
	copyrequireswriterpermission|
	domainusersonly|
	teammembersonly

gam <UserTypeEntity> create|add teamdrive <Name>
gam <UserTypeEntity> update teamdrive <TeamDriveID>|(name <TeamDriveName>) [asadmin] [name <Name>]
	[(theme|themeid <String>) | ([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
	(<TeamDriveRestrictionsSubfieldName> <Boolean>)*
	[hidden <Boolean>]
gam <UserTypeEntity> delete teamdrive <TeamDriveID>|(name <TeamDriveName>) [asadmin] [allowitemdeletion|nukefromorbit]
gam <UserTypeEntity> show teamdriveinfo <TeamDriveID>|(name <TeamDriveName>) [asadmin]
gam <UserTypeEntity> show teamdrives [query <QueryTeamDrive>] [asadmin]
gam <UserTypeEntity> print teamdrives [query <QueryTeamDrive>] [todrive] [asadmin]
gam <UserTypeEntity> show teamdrivethemes

gam <UserTypeEntity> vacation <FalseValues>
gam <UserTypeEntity> vacation <TrueValues> subject <String> (message <String>)|(file <FileName> [charset <Charset>]) (replace <Tag> <String>)* [html]
	[contactsonly] [domainonly] [startdate <Date>] [enddate <Date>]
gam <UserTypeEntity> show vacation [format]

gam <UserTypeEntity> signout
gam <UserTypeEntity> turnoff2sv
