Ketchup API Spec
The Ketchup API
The Ketchup API allows you to interact with Ketchup ( http://useketchup.com ) via a set of REST URLs that return data in JSON format. The API allows you to list, show, update and delete meetings, projects, agenda items and notes.
Please feedback any queries to support@useketchup.com
Authentication
Authentication is via a token. You can access your token in "My Account"
Get your API key with:
curl -u email@example.com:password
useketchup.com/api/v1/profile.json
'single_access_token' is what you're looking for.
All subsequent requests should be of the form:
http://useketchup.com/api/v1/meetings.json?u=APIKEY
In all cases, 'shortcode_url' is the ID of the parent, so MEETING_ID would be the 'shortcode_url' of the parent meeting, ITEM_ID the 'shortcode_url' of the parent item.
Projects
Projects allow group meetings and listing only meetings from a particular project.
Create Projects
Create a new project simply by passing the project name as part of a meeting create or update, eg:
{'title':'My New Meeting', 'project_name':'A new or existing project'}
List Projects
GET /api/v1/projects.json
List Meetings in a project
GET /api/v1/projects/PROJECT_ID/meetings.json
Edit a project
PUT /api/v1/projects/PROJECT_ID.json
Meetings
List Meetings
Note: By default, these methods return meeting data, notes and items for all meetings. For performance, you can pass 'lean=true' to any of the meeting list methods, to get just a list of meetings, rather than including notes and items.
GET /api/v1/meetings.json(?lean=true)
[{"meeting":
{"items":
[{
"updated_at":"2010-01-08T09:54:39+00:00",
"shortcode_url":"zj9_iPtJULnmIQZGW2e3SAM4vB1l8qwdhKYHpExC",
"notes":[],
"content":
"Introductions",
"position":1,
"meeting_id":155,
"created_at":"2010-01-08T09:54:39+00:00"
}],
"updated_at":"2010-01-15T13:59:39+00:00",
"title":"[Gem] Discussing the Gem Intranet",
"quick":null,
"public":true,
"shortcode_url":"i6L3So",
"date":"2010-01-13T15:00:00+00:00",
"attendees":"Paul, Julie, Catherine, Emma",
"public_url":"iAqm4h",
"location":null,
"created_at":"2010-01-08T09:54:34+00:00"}}]]
You can also get all meetings in icalendar format:
GET /api/v1/meetings.ics
List upcoming meetings
GET /api/v1/meetings/upcoming.json
List previous meetings
GET /api/v1/meetings/previous.json
List todays meetings
GET /api/v1/meetings/todays.json
Show a Meeting
GET /api/v1/meetings/i6L3So.json
Create a Meeting
POST /api/v1/meetings.json
{'title':'My Meeting', 'location':'Dublin',
'attendees':'Paul,Brian', 'date':'tomorrow'}
Update a Meeting
PUT /api/v1/meetings/MEETING_ID.json
{'title':'Your Meeting'}
Delete a Meeting
DELETE /api/v1/meetings/MEETING_ID.json
Items
List Items
GET /api/v1/meetings/MEETING_ID/items.json
Create an Item
POST /api/v1/meetings/MEETING_ID/items.json
{'content':'Take this seriously'}
Update an Item
PUT /api/v1/items/ITEM_ID.json
{'content':'Take this very seriously'}
Sort Items
PUT /api/v1/meetings/MEETING_ID/sort_items.json
{'items':['SHORTCODE_URL', 'SHORTCODE_URL']}
Delete an Item
DELETE /api/v1/items/ITEM_ID.json
Notes
List Notes
GET /api/v1/items/ITEM_ID/notes.json
Create a Note
POST /api/v1/items/ITEM_ID/notes.json
{'content':'notable'}
Update a Note
PUT /api/v1/notes/NOTE_ID.json
{'content':'not so notable'}
Sort Notes
PUT /api/v1/items/ITEM_ID/sort_notes.json
{'notes':['SHORTCODE_URL', 'SHORTCODE_URL']}
Delete a Note
DELETE /api/v1/notes/NOTE_ID.json
Parse a date-string
The DATESTRING should be URI-encoded
GET /chronic/DATESTRING
Users
Register a new user
POST /api/v1/users.json
{'email':'paul@rslw.com', 'password':'spiffy', 'timezone':'Dublin'}
View User Details
GET /api/v1/profile.json
Update User Account
PUT /api/v1/profile.json
{'timezone':'Paris'}