Microsoft graph calendar api delete instance of recurring event - calendar

I have created recurring calendar events through graph API in outlook, however, I am not able to find any way to delete a particular instance of a recurring event through Graph API. I have looked all over the graph API documentation
https://learn.microsoft.com/en-us/graph/api/event-delete?view=graph-rest-1.0&tabs=javascript
Let me know is it really possible to update/delete a particular recurring event instance and how.
Thanks!!

You can get all events from the calendar and use the Id of the instance to delete it, a way to get the specific event is by querying the results or you can use the specific endpoint to list instances:
Send a DELETE request using the following path: https://graph.microsoft.com/v1.0/me/events/{id}
I did some tests using the Graph Explorer and worked, you can try there
before start the real development.

Related

Is it possible to create a calendar event for a whole team using the graph api

I'm trying to create a calendar event using the graph api that behaves in the same manner that manually creating an event in a channel using the Microsoft Team client would. In other words an event that shows up in the chat and "belongs" to the team. I want the event to behave as seen here.
So far i've tried to use the following endpoints with no luck. On all endpoints i've tried adding the team itself as a recipient/participant of the event but it had no result.
POST /groups/{id}/events
POST /groups/{id}/calendar/events
POST /users/{id | userPrincipalName}/events
Any help is appreciated at this stage.
The Teams in O365 portal will call an internal Teams API to finish the things you mentioned as your screenshot shows.
It doesn't call Microsoft Graph API. In another words, MS Graph doesn't provide an endpoint which schedules an online meeting in a channel currently.
Create an event as an online meeting doesn't send meeting info into a channel. Neither does Create onlineMeeting.
There is a workaround for you: create a Online meeting and then post information about that to a channel.
A related article for your reference.

How do you get a URL to a shared O365 calendar?

I have been playing around with the Graph API to access the shared calendars and events within an organization.
I can successfully query my organization users and the calendar/events for any of those users. What I would like to do now is to generate a URL allowing you to jump to an outlook web session (eg - https://outlook.office365.com/calendar/) directly to a particular user's calendar (that you have access to).
I can see that Events have a 'WebLink' property that allows you to do this with a calendar event, but I can't find any documentation that indicates how you could jump to a calendar the same way.
I did find some old stuff implying that the old school OWA used to allow this but those url's don't look like they work anymore.
I also tried to pull apart the URL's provided when you 'share' you calendar with an external email address and it sends them a 'click here to add the calendar, or here to see a web view' etc email. That looked kind of promising because it actually DOES provide a direct link to a web version of the calendar; but it it includes a few fields in the URLthat I can't figure out (more than likely the external user auth) so I can't reverse engineer it to build one with the info I have available in the Graph API.
URL was of the form:
https://outlook.office365.com/owa/calendar/<userid>#<domain>/<52CharacterHex_ProbablyAHashedTokenForTheExternalUsersAuth>/<WindowsUserSID_ProbablyToRepresentTheExternalUserOrProxyAccessEntity>/reachcalendar.html
Anyone else got any ideas on how I can launch a web session of another uses calendar (that I have access to)? Ultimately what I am doing is creating a small management dashboard (using a summary built via Graph API data) that shows an overview of a collection of user's calendars but allows you to jump into the any individual user's full calendar if more info is required.
Publish to the web. follow this:
https://support.microsoft.com/en-us/office/share-your-calendar-in-outlook-on-the-web-7ecef8ae-139c-40d9-bae2-a23977ee58d5
basically
OWA -> Settings
Calendar -> Shared Calendars
Publish a Calendar -> copy HTML

Raise an event notification to a specific client when a user is registered/created on Identity Server

I am creating an AdminUI for my users where I set all the permission. As part of the requirements, every time that a user logins on my IdentityServer I need to set some default permissions, but those are handle on my Admin application. Which is the best way to raise an event to let that application that a user was created on the IdentityServer?
The simplest is i think to create a simple WebApi in IdentityServer that returns the latest users and then let the other application poll this API every X seconds. In that way the system is cleanly decoupled. Perhaps expose the data as a a RSS XML document or a JSON list of items.
There is a built in eventing model in IdentityServer that you could use and push notifications to the Admin application. But push is a bit more complicated to get right, especially how to deal with all the failre/error cases.
I's suggest to add a custom event sink to process UserLoginSuccessEvent or any other event you need, here is list of all builtin events. Find their code here.
In the custom sink as suggested in the other answer you can call an API on admin app to inform it about changes.
Here is a sample for custom sink.
I think to keep two applications decoupled you better to setup a service-bus for simple implementation a sub/pub mechanism. when any user complete registration(or any other actions),then as mentioned in another answer handle the events and add message. admin UI should subscribed before to receive these messages with some information to create a user related data.

Creating and modifying calendar subscriptions using the google API

I want the ability to create a calendar using the calendar API and issue one-way syncs to this calendar when changes happen on my end. I do not want the user to be able to make changes, i.e., it should work like a subscription but instead of google pulling changes, I want to push changes. This way users can get the changes in real time as opposed to having to wait for a long time to see updates.
I looked through the APIs and I could find no way to a) create subscription b) force subscribed calendar refresh. I also tried creating a secondary calendar and setting ACLs on it for the current user but this also doesn't work, I get the following error:
"reason": "cannotChangeOwnAcl",
"message": "Cannot change your own access level."
Is there a way to accomplish this with the API?

How do I create an Outlook calendar subscription from my web/app server?

I have a website that is a calendar with all the basic features (ASP.NET MVC and SQL Server). People can enter events, view others events, etc. One person asked me if there was a way they can see these events in their Outlook calendar - as a second calendar.
I have all of the data on the server. Is there a recommended way to have Outlook point to my web server or DB for a calendar? I see there are ways to generate iCal files from C#.
If so, how would this data stay in sync as new events are created, deleted, etc? A one time dump would be ok but the concern would be that the data would get stale. Is there a solution that would keep the reference dynamic to keep them in sync. (it would only need to be a one way transfer, i don't expect the need to create or delete from Outlook, so outlook is just read only)
I think you can create iCalendar file,then publish it ,so let clients subscribe your internet calendar because internet calendar subscription is periodically synchronized with a calendar that is saved on a web server,and any updates to the internet calendar are downloaded automatically into MS Outlook.
You can use DDay.Ical library for creating (.ics) files using C#.
assuming your question is about how to keep the client and server side synched, and since you only mention outlook as client, there is a custom way to control the update frequency: microsoft has a custom calendar property: X-PUBLISHED-TTL (see microsoft msdn calendar)
2.1.3.1.1.15 Property: X-PUBLISHED-TTL
Brief Description: Specifies a suggested iCalendar file download frequency for clients and servers with sync capabilities.
however note that this property being custom will be ignored by other calendars
You could try to keep track of the SEQUENCE of updates to each calendar entry in your database, and add a trigger on your table of calendar events so that it would automatically send event updates when something changes. Each update would have a higher SEQUENCE property than the updates that came before it, but the UID (the event's unique identifier) would remain the same.
For this to work, though, you'd need to be able to send iCalendar events from within your SQL Server, which can be possible using the following CLR project:
github.com/EitanBlumin/sql-clr-ics

Resources