API Docs: V2 API
Overview
Joind.in is offering a HTTP web service to give clean, robust access to the data contained in the application to consuming devices. It follows a RESTful style, is available in HTML and JSON formats, and uses OAuth v1.0a for authentication where this is needed (all data publicly visible on the site is available via the API without authentication). Hyperlinks are provided the responses to allow you to easily locate related data. This document gives information about the functionality of the API and how to use it.
Global Parameters
There are a few parameters supported on every request:
- verbose: set to yes to see a more detailed set of data in the responses. This works for individual records and collections.
- start: for responses which return lists, this will offset the start of the result set which is returned. The default is zero; use in conjuction with resultsperpage
- resultsperpage: for responses which return lists, set how many results will be returned. The default is currently 20 records; use with start to get large result sets in manageable chunks
- format: set this to html or json to specify what format the response should be in (preferably use the Accept Header, alternatively you can pass this param)
Data Formats
The service currenty supports JSON and HTML only, although these can very easily be expanded upon in future. The service will guess from your accept header which format you wanted. In the event that this is not behaving as expected, simply add the format parameter to specify which format should be returned.
If you want to use the data provided by this API from JavaScript, we offer support for JSONP. To use this, request json format data and pass an additional callback parameter; the results will be the usual JSON but surrounded with the function you named.
Where there are links to other resources, and for pagination, you will find those links as part of the response. The pagination links look something like this:
- meta:
Authentication
You only need to authenticate if you're adding or editing data (including comments) or want to access private data. For most operations, particularly just retrieving information, authentication is not required.
This API uses OAuth2. To authenticate you will need the following:
- Every app must first register for an API key and give the callback that they will use to send users to. To register an API key, sign in to joind.in and visit: https://joind.in//user/apikey. These are associated with your user account, you can have as many as you like and you can delete them at any time.
- When you want a user to grant you access to their data, send them to: https://joind.in//user/oauth_allow with the following query variables on the URL:
api_keyThe key you registered for in step 1 (the secret isn't currently used)callbackThe callback URL to send the user to afterwards. This can be a device URL and it must match the URL you registered in step 1 (exactly match)state(optional) Whatever you pass in here will be passed back with the user when we redirect them back to you. Use it however you like
- When the user is sent to the redirect URL, it will contain one additional parameter:
access_token. Capture this and store it - this is a per-user token. - To make requests with access to that user's data, add the access token into an authorisation header. The format should be:
Authorization: OAuth [access_code] - events: http://api.joind.in/v2.1/events
- hot-events: http://api.joind.in/v2.1/events?filter=hot
- upcoming-events: http://api.joind.in/v2.1/events?filter=upcoming
- past-events: http://api.joind.in/v2.1/events?filter=past
- open-cfps: http://api.joind.in/v2.1/events?filter=cfp
- name: Whisky Web Conference
- start_date: 2012-04-12T00:00:00+01:00
- end_date: 2012-04-14T23:59:59+01:00
- description: THE WEB CONFERENCE IN SCOTLAND The inaugural Whisky Web conference kicks off in Edinburgh on the 13th and 14th of April 2012. A web conference created for the web community, by the web community; Whisky Web will have something to offer everyone who works with the web, be they a designer, a developer or something in between. This is an amazing opportunity to get your geek on in Scotland's inspiring capital. More at http://whiskyweb.co.uk/
- href:
- attendee_count: 35
- attending: 1
- event_comments_count: 4
- icon: logo.90x90_.png
- tags:
- 0: php
- 1: ruby
- 2: python
- 3: web
- uri: http://api.joind.in/v2.1/events/886
- verbose_uri: http://api.joind.in/v2.1/events/886?verbose=yes
- comments_uri: http://api.joind.in/v2.1/events/886/comments
- talks_uri: http://api.joind.in/v2.1/events/886/talks
- website_uri: http://joind.in/event/view/886
- humane_website_uri: http://joind.in/event/whiskyweb
- talk_title: Estimation, or "How To Dig Your Own Grave"
- talk_description: Clients need to know how much a project will cost. Waterfall development is always late and over-budget. Agile development is done when it's done. You're left with estimates that you know are too low and then you squeeze them anyway. It shouldn't be this way. We'll look at how this happens, early warning signs, ways out and ways of avoiding it in the first place.
- slides_link: http://merewood.org/estimation-or-how-to-dig-your-own-grave/
- language: English - UK
- start_date: 2012-04-13T09:50:00+01:00
- average_rating: 5
- comments_enabled: 1
- comment_count: 12
- speakers:
- 0:
- speaker_name: Rowan Merewood
- speaker_uri: http://api.joind.in/v2.1/users/118
- 0:
- rating: 5
- comment: He gave some interesting pieces of info and theories that are applicable to professional world! Very Good
- user_display_name: Martin Moscosa
- talk_title: Estimation, or "How To Dig Your Own Grave"
- created_date: 2012-04-14T13:45:22+01:00
- uri: http://api.joind.in/v2.1/talk_comments/19450
- verbose_uri: http://api.joind.in/v2.1/talk_comments/19450?verbose=yes
- talk_uri: http://api.joind.in/v2.1/talks/6287
- talk_comments_uri: http://api.joind.in/v2.1/talks/6287/comments
- user_uri: http://api.joind.in/v2.1/users/18140
- comment: This was a great opportunity to learn. The selection of speakers was very impressive, and the talks I attended were all interesting. All credit to the organisers for making it happen, especially at such short notice. For me, as a local (and a Scot), the low price made it a "no-brainer" to attend at my own cost (for that price I didn't expect lunch and dinner to be included too). Well done and thanks to the various sponsors (including Joe) - you deserved the unashamed plugs at the end of the day ! I hope it will happen again next year.
- created_date: 2012-04-15T12:51:25+01:00
- user_display_name: Rory Davies
- user_uri: http://api.joind.in/v2.1/users/18152
- comment_uri: http://api.joind.in/v2.1/event_comments/679
- verbose_comment_uri: http://api.joind.in/v2.1/event_comments/679?verbose=yes
- event_uri: http://api.joind.in/v2.1/events/886
- event_comments_uri: http://api.joind.in/v2.1/events/886/comments
- username: rowan_m
- full_name: Rowan Merewood
- twitter_username: rowan_m
- uri: http://api.joind.in/v2.1/users/118
- verbose_uri: http://api.joind.in/v2.1/users/118?verbose=yes
- website_uri: http://joind.in/user/view/118
- talks_uri: http://api.joind.in/v2.1/users/118/talks/
- attended_events_uri: http://api.joind.in/v2.1/users/118/attended/
If you have any questions or problems, just let us know, this is new functionality and feedback is more than welcome.
Service Detail
Examples shown in HTML format. The JSON response holds identical data, passed through json_encode rather than pretty-printed
Request: GET /
This is your starting point and will show you where you can go:Request: GET /events
Request: GET /events/[id]
Shows a list of events, with a variety of filter/sorting behaviour supported (see above entry). The default is all events sorted by date descending. As ever, you can use the links to get to other information, and the verbose, start, requestsperpage and format parameters as you need to. The "attending" field will be set to 1 when there is an authenticated user who is marked as attending this event.
Each result looks something like this:Request: GET /events/[id]/talks
Request: GET /talks/[id]
Following the link to the talks for an event gives a list. The format, verbose, start and requestsperpage parameters are valid. Each talk entry will look something like this:
Request: GET /talks/[talk_id]/comments
Request: GET /talks/[talk_id]/comments/[comment_id]
The talk comments (note that event comments are a different thing) include a rating and comment, and if the comment was made by a logged-in user, a link to their user account. The format, start and requestsperpage parameters are valid, and the record for each comment looks something like this:
Request: GET /events/[event_id]/comments
Request: GET /events/[event_id]/comments/[comment_id]
The comments show who made the comment and their comment and rating. The format, start and requestsperpage parameters are valid, and the record for each comment looks something like this:
Request: GET /users/[user_id]
The user resource is available where the user is the speaker for a talk, a host of an event, and where they have left comments logged in as themselves. It includes links to the talks given by this user and the events they attended
Request: GET /users/[user_id]/attended
A list of all the events a user has been to (where they have marked themselves as attending the event). The output format is exactly as the other events
Request: GET /users/[user_id]/talks
All the talks given by this user, in the same format as the other talk results



