
Hi David (and whoever else of you wonderful people who develop TVMaze)....
Like everyone else that uses the site I am truly appreciative of what you have created and what is on offer but I am finding the API incredibly limited due to not being able to access or update any of my personal show information and was wondering if you need another pair of hands to help develop this sort of functionality. I love what it already does but to me the API really needs to deliver user-centric data to be really useful.
Now I don't know what it's coded in but I'm a C# developer and have 10+ years experience coding, including developing API's, web services, object oriented architecture, etc, etc so I think I'd be well able to help. Even assuming it is not written using .Net I'd still be happy to have a crack at helping out if you were keen. (What is it written in just out of interest?)
Re authentication of users during API calls, I can't see that adding a basic layer of security to validate a user request would be difficult and perhaps it could be as simple as using a static token assigned to each user when they sign up, just like the calendar one. Then it would just be a matter of adding perhaps the username and the token to each API request that requests (or updates) personal show data (i.e: my shows, eps watched etc) and if it's not valid for the user then return an error as you currently do for an invalid API call. Perhaps this may be too simplistic but since the site is not holding any sensitive information (and pretty obviously is never likely to) I'm pretty sure this would suffice - personally I'd be very happy using this basic level of authentication. For example, to get a dataset of all the shows I follow you could use something like this:
http://api.tvmaze.com//followedShows?user=nzmike&token=Mr5bUCTt5WIDjiwpZHa37NIWW977blRr
To give you an idea what I'd like to see, I am writing a Windows 10 Universal app to be able to keep track of my shows, see information about them, see when they are airing next, update episodes, follow new shows, etc. (Btw, this is just for me and I don't plan on selling it though I could potentially make it available for TVMaze users for free.)
I know the website does all this but the whole reason for any API is to divorce the reliance on one platform - in this case using a web browser and having to constantly load the page, log in etc.
As a starting point, I'd like to see services to do the following:
1. Followed shows - as example above, returns a dataset of all shows followed:
http://api.tvmaze.com//followedShows?user=nzmike&token=Mr5bUCTt5WIDjiwpZHa37NIWW977blRr
This is the really big one and even just this would make the API so much more powerful. At present I have to follow the show on the site (to get the show to appear on my calendar) and also add it from my app by requesting the show via the API.
2. Follow a single show: I'd use the API to find the ID for the show (eg: 29 for Vikings) then send a request such as:
http://api.tvmaze.com/followShow?id=29&user=nzmike&token=Mr5bUCTt5WIDjiwpZHa37NIWW977blRr
3. Update a watched episode for a show.....
http://api.tvmaze.com/updateWatched?id=29&season=1&episode=2&user=nzmike&token=Mr5bUCTt5WIDjiwpZHa37NIWW977blRr
...or even simpler, provide the episode ID (e.g: 618780 for 4x06), showId or season Id :
http://api.tvmaze.com/updateWatched?showId=29&user=nzmike&token=Mr5bUCTt5WIDjiwpZHa37NIWW977blRr
http://api.tvmaze.com/updateWatched?seasonId=29350&user=nzmike&token=Mr5bUCTt5WIDjiwpZHa37NIWW977blRr
http://api.tvmaze.com/updateWatched?epsiodeId=618780&user=nzmike&token=Mr5bUCTt5WIDjiwpZHa37NIWW977blRr
4. Download the calendar of my followed shows in a format that is easier to use than iCal:
http://api.tvmaze.com/calendar?user=nzmike&token=Mr5bUCTt5WIDjiwpZHa37NIWW977blRr
Anyway, you get the idea and I'm sure you have a roadmap for doing this stuff but the offer is there if you need help to develop it - I would be very happy to give back to the TVMaze community as it is by far and away the best TV tracking platform I've come across.
And lastly, apologies for the length of the post - if you've got down to here then my thanks for reading it all. :-)
Mike