本ドキュメントははてなグラフにおける、APIの実装を解説するものです。主にはてなスタッフがその作成と更新を行っています。
任意のグラフに、
を行うことができます。
このAPIでは、ユーザー認証にWSSE認証を使用しています。WSSE認証の詳細に関しては、はてなフォトライフAtomAPIのWSSEの項 (http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%d5%a5%a9%a5%c8%a5%e9%a5%a4%a5%d5AtomAPI?kid=88110#wsse) を参照してください。
エンドポイントURIに対し、application/x-www-form-urlencodedのデータを GET/POST してください。GET でデータの取得、 POST でデータの登録になります。
エンドポイントは次のURIです。
使用可能なキーは以下の通りです。
- graphname
- グラフの名前(UTF-8)
- date
- YYYY-MM-DD形式の日付(省略可:省略時は今日の日付)
- value
- グラフの値
指定されたグラフ名に該当するグラフが存在しない場合はグラフ作成を行った後データ追加、存在する場合は該当日付のデータ上書きを行います。
また、dateが省略された場合は、登録時の日付が自動で設定されます。
リクエストの成否は、レスポンスコードを参照してください。正しく作成された場合は201が返ります。
- graphname
- グラフの名前(UTF-8)
- username
- ユーザの名 (オプション、デフォルトではWSSE認証のユーザ名)
- type
- データ形式。yaml もしくは json
リクエストの成否は、レスポンスコードを参照してください。正しく取得された場合は200が返ります。
username を本人以外を指定した場合、そのグラフが公開・もしくは非公開だが本人が許可ユーザ・グループに含まれるかつ、データ表示が表示の場合、データを取得することができます。
エンドポイントは次のURIです。
使用可能なキーは以下の通りです。
- graphname
- グラフの名前(UTF-8)
- graphcolor
- グラフの色 ( FF0000 形式)
- graphtype
- グラフの種類 ( lines or bars )
- status
- 公開・非公開の状態 (public or private)
- allowuser
- 閲覧許可ユーザ
- allowgrouplist
- 閲覧許可グループ
- stack
- 累積値で表示 ( 1 or 0 )
- reverse
- 上下逆で表示 ( 1 or 0 )
- formula
- 数式
- maxy
- 最大値
- miny
- 最小値
- showdata
- データの表示 ( 1 or 0 )
- nolabel
- グラフ軸の値を表示しない ( 1 or 0)
- userline
- 目標値
- userlinecolor
- 目標値の色 ( FF0000 形式 )
- comment
- グラフの説明 (255バイト以内)
リクエストの成否は、レスポンスコードを参照してください。正しく作成/登録された場合は201が返ります。
- graphname
- グラフの名前(UTF-8)
- type
- データ形式。yaml もしくは json
リクエストの成否は、レスポンスコードを参照してください。正しく取得された場合は200が返ります。
認証にはLWP::Authen::Wsseを使用しています。
#!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; use DateTime; my $ua = LWP::UserAgent->new; $ua->credentials('graph.hatena.ne.jp:80', '', 'username', 'password'); my $res = $ua->post( 'http://graph.hatena.ne.jp/api/post', { graphname => 'graphname', date => DateTime->now->ymd, value => rand(10) }); warn $res->content unless $res->code == 201; exit;
gem から Hatena::API::Graph パッケージをインストールします。
# gem install hatenaapigraph
require 'rubygems' require 'hatena/api/graph' graph = Hatena::API::Graph.new('username', 'password') graph.post_data('graphname', :value => rand(10)) graph.post_data('graphname', :date => Date.today, :value => rand(10)) data = graph.get_data('graphname', 'username' => 'example') config = graph.get_config('graphname') config['usercolor'] = 'FF00FF' graph.post_config('graphname', config)
tar からインストールしたい場合は
http://rubyforge.org/projects/hatenaapigraph/
からどうぞ。
※ruby は 1.8.4 以降のバージョンを利用する必要があります。