freee 会計APIを少し触ってみたメモ

freee Developers Communityにドキュメントなどまとまっているのでここから。
スタートガイドを見るにDeveloper会員登録が必要らしいのでまずはこれを。

Developer会員登録した後はfreeeにログインしてアプリを新規作成。
スタートガイド アクセストークンの取得リファレンスを参考にfreee本体の方でアプリを作成する。

これでOAuthのclient_idとclient_secretが発行されるのでAuthorization Code Grantのフローでfreeeユーザーの認可を得てfreee内のデータにAPIでアクセスできるようになる。

アプリは個別案件用にしてもいいし、どのfreeeユーザーでも使えるように汎用的に作ることもできる。
基本的にAPIアクセスではfreeeユーザーは自分の事業所の情報にしかアクセスできないが、アプリ内で持っているDBに入ったデータなどは当然のごとくアプリの裁量になるため、設計がまずいと関係の無いユーザーにも見られてしまう危険はある。
個別案件用に使う場合でもアプリのURLを知られてしまうと全く関係の無いユーザーが入ってくる可能性はあるので、company_idが所定のものじゃなかったらアクセスを弾くといった対応は必要か。

各種サンプルコードなどはスタートガイド アクセストークンの取得のページに書いてある。

Authorization Codeの有効期間は10分で、アクセストークンは24時間。

なおDeveloper会員のアカウントとアプリ登録に必要なfreeeアカウントは別のもの。
freeeアカウントの方は無償の開発者アカウントを準備中らしいが、今はまだ使えないので、通常の無料アカウントを作成してやってくださいとのことだ。

アプリ作成時のコールバックURL

ローカルで軽く触ってみる程度の場合には「urn:ietf:wg:oauth:2.0:oob」を指定。
作成後に表示されたWebアプリ認証用URLにアクセスするとAuthorization Codeが表示されるので、10分以内にそれを使ってアクセストークンを取得してあとは色々と試す。

開発用にVagrantやDockerなどでウェブアプリ開発の環境を作っている場合は「http://localhost:8080/auth」のようなローカル開発環境のURLを入れると良い。

そして本番用のアプリには本番用のコールバックURLを指定する。

APIに関するメモ

company_idの取得

https://api.freee.co.jp/api/1/companies

APIリクエストの際には基本的にcompany_idが必要になるのでこれをまずはゲットする。
freeeの事業所ごとに割り振られているもの。

walletable_idの取得

https://api.freee.co.jp/api/1/walletables?company_id=xxxxxx

freeeと同期している銀行口座の情報が欲しかったのでこれで対象の口座を取得する。

明細の取得

https://api.freee.co.jp/api/1/wallet_txns?company_id=xxxxxx&walletable_id=yyyyyy

振込人の名義が知りたかったので、walletable_idで口座を指定して明細を取得。
取引(deal)の方には載ってないので、明細の方を使う。