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'}