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
<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|
	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|
	chrome|cdm|googlechromedevicemanagement|Google-Chrome-Device-Management|
	coordinate|googlecoordinate|Google-Coordinate|
	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)
<DateTime> ::=
	<Year>-<Month>-<Day>(<Space>|T)<Hour>:<Minute> |
	(+|-)<Number>(m|h|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>
<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>
<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>
<CrOSItem> ::= <CrOSID>|(query:<QueryCrOS>)|(query:orgunitpath:<OrgUnitPath>)
<CustomerID> ::= <String>
<DomainAlias> ::= <String>
<DriveFileACLRole> ::= commenter|editor|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>
<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/1408863?hl=en#search
<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>
<S/MIMEID> ::= <String>	
<StudentItem> ::= <EmailAddress>|<UniqueID>|<String>
<TeamDriveID> ::= <String>
<Timezone> ::= <String>
<Title> ::= <String>
<URI> ::= <String>
<URL> ::= <String>
<UserItem> ::= <EmailAddress>|<UniqueID>|<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|
	devicefiles|
	deviceid|
	ethernetmacaddress|
	firmwareversion|
	lastenrollmenttime|
	lastsync|
	macaddress|
	meid|
	model|
	notes|
	ordernumber|
	orgunitpath|org|ou|
	osversion|
	platformversion|
	recentusers|
	serialnumber|
	status|
	supportenddate|
	tpmversioninfo|
	willautorenew

<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|
	collaborative|
	customreplyto|
	defaultmessagedenynotificationtext|
	description|
	directmemberscount|
	email|
	favoriterepliesontop|
	id|
	includeinglobaladdresslist|gal|
	isarchived|
	maxmessagebytes|
	memberscanpostasthegroup|
	messagedisplayfont|
	messagemoderationlevel|
	name
	primarylanguage|
	replyto|
	sendmessagedenynotification|
	showingroupdirectory|
	spammoderationlevel|
	whocanadd|
	whocanaddreferences|
	whocanassigntopics|
	whocancontactowner|
	whocanenterfreeformtags|
	whocaninvite|
	whocanjoin|
	whocanleavegroup|
	whocanmarkduplicate|
	whocanmarkfavoritereplyonanytopic|
	whocanmarkfavoritereplyonowntopic|
	whocanmarknoresponseneeded|
	whocanmodifytagsandcategories|
	whocanpostmessage|
	whocantaketopics|
	whocanunassigntopic|
	whocanunmarkfavoritereplyonanytopic
	whocanviewgroup|
	whocanviewmembership

<GuardianState> ::=
	complete|
	pending

<MembersFieldName> ::=
	email|
	id|
	name|
	role|
	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>)*"
<CollaboratorItemList> ::= "<CollaboratorItem>(,<CollaboratorItem>)*"
<CourseAliasList> ::= "<CourseAlias>(,<CourseAlias>)*"
<CourseIDList> ::= "<CourseID>(,<CourseID>)*"
<CourseStateList> ::= "<CourseState>(,<CourseState>)*"
<CrOSFieldNameList> ::= "<CrOSFieldName>(,<CrOSFieldName>)*"
<CrOSList> ::= "<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>)*"
<UserFieldNameList> ::= "<UserFieldName>(,<UserFieldName>)*"
<UserList> ::= "<UserItem>(,<UserItem>)*"

## Collections of ChromeOs Devices

Specify a collection of ChromeOS devices by directly specifying them

<CrOSTypeEntity> ::=
	(all cros)|
	(cros <CrOSList>)|
	(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 <GroupItem)|
	(ou|org <OrgUnitPath)|
	(ou_and_children|ou_and_child <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 <String>)

<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>)

<GroupAttributes> ::=
	(allowexternalmembers <Boolean>)|
	(allowgooglecommunication <Boolean>)|
	(allowwebposting <Boolean>)|
	(archiveonly <Boolean>)|
	(collaborative (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
	(customfootertext <String>)|
	(customreplyto <EmailAddress>)|
	(defaultmessagedenynotificationtext <String>)|
	(description <String>)|
	(favoriterepliesontop <Boolean>)|
	(gal|includeInGlobalAddressList <Boolean>)|
	(includecustomfooter <Boolean>)|
	(isarchived <Boolean>)|
	(maxmessagebytes <ByteCount>)|
	(memberscanpostasthegroup <Boolean>)|
	(messagedisplayfont DEFAULT_FONT|FIXED_WIDTH_FONT)|
	(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>)|
	(showingroupdirectory <Boolean>)|
	(spammoderationlevel ALLOW|MODERATE|SILENTLY_MODERATE|REJECT)|
	(whocanadd ALL_MEMBERS_CAN_ADD|ALL_MANAGERS_CAN_ADD|NONE_CAN_ADD)|
	(whocanaddreferences (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
	(whocanassigntopics (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
	(whocancontactowner ANYONE_CAN_CONTACT|ALL_IN_DOMAIN_CAN_CONTACT|ALL_MEMBERS_CAN_CONTACT|ALL_MANAGERS_CAN_CONTACT)|
	(whocanenterfreeformtags (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
	(whocaninvite ALL_MEMBERS_CAN_INVITE|ALL_MANAGERS_CAN_INVITE|NONE_CAN_INVITE)|
	(whocanjoin ANYONE_CAN_JOIN|ALL_IN_DOMAIN_CAN_JOIN|INVITED_CAN_JOIN|CAN_REQUEST_TO_JOIN)|
	(whocanleavegroup ALL_MANAGERS_CAN_LEAVE|ALL_MEMBERS_CAN_LEAVE|NONE_CAN_LEAVE)|
	(whocanmarkduplicate (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
	(whocanmarkfavoritereplyonanytopic (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
	(whocanmarkfavoritereplyonowntopic (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
	(whocanmarknoresponseneeded (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
	(whocanmodifytagsandcategories (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
	(whocanpostmessage NONE_CAN_POST|ALL_MANAGERS_CAN_POST|ALL_MEMBERS_CAN_POST|ALL_IN_DOMAIN_CAN_POST|ANYONE_CAN_POST)|
	(whocantaketopics (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
	(whocanunassigntopic (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
	(whocanunmarkfavoritereplyonanytopic (members|all_members)|(managers|owners_and_managers)|(managers_only)|(owners|owners_only)|none)|
	(whocanviewgroup ANYONE_CAN_VIEW|ALL_IN_DOMAIN_CAN_VIEW|ALL_MEMBERS_CAN_VIEW|ALL_MANAGERS_CAN_VIEW)|
	(whocanviewmembership ALL_IN_DOMAIN_CAN_VIEW|ALL_MEMBERS_CAN_VIEW|ALL_MANAGERS_CAN_VIEW)

<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

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

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>]
gam update project [<EmailAddress>]

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|
	gplus|
	meet|
	mobile|
	sites
<ReportsAppList> ::= "<ReportsApp>(,<ReportsApp>)*"

gam report users|user [todrive] [date <Date>] [fulldatarequired all|<ReportsAppList>]
	[(user all|<UserItem>)] [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> ::= googledrive|gdrive|drive|"drive and docs"|calendar

gam create datatransfer|transfer <OldOwnerID> <DataTransferService> <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] [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
gam calendar <CalendarItem> update <CalendarACLRole> ([user] <EmailAddress>)|(group <EmailAddress>)|(domain [<DomainName>])|default
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 <String>

gam calendar <CalendarItem> modify <CalendarSettings>+

gam update cros <CrOSItem> (<CrOSAttributes>+)|(action deprovision_same_model_replace|deprovision_different_model_replace|deprovision_retiring_device|disable|reenable [acknowledge_device_touch_requirement])
gam info cros <CrOSItem> [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|recentusers|timeranges|devicefiles] [listlimit <Number>] [start <Date>] [end <Date>]
	[basic|full|allfields] <CrOSFieldName>* [fields <CrOSFieldNameList>]
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 three headers, recentUsers, activeTimeRanges and deviceFiles,
that repeat with two/four/two subvalues each, yielding a large number of columns that make the output hard to process.
The nolists argument suppresses these three headers; if you want these headers in a more manageable form use the following arguments.

If recentusers is specified, for each recent user, the columns recentUsers.email and recentUsers.type are output on a separate row
with all of the other headers.

If timeranges is specified, for each time range entry, the columns activeTimeRanges.date, activeTimeRange.activeTime,
activeTimeRanges.duration and activeTimeRanges.minutes are output on a separate row with all of the other headers.

If devicefiles is specified, for each deviceFile, the columns deviceFiles.type and deviceFiles.createTime are 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 filter the time ranges.

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] <UserTypeEntity>
gam update group <GroupItem> delete|remove [owner|manager|member] <UserTypeEntity>
gam update group <GroupItem> sync [owner|manager|member] [notsuspended] <UserTypeEntity>
gam update group <GroupItem> update [owner|manager|member] <UserTypeEntity>
gam update group <GroupItem> clear [member] [manager] [owner] [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 print group-members|groups-members [todrive] ([domain <DomainName>] ([member <UserItem>]|[query <QueryGroup>]))|[group <GroupItem>]
	[roles <GroupRoleList>] [membernames] [fields <MembersFieldNameList>]

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

gam update notification|notifications [(id all)|(id <NotificationID>)*] unread|read
gam delete notification|notifications [(id all)|(id <NotificationID>)*]
gam info notification|notifications [unreadonly]

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>]

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 <UserTypeEntity> print

Summary of printing:
gam print users
Prints a header row and primaryEmail for all users.
gam <UserTypeEntity> print
Prints no header row and primaryEmail for specified users.

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>] [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 vaulthold|hold corpus drive|groups|mail matter <MatterItem> [name <String>] [query <QueryVaultCorpus>]
	[(accounts|groups|users <EmailItemList>) | (orgunit|ou <OrgUnit>)]
	[starttime <Date>|<DateTime>] [endtime <Date>|<DateTime>] 
gam update vaulthold|hold <HoldItem> matter <MatterItem> [query <QueryVaultCorpus>]
	[([addaccounts|addgroups|addusers <EmailItemList>] [removeaccounts|removegroups|removeusers <EmailItemList>]) | (orgunit|ou <OrgUnit>)]
	[starttime <Date>|<DateTime>] [endtime <Date>|<DateTime>] 
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]

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>) [format <FileFormatList>] [targetfolder <FilePath>] [revision <Number>]
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]
gam <UserTypeEntity> update labelsettings <LabelName> [name <Name>] [messagelistvisibility hide|show] [labellistvisibility hide|show|showifunread]
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> show gplusprofile [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>]
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]

gam <UserTypeEntity> create|add teamdrive <Name>
gam <UserTypeEntity> update teamdrive <TeamDriveID> [name <Name>] [(theme|themeid <String>) | ([customtheme <DriveFileID> <Float> <Float> <Float>] [color <ColorValue>])]
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]
