Office365 REST v1.0 API calendar does not return recurrences - exchangewebservices

The Microsoft Office team annouced today the availability of a REST API across the Office365 suite, as well as guides for writing apps across the different app ecosystems.
To evaluate the API, I simply wanted to get a listing of my events for today.
The new API seems to be relatively unchanged from the preview API
The basic GET is quite simple:
https://outlook.office365.com/api/v1.0/me/events
This gives back listing of calendar events. To get a specific day, we should be able to use OData Query Parameters.
For example:
https://outlook.office365.com/api/v1.0/me/events?$filter=End gt 2014-10-28 and Start lt 2014-10-29
This gives a much shorter list, but it's not quite right.
There are no recurring events that weren't created in that timeframe.
This seems to be a known issue with the preview (EWS/OData) API:
Office 365 API recurring meetings not always returning
Office 365 API EWS calendar not expanding recurring events
There are some work-arounds mentioned in the above isssues, but there are notes that the API is in flux and that those approaches may not work in the v1.0 release. Furthermore those work-arounds don't seem to still apply, which is why this question is not a duplicate.
So, how can one get all of today's events, including recurrences, via the Office365 REST v1.0 API?

Thanks for your interest in Office 365 REST APIs. You are correct that, in V1.0, GET on events returns single instance meetings and series masters, and doesn't expand series. We have two ways to expand recurrences. We just checked and it looks like that documentation is missing and we will update it ASAP. In the meantime, here is the info that should unblock you:
CalendarView: You can use this API to get list of all events (single instances and occurrences of series) for a given timeframe. Timeframe is specified in UTC, so you have to ask for the right times based on your user's time zone. Time zone support is high on our priority list and will be coming soon. Here is an example request to fetch list of events for October 1-31 PDT:
https://outlook.office365.com/api/v1.0/Me/CalendarView/?startDateTime=2014-10-01T07:00:00Z&endDateTime=2014-11-01T07:00:00Z
Please note: We are in the process of fixing a bug where navigating the "next" link in the response doesn't work, but a fix is already on its way.
Instances of a Specific Meeting Series: You can use this API to expand a specific meeting series for a specified time period. Once again, times are in UTC. Here is an example to expand a specific meeting series to get list of instances for October 1-31 PDT:
https://outlook.office365.com/api/v1.0/Me/Events('AAMkA...')/instances?startDateTime=2014-10-01T07:00:00Z&endDateTime=2014-11-01T07:00:00Z
Please let me know if you have any questions or need more info.
Thanks,
Venkat

Related

why can I only get 250 rows (/shoe transactions) of stockx data when accessing their API?

I have tried to gather data directly from the API of stockx which seemed possible according to an article from Jan 2019: https://medium.com/#thewillmundy/stockx-sneaker-data-in-three-simple-steps-8977d0016b80 . I am thereby able to get a request url which gives me some transactions in JSON-format.
I have tried changing the parameters within the request url (limit as well as page), which is possible, but only for the latest 250 transactions (due to high volume of sales for some shoes, I can thereby only receive the sales history for the last few days)...
My Goal: getting the whole sales history (often several thousand transactions) - in the article mentioned above, thats possible
Could it be a restriction from stockx?
or is there a way?
Would be so so grateful for help!!!
Best regards, Marvin
I think the API will only give you the 250 most recent sales because that's all the product webpage itself will allow you to load when you click view all sales. Any sales further back in time aren't directly accessible from the product page, and we're essentially requesting the same data that page can request using the link it would use. I guess those are stored and accessed in a different way internally.
I'm guessing StockX changed its API since that article is a little old. I would try to contact StockX about their API via email, but I don't think they're really continuing developer support:
https://twitter.com/stockx/status/1000004306844647424?lang=en
It's pretty disappointing because I was also looking to work with the sales data but what can you do :/

Is it possible to get directions in the past?

I am new to the Google Directions API, and I'm trying to get directions in the past (i.e. not today or any date/time in the future).
I have read about the arrival_time and departure_time parameters in the Developers Guide, and it says that you cannot choose a past date/time.
However, through the web interface, I can choose a prior date and time, and it appears to provide a different distance/time estimate than letting the website default to the current date/time.
This leads me to believe it is possible, but I have cannot figure out how to do it, either through the API or through a non-API structured URL.
Any help would be much appreciated!
It is not possible to set departure_time in the past. Google's documentation states:
The departure_time must be set to the current time or some time in the
future. It cannot be in the past.
Try the following Directions request (which has departure_time set to 10 July, i.e. 9 days ago as of today).
https://directionsdebug.firebaseapp.com/?origin=California%2C%20USA&destination=Las%20Vegas%2C%20NV%2C%20USA&mode=driving&departure_time=1562766180
You'll see this error:
Directions request failed due to INVALID_REQUEST - departure_time is
in the past. Traffic information is only available for future and
current times.
Hope this answers your question.

Google Maps: how can I get the exact date of a Google review for a business I don't own?

I'd like to explore patterns of Google reviews for a specific business (that I do not own). It would be useful to get the exact date of a review, rather than just the "3 months ago" or "1 year ago" approximation that you get via the web interface.
Does anyone know a way to do this? Here are the options I've explored so far:
I tried "manually" scraping the review list HTML (e.g. from a page like this), but it does not contain any review timestamp that I could recognise, other than the approximated relative date (e.g. "1 year ago").
The Google "My Business" API does seem to provide exact review dates, but to use this API, you need to own the business for which you're retrieving the reviews.
The Google Places API does expose review dates, but only for 5 reviews per place. According to this API feature request, this limitation remains in place even if you pay for Premium data access.
Results from party review analysis tool Reviewshake contain an absolute date field, but it is derived from the approximate relative date. So it erroneously makes it seem like most past reviews occurred exactly on this day each month, or exactly on this day on previous years!
Any help much appreciated!
The unix timestamp you're referring to can be easily converted from you first bullet point; what occurs when you view the reviews is Google's ReviewService is polled and the date comes in a unix format, that unix format is processed by a date/time function in the JS file on maps that returns the duration in length resulting in a week ago, a month ago, etc.
There is no known interface other than some of what you've already looked at; the closest you've got in your first point is the direct maps URL however you would need to rip the JS feed and convert the timestamps where you can make sense of them.
There aren't many sources that can do this but I can recommend you try https://www.reviewsmaker.com/api/demo/google/ or sign up free at reviewsmaker.com and add the business as a listing and you'll be able to crawl the results; otherwise you'll be stuck scraping the same data.
If you find another way please do share your results!

How to get public transport time schedule from The Google Maps Directions API?

I am trying to make public transport time schedule app using google maps directions api.
Whats the best way to get all of the possible departure_time's for a specific route from one place to another from a specific time?
The problem is, the server is always responding with only one route for one specific time. How can I get all of the following departure_times?
The worst way to do this is asking server every minute if there is some new travel link. But hey, its gonna take a lot of time!
So I thought google might be providing some kind of transport schedules but I can't find any info on google developers webs. I saw only the way to give google schedule information with the help of General Transit Feed Specification (GTFS) here or here.
But I can't find the way to get it from them.
I don't believe google maps directions api will return the information you are looking for as a collection.
The problem with transit data is that calculating a future schedule can require a lot of processing (especially if there are multiple routes involved in the rider reaching their destination) because, basically, the system needs to do a trip plan for each scheduled trip at starting point for the time range.
Google hints at this in their API regarding the alternatives parameter
alternatives — If set to true, specifies that the Directions service may provide more than one route alternative in the response. Note that providing route alternatives may increase the response time from the server.
Also, the different future departure times may actually be different routes or combination of routes (e.g. where multiple routes may come together on the same street for a while - for instance, near a college campus or other transit hub)
In order to get the underlying route data that would have the actual stop times you are looking for you would need to download the transit agencies' GTFS data directly and process it yourself (check our GTFS Data Exchange). This is what your competitors are already doing (e.g. Transit App, Moovit, etc.). There are packages that will do some of this processing for you (e.g. One Bus Away). However, even with the use of existing libraries, there is some heavy lifting involved here (from a development point of view).
As a final note, if you want to pursue using google maps directions api you wouldn't need query it for each minute within a time-range in order to get a series of departure times. You should be able to make a series of calls with the departure time set just past the departure time you got back in the previous call. For example, if the first trip time was 1:00pm set departure_time to 1:05pm and request again, then if the second trip time was 1:20pm set the next departure_time to 1:25pm and request again, and so on to build your list of future trips.
Okay. Firstly your question is not in the right spirit as stackoverflow demands. Check at google's developer console , API section and check if they offer any such API to give you all transport schedules in 24hrs or not ? If there is any such API then good, you can hit that but if not then I am afraid you wont be able to get it unless you hit API after some intervals.
Another suggestion is that , you can try yahoo or bing maps and check if they have any such API for your query.

Routing around a set time on one or more of the waypoints

This is using either Bing Maps API or Google Maps API.
Problem: I am trying to create a route for a salesperson that may have 1 or more meetings that day plus visit selections from a pool. Meaning the salesperson has 1 meeting at a client and they want to stop by some leads but around that meeting time.
I doubt either service can handle this problem directly.Is their as way to get a "table of time between destinations" from these services, without running up my requests.
The only way I know how is to submit each variation on the route, store in a table or array, then based on the services "time to get there", calculate the best order. Then resubmit again. My client could easily burn off 20 - 30 requests per try.
Is there any other option? Maybe an free open source one with sh*ty algorithm then submit the final list to one of the above?
You can use the distance matrix service, see the documentation here:
https://developers.google.com/maps/documentation/distancematrix/
In this way, you will be able to compute multiple route between multiple points and certainly reduce the number of requests overall.
If your request is just to get an optimization for a sales man, you can also check the option on Routing service and its optimize option, see: https://developers.google.com/maps/documentation/directions/#Waypoints
On Bing, route optimization (waypoint reordering) is not available yet but you can achieve this with the Route Matrix API.