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 2616RFC 6585 規格で定義されたレスポンス ステータス コードを利用しているぞ。.

200 - OK リクエスト成功。クライアントは、レスポンスの本文とヘッダーにリクエスト結果を受け取ります。

201 – Created リクエストが受理され、新しいリソースが作成されました。

202 – Accepted リクエストは処理を受け付けられましたが、処理は完了していません。

204 – No Content サーバーはリクエストを正常に処理しましたが、コンテンツは返されません。

304 – Not Modified リソースは、リクエストヘッダーのIf-Modified-SinceまたはIf-None-Matchで指定されたバージョン以降変更されていません。クライアントが以前ダウンロードしたコピーを持っているため、リソースを再送信する必要はありません。

HTTPエラーコード

400 – Bad Request サーバーは、クライアント側のエラーが原因で、リクエストを処理できません。エラー情報はメッセージ本文に返されます。

400 – Bad Request サーバーが、クライアント側のエラーのため、リクエストを処理できません。エラー情報はメッセージ本文に返却されます。

401 – Unauthorized このリクエストは、ユーザー認証が必要であり、無効または欠落しているAPI認証情報のため拒否されました。

403 – Forbidden サーバーはリクエストを理解しましたが、アクセス許可がないため、またはあなたのアクセス権限が取り消されたため、処理を拒否しています。

404 – Not found 該当するリソースは見つかりませんでした。このエラーは、一時的または永続的な状況が原因である可能性があります。

405 – Method Not Allowed 使用されたリクエストメソッドは、要求されたAPIエンドポイントでサポートされていません。

405 – Method Not Allowed 使用されたリクエストメソッドは、要求されたAPIエンドポイントでサポートされていません。

429 – Too Many Request APIリクエストのレート制限を超えています。Retry-Afterヘッダーを確認して、次回のリクエストまで待つ秒数を調べてください。レート制限の項目を参照して、現在のリクエスト制限を確認してください。

500 – Internal Server Error サーバーでエラーが発生し、君の依頼に応えられなかったみたいだ。開発チームは、初めの警告として、一週間コーヒーを我慢せざるを得ないね…。

503 – Service Unavailable サーバーに問題があり、貴殿の要求に応えられない可能性があります。

エラーメッセージ

APIがエラーコードを返した場合、エラーの説明を含むJSONオブジェクトをボディに添付します。エラーメッセージはこんな風になります。

{
            "status": 400,
            "error": 1,
            "message": "Missing required request parameters: [access_token]"
        }
        

レート制限

当社のAPIは、すべてのユーザーに帯域幅リソースを均等に割り当てるため、リクエストレート制限を設けています。現在のレート制限は、1秒あたりユーザー2リクエストです。ただし、買い注文の場合は、8秒ごとに1件の注文までとなります。

1秒あたりのリクエスト制限を超えると、429エラーレスポンスコードが返されます。レスポンスに添付されたRetry-Afterヘッダーを確認し、次のリクエストを実行できるまでの待機時間を確認してください。