mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-29 10:21:35 +00:00
Added support for Focus Time and Out of Office status events in user's primary calendars.
Updated `gam <UserTypeEntity> print|show messages` to allow option `show_size` to be used with option `countsonly` to display the cumulative size of the messages selected. Chat prerelease updates
This commit is contained in:
@@ -103,12 +103,21 @@ Client access works when accessing Resource calendars.
|
|||||||
creator.id|
|
creator.id|
|
||||||
creator.self
|
creator.self
|
||||||
|
|
||||||
|
<EventFocusTimePropertiesSubfieldName> ::=
|
||||||
|
focustimeproperties.chatstatus|
|
||||||
|
focustimeproperties.declinemode|
|
||||||
|
focustimeproperties.declinemessage
|
||||||
|
|
||||||
<EventOrganizerSubfieldName> ::=
|
<EventOrganizerSubfieldName> ::=
|
||||||
organizer.displayname|
|
organizer.displayname|
|
||||||
organizer.email|
|
organizer.email|
|
||||||
organizer.id|
|
organizer.id|
|
||||||
organizer.self
|
organizer.self
|
||||||
|
|
||||||
|
<EventOutOfOfficePropertiesSubfieldName> ::=
|
||||||
|
outofoffice.declinemode|
|
||||||
|
outofoffice.declinemessage
|
||||||
|
|
||||||
<EventWorkingLocationPropertiesSubfieldName> ::=
|
<EventWorkingLocationPropertiesSubfieldName> ::=
|
||||||
workinglocationproperties.homeoffice|
|
workinglocationproperties.homeoffice|
|
||||||
workinglocationproperties.customlocation|
|
workinglocationproperties.customlocation|
|
||||||
@@ -132,6 +141,7 @@ Client access works when accessing Resource calendars.
|
|||||||
endtimeunspecified|
|
endtimeunspecified|
|
||||||
extendedproperties|
|
extendedproperties|
|
||||||
eventtype|
|
eventtype|
|
||||||
|
<EventFocusTimePropertiesSubfieldName>
|
||||||
gadget|
|
gadget|
|
||||||
guestscaninviteothers|
|
guestscaninviteothers|
|
||||||
guestscanmodify|
|
guestscanmodify|
|
||||||
@@ -145,6 +155,7 @@ Client access works when accessing Resource calendars.
|
|||||||
organizer|
|
organizer|
|
||||||
<EventOrganizerSubfieldName>|
|
<EventOrganizerSubfieldName>|
|
||||||
originalstart|originalstarttime|
|
originalstart|originalstarttime|
|
||||||
|
<EventOutOfOfficePropertiesSubfieldName>
|
||||||
privatecopy|
|
privatecopy|
|
||||||
recurrence|
|
recurrence|
|
||||||
recurringeventid|
|
recurringeventid|
|
||||||
@@ -158,14 +169,23 @@ Client access works when accessing Resource calendars.
|
|||||||
updated|
|
updated|
|
||||||
visibility|
|
visibility|
|
||||||
workinglocationproperties|
|
workinglocationproperties|
|
||||||
|
<EventWorkingLocationPropertiesSubfieldName>
|
||||||
<EventFieldNameList> ::= "<EventFieldName>(,<EventFieldName>)*"
|
<EventFieldNameList> ::= "<EventFieldName>(,<EventFieldName>)*"
|
||||||
|
|
||||||
<AttendeeAttendance> ::= optional|required
|
<AttendeeAttendance> ::= optional|required
|
||||||
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
||||||
|
|
||||||
|
<EventType> ::=
|
||||||
|
default|
|
||||||
|
focustime|
|
||||||
|
outofoffice|
|
||||||
|
workinglocation
|
||||||
|
<EventTypeList> ::= "<EventType>(,<EventType>)*"
|
||||||
|
|
||||||
<EventSelectProperty> ::=
|
<EventSelectProperty> ::=
|
||||||
(after|starttime|timemin <Time>)|
|
(after|starttime|timemin <Time>)|
|
||||||
(before|endtime|timemax <Time>)|
|
(before|endtime|timemax <Time>)|
|
||||||
|
(eventtype|eventtypes <EventTypeList>)|
|
||||||
(query <QueryCalendar>)|
|
(query <QueryCalendar>)|
|
||||||
(privateextendedproperty <String>)|
|
(privateextendedproperty <String>)|
|
||||||
(sharedextendedproperty <String>)|
|
(sharedextendedproperty <String>)|
|
||||||
@@ -211,6 +231,7 @@ Client access works when accessing Resource calendars.
|
|||||||
<PropertyValue> ::= <String>
|
<PropertyValue> ::= <String>
|
||||||
|
|
||||||
<EventAttribute> ::=
|
<EventAttribute> ::=
|
||||||
|
(allday <Date>)|
|
||||||
(anyonecanaddself [<Boolean>])|
|
(anyonecanaddself [<Boolean>])|
|
||||||
(attachment <String> <URL>)|
|
(attachment <String> <URL>)|
|
||||||
(attendee <EmailAddress>)|
|
(attendee <EmailAddress>)|
|
||||||
@@ -219,7 +240,7 @@ Client access works when accessing Resource calendars.
|
|||||||
(color <EventColorName>)|
|
(color <EventColorName>)|
|
||||||
(colorindex|colorid <EventColorIndex>)|
|
(colorindex|colorid <EventColorIndex>)|
|
||||||
(description <String>)|
|
(description <String>)|
|
||||||
(end (allday <Date>)|<Time>)|
|
(end|endtime (allday <Date>)|<Time>)|
|
||||||
(guestscaninviteothers <Boolean>)|
|
(guestscaninviteothers <Boolean>)|
|
||||||
guestscantinviteothers|
|
guestscantinviteothers|
|
||||||
(guestscanmodify <Boolean>)|
|
(guestscanmodify <Boolean>)|
|
||||||
@@ -234,16 +255,18 @@ Client access works when accessing Resource calendars.
|
|||||||
(optionalattendee <EmailAddress>)|
|
(optionalattendee <EmailAddress>)|
|
||||||
(originalstart|originalstarttime (allday <Date>)|<Time>)|
|
(originalstart|originalstarttime (allday <Date>)|<Time>)|
|
||||||
(privateproperty <PropertyKey> <PropertyValue>)|
|
(privateproperty <PropertyKey> <PropertyValue>)|
|
||||||
|
(range <Date> <Date>)|
|
||||||
(recurrence <RRULE, EXRULE, RDATE and EXDATE line>)|
|
(recurrence <RRULE, EXRULE, RDATE and EXDATE line>)|
|
||||||
(reminder <Number> email|popup))|
|
(reminder <Number> email|popup))|
|
||||||
(selectattendees [<AttendeeAttendance>] [<AttendeeStatus>] <UserTypeEntity>)|
|
(selectattendees [<AttendeeAttendance>] [<AttendeeStatus>] <UserTypeEntity>)|
|
||||||
(sequence <Integer>)|
|
(sequence <Integer>)|
|
||||||
(sharedproperty <PropertyKey> <PropertyValue>)|
|
(sharedproperty <PropertyKey> <PropertyValue>)|
|
||||||
(source <String> <URL>)|
|
(source <String> <URL>)|
|
||||||
(start (allday <Date>)|<Time>)|
|
(start|starttime (allday <Date>)|<Time>)|
|
||||||
(status confirmed|tentative|cancelled)|
|
(status confirmed|tentative|cancelled)|
|
||||||
(summary <String>)|
|
(summary <String>)|
|
||||||
tentative|
|
tentative|
|
||||||
|
(timerange <Time> <Time>)|
|
||||||
(timezone <TimeZone>)|
|
(timezone <TimeZone>)|
|
||||||
(transparency opaque|transparent)|
|
(transparency opaque|transparent)|
|
||||||
(visibility default|public|private)
|
(visibility default|public|private)
|
||||||
@@ -293,10 +316,12 @@ This is dense reading; a simpler approach is to define a test event in Google Ca
|
|||||||
the recurrence rule that you want, then use `gam info event` to get the recurrence rule and use it in subsequent commands.
|
the recurrence rule that you want, then use `gam info event` to get the recurrence rule and use it in subsequent commands.
|
||||||
|
|
||||||
```
|
```
|
||||||
RRULE:FREQ=DAILY
|
RRULE:FREQ=DAILY - Daily
|
||||||
RRULE:FREQ=DAILY;COUNT=30
|
RRULE:FREQ=DAILY;COUNT=30 - Daily for 30 days
|
||||||
RRULE:FREQ=WEEKLY;BYDAY=WE
|
RRULE:FREQ=WEEKLY - Weekly on the same day of the week as the starting day; e.g., every Wednesday
|
||||||
RRULE:FREQ=WEEKLY;WKST=SU;COUNT=13;BYDAY=WE
|
RRULE:FREQ=WEEKLY;COUNT=13 - Weekly on the same day of the week as the starting day; e.g., every Wednesday, for 13 weeks
|
||||||
|
RRULE:FREQ=MONTHLY - Monthly on the same day of the month as the starting day; e.g., every 15th of the month
|
||||||
|
RRULE:FREQ=MONTHLY;BYDAY=4TH - Monthly on the fourth instance of the starting day; e.g., every 4th Thursday
|
||||||
```
|
```
|
||||||
|
|
||||||
## Event colors
|
## Event colors
|
||||||
@@ -320,6 +345,7 @@ If none of the following options are selected, all events are selected.
|
|||||||
The Google Calendar API processes `<EventSelectProperty>*`; you may specify none or multiple properties.
|
The Google Calendar API processes `<EventSelectProperty>*`; you may specify none or multiple properties.
|
||||||
* `after|starttime|timemin <Time>` - Lower bound (inclusive) for an event's end time to filter by. If timeMax is set, timeMin must be smaller than timeMax.
|
* `after|starttime|timemin <Time>` - Lower bound (inclusive) for an event's end time to filter by. If timeMax is set, timeMin must be smaller than timeMax.
|
||||||
* `before|endtime|timemax <Time>` - Upper bound (exclusive) for an event's start time to filter by. If timeMin is set, timeMax must be greater than timeMin.
|
* `before|endtime|timemax <Time>` - Upper bound (exclusive) for an event's start time to filter by. If timeMin is set, timeMax must be greater than timeMin.
|
||||||
|
* `eventtypes <EventTypeList>` - Select events based on their type.
|
||||||
* `query <QueryCalendar>` - Free text search terms to find events that match these terms in any field, except for extended properties
|
* `query <QueryCalendar>` - Free text search terms to find events that match these terms in any field, except for extended properties
|
||||||
* `privateextendedproperty <String>` - A required private property; `<String>` must be of the form `propertyName=value`
|
* `privateextendedproperty <String>` - A required private property; `<String>` must be of the form `propertyName=value`
|
||||||
* `sharedextendedproperty <String>` - A required shared property; `<String>` must be of the form `propertyName=value`
|
* `sharedextendedproperty <String>` - A required shared property; `<String>` must be of the form `propertyName=value`
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ By default, Gam displays the information as an indented list of keys and values.
|
|||||||
### Display information about all chat members in a chat space
|
### Display information about all chat members in a chat space
|
||||||
```
|
```
|
||||||
gam show chatmembers space <ChatSpace>
|
gam show chatmembers space <ChatSpace>
|
||||||
[showinvited [<Boolean>]] [filter <String>]
|
[showinvited [<Boolean>]] [showgroups [<Boolean>]] [filter <String>]
|
||||||
[formatjson]
|
[formatjson]
|
||||||
```
|
```
|
||||||
By default, Gam displays the information as an indented list of keys and values.
|
By default, Gam displays the information as an indented list of keys and values.
|
||||||
@@ -117,7 +117,7 @@ By default, Gam displays the information as an indented list of keys and values.
|
|||||||
|
|
||||||
```
|
```
|
||||||
gam print chatmembers [todrive <ToDriveAttribute>*] space <ChatSpace>
|
gam print chatmembers [todrive <ToDriveAttribute>*] space <ChatSpace>
|
||||||
[showinvited [<Boolean>]] [filter <String>]
|
[showinvited [<Boolean>]] [showgroups [<Boolean>]] [filter <String>]
|
||||||
[formatjson [quotechar <Character>]]
|
[formatjson [quotechar <Character>]]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,22 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
|
|||||||
|
|
||||||
See [Downloads](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads) for Windows or other options, including manual installation
|
See [Downloads](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads) for Windows or other options, including manual installation
|
||||||
|
|
||||||
|
### 6.66.00
|
||||||
|
|
||||||
|
Added support for `Focus Time` and `Out of Office` status events in user's primary calendars.
|
||||||
|
* See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Calendars-Events#status-events
|
||||||
|
This is a work-in-progress.
|
||||||
|
|
||||||
|
Updated `gam <UserTypeEntity> print|show messages` to allow option `show_size` to be used with option `countsonly`
|
||||||
|
to display the cumulative size of the messages selected.
|
||||||
|
```
|
||||||
|
gam user user@domain.com print messages query "newer_than:31d" countsonly showsize
|
||||||
|
Getting all Messages for user@domain.com
|
||||||
|
Got 16 Messagess for user@domain.com...
|
||||||
|
User,messages,size
|
||||||
|
user@domain.com,16,92806
|
||||||
|
```
|
||||||
|
|
||||||
### 6.65.17
|
### 6.65.17
|
||||||
|
|
||||||
Added the option `mappermissionsdomain <DomainName1> <DomainName2>` to `gam <UserTypeEntity> create drivefileacl <DriveFileEntity>`
|
Added the option `mappermissionsdomain <DomainName1> <DomainName2>` to `gam <UserTypeEntity> create drivefileacl <DriveFileEntity>`
|
||||||
|
|||||||
@@ -334,7 +334,7 @@ writes the credentials into the file oauth2.txt.
|
|||||||
admin@server:/Users/admin/bin/gamadv-xtd3$ rm -f /Users/admin/GAMConfig/oauth2.txt
|
admin@server:/Users/admin/bin/gamadv-xtd3$ rm -f /Users/admin/GAMConfig/oauth2.txt
|
||||||
admin@server:/Users/admin/bin/gamadv-xtd3$ ./gam version
|
admin@server:/Users/admin/bin/gamadv-xtd3$ ./gam version
|
||||||
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
|
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
|
||||||
GAMADV-XTD3 6.65.17 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 6.66.00 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.10.8 64-bit final
|
Python 3.10.8 64-bit final
|
||||||
MacOS High Sierra 10.13.6 x86_64
|
MacOS High Sierra 10.13.6 x86_64
|
||||||
@@ -1002,7 +1002,7 @@ writes the credentials into the file oauth2.txt.
|
|||||||
C:\GAMADV-XTD3>del C:\GAMConfig\oauth2.txt
|
C:\GAMADV-XTD3>del C:\GAMConfig\oauth2.txt
|
||||||
C:\GAMADV-XTD3>gam version
|
C:\GAMADV-XTD3>gam version
|
||||||
WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
|
WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
|
||||||
GAMADV-XTD3 6.65.17 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 6.66.00 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.0 64-bit final
|
Python 3.12.0 64-bit final
|
||||||
Windows-10-10.0.17134 AMD64
|
Windows-10-10.0.17134 AMD64
|
||||||
|
|||||||
@@ -17,15 +17,10 @@
|
|||||||
- [Empty calendar trash](#empty-calendar-trash)
|
- [Empty calendar trash](#empty-calendar-trash)
|
||||||
- [Display calendar events](#display-calendar-events)
|
- [Display calendar events](#display-calendar-events)
|
||||||
- [Update calendar event attendees](#update-calendar-event-attendees)
|
- [Update calendar event attendees](#update-calendar-event-attendees)
|
||||||
- [Focus time events](#focus-time-events)
|
- [Status events](#status-events)
|
||||||
- [Manage focus time events](#manage-focus-time-events)
|
- [Focus time events](#focus-time-events)
|
||||||
- [Display focus time events](#display-focus-time-events)
|
- [Out of officeevents](#out-of-office-events)
|
||||||
- [Out of officeevents](#out-of-office-events)
|
- [Working location events](#working-location-events)
|
||||||
- [Manage Out of office events](#manage-out-of-office-events)
|
|
||||||
- [Display Out of officeevents](#display-out-of-office-events)
|
|
||||||
- [Working location events](#working-location-events)
|
|
||||||
- [Manage working location events](#manage-working-location-events)
|
|
||||||
- [Display working location events](#display-working-location-events)
|
|
||||||
|
|
||||||
## API documentation
|
## API documentation
|
||||||
* https://developers.google.com/calendar/v3/reference/events
|
* https://developers.google.com/calendar/v3/reference/events
|
||||||
@@ -255,7 +250,7 @@
|
|||||||
<EventSelectProperty> ::=
|
<EventSelectProperty> ::=
|
||||||
(after|starttime|timemin <Time>)|
|
(after|starttime|timemin <Time>)|
|
||||||
(before|endtime|timemax <Time>)|
|
(before|endtime|timemax <Time>)|
|
||||||
(eventtypes <EventTypeList>)|
|
(eventtype|eventtypes <EventTypeList>)|
|
||||||
(query <QueryCalendar>)|
|
(query <QueryCalendar>)|
|
||||||
(privateextendedproperty <String>)|
|
(privateextendedproperty <String>)|
|
||||||
(sharedextendedproperty <String>)|
|
(sharedextendedproperty <String>)|
|
||||||
@@ -301,6 +296,7 @@
|
|||||||
<TimeZone> ::= <String>
|
<TimeZone> ::= <String>
|
||||||
|
|
||||||
<EventAttribute> ::=
|
<EventAttribute> ::=
|
||||||
|
(allday <Date>)|
|
||||||
(anyonecanaddself [<Boolean>])|
|
(anyonecanaddself [<Boolean>])|
|
||||||
(attachment <String> <URL>)|
|
(attachment <String> <URL>)|
|
||||||
(attendee <EmailAddress>)|
|
(attendee <EmailAddress>)|
|
||||||
@@ -309,8 +305,7 @@
|
|||||||
(color <EventColorName>)|
|
(color <EventColorName>)|
|
||||||
(colorindex|colorid <EventColorIndex>)|
|
(colorindex|colorid <EventColorIndex>)|
|
||||||
(description <String>)|
|
(description <String>)|
|
||||||
(end (allday <Date>)|<Time>)|
|
(end|endtime (allday <Date>)|<Time>)|
|
||||||
(focustime [declinemode none|all|new] [declinemessage <String>] [chatstatus available|donotdisturb])|
|
|
||||||
(guestscaninviteothers <Boolean>)|
|
(guestscaninviteothers <Boolean>)|
|
||||||
guestscantinviteothers|
|
guestscantinviteothers|
|
||||||
(guestscanmodify <Boolean>)|
|
(guestscanmodify <Boolean>)|
|
||||||
@@ -324,25 +319,22 @@
|
|||||||
(noreminders|(reminder email|popup <Number>))|
|
(noreminders|(reminder email|popup <Number>))|
|
||||||
(optionalattendee <EmailAddress>)|
|
(optionalattendee <EmailAddress>)|
|
||||||
(originalstart|originalstarttime (allday <Date>)|<Time>)|
|
(originalstart|originalstarttime (allday <Date>)|<Time>)|
|
||||||
(outofoffice [declinemode none|all|new] [declinemessage <String>])|
|
|
||||||
(privateproperty <PropertyKey> <PropertyValue>)|
|
(privateproperty <PropertyKey> <PropertyValue>)|
|
||||||
|
(range <Date> <Date>)|
|
||||||
(recurrence <RRULE, EXRULE, RDATE and EXDATE line>)|
|
(recurrence <RRULE, EXRULE, RDATE and EXDATE line>)|
|
||||||
(reminder <Number> email|popup))|
|
(reminder <Number> email|popup))|
|
||||||
(selectattendees [<AttendeeAttendance>] [<AttendeeStatus>] <UserTypeEntity>)|
|
(selectattendees [<AttendeeAttendance>] [<AttendeeStatus>] <UserTypeEntity>)|
|
||||||
(sequence <Integer>)|
|
(sequence <Integer>)|
|
||||||
(sharedproperty <PropertyKey> <PropertyValue>)|
|
(sharedproperty <PropertyKey> <PropertyValue>)|
|
||||||
(source <String> <URL>)|
|
(source <String> <URL>)|
|
||||||
(start (allday <Date>)|<Time>)|
|
(start|starttime (allday <Date>)|<Time>)|
|
||||||
(status confirmed|tentative|cancelled)|
|
(status confirmed|tentative|cancelled)|
|
||||||
(summary <String>)|
|
(summary <String>)|
|
||||||
tentative|
|
tentative|
|
||||||
|
(timerange <Time> <Time>)|
|
||||||
(timezone <TimeZone>)|
|
(timezone <TimeZone>)|
|
||||||
(transparency opaque|transparent)|
|
(transparency opaque|transparent)|
|
||||||
(visibility default|public|private)|
|
(visibility default|public|private)
|
||||||
(workinglocation (home|
|
|
||||||
(custom <String>)|
|
|
||||||
(office <String> [building|buildingid <String>] [floor|floorname <String>]
|
|
||||||
[section|floorsection <String>] [desk|deskcode <String>])))
|
|
||||||
|
|
||||||
The following attributes are equivalent:
|
The following attributes are equivalent:
|
||||||
available - transparency transparent
|
available - transparency transparent
|
||||||
@@ -357,8 +349,8 @@ The following attributes are equivalent:
|
|||||||
|
|
||||||
<EventUpdateAttribute> ::=
|
<EventUpdateAttribute> ::=
|
||||||
<EventAttribute>|
|
<EventAttribute>|
|
||||||
clearattendees|
|
|
||||||
clearattachments|
|
clearattachments|
|
||||||
|
clearattendees|
|
||||||
clearhangoutsmeet|
|
clearhangoutsmeet|
|
||||||
(clearprivateproperty <PropertyKey>)|
|
(clearprivateproperty <PropertyKey>)|
|
||||||
(clearsharedproperty <PropertyKey>)|
|
(clearsharedproperty <PropertyKey>)|
|
||||||
@@ -435,6 +427,7 @@ If none of the following options are selected, all events are selected.
|
|||||||
The Google Calendar API processes `<EventSelectProperty>*`; you may specify none or multiple properties.
|
The Google Calendar API processes `<EventSelectProperty>*`; you may specify none or multiple properties.
|
||||||
* `after|starttime|timemin <Time>` - Lower bound (inclusive) for an event's end time to filter by. If timeMax is set, timeMin must be smaller than timeMax.
|
* `after|starttime|timemin <Time>` - Lower bound (inclusive) for an event's end time to filter by. If timeMax is set, timeMin must be smaller than timeMax.
|
||||||
* `before|endtime|timemax <Time>` - Upper bound (exclusive) for an event's start time to filter by. If timeMin is set, timeMax must be greater than timeMin.
|
* `before|endtime|timemax <Time>` - Upper bound (exclusive) for an event's start time to filter by. If timeMin is set, timeMax must be greater than timeMin.
|
||||||
|
* `eventtypes <EventTypeList>` - Select events based on their type.
|
||||||
* `query <QueryCalendar>` - Free text search terms to find events that match these terms in any field, except for extended properties
|
* `query <QueryCalendar>` - Free text search terms to find events that match these terms in any field, except for extended properties
|
||||||
* `privateextendedproperty <String>` - A required private property; `<String>` must be of the form `propertyName=value`
|
* `privateextendedproperty <String>` - A required private property; `<String>` must be of the form `propertyName=value`
|
||||||
* `sharedextendedproperty <String>` - A required shared property; `<String>` must be of the form `propertyName=value`
|
* `sharedextendedproperty <String>` - A required shared property; `<String>` must be of the form `propertyName=value`
|
||||||
@@ -721,6 +714,8 @@ the second adds the primary email.
|
|||||||
|
|
||||||
The attendee changes are displayed but not processed unless `doit` is specified.
|
The attendee changes are displayed but not processed unless `doit` is specified.
|
||||||
|
|
||||||
|
## Status events
|
||||||
|
|
||||||
## Focus time events
|
## Focus time events
|
||||||
|
|
||||||
## Manage focus time events
|
## Manage focus time events
|
||||||
|
|||||||
@@ -204,8 +204,9 @@ The `quotechar <Character>` option allows you to choose an alternate quote chara
|
|||||||
### Add members to a chat space
|
### Add members to a chat space
|
||||||
```
|
```
|
||||||
gam <UserTypeEntity> create chatmember <ChatSpace>
|
gam <UserTypeEntity> create chatmember <ChatSpace>
|
||||||
[type human|bot]
|
[type human|bot] [role member|manager]
|
||||||
((user <UserItem>)|(members <UserTypeEntity>))*
|
(user <UserItem>)* (members <UserTypeEntity>)*
|
||||||
|
(group <GroupItem>)* (groups <GroupEntity>)*
|
||||||
[formatjson|returnidonly]
|
[formatjson|returnidonly]
|
||||||
```
|
```
|
||||||
By default, Gam displays the information about the chatmember as an indented list of keys and values.
|
By default, Gam displays the information about the chatmember as an indented list of keys and values.
|
||||||
@@ -213,10 +214,11 @@ By default, Gam displays the information about the chatmember as an indented lis
|
|||||||
* `returnidonly` - Display the chatmember name only
|
* `returnidonly` - Display the chatmember name only
|
||||||
|
|
||||||
### Delete members from a chat space
|
### Delete members from a chat space
|
||||||
Delete members by specifying a chat space and user email addresses.
|
Delete members by specifying a chat space and user/group email addresses.
|
||||||
```
|
```
|
||||||
gam <UserTypeEntity> delete chatmember <ChatSpace>
|
gam <UserTypeEntity> delete chatmember <ChatSpace>
|
||||||
((user <UserItem>)|(members <UserTypeEntity>))+
|
((user <UserItem>)|(members <UserTypeEntity>)|
|
||||||
|
(group <GroupItem>)|(groups <GroupEntity>))+
|
||||||
```
|
```
|
||||||
|
|
||||||
Delete members by specifying chatmember names.
|
Delete members by specifying chatmember names.
|
||||||
@@ -236,7 +238,7 @@ By default, Gam displays the information as an indented list of keys and values.
|
|||||||
### Display information about all chat members in a chat space
|
### Display information about all chat members in a chat space
|
||||||
```
|
```
|
||||||
gam <UserTypeEntity> show chatmembers <ChatSpace>
|
gam <UserTypeEntity> show chatmembers <ChatSpace>
|
||||||
[showinvited [<Boolean>]] [filter <String>]
|
[showinvited [<Boolean>]] [showgroups [<Boolean>]] [filter <String>]
|
||||||
[formatjson]
|
[formatjson]
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -245,7 +247,7 @@ By default, Gam displays the information as an indented list of keys and values.
|
|||||||
|
|
||||||
```
|
```
|
||||||
gam <UserTypeEntity> print chatmembers [todrive <ToDriveAttribute>*] <ChatSpace>
|
gam <UserTypeEntity> print chatmembers [todrive <ToDriveAttribute>*] <ChatSpace>
|
||||||
[showinvited [<Boolean>]] [filter <String>]
|
[showinvited [<Boolean>]] [showgroups [<Boolean>]] [filter <String>]
|
||||||
[formatjson [quotechar <Character>]]
|
[formatjson [quotechar <Character>]]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -539,13 +539,15 @@ The `dateheaderconverttimezone [<Boolean>]>` option converts `<SMTPDateHeader>`
|
|||||||
* `showsize` - Display the message size
|
* `showsize` - Display the message size
|
||||||
* `showsnippet` - Display the message snippet
|
* `showsnippet` - Display the message snippet
|
||||||
|
|
||||||
### Display message count
|
### Display message count and optionally cumulative message size
|
||||||
* `countsonly` - Display the count of the number of messages
|
* `countsonly` - Display the count of the number of messages
|
||||||
|
* `showsize` - Display the cumulative message size
|
||||||
|
|
||||||
### Display label counts
|
### Display label counts
|
||||||
* `showlabels` - Display the message labels
|
* `showlabels` - Display the message labels
|
||||||
* `countsonly` - Display all message label counts
|
* `countsonly` - Display all message label counts
|
||||||
* `positivecountsonly` - Display message label counts that are greater than 0
|
* `positivecountsonly` - Display message label counts that are greater than 0
|
||||||
|
* `showsize` - Display the cumulative message size for each label
|
||||||
* `useronly` - Do not display system labels
|
* `useronly` - Do not display system labels
|
||||||
|
|
||||||
## Print only options
|
## Print only options
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
- [API documentation](#api-documentation)
|
- [API documentation](#api-documentation)
|
||||||
- [Notes](#notes)
|
- [Notes](#notes)
|
||||||
- [Definitions](#definitions)
|
- [Definitions](#definitions)
|
||||||
- [Display Looker Studio assets](#display-data-studio-assets)
|
- [Display Looker Studio assets](#display-looker-studio-assets)
|
||||||
- [Manage Looker Studio permissions](#manage-data-studio-permissions)
|
- [Manage Looker Studio permissions](#manage-looker-studio-permissions)
|
||||||
- [Add Permissions](#add-permissions)
|
- [Add Permissions](#add-permissions)
|
||||||
- [Delete Permissions](#delete-permissions)
|
- [Delete Permissions](#delete-permissions)
|
||||||
- [Update Permissions](#update-permissions)
|
- [Update Permissions](#update-permissions)
|
||||||
- [Display Looker Studio permissions](#display-data-studio-permissions)
|
- [Display Looker Studio permissions](#display-looker-studio-permissions)
|
||||||
|
|
||||||
## API documentation
|
## API documentation
|
||||||
* https://developers.google.com/looker-studio/integrate/api/reference
|
* https://developers.google.com/looker-studio/integrate/api/reference
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
Print the current version of Gam with details
|
Print the current version of Gam with details
|
||||||
```
|
```
|
||||||
gam version
|
gam version
|
||||||
GAMADV-XTD3 6.65.17 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 6.66.00 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.0 64-bit final
|
Python 3.12.0 64-bit final
|
||||||
MacOS Monterey 12.7 x86_64
|
MacOS Monterey 12.7 x86_64
|
||||||
@@ -16,7 +16,7 @@ Time: 2023-06-02T21:10:00-07:00
|
|||||||
Print the current version of Gam with details and time offset information
|
Print the current version of Gam with details and time offset information
|
||||||
```
|
```
|
||||||
gam version timeoffset
|
gam version timeoffset
|
||||||
GAMADV-XTD3 6.65.17 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 6.66.00 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.0 64-bit final
|
Python 3.12.0 64-bit final
|
||||||
MacOS Monterey 12.7 x86_64
|
MacOS Monterey 12.7 x86_64
|
||||||
@@ -28,7 +28,7 @@ Your system time differs from www.googleapis.com by less than 1 second
|
|||||||
Print the current version of Gam with extended details and SSL information
|
Print the current version of Gam with extended details and SSL information
|
||||||
```
|
```
|
||||||
gam version extended
|
gam version extended
|
||||||
GAMADV-XTD3 6.65.17 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 6.66.00 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.0 64-bit final
|
Python 3.12.0 64-bit final
|
||||||
MacOS Monterey 12.7 x86_64
|
MacOS Monterey 12.7 x86_64
|
||||||
@@ -65,7 +65,7 @@ MacOS High Sierra 10.13.6 x86_64
|
|||||||
Path: /Users/Admin/bin/gamadv-xtd3
|
Path: /Users/Admin/bin/gamadv-xtd3
|
||||||
Version Check:
|
Version Check:
|
||||||
Current: 5.35.08
|
Current: 5.35.08
|
||||||
Latest: 6.65.17
|
Latest: 6.66.00
|
||||||
echo $?
|
echo $?
|
||||||
1
|
1
|
||||||
```
|
```
|
||||||
@@ -73,7 +73,7 @@ echo $?
|
|||||||
Print the current version number without details
|
Print the current version number without details
|
||||||
```
|
```
|
||||||
gam version simple
|
gam version simple
|
||||||
6.65.17
|
6.66.00
|
||||||
```
|
```
|
||||||
In Linux/MacOS you can do:
|
In Linux/MacOS you can do:
|
||||||
```
|
```
|
||||||
@@ -83,7 +83,7 @@ echo $VER
|
|||||||
Print the current version of Gam and address of this Wiki
|
Print the current version of Gam and address of this Wiki
|
||||||
```
|
```
|
||||||
gam help
|
gam help
|
||||||
GAM 6.65.17 - https://github.com/taers232c/GAMADV-XTD3
|
GAM 6.66.00 - https://github.com/taers232c/GAMADV-XTD3
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.0 64-bit final
|
Python 3.12.0 64-bit final
|
||||||
MacOS Monterey 12.7 x86_64
|
MacOS Monterey 12.7 x86_64
|
||||||
|
|||||||
@@ -1615,7 +1615,7 @@ gam calendar <CalendarEntity> printacl [todrive <ToDriveAttribute>*]
|
|||||||
(attendeestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>)|
|
(attendeestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>)|
|
||||||
available|
|
available|
|
||||||
(color <EventColorName>)|
|
(color <EventColorName>)|
|
||||||
(colorindex|colorid <EventColorIndex>))|
|
(colorindex|colorid <EventColorIndex>)|
|
||||||
(description <String>)|
|
(description <String>)|
|
||||||
(end|endtime (allday <Date>)|<Time>)|
|
(end|endtime (allday <Date>)|<Time>)|
|
||||||
(guestscaninviteothers <Boolean>)|
|
(guestscaninviteothers <Boolean>)|
|
||||||
@@ -1625,12 +1625,14 @@ gam calendar <CalendarEntity> printacl [todrive <ToDriveAttribute>*]
|
|||||||
guestscantseeotherguests|
|
guestscantseeotherguests|
|
||||||
hangoutsmeet|
|
hangoutsmeet|
|
||||||
<JSONData>|
|
<JSONData>|
|
||||||
(jsonattendees [charset <Charset>] <String>)|(jsonattendees file <FileName> [charset <Charset>])|
|
(jsonattendees [charset <Charset>] <String>)|
|
||||||
|
(jsonattendees file <FileName> [charset <Charset>])|
|
||||||
(location <String>)|
|
(location <String>)|
|
||||||
(noreminders|(reminder email|popup <Number>))|
|
(noreminders|(reminder email|popup <Number>))|
|
||||||
(optionalattendee <EmailAddress>)|
|
(optionalattendee <EmailAddress>)|
|
||||||
(originalstart|originalstarttime (allday <Date>)|<Time>)|
|
(originalstart|originalstarttime (allday <Date>)|<Time>)|
|
||||||
(privateproperty <PropertyKey> <PropertyValue>)|
|
(privateproperty <PropertyKey> <PropertyValue>)|
|
||||||
|
(range <Date> <Date>)|
|
||||||
(recurrence <RRULE, EXRULE, RDATE and EXDATE line>)|
|
(recurrence <RRULE, EXRULE, RDATE and EXDATE line>)|
|
||||||
(reminder <Number> email|popup))|
|
(reminder <Number> email|popup))|
|
||||||
(selectattendees [<AttendeeAttendance>] [<AttendeeStatus>] <UserTypeEntity>)|
|
(selectattendees [<AttendeeAttendance>] [<AttendeeStatus>] <UserTypeEntity>)|
|
||||||
@@ -1641,6 +1643,7 @@ gam calendar <CalendarEntity> printacl [todrive <ToDriveAttribute>*]
|
|||||||
(status confirmed|tentative|cancelled)|
|
(status confirmed|tentative|cancelled)|
|
||||||
(summary <String>)|
|
(summary <String>)|
|
||||||
tentative|
|
tentative|
|
||||||
|
(timerange <Time> <Time>)|
|
||||||
(timezone <TimeZone>)|
|
(timezone <TimeZone>)|
|
||||||
(transparency opaque|transparent)|
|
(transparency opaque|transparent)|
|
||||||
(visibility default|public|private)
|
(visibility default|public|private)
|
||||||
@@ -2004,10 +2007,10 @@ gam print chatspaces [todrive <ToDriveAttribute>*]
|
|||||||
gam info chatmember member <ChatMember>
|
gam info chatmember member <ChatMember>
|
||||||
[formatjson]
|
[formatjson]
|
||||||
gam show chatmembers <ChatSpace>
|
gam show chatmembers <ChatSpace>
|
||||||
[showinvited [<Boolean>]] [filter <String>]
|
[showinvited [<Boolean>]] [showgroups [<Boolean>]] [filter <String>]
|
||||||
[formatjson]
|
[formatjson]
|
||||||
gam print chatmembers [todrive <ToDriveAttribute>*] <ChatSpace>
|
gam print chatmembers [todrive <ToDriveAttribute>*] <ChatSpace>
|
||||||
[showinvited [<Boolean>]] [filter <String>]
|
[showinvited [<Boolean>]] [showgroups [<Boolean>]] [filter <String>]
|
||||||
[formatjson [quotechar <Character>]]
|
[formatjson [quotechar <Character>]]
|
||||||
|
|
||||||
gam create chatmessage <ChatSpace>
|
gam create chatmessage <ChatSpace>
|
||||||
@@ -5719,39 +5722,53 @@ gam <UserTypeEntity> update calattendees <UserCalendarEntity> <EventEntity> [any
|
|||||||
(updatestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>)*
|
(updatestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>)*
|
||||||
(updateentitystatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddressEntity>)*
|
(updateentitystatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddressEntity>)*
|
||||||
|
|
||||||
Manage/Display Working Locations
|
Manage/Display Status Events
|
||||||
|
|
||||||
|
gam <UserTypeEntity> create focustime
|
||||||
|
[chatstatus available|donotdisturb]
|
||||||
|
[declinemode none|all|new]
|
||||||
|
[declinemessage <String>]
|
||||||
|
[summary <String>]
|
||||||
|
(timerange <Time> <Time> [recurrence <String>])+
|
||||||
|
[timezone <String>]
|
||||||
|
gam <UserTypeEntity> create outofoffice
|
||||||
|
[declinemode none|all|new]
|
||||||
|
[declinemessage <String>]
|
||||||
|
[summary <String>]
|
||||||
|
(timerange <Time> <Time> [recurrence <String>])+
|
||||||
|
[timezone <String>]
|
||||||
gam <UserTypeEntity> create workinglocation
|
gam <UserTypeEntity> create workinglocation
|
||||||
(home|
|
(home|
|
||||||
(custom <String>)|
|
(custom <String>)|
|
||||||
(office <String> [building|buildingid <String>] [floor|floorname <String>]
|
(office <String> [building|buildingid <String>] [floor|floorname <String>]
|
||||||
[section|floorsection <String>] [desk|deskcode <String>]))
|
[section|floorsection <String>] [desk|deskcode <String>]))
|
||||||
((date yyyy-mm-dd)|
|
((date yyyy-mm-dd)|
|
||||||
(range yyyy-mm-dd yyyy-mm-dd)|
|
(range yyyy-mm-dd yyyy-mm-dd)|
|
||||||
(daily yyyy-mm-dd <Number>)|
|
(daily yyyy-mm-dd N)|
|
||||||
(weekly yyyy-mm-dd <Number>)|
|
(weekly yyyy-mm-dd N)|
|
||||||
|
(timerange <Time> <Time>))+
|
||||||
|
[timezone <String>]
|
||||||
|
|
||||||
|
gam <UserTypeEntity> delete focustime|outofoffice|workinglocation
|
||||||
|
((date yyyy-mm-dd)|
|
||||||
|
(range yyyy-mm-dd yyyy-mm-dd)|
|
||||||
|
(daily yyyy-mm-dd N)|
|
||||||
|
(weekly yyyy-mm-dd N)|
|
||||||
(timerange <Time> <Time>))+
|
(timerange <Time> <Time>))+
|
||||||
|
|
||||||
gam <UserTypeEntity> delete workinglocation
|
gam <UserTypeEntity> show focustime|outofoffice|workinglocation
|
||||||
((date yyyy-mm-dd)|
|
((date yyyy-mm-dd)|
|
||||||
(range yyyy-mm-dd yyyy-mm-dd)|
|
(range yyyy-mm-dd yyyy-mm-dd)|
|
||||||
(daily yyyy-mm-dd <Number>)|
|
(daily yyyy-mm-dd N)|
|
||||||
(weekly yyyy-mm-dd <Number>)|
|
(weekly yyyy-mm-dd N)|
|
||||||
(timerange <Time> <Time>))+
|
|
||||||
|
|
||||||
gam <UserTypeEntity> show workinglocation
|
|
||||||
((date yyyy-mm-dd)|
|
|
||||||
(range yyyy-mm-dd yyyy-mm-dd)|
|
|
||||||
(daily yyyy-mm-dd <Number>)|
|
|
||||||
(weekly yyyy-mm-dd <Number>)|
|
|
||||||
(timerange <Time> <Time>))+
|
(timerange <Time> <Time>))+
|
||||||
[showdayofweek]
|
[showdayofweek]
|
||||||
[formatjson]
|
[formatjson]
|
||||||
gam <UserTypeEntity> print workinglocation
|
gam <UserTypeEntity> print focustime|outofoffice|workinglocation
|
||||||
((date yyyy-mm-dd)|
|
((date yyyy-mm-dd)|
|
||||||
(range yyyy-mm-dd yyyy-mm-dd)|
|
(range yyyy-mm-dd yyyy-mm-dd)|
|
||||||
(daily yyyy-mm-dd <Number>)|
|
(daily yyyy-mm-dd N)|
|
||||||
(weekly yyyy-mm-dd <Number>)|
|
(weekly yyyy-mm-dd N)|
|
||||||
(timerange <Time> <Time>))+
|
(timerange <Time> <Time>))+
|
||||||
[showdayofweek]
|
[showdayofweek]
|
||||||
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
||||||
@@ -5806,18 +5823,22 @@ gam <UserTypeEntity> print chatspaces [todrive <ToDriveAttribute>*]
|
|||||||
[formatjson [quotechar <Character>]]
|
[formatjson [quotechar <Character>]]
|
||||||
|
|
||||||
gam <UserTypeEntity> create chatmember <ChatSpace>
|
gam <UserTypeEntity> create chatmember <ChatSpace>
|
||||||
[type human|bot]
|
[type human|bot] [role member|manager]
|
||||||
((user <UserItem>)|(members <UserTypeEntity>))*
|
(user <UserItem>)* (members <UserTypeEntity>)*
|
||||||
|
(group <GroupItem>)* (groups <GroupEntity>)*
|
||||||
[formatjson|returnidonly]
|
[formatjson|returnidonly]
|
||||||
gam <UserTypeEntity> delete chatmember <ChatSpace>
|
gam <UserTypeEntity> delete chatmember <ChatSpace>
|
||||||
((user <UserItem>)|(members <UserTypeEntity>))+
|
((user <UserItem>)|(members <UserTypeEntity>)|
|
||||||
|
(group <GroupItem>)|(groups <GroupEntity>))+
|
||||||
gam <UserTypeEntity> remove chatmember members <ChatMemberList>
|
gam <UserTypeEntity> remove chatmember members <ChatMemberList>
|
||||||
|
|
||||||
gam <UserTypeEntity> info chatmember members <ChatMemberList>
|
gam <UserTypeEntity> info chatmember members <ChatMemberList>
|
||||||
[formatjson]
|
[formatjson]
|
||||||
gam <UserTypeEntity> show chatmembers <ChatSpace>
|
gam <UserTypeEntity> show chatmembers <ChatSpace>
|
||||||
|
[showinvited [<Boolean>]] [showgroups [<Boolean>]] [filter <String>]
|
||||||
[formatjson]
|
[formatjson]
|
||||||
gam <UserTypeEntity> print chatmembers [todrive <ToDriveAttribute>*] <ChatSpace>
|
gam <UserTypeEntity> print chatmembers [todrive <ToDriveAttribute>*] <ChatSpace>
|
||||||
|
[showinvited [<Boolean>]] [showgroups [<Boolean>]] [filter <String>]
|
||||||
[formatjson [quotechar <Character>]]
|
[formatjson [quotechar <Character>]]
|
||||||
|
|
||||||
gam <UserTypeEntity> create chatmessage <ChatSpace>
|
gam <UserTypeEntity> create chatmessage <ChatSpace>
|
||||||
|
|||||||
@@ -2,6 +2,22 @@
|
|||||||
|
|
||||||
Merged GAM-Team version
|
Merged GAM-Team version
|
||||||
|
|
||||||
|
6.66.00
|
||||||
|
|
||||||
|
Added support for `Focus Time` and `Out of Office` status events in user's primary calendars.
|
||||||
|
* See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Calendars-Events#status-events
|
||||||
|
This is a work-in-progress.
|
||||||
|
|
||||||
|
Updated `gam <UserTypeEntity> print|show messages` to allow option `show_size` to be used with option `countsonly`
|
||||||
|
to display the cumulative size of the messages selected.
|
||||||
|
```
|
||||||
|
gam user user@domain.com print messages query "newer_than:31d" countsonly showsize
|
||||||
|
Getting all Messages for user@domain.com
|
||||||
|
Got 16 Messagess for user@domain.com...
|
||||||
|
User,messages,size
|
||||||
|
user@domain.com,16,92806
|
||||||
|
```
|
||||||
|
|
||||||
6.65.17
|
6.65.17
|
||||||
|
|
||||||
Added the option `mappermissionsdomain <DomainName1> <DomainName2>` to `gam <UserTypeEntity> create drivefileacl <DriveFileEntity>`
|
Added the option `mappermissionsdomain <DomainName1> <DomainName2>` to `gam <UserTypeEntity> create drivefileacl <DriveFileEntity>`
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user