The delete event endpoint occasionally responds with a 412 / ErrorIrresolvableConflict status code when attempting to delete an event. The message supplied in the response is:
The send or update operation could not be performed because the change key passed in the request does not match the current change key for the item.
The error description for ErrorIrresolvableConflict suggests that one should:
Retrieve the updated change key and try again.
Glancing at the event resource description I see the changeKey mentioned as a property of an event, but nothing in the delete event endpoint docs suggests that the changeKey needs to be supplied when deleting an event or how one would do so.
I see a couple of similar questions on SO pertaining to sending emails and adding attachments but searching around yields nothing about deleting calendar events.
This error happens transiently and I have yet to find a way to consistently reproduce it. It does not seem to be related to whether the event has attachments.
This error was observed on the following request:
request-id: 05cffaf7-c422-4bfd-97ac-6ea6d1036021
We are having similar issues (see my question here: Getting error code `ErrorIrresolvableConflict` responses when trying to create events on a calendar using Outlook REST API) when creating calendar events through the REST Api. It subsided for a bit (to only several times a day) but since January 2nd has started happening frequently again.
Related
Our platform is replicating email functionality, I.e. view all emails folders and contents, reply, create new, draft, move etc for users.
We have successfully subscribed users to all change notifications (create, update, & delete) for the whole mailbox, however, we are not sure how to track folder move operations as I can’t find an example in the documentation and our current implementation is not working reliably.
The issue we have is that after receiving the various change notifications, when we are doing the requests to get the value for the updated/deleted message, sometimes the value returned is the updated value, not the original one, therefore if the folder has changed we do not know which message to delete. This issue is highlighted in the documentation here (half way down): https://learn.microsoft.com/en-us/graph/outlook-change-notifications-overview?tabs=http#example-3-create-a-subscription-to-get-change-notifications-with-resource-data-for-a-message-based-on-a-condition-preview
We tried it using immutable ids, but the final webhook received was sometimes the delete webhook for the message ID. This is supposed to be for the original email that was moved, however because the message ID is the same (and the parent folder ID value is not reliable) we may end up deleting the wrong email.
With immutable turned off, we did not receive any delete notifications (only creates and updates), so we ended up with duplicate emails as the original was never deleted.
Is someone able to advise the correct procedure to track these events?
Thanks
So it turns out the only reliable way to do this is using the delta query - https://learn.microsoft.com/en-us/graph/delta-query-messages - whenever a change notification is received for a folder.
So, when authorisation is provided for access to a users mailbox, you must get subscriptions for each folder and then whenever a change notification is received for that folder/subscription, the delta query is run for that folder.
I believe that MS are in beta testing for providing the change information in the webhook which in my option would be a great improvement in efficiency in terms of implementation and operation.
Hope this helps someone in the future!
So having been to Ignite in 2017 I was really excited with the new possibilites the Webhooks in Microsoft Graph and binding to Azure functions.
Recently I got the chance to really explore this for myself.
I am looking at this from the perspective of Identity Management - I really want to see what kind of user onboarding/change management we can react to and process with Graph Webhooks and Azure functions. So I started looking at the beta endpoint and the Webhooks available for "/users"
The first thing that struck me was that in the beta only "updated" or "deleted" is a valid changetype. I really would like "created" - since that is when the most work would get done on a user (for example generating some unique attribute values)
Ok I thought and just tried looking at "/users" and only changetype="updated". I created a subscription and an basic Azure function to handle the requests. Updated a user in Azure AD (just changed "Last name" attribute) and sure enough a trigger was sent to my Azure function
Now comes my biggest problems - this is really unusable in its current form.
his seems to react to the all changes /users and i guess the trigger response could contain several users.
It really would be preferable to get individual triggers for each object changed in /users even though they were changed at the same time
Looking at the actual information sent here lies the BIG problem.
I get the id of the user changed (good, but also expected)
I get the organizationId (ok..)
I get the eventTime (good)
I get a sequenceNumber (unsure what this is?)
I get subscriptionExpirationDateTime (ok fine good to have)
I get subscriptionId for the webhook (ok fine good to have)
... but WHERE is information about what data was changed??? Nowhere to be found is what attributes of the user were changed (i my case "Last name"). This makes the triggers totally unusable for "/users" and I cant really think of anyone who could use this function as is?
Sure I know the object was changed but I have no idea WHAT happened and if the change was relevant to my function
Please tell me there are plans to include the actual changes in the trigger response?
EDIT: ok right, yeah this is more a feature request from the actual developers of ms graph - will look for a better place to get this answered
Please provide feature requests here (ex: richer data in notifications, "created" change type) : https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback?category_id=101632
Here are answers to other questions.
Microsoft graph doesn't guarantee ordering of events when sending notifications (ex: your webhook endpoint could be down and we will retry events delayed by up to 4 hours or drop if the outage is longer than 4 hours). Hence "SequenceNumber" can be used to track if an event is in order and hence used as is or if it is out of order and needs a query to Graph to get current state.
Currently, we provide Ids of objects and associations (member, manager) that have changed, whether the object/associations is deleted or updated but not details of other properties that were changed. In its current form, webhook is best used with delta query. Instead of polling delta query every X minutes and in most cases receiving zero changes, developers can create a subscription and perform delta query only when a notification is received. This would help scale in case there are many tenants that needs to be polled.
Delta Query: https://developer.microsoft.com/en-us/graph/docs/concepts/delta_query_overview
Also FYI, webhook notifications for user/group is now also available in V1.0
When I use Microsoft Graph API to create an Unified group and then later try to update the group to set the mailEnabled boolean flag to "false", the update REST call appears to be successful, but the mailEnabled flag isn't changed. This is despite having other settings in the same PATCH request (such as flipping visibility from "Public" to "Private" or back again) which do appear to be applied. Interestingly, I get an HTTP response code of 204 (No Content), yet the docs appear to say I should get a 200 response with a JSON version of the full group object.
The example in the documentation at http://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/group_update appears to indicate the mailEnabled is something that you can change on a group. If it isn't, shouldn't there be an error rather than it just succeeding but not doing anything?
Thanks for reporting this Jon. Couple of things:
Yes - this should be a 400 error. We have a bug tracking this now.
Successful PATCH operations should response with a 204. This is a doc bug. Created GitHub issue: https://github.com/OfficeDev/microsoft-graph-docs/issues/131 to track
In general we could do with improving the groups reference materials. Created GitHub issue: https://github.com/OfficeDev/microsoft-graph-docs/issues/132
Hope this helps,
We are attempting to build free/busy calendars on our website for our Adobe Connect seminar rooms using data provided by the Adobe Connect API.
Our first attempt used sco-session-seminar-list. This returned data in the expected format and seemed to work perfectly. However, upon review we found that many existing sessions were not being returned. Some of the rooms do not have the API user setup as a host or presenter, so I suspect that may be causing a problem, though the user can see these sessions in the admin which indicates to me that they should have access.
We then tried report-bulk-objects. This did return all seminars as desired. However, it hits the reporting database which means that seminars created in the last 24 hours may not appear. Worse, it does not appear that there is any way to filter by room (or parent sco-id) using this method.
I cannot find any other relevant methods in the API documentation that would work better than the above two for our needs. However, it seems like a free/busy calendar should be a relatively common use of the API.
We finally found a non-intuitively named function that worked for this sort of information:
url="http://#AdobeConnectUrl#/api/xml
name="action" value="sco-expanded-contents">
name="sco-id" value="#roomID#">
name="filter-gte-date-begin" value="2015-01-01">
name="filter-lte-date-begin" value="2015-01-08">
This function will also work for a more informational calendar as it returns details other than just the start and end times (such as the seminar name). It pulls all sessions that occur under the sco-id requested, including those in subfolders. It also runs in real-time.
I'm using the event_search API method to let my users find their Eventbrite events. I've been getting a lot of complaints from users that their events don't show up. And indeed, it seems that loads of events simply aren't returned by event_search.
One example: http://blogher12.eventbrite.com/. It's a big event, it's starting in a few days time and it has a very distinctive name. It's typically an event that should be very easy to find through event_search.
Yet, it's not anywhere to be seen in event_search's results, no matter what search term I try. You can try yourself at http://developer.eventbrite.com/doc/events/event_search/ - enter 'BlogHer' in the 'keywords' field and you'll get a small handful of fringe events that mention "BlogHer" in their description but not the main event.
This is just one of many missing events I've seen in the past few weeks. I initially thought that the EventBrite API perhaps didn't return events for which ticket sales had closed, which would have explained some of the missing events. But I really can't see any reason for BlogHer to be missing in action.
Is there a trick to get event_search to return all events?
The event owner has configured that event to be 'private', which prevents it from being shared via Eventbrite's public search index.
If you think the event should be public (and accessible via the API), feel free to use the 'contact the host' link on the event page to pass your suggestion on to the event organizer.