メインコンテンツまでスキップ

紹介

LINE Blockchain Developers APIはREST APIであり、HTTPSで通信します。プラットフォームに関係なくHTTPSをサポートすると、どこでもAPIを呼び出すことができます。

APIを呼び出す際には、有効なAPI keyAPI secretが必要です。これは、LINE Blockchain Developersコンソールで発行できます。API keyとAPI secretをAPI呼び出しに使用する方法は、リクエストヘッダーを参照してください。

Endpoint

LINE Blockchain Developers APIのendpoint形式は、以下のとおりです。

https://{host}/{api-path}?{query-string}  
  • hostは、APIサーバーのホストです。以下から選択できます。
    • Testnet:test-api.blockchain.line.me
    • Mainnet:api.blockchain.line.me
  • api-pathは、呼び出すAPIのパスです。各endpointの詳細説明から確認できます。APIバージョンもapi-pathの中に含まれます。
  • query-stringは、クエリパラメータのセットです。各パラメータは、「&」で区切るkey=valueのペアです。  

リクエスト

LINE Blockchain Developers APIのリクエストは、以下のプロトコルに従います。

  • すべてのAPIリクエストは、HTTPSで送信します。
  • パラメータは、パス、クエリまたはJSON形式のリクエストボディで送信できます。

    LINE Blockchain Developer v2.8.0からは、クエリパラメータをURIエンコードする必要はありません。

  • サーバー時刻の取得を除いたすべてのAPIリクエストは、必ず署名が必要です。正しく署名されていないAPIリクエストは処理しません。詳細は、認証を参照してください。
  • レート制限を超えるリクエストを送ると、エラーを返します。
    • すべてのサービスプランは基本的にMainnetで50 TPS、Testnetで20TPSのレート制限を提供します。
    • レート制限が適用されるAPIを確認するには、APIリファレンスの概要または個別のendpointの詳細を参照してください。
    • レート制限値は、今後変更されることがあります。

リクエストヘッダー

リクエストボディをパラメータとして使用するAPIは、HTTPヘッダーのContent-Typeを"application/json"に設定する必要があります。

認証が必要なAPIは、リクエストヘッダーでservice-api-keysignaturetimestampnonceを送信する必要があります。各項目に入る値と有効性を確認する方法は、認証を参照してください。

プロキシサーバーを使用する際にHostヘッダーを入力する

Hostは、基本的にすべてのHTTP/1.1リクエストに含まれるべき必須ヘッダーで、リクエストするサーバーの基本URLと同様に入力します。ほとんどHTTPクライアントにより自動入力されますが、独自のプロキシサーバーを使用する場合は異なる可能性がありますので、必ずリクエストするサーバーの基本URLを入力してください。

  • Testnet:test-api.blockchain.line.me
  • Mainnet:api.blockchain.line.me

HTTPリクエストヘッダーHostの詳細は、W3C RFC2616で確認できます。

以下に、リクエストHTTPヘッダーの例を示します。

Host: api.blockchain.line.me
Content-Type: application/json
service-api-key: <your api key>
signature: <the user generated message signature>
timestamp: <a timestamp for your request>
nonce: <a nonce value>

リクエストボディ

特定のendpointは、リクエストボディでパラメータを渡すことができます。リクエストボディは、JSONオブジェクトの形で、キーの名前はcamel caseで表記します。

以下に、リクエストボディの例を示します。

{
"ownerAddress": "link000000000000000000000000000000000000000",
"ownerSecret": "uuOtZ+RIgn009pDlnx+fmqlH9nzYJMvoUPE9Kz37m4w=",
"toAddress": "link000000000000000000000000000000000000000",
"value": "1234567890"
}

レスポンス

LINE Blockchain Developers APIは、HTTPステータスコード, レスポンスヘッダー、レスポンスボディでリクエストの結果を返します。

レスポンスヘッダー

レスポンスヘッダーには、レート制限の情報が含まれます。レート制限が適用されているAPI endpointを呼び出すときに取得できます。

AttributeTypeDescriptionRequired
X-RateLimit-Replenish-RateInteger1秒あたりの可能なリクエスト数。 レート制限.Optional
X-RateLimit-RemainingInteger今後1秒間送信できる残りのリクエスト数Optional

レスポンスボディ

レスポンスボディは、リクエスト結果の詳細を含むJSONオブジェクトで、以下のような属性が含まれています。

AttributeTypeDescriptionRequired
responseTimeTimestampAPIサーバーの応答時刻。ミリ秒単位のUTC Unix Epochです。Required
statusCodeIntegerレスポンス結果。API status codeを参照してください。Required
statusMessageStringstatusCodeに対応する詳細応答メッセージRequired
responseDataObjectリクエストの実際の結果データOptional

成功レスポンス

APIリクエストが成功すると、サーバーはHTTPステータスコードで"200 OK"または"202 Accepted"を返します。 成功したAPIリクエストのレスポンスボディは、statusCodeを"1000"または"1002"に設定し、実際の結果データはresponseDataとして含まれます。

以下に、成功したAPIリクエストの例を示します。

{
"responseTime": 1581866404449,
"statusCode": 1000,
"statusMessage": "Success",
"responseData": {
...
}
}

トランザクションが発生するAPIリクエストは、リクエストに問題がない場合、"202 Accepted"を返します。これは、リクエストが受け入れられたという意味で、トランザクションが確定(confirmed)されたという意味ではありません。リクエストに対する実際の処理結果は、トランザクションが確定されてから受け取ることができます。詳しくは、Callback応答を参照してください。

失敗レスポンス

APIリクエストにエラーがある場合、サーバーはこれを失敗とみなしてエラーの原因に対応するstatus codeを返します。 失敗したAPIリクエストのレスポンスボディはエラー情報を返し、その際にresponseDataは表示されません。

以下に、失敗したAPIリクエストのレスポンスボディの例を示します。

{
"responseTime": 1575357343316137,
 "statusCode": 4010,
"statusMessage": "Service-api-key required"
}

ステータスコード

LINE Blockchain Developers APIは、HTTP ステータスコードごとにAPI ステータスコード(statusCode)とメッセージ(statusMessage)を提供します。以下の表を参照してください。

HTTP status codestatusCodestatusMessageDescription
2001000Successリクエストが正常に反応しました
2021002Acceptedトランザクションのリクエストが正常に受信されました。

トランザクションのリクエストなので最終的な実行結果は、トランザクションハッシュを確認する必要があります。

2021020Transaction not confirmed入力したtxHashに当たるトランザクションがまだ確定(confirm)されていません
4004000Bad request / Bad request: ${cause}
クライアントからのリクエストに正しくないデータがある。応答とともに詳しい原因(${cause})を返すこともあります。
4004002Address and UserId both in requestリクエストボディにtoAddresstoUserIdがすべて入力されました
4004010Service-api-key requiredHTTPヘッダーにservice-api-keyがありません
4004011Signature requiredHTTPヘッダーにsignatureがありません
4004016Invalid wallet address: ${walletAddress}ウォレットアドレスが正しくありません
4004017Invalid wallet secretウォレットsecretが正しくありません。
4004018Owner wallet only available入力したownerAddressがowner walletのaddressではありません
4004021Timestamp requiredHTTPヘッダーにtimestampがありません
4004022Invalid timestamp formatHTTPヘッダーのtimestampの形式が正しくありません
4004023Request timestamp too lateHTTPヘッダーのtimestampの値がサーバー時間より5分以上遅い (serverTime > リクエストのtimestamp + 5分`)
4004024Request timestamp too fastHTTPヘッダーのtimestampの値がサーバー時間より5分以上早い (serverTime + 5分 < リクエストのtimestamp)
4004031Nonce requiredHTTPヘッダーにnonceがありません
4004032Duplicated nonce11分以内に使用されたnonce値を再利用しましましました
4004033Invalid nonce formatHTTPヘッダーに入力したnonce値の形式が無効です
4004060Transaction not acceptableリクエストしたトランザクションの形式が無効です
4004100Please find responseData for detailsFINSCHIA Voucher APIリクエストの処理中にエラーが発生しました。エラーの原因は、responseDataで確認できます。(FINSCHIA Voucher APIは、FINSCHIA Reward programに参加したサービスにのみ提供されるクローズドAPIです。)
4004295Too many contract creation request over limitサービスに許可されている最大のアイテムトークンコントラクトの数を超えました。
4014012Invalid service-api-keyHTTPヘッダーに入力したservice-api-keyと一致するAPI keyがありません
4014013Invalid signatureHTTPヘッダーに入力したsignatureが無効です
4014014Service experiencing an issue. ${cause}サービスが正常に利用できる状態ではありません。状況に応じて詳しい原因(${cause})を返すこともあります。${cause}の例は以下のとおりです。
  • Service_Suspended
  • Service_Overdue
  • Service_Sanction
  • Service_Terminated
  • Service_Overuse
4014015Service wallet not owned by the given service-api-key当該service-api-keyに対応されるサービスでは、入力したサービスウォレットを使用できません
4034034Item token proxy already set upユーザーが当該アイテムトークンに対してすでにプロキシを設定しました
4034035Requesting user blocked from DOSI WalletリクエストしたユーザーはDOSI Walletがアカウントブロックされており、トランザクションを発生できません
4034036Authorization not completedユーザーにリクエストしたDOSI Walletの認証が完了できません
4034037Target user blocked from DOSI Wallet: ${userId}受信ユーザー(${userId})のDOSI Walletのアカウントがロック状態で受信できません
4034039DOSI Wallet user account locked: ${userId}入力したユーザー(${userId})のDOSI Walletのアカウントがロック状態
4034082Not registered test user: ${userId}[Testnet only] テストユーザーとして登録されていないユーザーには転送できません
4034083Not registered test user wallet or service wallet: ${walletAddress}[Testnet only] テストユーザーとして登録されているユーザーウォレットでもなく、サービスウォレットでもないウォレットアドレスには転送できません
4044001Service not found当該サービスIDを持つサービスがありません
4044038User is not an DOSI Wallet member: ${userId}ユーザー(${userId})がDOSI Walletに登録していません
4044040Transaction not found入力したtxHashに該当されるトランザクションが存在しません
4044041Service wallet not found: ${walletAddress}入力したアドレス${walletAddress}を持つサービスウォレットが存在しません
4044042Non-fungible token not owned入力したcontractId, tokenType, tokenIndexを持つNFTを所有していません
4044044Item token contract not found入力したcontractIdがありません
4044045Item token type not found入力したtokenTypeが当該contractにありません
4044046Item token index not found入力したtokenIndexが当該contractのtokenTypeにありません
4044048Request session token not found入力したrequest session tokenが存在しないか満了しました
4044049Non fungible item token burned当該NFTが焼却されました
4044051User not found: ${userId}当該${user ID}と一致するユーザーがいません(サービスから退会したユーザーにもこのメッセージを返します)
4044061Multi message out of boundマルチメッセージのサイズが最大値を超えています
4134131Payload too largeリクエストボディがサーバーで処理できる限度を超えています
4154151Unsupported media typeHTTPヘッダーContent-typeが"application/json"ではないか、リクエストボディがJSON形式ではありません
4294291Too many requests from a single wallet一つのウォレットでトランザクションのリクエストが多すぎて処理できません
4294292No waiting area availableリクエストしたトランザクション(メッセージ)が処理キューに入ることができません。アイドル状態のノードを待つ必要があります。再試行してください
4294293Rate limit exceededサービスに許可されたレート制限を超えています
4294294Too many request over limitサービスに許可されたレート制限を超えています
5005000Internal server error
  • Testnet:内部サーバーのエラー。トランザクションがブロードキャストされませんでした。
  • Mainnet:内部サーバーのエラー

    Mainnetではトランザクションがブロードキャストされなかったことを保証しません。

5005001Internal server error (possible broadcast of transaction)内部サーバーのエラー。トランザクションがブロードキャストされた可能性があります。
5010Not implementedサポートしないAPIへのアクセス
5035030Service temporarily unavailable内部の問題により、一時的にサービスをご利用いただけません。ご不便をおかけしますが、復旧までしばらくお待ちください。