APIの仕組み
APIエンドポイント
全てのAPIリクエストは、以下のAPIエンドポイントに送信してください:
https://api.cryptohopper.com/v1/
サポートされているリクエストメソッド
GET GETでリソースあるいは複数のリソース(例えば、全てのトレードボット一覧、現在の注文、最近の取引履歴など)を取得できます。このメソッドは安全で冪等です。
POST POSTでリソースを作成しちょ。例えば、新規の買い/売り注文を登録したり、新しいトレードボットを生成したりね。
PATCH PATCH を使ってリソースを更新するよ。 例えば、取引ボットの起動・停止、または個人情報の更新だね。この方法なら、リクエストボディに修正したいフィールドだけ指定すればOKだよ。
DELETE リソースを削除したい場合は、削除ボタンを使用してください。
リクエストパラメータ
APIでは、パス、クエリ文字列、ヘッダー、リクエストボディの4種類の パラメーターを使ってるよ。リクエストボディ パラメーターは、POSTとPATCHリクエストのJSONリクエストボディに投稿されたデータさ。ヘッダー パラメーターは、ヘッダーに投稿する必要があるパラメーターだね。ヘッダー、パス、クエリ文字列パラメーターの詳細については、下に書いてあるから見てちょうだい。
ヘッダーパラメータ
APIへのリクエストはすべて、ヘッダーに以下の値をPOSTで認証する必要があるゾ。
- access-token - OAuth2認証にて、アクセストークンを受け取りました。
パスパラメータ
これらのパラメータは、エンドポイントの URI に指定されたものです。例えば、GET Hopper エンドポイントの場合:
https://api.cryptohopper.com/v1/hopper/{hopper_id}
トラディングボットをその固有IDで取得するには、{hopper_id} プレースホルダーのID値を置き換える必要があります。 例えば、IDが37のトラディングボットを取得するには、以下のURLをリクエストする必要があります。
https://api.cryptohopper.com/v1/hopper/37
一部のエンドポイントは複数のパラメータが必要です。 例えば、前回のホッパーから特定の注文を取得したい場合は、以下のURLを呼び出す必要があります。
https://api.cryptohopper.com/v1/hopper/{hopperId}/order/{orderId}
そして、ホッパーとオーダーIDをパラメーターに置き換えることで、以下のようになります。
https://api.cryptohopper.com/v1/hopper/37/order/231
APIエンドポイントに必要とされるパラメータの詳細なリストについては、APIリファレンスガイドを参照してください。
クエリ文字列パラメータ
データの絞り込みやページネーションのために、GETリクエストでこの種の引数を用いています。これらの引数はパスには指定されていませんが、URL文字列内で「&」記号で区切られた一連の値として指定されています。
例えば、取引ボットのビットコイン買い注文を取得するには、Hopper Orderエンドポイントをこう呼び出すことができる:
https://api.cryptohopper.com/v1/hopper/37/order/?order_type=buy&coin=btc
APIリファレンスを見れば分かるんだけど、この場合、order_typeパラメータは「buy」か「sell」のいずれか、そしてcoinパラメータは、小文字の仮想通貨コインコードなら何でもOKだってんだ。
応答形式
全てのレスポンスはJSONオブジェクト形式です。従って、我々のレスポンスで見られるMIMEタイプはapplication/jsonです。各リクエストとレスポンス本文の具体的なJSONレスポンス形式については、APIリファレンスドキュメントを参照してください。
HTTPレスポンスコード
我々 は、RFC 2616 と RFC 6585 規格で定義されたレスポンス ステータス コードを利用しているぞ。.
200 - OK リクエスト成功。クライアントは、レスポンスの本文とヘッダーにリクエスト結果を受け取ります。
201 – Created リクエストが受理され、新しいリソースが作成されました。
202 – Accepted リクエストは処理を受け付けられましたが、処理は完了していません。
204 – No Content サーバーはリクエストを正常に処理しましたが、コンテンツは返されません。
304 – Not Modified リソースは、リクエストヘッダーのIf-Modified-SinceまたはIf-None-Matchで指定されたバージョン以降変更されていません。クライアントが以前ダウンロードしたコピーを持っているため、リソースを再送信する必要はありません。
HTTPエラーコード
400 – Bad Request サーバーが、クライアント側のエラーのため、リクエストを処理できません。エラー情報はメッセージ本文に返却されます。
401 – Unauthorized このリクエストは、ユーザー認証が必要であり、無効または欠落しているAPI認証情報のため拒否されました。
403 – Forbidden サーバーはリクエストを理解しましたが、アクセス許可がないため、またはあなたのアクセス権限が取り消されたため、処理を拒否しています。
404 – Not found 該当するリソースは見つかりませんでした。このエラーは、一時的または永続的な状況が原因である可能性があります。
405 – Method Not Allowed 使用されたリクエストメソッドは、要求されたAPIエンドポイントでサポートされていません。
429 – Too Many Request リクエストが多すぎます。新しいリクエストまで何秒待つ必要があるかはエラーメッセージに示されます。現在の制限はレート制限のセクションをご覧ください。
500 – Internal Server Error サーバーでエラーが発生し、君の依頼に応えられなかったみたいだ。開発チームは、初めの警告として、一週間コーヒーを我慢せざるを得ないね…。
503 – Service Unavailable サーバーに問題があり、貴殿の要求に応えられない可能性があります。
エラーメッセージ
APIがエラーコードを返した場合、エラーの説明を含むJSONオブジェクトをボディに添付します。エラーメッセージはこんな風になります。
{
"status": 400,
"error": 1,
"message": "Missing required request parameters: [access_token]"
}
レート制限
API では、1 つのアクセストークンでアプリが送信できるリクエスト数が制限されています:1 分あたり 30 リクエスト、かつ 1 秒あたり最大 1 リクエスト。注文の発注やポジションの売却は 8 秒ごとに 1 リクエスト、ホッパーのバックテストは 2 秒ごとに 1 リクエストまでです。
制限を超えると 429 エラーが返され、次のリクエストまで何秒待つ必要があるかがメッセージに示されます。