仕様
- 本システムの利用にあたり、ユーザーIDに相当するapi_keyとパスワードに相当する秘密鍵が必要です。これらは管理者より発行されます。
- このapi_keyと秘密鍵は、後述のクエリを組み立てるために必要です。
クエリの作成
- リクエストしたいクエリのパラメーターの名前と値の組を用意します。ここではたとえば{subtype[]:Human, Soldier}、{name:of}とします。
- パラメーターapi_keyに、あなたに発行されたapi_keyを値として与えます。ここではtestuserとします。
- パラメーターtimestampに現在のunix時刻1747018890を値として与えます。
- 名前と値をRFC 1738(空白スペースは%20ではなく+でエンコードされます)に従ってURLエンコードした後に=で結びます。
- この文字列をソートします。この文字列は例えば"subtype%5B0%5D=Human"です。(パラメーターの名前や値だけでソートするのではありません)
- それぞれを改行コード(\n)で連結します。結果として、以下のようになっているはずです。
api_key=testuser
name=of
subtype%5B0%5D=Human
subtype%5B1%5D=Soldier
timestamp=1747018890
この文字列のハッシュ値を、秘密鍵を用いてHMAC方式・SHA256アルゴリズムで求めます。ここでは秘密鍵を0123456789とします。
結果、ハッシュ値は971b25047f40b99ba073416dce047f1344219c472d5930e19ca32ab3714bc09cとなるはずです。
このハッシュ値をapi_sigとして、発行したいクエリの末尾に付与します。
以上により、最終的にリクエストしたいクエリは以下の通りとなります。
api_key=testuser&name=of&subtype%5B0%5D=Human&subtype%5B1%5D=Soldier×tamp=1747018890&api_sig=971b25047f40b99ba073416dce047f1344219c472d5930e19ca32ab3714bc09c
これをGETメソッドを用いてリクエストします。→結果
以上の処理を、PHPを用いて記述したサンプルです。
$_URL = 'http://wonder.wisdom-guild.net/api/card-price/v1/';
$_API_KEY = 'testuser'; $_SKEY = '0123456789';
$query = array(
'api_key' => $_API_KEY,
'name' => 'of',
'subtype' => array('Human', 'Soldier'),
'timestamp' => time()
);
$query['api_sig'] = get_signature($query, $_SKEY);
$query_string = http_build_query($query);
echo $_URL.'?'.$query_string;
function get_signature($query_array, $skey) {
$query_string = http_build_query($query_array);
$data = mb_split('&', $query_string);
sort($data);
$sig = hash_hmac('sha256', implode("\n", $data), $skey);
return $sig;
}
パラメータ一覧
パラメータ名 |
|
デフォルト値 |
説明 |
api_key |
必須 |
|
管理者より発行されたAPI利用に必要なユーザーIDです。 |
card |
|
|
カード名(完全一致)です。分割カードは例えばFire+Ice、反転カード/変身カードは反転前/変身前のカード名を指定する必要があります。
もっとも高速に処理されるので、特定のカードのデータを参照する場合に推奨されます。なお、他の検索パラメーターは無視されます。
|
name |
|
|
カード名(部分一致)です。 |
set[] |
|
|
カードセット(OR検索)です。3文字略号(8EDなど)を複数指定可能です。 |
subtype[] |
|
|
サブタイプ(OR検索)です。複数指定可能です。 |
sort |
|
name_en |
ソートキーです。name_en(カード名)、set(カードセットが新しい順)が指定可能です。 |
order |
|
asc |
ソート順序です。asc(昇順)、desc(降順)が指定可能です。 |
page |
|
1 |
表示するページ数です。 |
lim |
|
50 |
1ページあたりの表示件数です。50/100/200が指定可能です。 |
timestamp |
必須 |
|
現在時刻(UNIX時間)です。本APIサーバー側の時刻と大きく食い違っているとエラーとなります。 |
api_sig |
必須 |
|
このパラメータを除く他のすべてのパラメーターから求められるハッシュ値です。 |