Uneditable calendar events in O365 using graph API - microsoft-graph-api

I'm importing lots of events into calendar in a calendar group in Office 365 on behalf of the user. These events shouldn't be editable by the user because I may overwrite changes that they make with further updates to these events. When using the graph API and retrieving an event I get told if the current user is able to edit the event through the canEdit property. Very similar to how an imported iCal file is shown to the user in O365, but the user can't change any of the events.
Is it possible to mark a set of events as un-editable by the user through the UI using the graph API?

No, there isn't a way to disable changing an event in the user's calendar. They own access to the events on their calendar. You may need to cache the changekey of events added to the calendar to later determine if an event has changed.

Related

How to notify users when calendar event is updated via Microsoft Graph API

Currently I've been developing a web application that takes advantage of Office 365 Graph API. In my application, it calls the following Update event in Graph API
https://learn.microsoft.com/en-us/graph/api/event-update?view=graph-rest-1.0&tabs=http
The expected behavior of the API was that each attendee already attending this event should get a notification mail that represents such as "Your calendar event was updated." when the event is updated with the API above. However, the actual behavior was that none of attendees get the notification mail when the event is updated with the API.
I'm wondering if there is a way of getting notification mails for attendees when the calendar event is updated.
FYI: I think if a calendar event organizer manually updates calendar event, attendees can get the notification mail. I would like to realize the same behavior in case of calling Graph API
I test it in my side by graph api explorer, the attendees received the notifications success. So I think you may not meet the conditions which the document mentioned below:

How do we suppress notification emails for events created through MS Outlook Calendar event REST API

We have an Office 365 add in for Outlook in which, events created in our system are pushed into Outlook through the MS Outlook Calendar Event API. Since we already send the participants - notifications when we create the event in our system, the subsequent push to Outlook Calendar through the API - also generates a similar such notification - causing all the participants to be notified again.
I wanted to check if there is a way to suppress these notifications during Outlook create Event calls - either through a property setting in the payload ("sendNotifications" : false) or through any general mailbox/Calendar setting at the user level or admin level.
The Calendar API by design will notify attendees of new meetings and send updates to attendees for existing meetings. This is to ensure that all attendees have the same version (latest update) of the meeting.

Office365 API does NOT say if Calendar is selected/enabled/visible on user's view?

Looking at documentation here: https://msdn.microsoft.com/en-us/office/office365/api/calendar-rest-operations#GetCalendars
The call GET https://outlook.office.com/api/v2.0/me/calendars
Doesn't return any information whether the user has additional calendars selected/enabled/visible or not.
How do I know that from the API? Because the user might have a calendar added, but it's not selected, hence, user not using it actively.
You cannot tell which calendars are visible or hidden. This is entirely controlled by the client and a user could very easily have different calendars selected on different devices and/or clients (i.e. I have different calendars showing up in Outlook 2016 for Windows than I have in my Windows 10 Calendar app or in Outlook for Android).

Add Invitees to calendar event programmatically iOS

I've been trying to look for the answer to this quite some time.
Apple EventKit documentation isn't allowing changing meeting invitees programmatically since those properties in an EKEvent are read-only.
I'm trying to find a way to create a calendar meeting (not necessary using EventKit), adding invitees to the meeting and setting it programatically.
Any solution will be great,
Thanks!
As you already figured out you cannot currently write meeting fields in iOS (AFAIK EventKit is the only API giving you access to the calendar database on iOS).
If you know what kind of account it is (and get the credentials from the user), you could sidetrack EventKit and directly create meetings on the server. Eg using EWS when the account is on Exchange or CalDAV when the account is on iCloud or Apple Calendar Server etc.
And finally you always have the option to send out meeting invites via iMIP. Though you would still need to get the event into the users calendar (so that replies have a target). Depends on your useless whether this is useful.

iOS: Create calendar with uneditable events?

From an app, is there a way to programmatically create a calendar with events that are uneditable? Or, what is the best way to achieve this as close as possible?
For example, Facebook events have a unique "Event Details" screen with their custom details. The user cannot edit the event from iCal, but instead have to click "View on Facebook".
1) I've explored creating local calendars and iCloud calendars but the user can easily edit the events and the calendars, including removing them, from iCal.
2) From the app, I cannot seem to create a new EKSource to have total control of the calendars I create in that source. Creating a new calendar in the existing CalDAV source also doesn't make it appear.
3) The EKCalendar class has an allowsContentModifications property, but it is readonly and cannot be modified.
Official response from Apple Developer Technical Support:
Our engineers have reviewed your request and have concluded that there
is no supported way to achieve the desired functionality given the
currently shipping system configurations.
So as of right now there isn't a way to do this.

Resources