【Trello】Rest APIの備忘録
TrelloにはRest API(HTTPアクセスでリストやカードを操作する機能)が用意されている
CLIツールを作る上でTrelloの仕様を纏めて備忘録として載せていく
APIキーとトークンの発行
API Introductionの「Your First API Call」セクションでは
実際にcurl
コマンドを使ったHTTPリクエストの例を紹介してくれている
curl 'https://api.trello.com/1/members/me/boards?key={yourKey}&token={yourToken}'
Rest APIを実行するにはAPIキーとトークンの2つが必要である事がわかる。
そしてその取得方法も記載されている
To get started, you’ll need an API key. You can get your API key by logging into Trello and visiting https://trello.com/app-key. Be sure to read and agree to Trello Developer Terms of Service. Your API key will be clearly labeled at the top of that page.
https://trello.com/app-keyページを訪問すると、
日本語のページが出現する(私の言語設定が日本語だったからだろうか?)
このページ内で発行出来るのはAPIキーのみ。
トークンを得る手段は別途認証機能を行うか、
手っ取り早く上記のAPIキーのページ内にある「手動でトークンを生成できます。」のリンクをクリックして払い出すかの二択のようだ。
今回私が作りたいのは自分のTrelloカードを確認する為のCLIツールなので
リンクをクリックしてトークンを払い出す事にした。
全体的な流れ
Rest APIでは基本的に下記のような階層構造になっている
- Member: ユーザー自分自身、もし企業始動なら紐付いている複数ユーザーを操れる
(他にもActionsやEnterprises、Emojiとか色々あるけど、Trello特化でもない限り不要なので割愛)
これを元にリファレンスを見ればRestful APIのCRUDなので一通り触れる。
知っておくとTrelloのRest APIを扱いやすくなる機能が2つある
- 上の階層から子の一覧を取得出来るパラメータが存在する
- MembersのIDで
me
を指定すると自分自身が取得できる
API Introductionの「Your First API Call」に再度戻って
これでボードの一覧を取得してくださいという紹介がされている。
curl 'https://api.trello.com/1/members/me/boards?key={yourKey}&token={yourToken}'
「ボードの一覧が取得出来て良かったね」で流すには勿体ない。
私が注目したポイントは下記の2点
- 自分自身のMember.idは
me
で代用出来るので知る必要がない - 紐付いている親子のIDを元に実データまで引っ張ってこれる
後者に関してみていこう。
Reference/Members/Get Boards that Member belongs to
公式リファレンスによると、Memberに紐づくBoard一覧のエンドポイントには、
下記のパラメータをクエリストリングに含める事が可能となっている。
- filter
- fields
- lists: Boardに紐づくListの一覧
- organization
- organization_fields
なんと1度のリクエストでMemberの2階層下にいるListの情報まで取得できてしまう。
取得したJSONの中身を見る限り普通の生データだ。
CLIツールを作る側としてはHTTPリクエストを何度も発射しまくることになるので、
階層の上下から引っ掛けられるということを意識しておくとリクエストの回数を劇的に減らせる可能性がある。
それを念頭に置きつつ設計を行いたい。
閲覧はこれだけ叩いてればOKじゃね?
最初に叩くcurl 'https://api.trello.com/1/members/me/boards?key={yourKey}&token={yourToken}'
も異常に便利だったが、
後はこの辺が叩ければ閲覧用途だとやることがもうなくなってしまう。
-
Get a Member
自分にアサインされたCardの一覧を全て取得できる -
Get a Board
紐付いているListとCardの一覧を全て取得できる
今回私が作ろうとしているCLIツールは
自分一人しか閲覧しないBoardを作ってアサインせずにカードを作って管理しようと思っているので、下の「Get a Board」との併用で考えている。
先のコマンドでBoardのIDを取得しておいて……
curl 'https://api.trello.com/1/boards/{boardId}?cards=open&lists=open&key={yourKey}&token={yourToken}'
cardsやlistsパラメータがopen
なのはそれぞれ「here」リンクから辿る事で取りうる値を確認出来る。
開かれているものということでopen
があることを確認したので指定すればOK
というわけで出来上がったツールがこちら
自分で使うものを手っ取り早く用意したいのでLiveScriptを採用した。
CoffeeScriptライクなAltJSをNode.jsで動かしているだけなので
その気になれば読めると思う。
CRUDの扱いは/modules/cards.lsのあたりを確認してもらえればって感じ。
Discussion