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
<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
<ProductID> ::=
	Google-Apps|
	Google-Chrome-Device-Management|
	Google-Coordinate|
	Google-Drive-storage|
	Google-Vault|
	101001|101005|101031
<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|lite|gsuitelite|Google-Apps-Lite|
	gau|unlimited|gsuitebusiness|Google-Apps-Unlimited|
	gae|enterprise|gsuiteenterprise|1010020020|
	gsefe|e4e|gsuiteenterpriseeducation|1010310002|
	gsefes|e4es|gsuiteenterpriseeducationstudent|1010310003|
	chrome|cdm|googlechromedevicemanagement|Google-Chrome-Device-Management|
	coordinate|googlecoordinate|Google-Coordinate|
	d4e|driveenterprise|drive4enterprise|
	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

## 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)
<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
<ASPID> ::= <String>
<BuildingID> ::= <String>|id:<String>
<CalendarACLRole> ::= editor|freebusy|freebusyreader|owner|reader|writer
<CalendarColorIndex> ::= <Number in range 1-24>
<CalendarItem> ::= <EmailAddress>|<String>
<ChatRoom> ::= <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>
<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>
<NotificationID> ::= <String>
<NumberOfSeats> ::= <Number>
<OrgUnitID> ::= <String>
<OrgUnitPath> ::= /|(/<String)+
<ParameterKey> ::= <String>
<ParameterValue> ::= <String>
<Password> ::= <String>
<PermissionID> ::= id:<String>|<EmailAddress>|anyone|anyonewithlink
<PrinterID> ::= <String>
<PrintJobAge> ::= <Number>[m|h|d]
<PrintJobID> ::= <String>
<PrintJobStatus> ::= done|error|held|in_progress|queued|submitted
<PropertyKey> ::= <String>
<PropertyValue> ::= <String>
<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
<QueryGmail> ::= <String> See: https://support.google.com/mail/answer/7190
<QueryGroup> ::= <String> See: https://developers.google.com/admin-sdk/directory/v1/guides/search-groups
<QueryMobile> ::= <String> See: https://support.google.com/a/answer/7549103
<QueryPrinter> ::= <String> See: https://developers.google.com/cloud-print/docs/appInterfaces#search
<QueryPrintJob> ::= <String> See: https://developers.google.com/cloud-print/docs/appInterfaces#parameters_3
<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>
<S/MIMEID> ::= <String>	
<SMTPHostName> ::= <String>
<StudentItem> ::= <EmailAddress>|<UniqueID>|<String>
<TeamDriveID> ::= <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|
	bootmode|
	cpustatusreports|
	devicefiles|
	deviceid|
	diskvolumereports|
	ethernetmacaddress|
	firmwareversion|
	lastenrollmenttime|
	lastsync|
	macaddress|
	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

<DriveFieldName> ::=
	appdatacontents|
	cancomment|
	canreadrevisions|
	copyable|
	createddate|createdtime|
	description|
	editable|
	explicitlytrashed|
	fileextension|
	filesize|
	foldercolorrgb|
	fullfileextension|
	headrevisionid|
	iconlink|
	id|
	lastmodifyinguser|
	lastmodifyingusername|
	lastviewedbyme|lastviewedbymedate|lastviewedbymetime|lastviewedbyuser|
	md5|md5checksum|md5sum|
	mime|mimetype|
	modifiedbyme|modifiedbymedate|modifiedbymetime|modifiedbyuser|
	modifieddate|modifiedtime|
	name|
	originalfilename|
	ownedbyme|
	ownernames|
	owners|
	parents|
	permissions|
	quotabytesused|quotaused|
	restricted|
	shareable|
	shared|
	sharedwithmedate|sharedwithmetime|
	sharinguser|
	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|
	allowgooglecommunication|
	allowwebposting|
	archiveonly|
	customfootertext|
	customreplyto|
	customrolesenabledforsettingstobemerged|
	defaultmessagedenynotificationtext|
	description|
	directmemberscount|
	email|
	enablecollaborativeinbox|collaborative|
	favoriterepliesontop|
	id|
	includecustomfooter|
	includeinglobaladdresslist|gal|
	isarchived|
	maxmessagebytes|
	memberscanpostasthegroup|
	messagedisplayfont|
	messagemoderationlevel|
	name|
	primarylanguage|
	replyto|
	sendmessagedenynotification|
	showingroupdirectory|
	spammoderationlevel|
	whocanaddreferences|
	whocanadd|
	whocanapprovemessages|
	whocanassigntopics|
	whocanassistcontent|
	whocancontactowner|
	whocandeleteanypost|
	whocandeletetopics|
	whocandiscovergroup|
	whocanenterfreeformtags|
	whocanhideabuse|
	whocaninvite|
	whocanjoin|
	whocanleavegroup|
	whocanlocktopics|
	whocanmaketopicssticky|
	whocanmarkduplicate|
	whocanmarkfavoritereplyonanytopic|
	whocanmarkfavoritereplyonowntopic|
	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>)*"

<PrintJobOrderByFieldName> ::=
	create_time|status|title

<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|
	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>)*"
<ASPIDList> ::= "<ASPID>(,<ASPID>)*"
<CalendarList> ::= "<CalendarItem>(,<CalendarItem>)*"
<ChatRoomList> ::= "<ChatRoom>(,<ChatRoom>)*"
<CollaboratorItemList> ::= "<CollaboratorItem>(,<CollaboratorItem>)*"
<CourseAliasList> ::= "<CourseAlias>(,<CourseAlias>)*"
<CourseIDList> ::= "<CourseID>(,<CourseID>)*"
<CourseStateList> ::= "<CourseState>(,<CourseState>)*"
<CrOSFieldNameList> ::= "<CrOSFieldName>(,<CrOSFieldName>)*"
<CrOSIDList> ::= "<CrOSID>(,<CrOSID>)*"
<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>)*"
<OrgUnitList> ::= "<OrgUnitPath>(,<OrgUnitPath>)*"
<PrinterIDList> ::= "<PrinterID>(,<PrinterID>)*"
<ProductIDList> ::= "(<ProductID>|SKUID>)(,<ProductID>|SKUID>)*"
<PrintJobIDList> ::= "<PrintJobID>(,<PrintJobID>)*"
<QueryCrOSList> ::= "<QueryCrOS>(,<QueryCrOS>)*"
<QueryMobileList> ::= "<QueryMobile>(,<QueryMobile>)*"
<QueryPrinterList> ::= "<QueryPrinter>(,<QueryPrinter>)*"
<QueryUserList> ::= "<QueryUser>(,<QueryUser>)*"
<ResourceIDList> ::= "<ResourceID>(,<ResourceID>)*"
<SKUIDList> ="<SKUID>(,<SKUID>)*"
<SchemaNameList> ::= "<SchemaName>(,<SchemaName>)*"
<SerialNumberList> ::= "<SerialNumber>(,<SerialNumber>)*"
<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>)

## Collections of Users

Specify a collection of Users by directly specifying them or by specifiying 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

<BuildingAttributes> ::=
	(description <String>)|
	(floors <FloorNameList>)|
	(id <String>)|
	(latitude <Float>)|
	(longitude <Float>)|
	(name <String>)

<CalendarAttributes> ::=
	(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>)

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

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

<DriveFileAddAttributes> ::=
	(localfile <FileName>)|
	(convert)|(ocr)|(ocrlanguage <Language>)|(restricted|restrict)|(starred|star)|(trashed|trash)|(viewed|view)|
	(lastviewedbyme <Time>)|(modifieddate|modifiedtime <Time>)|(description <String>)|(mimetype <MimeType>)|
	(parentid <DriveFolderID>)|(parentname <DriveFolderName>)|(anyownerparentname <DriveFolderName>)|writerscantshare
<DriveFileUpdateAttributes> ::=
	(localfile <FileName>)|
	(convert)|(ocr)|(ocrlanguage <Language>)|(restricted|restrict <Boolean>)|(starred|star <Boolean>)|(trashed|trash <Boolean>)|(viewed|view <Boolean>)|
	(lastviewedbyme <Time>)|(modifieddate <Time>)|(description <String>)|(mimetype <MimeType>)|
	(parentid <DriveFolderID>)|(parentname <DriveFolderName>)|(anyownerparentname <DriveFolderName>)|writerscantshare
<EventAttributes> ::=
	(anyonecanaddself)|(guestscantinviteothers)|(guestscantseeothers)|(notifyattendees)|(available)|(visibility default|public|prvate)|(tentative)|
	(attendee <EmailAddress>)|(optionalattendee <EmailAddress>)|
	(description <String>)|(summary <String>)|(location <String>)|(id <String>)|
	(source <String> <URL>)|(privateproperty <PropertyKey> <PropertyValue>)|(sharedproperty <PropertyKey> <PropertyValue>)|
	(recurrence <RRULE, EXRULE, RDATE and EXDATE line>)|
	(start allday <Date>)|(start <Time>)|(end allday <Date>)|(end <Time>)|(timezone <Timezone>)|
	(noreminders|(reminder <Number> email|popup|sms))|
	(colorindex|colorid <EventColorIndex>)

<GroupSettingsAttribute> ::=
	(allowexternalmembers <Boolean>)|
	(allowwebposting <Boolean>)|
	(archiveonly <Boolean>)|
	(customfootertext <String>)|
	(customreplyto <EmailAddress>)|
	(defaultmessagedenynotificationtext <String>)|
	(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)
<GroupDeprecatedAttribute> ::=
	(allowgooglecommunication <Boolean>)|
	(favoriterepliesontop <Boolean>)|
	(maxmessagebytes <ByteCount>)|
	(messagedisplayfont default_font|fixed_width_font)|
	(whocanaddreferences all_members|owners_and_managers|managers_only|owners_only|none)|
	(whocanmarkfavoritereplyonowntopic all_members|owners_and_managers|managers_only|owners_only|none)
<GroupAttribute> ::=
	<GroupSettingsAttribute>|
	<GroupWhoCanDiscoverGroupAttribute>|
	<GroupWhoCanAssistContentAttribute>|
	<GroupWhoCanModerateContentAttribute>|
	<GroupWhoCanModerateMembersAttribute>|
	<GroupDeprecatedAttribute>

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

<PrinterAttributes> ::= (currentquota <Number>)|(dailyquota <Number>)|
	(defaultdisplayname <String>)|(description <String>)|(displayname <String>)|(firmware <String>)|(gcpversion <String>)|
	(istosaccepted <Boolean>)|(manufacturer <String>)|(model <String>)|(name <String>)|(ownerid <EmailAddress>)|(proxy <String>)|(public <Boolean>)|
	(quotaenabled <Boolean>)|(status <Number>)|(type <String>)|(uuid <String>)|
	(setupurl <URL>)|(supporturl <URL>)|(updateurl <URL>)

<ResourceAttributes> ::=
	(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> ::=
	(agreed2terms|agreedtoterms <Boolean>)|
	(changepassword|changepasswordatnextlogin <Boolean>)|
	(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>)|
	(suspended <Boolean>)|
	(<SchemaName>.<FieldName> [multivalued|multivalue|value|multinonempty [type home|other|work|(custom <String>)]] <String>)
<UserMultiAttributes> ::=
	(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 version [check] [simple]
gam help

gam batch <FileName>|- [charset <Charset>]
gam csv <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 project [<EmailAddress>] [<ProjectID>]
gam use project [<EmailAddress>] [<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 oauth|oauth2 create|request [<EmailAddress>]
gam oauth|oauth2 delete|revoke
gam oauth|oauth2 info|verify [<AccessToken>]

gam <UserTypeEntity> check serviceaccount

gam whatis <EmailItem>

<ResoldCustomerAttributes> ::=
	(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>) <ResoldCustomerAttributes>+
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>]

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

gam report users|user [todrive] [date <Date>] [fulldatarequired all|<ReportsAppList>]
	[(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath>)] [filter|filters <String>] [fields|parameters <String>]
gam report customers|customer|domain [todrive] [date <Date>] [fulldatarequired all|<ReportsAppList>]
	[fields|parameters <String>]
gam report admin|calendar|calendars|drive|docs|doc|groups|group|logins|login|mobile|tokens|token [todrive]
	[start <Time>] [end <Time>] [(user all|<UserItem>)] [event <String>] [filter|filters <String>] [ip <String>]

gam create admin <UserItem> <RoleItem> customer|(org_unit <OrgUnitItem>)
gam delete admin <RoleAssignmentId>
gam print admins [todrive] [user <UserItem>] [role <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]

<CustomerAttributes> ::=
	(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 <CustomerAttributes>*

gam info customer

<DataTransferService> ::=
	calendar|
	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 <String>]

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>
gam update alias|nickname <EmailAddress> user|group|target <UniqueID>|<EmailAddress>
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>])|default [sendnotifications <Boolean>]
gam calendar <CalendarItem> update <CalendarACLRole> ([user] <EmailAddress>)|(group <EmailAddress>)|(domain [<DomainName>])|default [sendnotifications <Boolean>]
gam calendar <CalendarItem> del|delete <CalendarACLRole> <EmailAddress>|(domain [<DomainName>])|default
gam calendar <CalendarItem> showacl

gam calendar <CalendarItem> addevent <EventAttributes>+
gam calendar <CalendarItem> deleteevent (id|eventid <EventID>)* (query|eventquery <QueryCalendar>)* [doit] [notifyattendees]
gam calendar <CalendarItem> wipe

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

gam calendar <CalendarItem> modify <CalendarSettings>+

gam update cros <CrOSEntity> (<CrOSAttributes>+)|(action deprovision_same_model_replace|deprovision_different_model_replace|deprovision_retiring_device|disable|reenable [acknowledge_device_touch_requirement])
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 <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 cros
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 <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 update mobile <MobileID> action <MobileAction>
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>]

gam create group <EmailAddress> <GroupAttributes>*
gam update group <GroupItem> [admincreated <Boolean>] [email <EmailAddress>] <GroupAttributes>*
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>]

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> <BuildingAttributes>*
gam update building <BuildIngID> <BuildingAttributes>*
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 create resource <ResourceID> <Name> <ResourceAttributes>*
gam update resource <ResourceID> <ResourceAttributes>*
gam delete resource <ResourceID>
gam info resource <ResourceID>
gam print resources [todrive] [allfields] <ResourceFieldName>*

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> <UserAttributes>*
gam update user <UserItem> <UserAttributes>* [clearschema <SchemaName>] [clearschema <SchemaName>.<FieldName>]
gam delete user <UserItem>
gam undelete user <UserItem> [org|ou <OrgUnitPath>]
gam info user [<UserItem>] [noaliases] [nogroups] [nolicenses|nolicences] [noschemas] [schemas|custom <SchemaNameList>] [userview] [skus|sku <SKUIDList>]

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>)] [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>] <CourseAttributes>*
gam update course <CourseID> <CourseAttributes>+
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 update printer <PrinterID> <PrinterAttributes>+
gam delete printer <PrinterID>
gam info printer <PrinterID> [everything]
gam print printers [todrive] [(query <QueryPrinter>)|(queries <QueryPrinterList>)] [type <String>] [status <String>] [extrafields <String>]

gam printer <PrinterID> add user|manager|owner <EmailAddress>|[domain:]<DomainName>|public [notify]
gam printer <PrinterID> delete <EmailAddress>|[domain:]<DomainName>|public
gam printer <PrinterID> showacl
gam printjob <PrintJobID> cancel
gam printjob <PrintJobID> delete
gam printjob <PrintJobID> resubmit <PrinterID>

gam printjob <PrinterID>|any fetch
	[olderthan|newerthan <PrintJobAge>] [query <QueryPrintJob>]
	[status <PrintJobStatus>]
	[orderby <PrintJobOrderByFieldName> [ascending|descending]]
	[owner|user <EmailAddress>]
	[limit <Number>] [drivedir|(targetfolder <FilePath>)]
gam printjob <PrinterID> submit <FileName>|<URL> [name|title <String>] (tag <String>)*
gam print printjobs [todrive] [printer|printerid <PrinterID>]
	[olderthan|newerthan <PrintJobAge>] [query <QueryPrintJob>]
	[status <PrintJobStatus>]
	[orderby <PrintJobOrderByFieldName> [ascending|descending]]
	[owner|user <EmailAddress>]
	[limit <Number>]

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>] [format mbox|pst]
	[excludedrafts <Boolean>] [driveversiondate <Date>|<Time>] [includeteamdrives] [includerooms]
	[includeaccessinfo <Boolean>]
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 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 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]

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> <CalendarAttributes>*
gam <UserTypeEntity> update calendar <CalendarItem>|primary <CalendarAttributes>+
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>] <DriveFileAddAttributes>* [csv] [todrive]
gam <UserTypeEntity> update drivefile (id <DriveFileID)|(drivefilename <DriveFileName>)|(query <QueryDriveFile) [copy] [newfilename <DriveFileName>] <DriveFileUpdateAttributes>*
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> 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 <UserAttributes>

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> 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> create|add delegate|delegates <EmailAddress>
gam <UserTypeEntity> delegate|delegates to <EmailAddress>
gam <UserTypeEntity> delete|del delegate|delegates <EmailAddress>
gam <UserTypeEntity> show delegates|delegate [csv]
gam <UserTypeEntity> print delegates [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> [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> [asadmin] [name <Name>]
	[(theme|themeid <String>) | ([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
	(<TeamDriveRestrictionsSubfieldName> <Boolean>)*
gam <UserTypeEntity> delete teamdrive <TeamDriveID>
gam <UserTypeEntity> show teamdriveinfo <TeamDriveID> [asadmin]
gam <UserTypeEntity> show teamdrives [asadmin]
gam <UserTypeEntity> print teamdrives [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]
