# Leeno API 概要 ## エンドポイント LeenoAPIは、取得できるリソースに応じた以下のエンドポイントを持ちます。 * 単一キャンバス http://leeno.jp/api/canvas * 複数キャンバス http://leeno.jp/api/canvases * 単一ヒストリ http://leeno.jp/api/history * 複数ヒストリ http://leeno.jp/api/histories ## APIで取得できるデータ * 文字コードはUTF-8です。 * すべてのリクエストに対してJSON形式で結果を返します。 * 結果のJSONはresult, status, messageのフィールドを持ちます。
fieldcontent
result結果データがJSON形式で入ります。リクエストにエラーがあった場合、空文字列になります。
status"ok"もしくは"error"いずれかの文字列を返します。
messageリクエストが正常に完了した場合、空文字列になります。エラーがあった場合はエラーメッセージが格納されます。
HTTPステータスコードは200(正常), 404(データがない), 500(サーバーエラー)のいずれかとなります。エラーの詳細については末尾の"例外処理"を参照して下さい。 # Leeno API 利用方法 ## 単一キャンバス エンドポイント: http://leeno.jp/api/canvas ### クエリで利用可能なパラメータ * canvas_id * canvas_idを指定しない場合、最新のCanvasが返ります。 ### result に格納されるフィールド * "canvas_id": Canvasのid * "title": Canvasのタイトル * "name": 投稿者 * "tags": Canvasに付けられたタグの配列 * "width": 画像の幅 * "height": 画像の高さ * "total_history": Canvasが持つHistoryの総数 * "total_favorite": Canvasに付けられたfavoriteの総数 * "create_date": Cavnasが作成された日時。例: "2012-03-15T02:16:01Z" * "update_date": Cavnasの最終更新日時。 例: "2012-03-15T02:16:16Z" ### 利用例 canvas_idを指定することで単一のCanvas情報を取得します。canvas_idとは、 http://leeno.jp/c/1ch-18 というURLの場合 `1ch` の部分を指します。 ~~~~sh $ curl "http://leeno.jp/api/canvas?canvas_id=m0" {"result":{"canvas_id":"m0", "title":"\u30bf\u30a4\u30c8\u30eb\u7121\u3057", "name":"\u540d\u7121\u3057\u3055\u3093", "tags":["Tag", "hogehoge"], "width":600, "height":400, "total_history":2, "total_favorite":0, "create_date":"2012-03-15T02:16:01Z", "update_date":"2012-03-15T02:16:16Z"}, "status":"ok", "message":""} ~~~~ canvas_idを指定しない場合、最新のCanvasが返ります。 ~~~~sh $ curl "http://leeno.jp/api/canvas" {"result":{"canvas_id":"m0", "title":"\u30bf\u30a4\u30c8\u30eb\u7121\u3057", "name":"\u540d\u7121\u3057\u3055\u3093", "tags":["hoge", "\u305f\u3050\u3093"], "width":600, "height":400, "total_history":2, "total_favorite":0, "create_date":"2012-03-15T11:16:01+09:00", "update_date":"2012-03-15T11:16:16+09:00"}, "status":"ok", "message":""} ~~~~~~ ## 複数キャンバス エンドポイント: http://leeno.jp/api/canvases ### クエリで利用可能なパラメータ 以下のクエリでCanvasを絞り込み、複数のCanvasを取得します。 * prof: ユーザのプロフィール画像Canvasを検索対象とするフラグ。trueにした場合プロフィール画像のみを検索する。 (true or false. default: false) * look_up_time: 作成日と更新日のどちらで検索するか。from, to, between, orderに影響する。 (created_at or updated_at. default: created_at) * from: 日時文字列。例: "2012-03-21", "2012-03-21T10:30:00" * to: 日時文字列。書式はfromと同じ。 * between: 現在からどれだけの期間をさかのぼって検索するかを指定する。1日以内、1週間以内、1ヶ月以内が選択できる。 (daily, weekly or monthly. default: 指定なし) * order: ソート順を指定する。新しい順、古い順、Redraw数順の3通りが選択できる。 (new, old or redraw. default: new) * limit: 取得する結果の数を制限する。(default: 30) * offset: 獲得する結果のオフセット値(最初のN件を飛ばす)を指定する。(default: 0) #### 注意点 * パラメータなしでリクエストを行った場合、最新30個のキャンバスが返ります。 * クエリにcanvas_idを指定したとき、単一キャンバスAPIへのリクエストと同じ結果を返します。 ### result に格納されるフィールド ひとつのCanvasが持つフィールドは、単一キャンバスAPIと同じです。ヒットした数だけ配列としてresultに格納されます。 ### 利用例 ~~~~sh $ curl "http://leeno.jp/api/canvases?between=monthly&order=redraw" {"result":[{"canvas_id":"m0", "title":"\u30bf\u30a4\u30c8\u30eb\u7121\u3057", "name":"\u540d\u7121\u3057\u3055\u3093", "tags":["hoge", "\u305f\u3050\u3093"], "width":600, "height":400, "total_history":2, "total_favorite":0, "create_date":"2012-03-15T02:16:01Z", "update_date":"2012-03-15T02:16:16Z"}, {"canvas_id":"lz", "title":"taitotuuuuuuuuuuuuuuuuuuuu", "name":"Hash", "tags":["Tag"], "width":600, "height":400, "total_history":1, "total_favorite":0, "create_date":"2012-03-03T08:12:45Z", "update_date":"2012-03-03T08:12:46Z"}], "status":"ok", "message":""} ~~~~ 上記の例では2つのCanvasがヒットしています。 ## 単一ヒストリ エンドポイント: http://leeno.jp/api/history LeenoではひとつのCanvasが複数のredraw履歴を持っており、それぞれのredraw履歴をHistoryと呼びます。別の言い方をすると、ひとつのHistoryは1枚の絵に対応し、HistoryはいずれかのCanvasに所属します。図示すると以下のようになります。 ![History構造](https://img.skitch.com/20120324-r4y92piwbmancbbqy2fcr6wxjb.jpg) したがって、単一のHistoryを取得するには、canvas_idとhistory_idの双方を指定することが必要です。history_idとは、 http://leeno.jp/c/1ch-18 というURLの場合 `18` の部分を指します。 ### クエリで利用可能なパラメータ * canvas_id(必須) * history_id(必須) #### 注意点 * パラメータにcanvas_idとhistory_idの両方が含まれていない場合、エラーとなります。 ### resultに格納されるフィールド * "history_id": 数値。 * "parent_id": Historyのredraw元。nullの場合は一番最初のHistory. * "canvas_id": Historyが所属するCanvasのid. * "image_large": オリジナルサイズの画像URL * "image_small": 小さいサイズの画像URL(125x125) * "image_thumb": サムネイルサイズの画像URL(60x60) * "create_date": Historyの作成日時。 例: "2012-03-15T02:16:01Z", * "update_date": Historyの最終更新日時。 例: "2012-03-15T02:16:01Z" ### 利用例 ~~~~~~~sh $ curl "http://leeno.jp/api/history?canvas_id=m0&history_id=1" {"result":{"history_id":1, "parent_id":null, "canvas_id":"m0", "image_large":"http://leeno.jp/c/m0-1/image.png", "image_small":"http://leeno.jp/c/m0-1/thumb.png", "image_thumb":"http://leeno.jp/c/m0-1/small_thumb.png", "create_date":"2012-03-15T11:16:01+09:00", "update_date":"2012-03-15T11:16:01+09:00"}, "status":"ok", "message":""} ~~~~~~~~ ## 複数ヒストリ エンドポイント: http://leeno.jp/api/histories あるCanvasに紐尽くHistoryを返します。 ### クエリで利用可能なパラメータ * canvas_id(必須) ### 利用例 ~~~~~~~sh $ curl "http://leeno.jp/api/histories?canvas_id=m0" {"result":[{"history_id":1, "parent_id":null, "canvas_id":"m0", "image_large":"http://leeno.jp/c/m0-1/image.png", "image_small":"http://leeno.jp/c/m0-1/thumb.png", "image_thumb":"http://leeno.jp/c/m0-1/small_thumb.png", "create_date":"2012-03-15T11:16:01+09:00", "update_date":"2012-03-15T11:16:01+09:00"}, {"history_id":2, "parent_id":1, "canvas_id":"m0", "image_large":"http://leeno.jp/c/m0-2/image.png", "image_small":"http://leeno.jp/c/m0-2/thumb.png", "image_thumb":"http://leeno.jp/c/m0-2/small_thumb.png", "create_date":"2012-03-15T11:16:16+09:00", "update_date":"2012-03-15T11:16:17+09:00"}], "status":"ok", "message":""} ~~~~~~~ ## 例外処理 ### パスが不正な場合 `HTTP Status Code = 404` {"result":"","status":"error","message":"The requested URL is Invalid"} * エンドポイントと引数を確認して下さい。 ### Canvas/Historyが存在しない場合 `HTTP Status Code = 404` {"result":"","status":"error","message":"Data Not Found"} * リクエストしたcanvas_id, history_idなどが存在することを確認して下さい。 ### サーバーエラーが発生した場合 `HTTP Status Code = 500` {"result":"","status":"error","message":"Internal Server Error"} * メンテナンス中の可能性があります。時間をおいて再度お試し下さい。 * エラーが続く場合、[問い合わせフォーム](http://leeno.jp/about/mail) からお問い合わせ下さい。