title | description |
---|---|
PlacesOS Microsoft Graph API Driver |
Communicates with the Microsoft Graph API to share information with Microsoft services |
- Type: Service Driver
- Dependencies: None
- Source: https://github.com/PlaceOS/drivers/blob/master/drivers/microsoft/graph\_api.cr
- Groups booking requests and sends them to the Microsoft calendar
- Manages calendar events, groups, and users through Microsoft Graph API
- Sends emails and notifies invited users
- Creates email templates for specified responses
Key | Type | Default value | Description |
---|---|---|---|
calendar_service_account |
String | [email protected] | --- |
calendar_config |
Object | {tenant: "", client_id: "", client_secret: "", conference_type: ""} | --- |
rate_limit |
--- | 5 | limits the number of API calls so it does not exceed limits set by Microsoft |
mailer_from |
String | email_or_office_userPrincipalName | |
email_templates |
Object | {visitor: {checkin: {subject: "%{name} has arrived", text: "for your meeting at %{time}", }}} |
Shows true if the driver is connected to the Microsoft Graph API and false if not
Boolean
1. If connected to Microsoft Graph API
{
"connected": true
}
Displays the number of API calls waiting in the queue to be sent to Microsoft Graph API
Name | Required? | Type | Default | Description |
---|---|---|---|---|
None |
1. If no calls waiting in the queue:
0
Displays the number of API calls to Microsoft Graph API currently in progress
Name | Required? | Type | Default | Description |
---|---|---|---|---|
None |
1. If no calls in progress:
0
Generates an SVG of a QR code which encodes the given text.
Name | Required? | Type | Default | Description |
---|---|---|---|---|
text | true | String | N/A | The text the user wishes to turn into a QR code |
1.
<?xml version="1.0" standalone="yes"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" width="231" height="231" shape-rendering="crispEdges">
<rect width="231" height="231" x="0" y="0" style="fill:#fff"/>
<rect width="11" height="11" x="0" y="0" style="fill:#000"/><rect width="11" height="11" x="11" y="0" style="fill:#000"/><rect width="11" height="11" x="22" y="0" style="fill:#000"/><rect width="11" height="11" x="33" y="0" style="fill:#000"/><rect width="11" height="11" x="44" y="0" style="fill:#000"/><rect width="11" height="11" x="55" y="0" style="fill:#000"/><rect width="11" height="11" x="66" y="0" style="fill:#000"/><rect width="11" height="11" x="88" y="0" style="fill:#000"/><rect width="11" height="11" x="132" y="0" style="fill:#000"/><rect width="11" height="11" x="154" y="0" style="fill:#000"/><rect width="11" height="11" x="165" y="0" style="fill:#000"/><rect width="11" height="11" x="176" y="0" style="fill:#000"/><rect width="11" height="11" x="187" y="0" style="fill:#000"/><rect width="11" height="11" x="198" y="0" style="fill:#000"/><rect width="11" height="11" x="209" y="0" style="fill:#000"/><rect width="11" height="11" x="220" y="0" style="fill:#000"/>
<rect width="11" height="11" x="0" y="11" style="fill:#000"/><rect width="11" height="11" x="66" y="11" style="fill:#000"/><rect width="11" height="11" x="99" y="11" style="fill:#000"/><rect width="11" height="11" x="110" y="11" style="fill:#000"/><rect width="11" height="11" x="121" y="11" style="fill:#000"/><rect width="11" height="11" x="132" y="11" style="fill:#000"/><rect width="11" height="11" x="154" y="11" style="fill:#000"/><rect width="11" height="11" x="220" y="11" style="fill:#000"/>
<rect width="11" height="11" x="0" y="22" style="fill:#000"/><rect width="11" height="11" x="22" y="22" style="fill:#000"/><rect width="11" height="11" x="33" y="22" style="fill:#000"/><rect width="11" height="11" x="44" y="22" style="fill:#000"/><rect width="11" height="11" x="66" y="22" style="fill:#000"/><rect width="11" height="11" x="88" y="22" style="fill:#000"/><rect width="11" height="11" x="99" y="22" style="fill:#000"/><rect width="11" height="11" x="121" y="22" style="fill:#000"/><rect width="11" height="11" x="132" y="22" style="fill:#000"/><rect width="11" height="11" x="154" y="22" style="fill:#000"/><rect width="11" height="11" x="176" y="22" style="fill:#000"/><rect width="11" height="11" x="187" y="22" style="fill:#000"/><rect width="11" height="11" x="198" y="22" style="fill:#000"/><rect width="11" height="11" x="220" y="22" style="fill:#000"/>
<rect width="11" height="11" x="0" y="33" style="fill:#000"/><rect width="11" height="11" x="22" y="33" style="fill:#000"/><rect width="11" height="11" x="33" y="33" style="fill:#000"/><rect width="11" height="11" x="44" y="33" style="fill:#000"/><rect width="11" height="11" x="66" y="33" style="fill:#000"/><rect width="11" height="11" x="110" y="33" style="fill:#000"/><rect width="11" height="11" x="121" y="33" style="fill:#000"/><rect width="11" height="11" x="154" y="33" style="fill:#000"/><rect width="11" height="11" x="176" y="33" style="fill:#000"/><rect width="11" height="11" x="187" y="33" style="fill:#000"/><rect width="11" height="11" x="198" y="33" style="fill:#000"/><rect width="11" height="11" x="220" y="33" style="fill:#000"/>
<rect width="11" height="11" x="0" y="44" style="fill:#000"/><rect width="11" height="11" x="22" y="44" style="fill:#000"/><rect width="11" height="11" x="33" y="44" style="fill:#000"/><rect width="11" height="11" x="44" y="44" style="fill:#000"/><rect width="11" height="11" x="66" y="44" style="fill:#000"/><rect width="11" height="11" x="88" y="44" style="fill:#000"/><rect width="11" height="11" x="99" y="44" style="fill:#000"/><rect width="11" height="11" x="121" y="44" style="fill:#000"/><rect width="11" height="11" x="154" y="44" style="fill:#000"/><rect width="11" height="11" x="176" y="44" style="fill:#000"/><rect width="11" height="11" x="187" y="44" style="fill:#000"/><rect width="11" height="11" x="198" y="44" style="fill:#000"/><rect width="11" height="11" x="220" y="44" style="fill:#000"/>
<rect width="11" height="11" x="0" y="55" style="fill:#000"/><rect width="11" height="11" x="66" y="55" style="fill:#000"/><rect width="11" height="11" x="99" y="55" style="fill:#000"/><rect width="11" height="11" x="132" y="55" style="fill:#000"/><rect width="11" height="11" x="154" y="55" style="fill:#000"/><rect width="11" height="11" x="220" y="55" style="fill:#000"/>
<rect width="11" height="11" x="0" y="66" style="fill:#000"/><rect width="11" height="11" x="11" y="66" style="fill:#000"/><rect width="11" height="11" x="22" y="66" style="fill:#000"/><rect width="11" height="11" x="33" y="66" style="fill:#000"/><rect width="11" height="11" x="44" y="66" style="fill:#000"/><rect width="11" height="11" x="55" y="66" style="fill:#000"/><rect width="11" height="11" x="66" y="66" style="fill:#000"/><rect width="11" height="11" x="88" y="66" style="fill:#000"/><rect width="11" height="11" x="110" y="66" style="fill:#000"/><rect width="11" height="11" x="132" y="66" style="fill:#000"/><rect width="11" height="11" x="154" y="66" style="fill:#000"/><rect width="11" height="11" x="165" y="66" style="fill:#000"/><rect width="11" height="11" x="176" y="66" style="fill:#000"/><rect width="11" height="11" x="187" y="66" style="fill:#000"/><rect width="11" height="11" x="198" y="66" style="fill:#000"/><rect width="11" height="11" x="209" y="66" style="fill:#000"/><rect width="11" height="11" x="220" y="66" style="fill:#000"/>
<rect width="11" height="11" x="88" y="77" style="fill:#000"/><rect width="11" height="11" x="99" y="77" style="fill:#000"/><rect width="11" height="11" x="110" y="77" style="fill:#000"/><rect width="11" height="11" x="132" y="77" style="fill:#000"/>
<rect width="11" height="11" x="55" y="88" style="fill:#000"/><rect width="11" height="11" x="66" y="88" style="fill:#000"/><rect width="11" height="11" x="132" y="88" style="fill:#000"/><rect width="11" height="11" x="154" y="88" style="fill:#000"/><rect width="11" height="11" x="176" y="88" style="fill:#000"/><rect width="11" height="11" x="198" y="88" style="fill:#000"/><rect width="11" height="11" x="220" y="88" style="fill:#000"/>
<rect width="11" height="11" x="0" y="99" style="fill:#000"/><rect width="11" height="11" x="11" y="99" style="fill:#000"/><rect width="11" height="11" x="22" y="99" style="fill:#000"/><rect width="11" height="11" x="33" y="99" style="fill:#000"/><rect width="11" height="11" x="88" y="99" style="fill:#000"/><rect width="11" height="11" x="99" y="99" style="fill:#000"/><rect width="11" height="11" x="110" y="99" style="fill:#000"/><rect width="11" height="11" x="121" y="99" style="fill:#000"/><rect width="11" height="11" x="143" y="99" style="fill:#000"/><rect width="11" height="11" x="154" y="99" style="fill:#000"/><rect width="11" height="11" x="176" y="99" style="fill:#000"/><rect width="11" height="11" x="187" y="99" style="fill:#000"/><rect width="11" height="11" x="198" y="99" style="fill:#000"/>
<rect width="11" height="11" x="22" y="110" style="fill:#000"/><rect width="11" height="11" x="33" y="110" style="fill:#000"/><rect width="11" height="11" x="44" y="110" style="fill:#000"/><rect width="11" height="11" x="66" y="110" style="fill:#000"/><rect width="11" height="11" x="88" y="110" style="fill:#000"/><rect width="11" height="11" x="99" y="110" style="fill:#000"/><rect width="11" height="11" x="121" y="110" style="fill:#000"/><rect width="11" height="11" x="132" y="110" style="fill:#000"/><rect width="11" height="11" x="143" y="110" style="fill:#000"/><rect width="11" height="11" x="176" y="110" style="fill:#000"/><rect width="11" height="11" x="187" y="110" style="fill:#000"/><rect width="11" height="11" x="198" y="110" style="fill:#000"/><rect width="11" height="11" x="209" y="110" style="fill:#000"/>
<rect width="11" height="11" x="33" y="121" style="fill:#000"/><rect width="11" height="11" x="55" y="121" style="fill:#000"/><rect width="11" height="11" x="121" y="121" style="fill:#000"/><rect width="11" height="11" x="176" y="121" style="fill:#000"/><rect width="11" height="11" x="187" y="121" style="fill:#000"/><rect width="11" height="11" x="198" y="121" style="fill:#000"/>
<rect width="11" height="11" x="22" y="132" style="fill:#000"/><rect width="11" height="11" x="66" y="132" style="fill:#000"/><rect width="11" height="11" x="88" y="132" style="fill:#000"/><rect width="11" height="11" x="110" y="132" style="fill:#000"/><rect width="11" height="11" x="121" y="132" style="fill:#000"/><rect width="11" height="11" x="143" y="132" style="fill:#000"/><rect width="11" height="11" x="154" y="132" style="fill:#000"/><rect width="11" height="11" x="220" y="132" style="fill:#000"/>
<rect width="11" height="11" x="88" y="143" style="fill:#000"/><rect width="11" height="11" x="110" y="143" style="fill:#000"/><rect width="11" height="11" x="154" y="143" style="fill:#000"/><rect width="11" height="11" x="165" y="143" style="fill:#000"/><rect width="11" height="11" x="198" y="143" style="fill:#000"/><rect width="11" height="11" x="209" y="143" style="fill:#000"/>
<rect width="11" height="11" x="0" y="154" style="fill:#000"/><rect width="11" height="11" x="11" y="154" style="fill:#000"/><rect width="11" height="11" x="22" y="154" style="fill:#000"/><rect width="11" height="11" x="33" y="154" style="fill:#000"/><rect width="11" height="11" x="44" y="154" style="fill:#000"/><rect width="11" height="11" x="55" y="154" style="fill:#000"/><rect width="11" height="11" x="66" y="154" style="fill:#000"/><rect width="11" height="11" x="110" y="154" style="fill:#000"/><rect width="11" height="11" x="154" y="154" style="fill:#000"/><rect width="11" height="11" x="165" y="154" style="fill:#000"/><rect width="11" height="11" x="187" y="154" style="fill:#000"/><rect width="11" height="11" x="209" y="154" style="fill:#000"/>
<rect width="11" height="11" x="0" y="165" style="fill:#000"/><rect width="11" height="11" x="66" y="165" style="fill:#000"/><rect width="11" height="11" x="88" y="165" style="fill:#000"/><rect width="11" height="11" x="99" y="165" style="fill:#000"/><rect width="11" height="11" x="121" y="165" style="fill:#000"/><rect width="11" height="11" x="132" y="165" style="fill:#000"/><rect width="11" height="11" x="143" y="165" style="fill:#000"/><rect width="11" height="11" x="165" y="165" style="fill:#000"/><rect width="11" height="11" x="176" y="165" style="fill:#000"/><rect width="11" height="11" x="187" y="165" style="fill:#000"/><rect width="11" height="11" x="198" y="165" style="fill:#000"/><rect width="11" height="11" x="220" y="165" style="fill:#000"/>
<rect width="11" height="11" x="0" y="176" style="fill:#000"/><rect width="11" height="11" x="22" y="176" style="fill:#000"/><rect width="11" height="11" x="33" y="176" style="fill:#000"/><rect width="11" height="11" x="44" y="176" style="fill:#000"/><rect width="11" height="11" x="66" y="176" style="fill:#000"/><rect width="11" height="11" x="110" y="176" style="fill:#000"/><rect width="11" height="11" x="143" y="176" style="fill:#000"/><rect width="11" height="11" x="165" y="176" style="fill:#000"/><rect width="11" height="11" x="187" y="176" style="fill:#000"/><rect width="11" height="11" x="209" y="176" style="fill:#000"/>
<rect width="11" height="11" x="0" y="187" style="fill:#000"/><rect width="11" height="11" x="22" y="187" style="fill:#000"/><rect width="11" height="11" x="33" y="187" style="fill:#000"/><rect width="11" height="11" x="44" y="187" style="fill:#000"/><rect width="11" height="11" x="66" y="187" style="fill:#000"/><rect width="11" height="11" x="99" y="187" style="fill:#000"/><rect width="11" height="11" x="110" y="187" style="fill:#000"/><rect width="11" height="11" x="121" y="187" style="fill:#000"/><rect width="11" height="11" x="143" y="187" style="fill:#000"/><rect width="11" height="11" x="154" y="187" style="fill:#000"/><rect width="11" height="11" x="187" y="187" style="fill:#000"/><rect width="11" height="11" x="198" y="187" style="fill:#000"/>
<rect width="11" height="11" x="0" y="198" style="fill:#000"/><rect width="11" height="11" x="22" y="198" style="fill:#000"/><rect width="11" height="11" x="33" y="198" style="fill:#000"/><rect width="11" height="11" x="44" y="198" style="fill:#000"/><rect width="11" height="11" x="66" y="198" style="fill:#000"/><rect width="11" height="11" x="99" y="198" style="fill:#000"/><rect width="11" height="11" x="132" y="198" style="fill:#000"/><rect width="11" height="11" x="143" y="198" style="fill:#000"/><rect width="11" height="11" x="187" y="198" style="fill:#000"/><rect width="11" height="11" x="198" y="198" style="fill:#000"/><rect width="11" height="11" x="209" y="198" style="fill:#000"/><rect width="11" height="11" x="220" y="198" style="fill:#000"/>
<rect width="11" height="11" x="0" y="209" style="fill:#000"/><rect width="11" height="11" x="66" y="209" style="fill:#000"/><rect width="11" height="11" x="99" y="209" style="fill:#000"/><rect width="11" height="11" x="110" y="209" style="fill:#000"/><rect width="11" height="11" x="132" y="209" style="fill:#000"/><rect width="11" height="11" x="143" y="209" style="fill:#000"/><rect width="11" height="11" x="154" y="209" style="fill:#000"/><rect width="11" height="11" x="176" y="209" style="fill:#000"/><rect width="11" height="11" x="198" y="209" style="fill:#000"/>
<rect width="11" height="11" x="0" y="220" style="fill:#000"/><rect width="11" height="11" x="11" y="220" style="fill:#000"/><rect width="11" height="11" x="22" y="220" style="fill:#000"/><rect width="11" height="11" x="33" y="220" style="fill:#000"/><rect width="11" height="11" x="44" y="220" style="fill:#000"/><rect width="11" height="11" x="55" y="220" style="fill:#000"/><rect width="11" height="11" x="66" y="220" style="fill:#000"/><rect width="11" height="11" x="99" y="220" style="fill:#000"/><rect width="11" height="11" x="121" y="220" style="fill:#000"/><rect width="11" height="11" x="132" y="220" style="fill:#000"/><rect width="11" height="11" x="154" y="220" style="fill:#000"/><rect width="11" height="11" x="176" y="220" style="fill:#000"/><rect width="11" height="11" x="198" y="220" style="fill:#000"/><rect width="11" height="11" x="209" y="220" style="fill:#000"/>
</svg>
Generates the code for a PNG version of a QR code which encodes the text provided at the specified size.
Name | Required? | Type | Default | Description |
---|---|---|---|---|
text | true | String | N/A | The text the user wishes to turn into a QR code |
size | false | Int32 | 128 | The size of the image the user wants to create |
1. For the word "Test" at size 100:
iVBORw0KGgoAAAANSUhEUgAAAGQAAABkEAYAAAAgckkXAAADrklEQVR4nO2TMZLkMAzE5v+fvqvaumSCpcfnpgl6gESJioJI9uuPiPzKa1pAhIwBESkwICIFBkSkwICIFBgQkQIDIlJgQEQKDIhIgQERKTAgIgUGRKTAgIgUGBCRAgMiUmBARAoMiEgBLiCvH/jnWf/u/jy1n9Pg1KYHdXWg3QuQ8qGdVHBq04O6OtDuBUj50E4qODVaA1M+Uwv21H7eBU6N1kADkoXmcwROjdZAA5KF5nMETi21AFML1v0uzb/bZxqc2vaBdr9L8+/2mQantn2g3e/S/Lt9psGpfdtAU54p/+39TINT+7aBpjxT/tv7mQan9m0DTXmm/Lf3Mw1ObftAaYu0vZ/T4NS2D5S2SNv7OQ1ObftAaYu0vZ/T4NRoDZxa1FSdp/bzLnBqtAYakCw0nyNwarQGGpAsNJ8jcGq/NZB2nvWn3aedVHBq04O6OtAt92knFZza9KCuDnTLfdpJBay2k+6F2bZg27G1YQzIs7C1YQzIs7C1/0gt8JTnU+9PA1a7FwPCvD8NWO1eDAjz/jQ4tbOLSlvsKf+pOlN9vgvcV6YWbLv/VJ2pPt8F7itTC7bdf6rOVJ/vYv1XphYv5TP1r+53Uz7TLFR+p3twqfvddVILmXo35TPNQuV3ugeXut9dJ7WQqXdTPtMsVP6M1EJOMeXzrUH4jQd95R0Dkn3XgDwMA5J914AspXtA3UFLLd6WBab5HAFW+wwDkq3TDc3nCLDaZxiQbJ1uaD5HgNV20h2olE/q3S3B/F8WKrMxIAZECgyIAWnlbMOnzu7/dtc/+273fSo45enFv7pIqf921z/7bvd9Kjjl6cW/ukip/3bXP/tu930qOGVaY1OL0V1nqn7qXSo4NVoDuxcvVWeqfupdKjg1WgO7Fy9VZ6p+6l0qOLUtizT131Qd2n0qOGUDYkBI4JQNiAEhgVN+akCmPKf8nwLuK92Lkaqf+le355T/U8B9pXsxUvVT/+r2nPJ/CrivdC9Gqn73v1L/TZHqc7dnGpxaaoFTA0oNtLtO9+Kl+tztmQanllrg1IBSA+2u0714qT53e6bBqdEaSFvs7oXsvr8N3FdoDTcgBgQFreEGxICgSC1A95n6V6oP3e92e1LBKXctdPpM/SvVh+53uz2p4JS7Fjp9pv6V6kP3u92eVBYqi9yHAREpMCAiBQZEpMCAiBQYEJECAyJSYEBECgyISIEBESkwICIFBkSkwICIFBgQkQIDIlJgQEQKDIhIgQERKTAgIgV/AVWCRjmiRazdAAAAAElFTkSuQmCC
Sends an email to any email address NOTE - ONE of message_plaintext OR message_html IS required.
Security Level: Support
Name | Required? | Type | Default | Description |
---|---|---|---|---|
to | true | String OR Array(String) | N/A | the destation of the email |
subject | true | String | N/A | The subject line of the email |
message_plaintext | false | String | nil | The message body of the email |
message_html | false | String | nil | The message body of the email that will be displayed as HTML |
resource_attachments | false | Array(ResourceAttachment) | [] | Array of objects to be attached to the email |
cc | false | String OR Array(String) | [] | --- |
bcc | false | String OR Array(String) | [] | --- |
from | false | String Or Array(String) Or Nil | nil | --- |
1. If the email is not registered to a user
{
"error": "request failed",
"sys_id": "sys-E7A7jh9V4U",
"module_name": "Calendar",
"index": 1,
"message": "module raised: \"email_or_office_userPrincipalName\" is invalid as a mail address. (EMail::Error::AddressError)",
"backtrace": [
"repositories/drivers/lib/email/src/email/address.cr:16:5 in 'valid_address!'",
"repositories/drivers/lib/email/src/email/address.cr:32:13 in 'initialize'",
"repositories/drivers/lib/email/src/email/address.cr:31:3 in 'new'",
"repositories/drivers/lib/email/src/email/header.cr:114:16 in 'add'",
"repositories/drivers/lib/email/src/email/message.cr:415:3 in 'from'",
"repositories/drivers/lib/place_calendar/src/google.cr:447:7 in 'send_mail'",
"repositories/drivers/drivers/place/calendar_common.cr:142:14 in 'send_mail'",
"repositories/drivers/drivers/place/calendar.cr:3:1 in '->'",
"repositories/drivers/drivers/place/calendar.cr:3:1 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:164:5 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver.cr:522:1 in 'run_execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:262:24 in 'process'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:179:7 in '->'",
"/usr/share/crystal/src/fiber.cr:146:11 in 'run'",
"/usr/share/crystal/src/fiber.cr:98:34 in '->'",
"???"
]
}
Generates an access token for an admin to log in to Microsoft services as a given user.
Security Level: Admin
Name | Required? | Type | Default | Description |
---|---|---|---|---|
user_id | false | String | nil | email address of the user as registered in BackOffice |
1. If user does not exist:
{
"error": "request failed",
"sys_id": "sys-E7A7jh9V4U",
"module_name": "Calendar",
"index": 1,
"message": "module raised: Bad Request\n{\n \"error\": \"invalid_request\",\n \"error_description\": \"Invalid impersonation \\u0026quot;sub\\u0026quot; field: H84U9JLbocG\"\n} (Google::Exception)",
"backtrace": [
"repositories/drivers/lib/google/src/google.cr:25:9 in 'raise_on_failure'",
"repositories/drivers/lib/google/src/auth/service_auth.cr:50:7 in 'get_token'",
"repositories/drivers/lib/place_calendar/src/google.cr:67:15 in 'access_token'",
"repositories/drivers/lib/place_calendar/src/place_calendar.cr:23:5 in 'access_token'",
"repositories/drivers/drivers/place/calendar_common.cr:158:14 in 'access_token'",
"repositories/drivers/drivers/place/calendar.cr:3:1 in '->'",
"repositories/drivers/drivers/place/calendar.cr:3:1 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:164:5 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver.cr:522:1 in 'run_execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:262:24 in 'process'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:179:7 in '->'",
"/usr/share/crystal/src/fiber.cr:146:11 in 'run'",
"/usr/share/crystal/src/fiber.cr:98:34 in '->'",
"???"
]
}
2. If user exists:
{
"expires": "2023-03-09T12:51:24Z",
"token": "eyJ0eXAiOiJKV1QiLCJub25jZSI6IjhkXzJxRVMxb0hoWHFjV2h1cnh1RUlwNWVUQlBvM3A1SjVicTlpaTRxWm8iLCJhbGciOiJSUzI1NiIsIng1dCI6Ii1LSTNROW5OUjdiUm9meG1lWm9YcWJIWkdldyIsImtpZCI6Ii1LSTNROW5OUjdiUm9meG1lWm9YcWJIWkdldyJ9.eyJhdWQiOiJodHRwczovL2dyYXBoLm1pY3Jvc29mdC5jb20iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9lMTJkNDlhZi02YWRkLTRlNmQtODNiOS1hZTI4YWJhNmZhYmMvIiwiaWF0IjoxNjc4MzYyMzg1LCJuYwa3Q0ZDFxYlU2RHVhNG9xNmI2dkFNQUFBQUFBQUFBd0FBQUFBQUFBQUJCQUFBLiIsInJvbGVzIjpbIkRpcmVjdG9yeS5SZWFkV3JpdGUuQWxsIiwiQ29udGFjdHMuUmVhZFdyaXRlIiwiVXNlci5SZWFkLkFsbCIsIkNhbGVuZGFycy5SZWFkV3JpdGUiXSwic31uv58xYs4Ul7naaDPJZzDz49q5ZeukN-2qLAoHBP6wBa57Ms55rmFsaijTovYemVIzDpFBVltczZbTVkUSHb0vpbqB3GJAo5yO_qder_U5kugC48RLJxzxSnNZRnjLLbFLuA10uFDFkLJGb4sgQCPAjLvyYxcolu8bdnZYFalMY55-tF2nhEB0aHcCAszs4ikPMxsxXP7RoF8UjBQiYbLayGXhGMN8U_M7LlqRJMOmCd162wQsV31WnMeDSIFC7GQ"
}
Shows all the groups a given user belongs to.
Security Level: Support
Name | Required? | Type | Default | Description |
---|---|---|---|---|
user_id | false | String | nil | email address of the user to search |
[
{
"id": <the id of the group,
"name": <the name of the group>
}
]
1. If the user exists and is a member of at least one group:
[
{
"id": "668dsfd3c5-fcd4-4dc8-a6bb-335ewerfsb8c5",
"name": "All Users"
}
]
2. If user does not exist:
{
"error": "request failed",
"sys_id": "sys-E7A7jh9V4U",
"module_name": "Calendar",
"index": 1,
"message": "module raised: Forbidden\n{\n \"error\": {\n \"code\": 403,\n \"message\": \"Request had insufficient authentication scopes.\",\n \"errors\": [\n {\n \"message\": \"Insufficient Permission\",\n \"domain\": \"global\",\n \"reason\": \"insufficientPermissions\"\n }\n ],\n \"status\": \"PERMISSION_DENIED\",\n \"details\": [\n {\n \"@type\": \"type.googleapis.com/google.rpc.ErrorInfo\",\n \"reason\": \"ACCESS_TOKEN_SCOPE_INSUFFICIENT\",\n \"domain\": \"googleapis.com\",\n \"metadata\": {\n \"service\": \"admin.googleapis.com\",\n \"method\": \"ccc.hosted.frontend.directory.v1.DirectoryGroups.List\"\n }\n }\n ]\n }\n}\n (PlaceCalendar::Exception)",
"backtrace": [
"repositories/drivers/lib/place_calendar/src/google.cr:303:7 in 'handle_google_exception'",
"repositories/drivers/lib/place_calendar/src/google.cr:94:7 in 'get_groups'",
"repositories/drivers/lib/place_calendar/src/place_calendar.cr:23:5 in 'get_groups'",
"repositories/drivers/drivers/place/calendar_common.cr:164:14 in 'get_groups'",
"repositories/drivers/drivers/place/calendar.cr:3:1 in '->'",
"repositories/drivers/drivers/place/calendar.cr:3:1 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:164:5 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver.cr:522:1 in 'run_execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:262:24 in 'process'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:179:7 in '->'",
"/usr/share/crystal/src/fiber.cr:146:11 in 'run'",
"/usr/share/crystal/src/fiber.cr:98:34 in '->'",
"???"
]
}
Shows all the members of a given group.
Security Level: Support
Name | Required? | Type | Default | Description |
---|---|---|---|---|
group_id | false | String | nil | The group ID - can be obtained by running get_groups on a known group member |
2. If group exisits:
[
{
"id": "9ddsfs04e-ffa3-451f-93cb-dfhsfh74ac70",
"name": "On-Premises Directory Synchronization Service Account",
"email": "[email protected]",
"username": "[email protected]"
},
{
"id": "a7asdgf8b-ebc1-4843-8479-0ctgsdgfsb2d6",
"name": "variant",
"email": "[email protected]",
"username": "[email protected]"
}
1. If group does not exist:
{
"error": "request failed",
"sys_id": "sys-E7A7jh9V4U",
"module_name": "Calendar",
"index": 1,
"message": "module raised: Forbidden\n{\n \"error\": {\n \"code\": 403,\n \"message\": \"Request had insufficient authentication scopes.\",\n \"errors\": [\n {\n \"message\": \"Insufficient Permission\",\n \"domain\": \"global\",\n \"reason\": \"insufficientPermissions\"\n }\n ],\n \"status\": \"PERMISSION_DENIED\",\n \"details\": [\n {\n \"@type\": \"type.googleapis.com/google.rpc.ErrorInfo\",\n \"reason\": \"ACCESS_TOKEN_SCOPE_INSUFFICIENT\",\n \"domain\": \"googleapis.com\",\n \"metadata\": {\n \"service\": \"admin.googleapis.com\",\n \"method\": \"ccc.hosted.frontend.directory.v1.DirectoryMembers.List\"\n }\n }\n ]\n }\n}\n (PlaceCalendar::Exception)",
"backtrace": [
"repositories/drivers/lib/place_calendar/src/google.cr:303:7 in 'handle_google_exception'",
"repositories/drivers/lib/place_calendar/src/google.cr:100:7 in 'get_members'",
"repositories/drivers/lib/place_calendar/src/place_calendar.cr:23:5 in 'get_members'",
"repositories/drivers/drivers/place/calendar_common.cr:170:14 in 'get_members'",
"repositories/drivers/drivers/place/calendar.cr:3:1 in '->'",
"repositories/drivers/drivers/place/calendar.cr:3:1 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:164:5 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver.cr:522:1 in 'run_execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:262:24 in 'process'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:179:7 in '->'",
"/usr/share/crystal/src/fiber.cr:146:11 in 'run'",
"/usr/share/crystal/src/fiber.cr:98:34 in '->'",
"???"
]
}
Lists all users if no paramaters are filled. Can be filtered by name.
Security Level: Support
Name | Required? | Type | Default | Description |
---|---|---|---|---|
query | false | String | nil | filters results whose "name" category contains the entered string |
limit | false | Int32 | nil | Limits the number of results to the number entered |
1. If group does not exist:
[
{
"id": "116847001215",
"name": "Firstname Lastname",
"email": "[email protected]"
},
{
"id": "107849665",
"name": "First Last",
"email": "[email protected]",
"photo": "https://www.google.com/photos/private/AIbEiAIAAABDCIHpmpHo6cCzGUO0TUcpevl6e27"
},
{
"id": "1017948066277",
"name": "Given Last",
"email": "[email protected]",
"department": "Department department",
"title": "Department head",
"photo": "https://www.google.com/photos/private/AIbEiAIAkS9j5GQ"
}
]
Searches for a user by their email. The user_id is considered their email - this is different from what is returned in the results under "id".
Security Level: Support
Name | Required? | Type | Default | Description |
---|---|---|---|---|
user_id | true | String | N/A | The user email to search for |
2. If user exists:
{
"id": "85348a34-1c88-4ed6-9efd-92gefgddb2daa",
"name": "ACA test",
"email": "[email protected]",
"username": "[email protected]"
}
1. If user does not exist:
{
"error": "request failed",
"sys_id": "sys-EJhU_4DEvQ",
"module_name": "Calendar",
"index": 1,
"message": "module raised: Forbidden (PlaceCalendar::Exception)",
"backtrace": [
"repositories/drivers/lib/place_calendar/src/office365.cr:420:7 in 'handle_office365_exception'",
"repositories/drivers/lib/place_calendar/src/office365.cr:85:7 in 'get_user'",
"repositories/drivers/lib/place_calendar/src/office365.cr:93:9 in 'get_user_by_email'",
"repositories/drivers/lib/place_calendar/src/place_calendar.cr:23:5 in 'get_user_by_email'",
"repositories/drivers/drivers/place/calendar_common.cr:182:14 in 'get_user'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in '->'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:164:5 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver.cr:522:1 in 'run_execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:262:24 in 'process'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:179:7 in '->'",
"/usr/share/crystal/src/fiber.cr:146:11 in 'run'",
"/usr/share/crystal/src/fiber.cr:98:34 in '->'",
"???"
]
}
Lists the calendars that belong to a user, specified by their email as registered in BackOffice.
Security Level: Support
Name | Required? | Type | Default | Description |
---|---|---|---|---|
user_id | true | String | N/A | The email of the user, as shown in BackOffice |
2. If user exists:
[
{
"id": "[email protected]",
"ref": "AAkALgAAAAfdgdfmEc2byACqAC-EWg0ASuIL0BZ9OEGaBdfgdfgKM9wAAAAAhlgAA",
"summary": "Calendar",
"primary": true,
"can_edit": true
}
]
1. If user does not exist:
{
"error": "request failed",
"sys_id": "sys-EJhU_4DEvQ",
"module_name": "Calendar",
"index": 1,
"message": "module raised: Not Found (PlaceCalendar::Exception)",
"backtrace": [
"repositories/drivers/lib/place_calendar/src/office365.cr:420:7 in 'handle_office365_exception'",
"repositories/drivers/lib/place_calendar/src/office365.cr:138:7 in 'list_calendars'",
"repositories/drivers/lib/place_calendar/src/place_calendar.cr:23:5 in 'list_calendars'",
"repositories/drivers/drivers/place/calendar_common.cr:188:14 in 'list_calendars'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in '->'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:164:5 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver.cr:522:1 in 'run_execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:262:24 in 'process'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:179:7 in '->'",
"/usr/share/crystal/src/fiber.cr:146:11 in 'run'",
"/usr/share/crystal/src/fiber.cr:98:34 in '->'",
"???"
]
}
Gets the registered manager of a given user
Security Level: Support
Name | Required? | Type | Default | Description |
---|---|---|---|---|
user_id | true | String | N/A | The email of the user to search |
1. If user does not have a registered manager:
{
"error": "request failed",
"sys_id": "sys-Ewmyx8wEF_",
"module_name": "Calendar",
"index": 1,
"message": "module raised: Not Found (Office365::Exception)",
"backtrace": [
"repositories/drivers/lib/office365/src/client.cr:132:9 in 'graph_request'",
"repositories/drivers/lib/office365/src/users.cr:39:22 in 'get_user_manager'",
"repositories/drivers/drivers/place/calendar_common.cr:197:9 in 'get_user_manager'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in '->'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:164:5 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver.cr:522:1 in 'run_execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:262:24 in 'process'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:179:7 in '->'",
"/usr/share/crystal/src/fiber.cr:146:11 in 'run'",
"/usr/share/crystal/src/fiber.cr:98:34 in '->'",
"???"
]
}
Lists all groups if no parameters entered.
Security Level: Support
Name | Required? | Type | Default | Description |
---|---|---|---|---|
query | false | String | nil | filters search results by whether the query appears in the "name" |
1.
[
{
"id": "0013fdgd63-7bd8-4e8d-92d4-ea3dfgfg7d38",
"name": "LaptopUsers-Brisbane"
},
{
"id": "0dfgdfcd-dfg6-462d-aa86-8fcaf2dfgdfdf",
"name": "UserAdmins",
"description": "Members can manage users in this forest."
},
{
"id": "00dfgfg3ae-9fdgd-4645-9dbc-a4172a4fdg8e",
"name": "WebVPN"
}
]
Searches for a group by its group ID, as returned in the "id" section of list_groups UNLIKE with get_user
Security Level: Support
Name | Required? | Type | Default | Description |
---|---|---|---|---|
group_id | true | String | N/A | The group ID to use in the search - can be found by using list_groups |
1. If id is correct:
{
"id": "0sfdf6063-7bd8-4e8sdfd-92d4-ea3sdfd38",
"name": "LaptopUsers-Brisbane"
}
2. If group does not exist:
{
"error": "request failed",
"sys_id": "sys-Ewmyx8wEF_",
"module_name": "Calendar",
"index": 1,
"message": "module raised: Bad Request (Office365::Exception)",
"backtrace": [
"repositories/drivers/lib/office365/src/client.cr:132:9 in 'graph_request'",
"repositories/drivers/lib/office365/src/groups.cr:41:15 in 'get_group'",
"repositories/drivers/drivers/place/calendar_common.cr:219:9 in 'get_group'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in '->'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:164:5 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver.cr:522:1 in 'run_execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:262:24 in 'process'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:179:7 in '->'",
"/usr/share/crystal/src/fiber.cr:146:11 in 'run'",
"/usr/share/crystal/src/fiber.cr:98:34 in '->'",
"???"
]
}
Searches for all events happening on a given calendar within a specified time frame.
Security Level: Support
Name | Required? | Type | Default | Description |
---|---|---|---|---|
calendar_id | true | String | N/A | The EMAIL of the user OR the EMAIL of the room whose calender you want to search |
period_start | true | Int64 | N/A | The start of the time period to search in Unix time |
period_end | true | Int64 | N/A | The end of the period to search in Unix time |
time_zone | false | String | nil | filters results by time zone - format: 2/3 letter timezone code e.g UTC, AU |
user_id | false | String | nil | filters results by user EMAIL (Only necessary if the calendar_id you are looking up belongs to a room) |
include_cancelled | false | Boolean | false | if true, includes cancelled events |
1. If the user or room has no events in the given time frame:
[]
4. If the room or user has events within the given time frame:
[
{
"event_start": 1671408000,
"event_end": 1671410700,
"id": "AAkALgAAAAAAHYQDEapmdsfdsm8FgRUSiiZH26Qy2dwAEM3At3gAA",
"host": "[email protected]",
"title": "Fortnightly Catch-Up",
"body": "<html>\r\n<head></head>\r\n<body>html body</body>\r\n</html>\r\n",
"attendees": [
{
"name": "Person Mcfolk",
"email": "[email protected]",
"response_status": "needsAction",
"resource": false
},
{
"name": "Jim Bob",
"email": "[email protected]",
"response_status": "accepted",
"resource": false
},
{
"name": "Resource - Meeting Room",
"email": "[email protected]",
"response_status": "accepted",
"resource": false
}
],
"location": "Microsoft Teams Meeting",
"private": false,
"all_day": false,
"timezone": "Australia/Sydney",
"recurring": false,
"created": "2022-12-18T23:58:18Z",
"updated": "2022-12-19T00:08:08Z",
"attachments": [],
"status": "confirmed",
"creator": "[email protected]",
"ical_uid": "04000000810000000000000000100000001186DAC27148E847BB58B773F3B941A7",
"online_meeting_provider": "teamsForBusiness",
"online_meeting_phones": [],
"online_meeting_url": "https://teams.microsoft.com/l/meetup-join/19%3ameetFkLTliNjMtODQ2NzcwODJkZjQ1%40thread.v2/0?context=%7b%2212d49af-6add-4e6d-83b9-ae28aba6fabc%22%2c%2f-431f-91a1-b893ed3b6dbf%22%7d"
},
{
"event_start": 1671417000,
"event_end": 1671420600,
"id": "AAkALgAAAAAAHYQDEapmEc2byACqAC-EWg0A2oF4m8FgRUSiiZH26Qy2dwAEM3BNNQAA",
"host": "[email protected]",
"title": "Meeting",
"body": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n<meta name=\"Generator\" content=\"Microsoft Word 15 (filt63C1;\r\n\ttext-decoration:underline}\r\nspan.EmailStyle18\r\n\t{font-family:\"Calibri\",sans-serif;\r\n\tcolor:windowtext}\r\n.MsoChpDefault\r\n\t{font-size:10.0pt}\r\n@page WordSection1\r\n\t{margin:72.0pt 72.0pt 72.0pt 72.0pt}\r\ndiv.WordSection1\r\n\t{}\r\n-->\r\n</style>\r\n</head>\r\n<body lang=\"EN-AU\" link=\"#0563C1\" vlink=\"#954F72\" style=\"word-wrap:break-word\">\r\n<div class=\"WordSection1\">\r\n<p class=\"MsoNormal\"> </p>\r\n<div>\r\n<p class=\"MsoNormal\"><span style=\"color:#5F5F5F\">________________________________________________________________________________</span>\r\n</p>\r\n</div>\r\n<div>\r\n<div style=\"margin-top:18.0pt; margin-bottom:15.0pt\">\r\n<p class=\"MsoNormal\"><span lang=\"EN-US\" style=\"font-size:18.0pt; font-family:"Segoe UI",sans-serif; color:#252424\">Microsoft Teams meeting</span><span lang=\"EN-US\" style=\"font-family:"Segoe UI",sans-serif; color:#252424\">\r\n</span></p>\r\n</div>\r\n<div style=\"margin-bottom:15.0pt\">\r\n<div>\r\n<p class=\"MsoNormal\"><b><span lang=\"EN-US\" style=\"font-size:10.52424\">Join with a video conferencing device</span></b><span lang=\"EN-US\" style=\"font-family:"Segoe UI",sans-serif; color:#252424\">\r\n</span></p>\r\n</div>\r\n</span></a> </span></p>\r\n</div>\r\n<div style=\"margin-top:15.0pt; margin-bottom:18.0pt\">\r\n<p class=\"MsoNormal\"><span lang=\"EN-US\" style=\"font-family:"Segoe UI",sans-serif; color:#252424\"><a href=\"https://aka.ms/JoinTeamsMeeting\"><span style=\"font-size:10.5pt; [email protected]&messageId=0&language=en-US\">\r\n<span style=\"font-size:10.5pt; color:#6264A7\">Meeting options</span></a> </span></p>\r\n</div>\r\n</div>\r\n<div>\r\n<p class=\"MsoNormal\"><span style=\"color:#5F5F5F\">________________________________________________________________________________</span>\r\n</p>\r\n</div>\r\n<p class=\"MsoNormal\"> </p>\r\n</div>\r\n</body>\r\n</html>\r\n",
"attendees": [
{
"name": "Person Two",
"email": "[email protected]",
"response_status": "needsAction",
"resource": false
},
{
"name": "Resource Meeting Room",
"email": "[email protected]",
"response_status": "accepted",
"resource": true
}
],
"location": "Microsoft Teams Meeting; Resource VIC - Meeting Room 2 (80a Turner St, Port Melb)",
"private": false,
"all_day": false,
"timezone": "Australia/Sydney",
"recurring": false,
"created": "2022-12-19T02:23:59Z",
"updated": "2022-12-19T02:29:40Z",
"attachments": [],
"status": "confirmed",
"creator": "[email protected]",
"ical_uid": "040000008200E00074C5B71010010000000B4D1E494FA625B43B2FEE33B578A80A6",
"online_meeting_provider": "teamsForBusiness",
"online_meeting_phones": [],
"online_meeting_url": "https://teams.microsoft.com/l/meetup-join/19%3ameeting_ZDZlZDdmMzUtNWYzYy00NGJkLWE2N2QtNmYyOTMyMGFjYjRl%40thread.v2/0?context=%7b%22Tid%22%3a%22e50f-a2fe-41c6-af48-4bd90ecc006e%22%7d"
}
3. If calendar_id does not exist:
{
"error": "request failed",
"sys_id": "sys-EJhU_4DEvQ",
"module_name": "Calendar",
"index": 1,
"message": "module raised: Not Found (PlaceCalendar::Exception)",
"backtrace": [
"repositories/drivers/lib/place_calendar/src/office365.cr:420:7 in 'handle_office365_exception'",
"repositories/drivers/lib/place_calendar/src/office365.cr:192:7 in 'list_events:period_start:period_end:showDeleted'",
"repositories/drivers/lib/place_calendar/src/place_calendar.cr:23:5 in 'list_events:period_start:period_end:showDeleted'",
"repositories/drivers/drivers/place/calendar_common.cr:243:7 in 'list_events'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in '->'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:164:5 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver.cr:522:1 in 'run_execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:262:24 in 'process'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:179:7 in '->'",
"/usr/share/crystal/src/fiber.cr:146:11 in 'run'",
"/usr/share/crystal/src/fiber.cr:98:34 in '->'",
"???"
]
}
Deletes an event from the calendar. Requires a calendar ID (the email of the room OR a user) AND a meeting ID - a long set of numbers and letters as returned by list_events
Security Level: Support
Name | Required? | Type | Default | Description |
---|---|---|---|---|
calendar_id | true | String | N/A | The user Email OR the room EMAIL |
event_id | true | String | N/A | The ID of the event as returned by list_events |
user_id | false | String | nil | IF the calendar_id is the email of a ROOM, this filters by the email of a user |
notify | false | Boolean | false | notifies attendees if set to true |
comment | false | String | nil | adds a comment to the cancellation notification |
1. If request fails:
{
"error": "request failed",
"sys_id": "sys-Ewmyx8wEF_",
"module_name": "Calendar",
"index": 1,
"message": "module raised: Status 204 should not have a body (ArgumentError)",
"backtrace": [
"/usr/share/crystal/src/http/client/response.cr:20:11 in 'initialize'",
"/usr/share/crystal/src/http/client/response.cr:13:5 in 'new'",
"/usr/share/crystal/src/http/client/response.cr:150:22 in 'from_io?'",
"/usr/share/crystal/src/http/client.cr:604:5 in 'exec_internal_single'",
"/usr/share/crystal/src/http/client.cr:587:18 in 'exec_internal'",
"/usr/share/crystal/src/http/client.cr:581:7 in 'exec'",
"repositories/drivers/lib/office365/src/client.cr:125:7 in 'graph_request'",
"repositories/drivers/lib/office365/src/events.cr:107:16 in 'delete_event:mailbox:calendar_id:id'",
"repositories/drivers/lib/place_calendar/src/office365.cr:239:7 in 'delete_event:calendar_id:notify'",
"repositories/drivers/lib/place_calendar/src/place_calendar.cr:23:5 in 'delete_event:calendar_id:notify'",
"repositories/drivers/drivers/place/calendar_common.cr:275:14 in 'delete_event'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in '->'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:164:5 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver.cr:522:1 in 'run_execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:262:24 in 'process'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:179:7 in '->'",
"/usr/share/crystal/src/fiber.cr:146:11 in 'run'",
"/usr/share/crystal/src/fiber.cr:98:34 in '->'",
"???"
]
}
Declines an event from the calendar. Event is still shown but crossed out. Requires a calendar ID (the email of the room OR a user) AND a meeting ID - a long set of numbers and letters as returned by list_events
Security Level: Support
Name | Required? | Type | Default | Description |
---|---|---|---|---|
calendar_id | true | String | N/A | The user Email OR the room EMAIL |
event_id | true | String | N/A | The ID of the event as returned by list_events |
user_id | false | String | nil | IF the calendar_id is the email of a ROOM, this filters by the email of a user |
notify | false | Boolean | false | notifies attendees if set to true |
comment | false | String | nil | adds a comment to the cancellation notification |
1. If request fails:
{
"error": "request failed",
"sys_id": "sys-EJhU_4DEvQ",
"module_name": "Calendar",
"index": 1,
"message": "module raised: Not Found (PlaceCalendar::Exception)",
"backtrace": [
"repositories/drivers/lib/place_calendar/src/office365.cr:420:7 in 'handle_office365_exception'",
"repositories/drivers/lib/place_calendar/src/office365.cr:251:7 in 'decline_event:calendar_id:notify:comment'",
"repositories/drivers/lib/place_calendar/src/place_calendar.cr:23:5 in 'decline_event:calendar_id:notify:comment'",
"repositories/drivers/drivers/place/calendar_common.cr:266:14 in 'decline_event'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in '->'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:164:5 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver.cr:522:1 in 'run_execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:262:24 in 'process'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:179:7 in '->'",
"/usr/share/crystal/src/fiber.cr:146:11 in 'run'",
"/usr/share/crystal/src/fiber.cr:98:34 in '->'",
"???"
]
}
Creates an event
Security Level: Support
Name | Required? | Type | Default | Description |
---|---|---|---|---|
title | true | String | N/A | The title of the event |
event_start | true | Int64 | N/A | Start time of the event in Unix time |
event_end | false | String | N/A | End time of the even in Unix time |
description | false | String | N/A | description of the event sent to the attendees |
attendees | false | String/Array(String) | nil | --- |
location | false | String | nil | Shown on the invitation, human-readable name |
timezone | false | String | nil | 2/3 letter timezone code - affects time meeting may appear for all users |
user_id | false | String | nil | The SERVER user to create the event AS |
calendar_id | false | String | nil | The EMAIL of the ROOM |
online_meeting_id | false | String | nil | Need to generate meeting with provider first, these details will be provided by then |
online_meeting_provider | false | String | nil | Need to generate meeting with provider first, these details will be provided by them |
online_meeting_url | false | String | nil | Need to generate meeting with provider first, these details will be provided by them |
online_meeting_sip | false | String | nil | Need to generate meeting with provider first, these details will be provided by them |
online_meeting_phones | false | String | nil | Need to generate meeting with provider first, these details will be provided by them |
online_meeting_pin | false | String | nil | Need to generate meeting with provider first, these details will be provided by them |
#### Response Schema | ||||
``` | ||||
``` |
1. If request fails:
{
"error": "request failed",
"sys_id": "sys-Ewmyx8wEF_",
"module_name": "Calendar",
"index": 1,
"message": "module raised: Not Found (PlaceCalendar::Exception)",
"backtrace": [
"repositories/drivers/lib/place_calendar/src/office365.cr:420:7 in 'handle_office365_exception'",
"repositories/drivers/lib/place_calendar/src/office365.cr:213:7 in 'create_event'",
"repositories/drivers/lib/place_calendar/src/place_calendar.cr:23:5 in 'create_event'",
"repositories/drivers/drivers/place/calendar_common.cr:322:14 in 'create_event'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in '->'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:164:5 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver.cr:522:1 in 'run_execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:262:24 in 'process'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:179:7 in '->'",
"/usr/share/crystal/src/fiber.cr:146:11 in 'run'",
"/usr/share/crystal/src/fiber.cr:98:34 in '->'",
"???"
]
}
Send an email template you have created to given users to get specific responses back from them.
| Name | Required? | Type | Default | Description | | to | true | String | N/A | email to send the template to | | template | true | String | N/A | template to send | | args | true | String | N/A | --- | | resource_attachments | false | String/Array(string) | [] | --- | | attachments | false | String/Array(string) | [] | --- | | cc | false | String/Array(string) | [] | --- | | bcc | false | String/Array(string) | [] | --- | | from | false | String | null | optional email to use as sender |
1. If request fails:
{
"error": "request failed",
"sys_id": "sys-Ewmyx8wEF_",
"module_name": "Calendar",
"index": 1,
"message": "module raised: Not Found (PlaceCalendar::Exception)",
"backtrace": [
"repositories/drivers/lib/place_calendar/src/office365.cr:420:7 in 'handle_office365_exception'",
"repositories/drivers/lib/place_calendar/src/office365.cr:213:7 in 'create_event'",
"repositories/drivers/lib/place_calendar/src/place_calendar.cr:23:5 in 'create_event'",
"repositories/drivers/drivers/place/calendar_common.cr:322:14 in 'create_event'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in '->'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:164:5 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver.cr:522:1 in 'run_execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:262:24 in 'process'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:179:7 in '->'",
"/usr/share/crystal/src/fiber.cr:146:11 in 'run'",
"/usr/share/crystal/src/fiber.cr:98:34 in '->'",
"???"
]
}
Generates an email template to be used for questionaires/to generate specific responses
| Name | Required? | Type | Default | Description | | string | true | String | N/A | --- | | args | true | String | N/A | --- |
1. If request fails:
{
"error": "request failed",
"sys_id": "sys-Ewmyx8wEF_",
"module_name": "Calendar",
"index": 1,
"message": "module raised: Not Found (PlaceCalendar::Exception)",
"backtrace": [
"repositories/drivers/lib/place_calendar/src/office365.cr:420:7 in 'handle_office365_exception'",
"repositories/drivers/lib/place_calendar/src/office365.cr:213:7 in 'create_event'",
"repositories/drivers/lib/place_calendar/src/place_calendar.cr:23:5 in 'create_event'",
"repositories/drivers/drivers/place/calendar_common.cr:322:14 in 'create_event'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in '->'",
"repositories/drivers/drivers/microsoft/graph_api.cr:3:1 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:164:5 in 'execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver.cr:522:1 in 'run_execute'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:262:24 in 'process'",
"repositories/drivers/lib/placeos-driver/src/placeos-driver/driver_manager.cr:179:7 in '->'",
"/usr/share/crystal/src/fiber.cr:146:11 in 'run'",
"/usr/share/crystal/src/fiber.cr:98:34 in '->'",
"???"
]
}