Why do Microsoft messageRule IDs periodically change - microsoft-graph-api

I have a script that queries Microsoft Graph for the mail rules of each user. Each mail rule comes back with an ID which I then store for tracking purposes. However these rule IDs periodically change. I haven't been able to determine what causes this. Is there a predictable way to identify mail rules?

Sadly, you aren't the only one to have this problem. This post has been open for over a year on MS's Q&A Board: messageRule ID not constant?
This answer may provide some insight as to why this is happening: Message-Id header changing when sending via ActiveSync - Answer
Unfortunately, it seems like this is a shortcoming of Outlook (and other MS systems for that matter). Perhaps getting more traction to this issue can finally get MS to shed more light on this...

Related

Inviting event attendees programatically on iOS 10

I've been using Stackoverflow for about 5 years now, and haven't felt the need to ask a single question yet, I've always found the answer i needed through previous threads. That just changed and I have a question that I really can't figure out. And it sounds so easy to do.
So the question is; how do you invite attendees, or reply/decline to calendar events on iOS under iOS 10? And please, no we don't want to bring up an EKEventViewController. We'd like to do this in our own UI. Under iOS 9 this was possible through just forcing EKAttendees objects in to the EKParticipants array with setValueForKey:. But under iOS 10 this produces an error saying 'Attendees can't be modified'.
I have used a Technical Support credit with Apple and got the reply that this was not possible. It is not possible using their APIs.
The closest to an answer i've got is to use IMIP (https://www.rfc-editor.org/rfc/rfc6047#section-2.2.1). If that's the way to go, could someone help me along on how to actually set that up? I'm not well versed in back-end development, I'm all front-end so I wouldn't really know where to start.
There also seems to be some CalDav servers on GitHub (https://github.com/mozilla-b2g/caldav) but I'm not sure how good they are, or exactly what you need to set one up.
So basically, is there anyone who could give a childs explanation to just how the heck we can send nice invites to calendar events. And if there are different solutions for Google, Apple accounts (obviously under the hood, but implementation-wise) that would be very helpful to know to.
Is this something that requires a ton of implementation on our own servers or is there some reliable service to use? That would be ideal. Maybe you should build one and you got at least one customer here :-)
Appreciate any help!
You cannot modify attendees using EventKit, but Apple already told you that:
I have used a Technical Support credit with Apple and got the reply that this was not possible. It is not possible using their APIs.
The hack with accessing the internal objects using KVC was, well, a hack and not documented API. No surprise they killed that.
So how do calendar invites work. That in itself is a very complex topic (consider delegation, resource booking like rooms, etc etc). There is a whole consortium which works on that (CalConnect), they also have a broad overview: Introduction to Internet Calendaring and Scheduling.
If you are serious into scheduling/calendaring software, it may make a lot of sense to join CalConnect for their interop events etc.
But you wanted a 'childs explanation'. I can't give that, but a short overview.
iTIP
iTIP is a standard which defines how scheduling messages flow, e.g. that you send a message to your attendee, your attendee responds back with accept/decline, what happens if a meeting is cancelled and all that.
It does NOT however specify how those messages are transferred. It is just a model on how the message flow works between the organiser and the participants.
Most 'big' calendaring systems (Exchange, Google, CalDAV servers like iCloud) use iTIP or at least something very similar.
iMIP
iMIP is a standard which defines on how to exchange iTIP messages using email. Say if you invite someone using iMIP, you'll send him a special email message with the iCalendar payload containing the invite. If your attendee accepts, his client will send back another iCalendar payload via email containing that.
iMIP is supported by a lot of systems and was, for a long time, pretty much the only way to exchange invitations between different systems (say Outlook and Lotus Notes).
However: the iOS email client does NOT support iMIP (unlike macOS or Outlook). So if someone sends you an iMIP invite to your iOS device, you won't be able to respond to that. (reality is more complex, but basically it is like that)
CalDAV
CalDAV is a set of standards around calendars stored on a server. Many many servers support CalDAV. E.g. iCloud uses CalDAV. Yahoo, Google, etc all support CalDAV. The important exception is Exchange, which doesn't support it.
In its basic setup CalDAV just acts as a store. You can use HTTP to store (PUT) and retrieve (GET, etc) events and todos using the iCalendar format.
In addition many CalDAV servers (e.g. iCloud) do 'server side scheduling'. That is, if you store an event to the server which is a meeting (has attendee properties), the server will fan out the invitations. Either internally if the attendees live on the same server, or again using iMIP.
Exchange
Exchange supports iMIP but not CalDAV. You usually access it using one of its own web service APIs, e.g. ActiveSync or Exchange Web Services. I'm no expert on them, but I'm sure that they allow you to create invites. Exchange&Outlook have an iTIP like invite flow.
etc
Is this something that requires a ton of implementation on our own servers or is there some reliable service to use?
This really depends on your requirements and needs. Do you need to process replies or just send out generic events?
If you want to host a calendar store, it probably makes sense to use an existing CalDAV server.
Calendar invitations are a very complex topic and you need to be very specific on your actual requirements to find a solution. In general interoperable invitations in 2017 are still, lets say 'difficult'.
P.S.: Since you've been using StackOverflow for about 5 years now, you should know that this question is too broad for this thing.

Jira to know how many poeple have visited an issue

I want to know how many people have visited a particular isssue in order to know its popularity( I can't trust on number of watchers of the issue) .Is there any way (JiraDB or anything) by which i can know how many people(just the count) have visited any particular issue.
The question can be modified like this : Top 10 mostly visited issues in a week or so.
Seb's earlier answer provides a possible solution for JIRA Cloud. I am not aware of any off-the-shelf product for behind-the-firewall installations of JIRA, and I do not believe that views are tracked anywhere in the JIRA database.
For behind-the-firewall instances, you could certainly write a script to parse the JIRA access logs (stored in $JIRA_HOME/logs/access_log*) to count issue accesses that way.
The JIRA access logs are stored in a format that is similar to the Apache access log format, so you just need to parse out accesses to individual issues by looking for URLs of the format "http://MYJIRA/browse/ABC-123".
Out of the box this is not possible. Jira does not log view counts for single issues.
You could have a look if there is any plugin for this at https://marketplace.atlassian.com/search?application=jira
E.g. https://marketplace.atlassian.com/plugins/communardo.connect.usage.statistic.addon looks like it could fit your requirements, but I personally have never heard of it.

Generate X-Apple-ActionSignature

for some research at work I have to understand how to generate the X-Apple-ActionSignature which can be found in HTTP-Headers e.g. of iTunes-traffic. I've read that it can be found in other Mac OS X and iOS specific network traffic, too.
What I've found so far is that iTunes sends a GET request to
https://init.itunes.apple.com/WebObjects/MZInit.woa/wa/signSapSetupCert
In the response a plist is appended which has a key 'sign-sap-setup-cert' containing probably a certificate. After that a POST request contains 'sign-sap-setup-buffer' and is sent to
https://play.itunes.apple.com/WebObjects/MZPlay.woa/wa/signSapSetup
The response has again 'sign-sap-setup-buffer' in the data segment and after that every other request contains a X-Apple-ActionSignature. However I can not find out how to generate this. Is someone able to help me?
Looking at this Twitter thread, it seems that "X-Apple-ActionSignature" is some kind of proprietary signature or metrics posts generated and/or used by FairPlay.
It's not something that Apple has documented publicly, nor do they make it easy to figure out how to generate or spoof (even if for non-malicious purposes like research).
Your best bet is to contact Apple directly (e.g. via a Technical Support Incident or TSI) and tell them exactly what you are doing and the big picture of why you are doing this, and if you are lucky the Developer Technical Support person will connect up with the right people in Apple Engineering to give you the answers you need.

Facebook Graph API changed results from /posts today?

I have an iOS app that has been fetching the user's Facebook status updates and location checkins using "/me/posts" for several months. After today's "breaking changes" update, "/me/posts" only returns recent "Like"s. It looks like "/me/statuses" and "/me/checkins" are the new proper places to check for these things. I guess that makes sense, but I saw no documentation anywhere describing these changes or saying that they would happen today. The original documentation about what is specifically returned from the graph API also seems pretty slim.
So my questions are: is this an official change to the API? Where was it specified? Where should I look so I can stay on top of these things and not have my app break for hundreds of users?
Perhaps more importantly: are "/me/statuses" and "/me/checkins" the new proper ways to get this information? Or is there something else?
Always good to keep a (sharp) eye on the Developer Roadmap. These types of changes happen often, but FB usually does a good job of calling them out ahead of time. You've answered your own question as far as whether or not it's an "official" change - you're seeing it in the wild - insofar as how Facebook works, it's official.
Try using the Graph API Explorer. It could be an access token issue.
FYI: I see a similar issue with my application, and I am able retrieve the posts only when I use the Graph API Explorer and the token I get from there.
Update: I found where some of the problems lived. In the app profile in Facebook, pick "Edit Settings" and then go to "Advanced" where you'll see a section called "Migrations". This is mostly switches to show compatibility for various "breaking changes" updates, but it also includes an option for "Include Checkins with Statuses".
Now I know where to look, things are making a bit more sense.

Interacting with Outlook appointments using rails

I have a rails application running on a Linux server. I would like to interact with Outlook/Exchange 2003 appointments from the rails application. For example, certain actions should trigger sending an appointment, and then preferably accepting/canceling the appointment in Outlook should trigger events in the application.
Failing this, is it possible to publish calendars that Outlook 2003 can read without requiring Outlook plugins? I note that Outlook 2003 does not support ical without plugins for example. Similarly, if this is not easily doable in Ruby, but is in another language (such as Perl for example) running on Linux then those suggestions would be welcome.
Any advice on how to achieve this, or where to start looking for answers would be gratefully received.
Outlook appointments are just e-mails with special header information. There's some information in this tutorial on the required parts. I sent a few meeting invites from my Outlook to my Gmail account and took a look at the raw headers there - you can figure most of the protocol out from that.
The iCalendar specs may help you, as well.
Thanks for everyones help. I found something that showed me how to do this with Perl, and ported it over to ruby. I've blogged about it for those looking for a solution
If you can upgrade to Exchange 2007, you can use Exchange Web Services that is more powerful and convenient to use than WebDAV.
At work, I inherited a Rails app that allow users to create single appointments. I was asked to write code to link those appointments in the app to users' outlook calendars, so that they are always in sync. Sounds to me very similar to what you want to do.
I don't think I'm allowed to publish the exact code I wrote though. Anyway I'll give you a bit idea on how I addressed it.
Exchange Web Services only provide API in C# (no surprise, it's Microsoft. Technically, you can use other languages since it's actually SOAP.). I wrote a middleware in C# that does the sync between Exchange server and the Rails app. When users do scheduling in the app, changes are sent to the middleware so changes can be reflected to their outlook calendars. Meanwhile, the middleware registers Push Notification subscriptions for all users -- every time changes are made in Outlook, the middleware will be immediately notified, which in turn faithfully reflect those changes in the app as well. Of course, recurring appointments are also supported.
Hope that helps you.
Take a look at the project RExchange on github.
For accessing appointments, you can just access the Calendar folder on Exchange using WebDav. For creating appointments, please refer to RFC2445 for details.
Further to ceejayoz's comment, you can also use ActionMailer to catch the replies that are sent back, and act on them - you'll need some form of unique id in a place that will be included in the reply though.

Resources