Web File API(β版)
注意事項
本機能は現在β版提供のため、今後仕様が変更される場合があります。
任意の外部APIと双方向のファイル連携が可能です。
データ連携のパターン
- 以下の連携が可能です
- 外部APIからDatahubにファイルを直接インポートする
- Datahubから外部APIにファイルを直接エクスポートする
Datahubジョブ設定
「接続先」
- ヘッダー
- リクエストヘッダーを指定します
key
,value
の組み合わせで複数設定できます- 例:
X-API-TOKEN
,xxxxxxxxxx
と設定した場合、リクエストヘッダーに{X-API-TOKEN: "xxxxxxxxxx"}
が設定されます
- 例:
インポート
- エンドポイント
http
orhttps
のプロトコルをサポートしています
- フォーマット
CSV
orJSON(改行区切り)
をサポートしています
- データフィールド
- クエリ文字列を設定します
key
,value
の組み合わせで複数設定できます- 例:
key1
,value1
と設定した場合、エンドポイントの末尾に?key1=value1
が追加されます
- 例:
エクスポート
- エンドポイント
http
orhttps
のプロトコルをサポートしています
- ファイル名
- 出力先のファイル名を指定します
- 指定しない場合、任意のファイル名が設定されます
- データフィールド
- リクエストボディを
key
,value
の組み合わせで設定します - 抽出するファイルの中身はストリーミング形式でリクエストボディに乗っているので、それ以外の項目を設定してください
- リクエストボディを
リクエストヘッダーについて
- リクエストヘッダーにはデフォルトでX-KarteSignatureが付与されます
- X-KarteSigunatureはシークレットキー、ランダムに生成された値(karte_nonce)、タイムスタンプを元に生成され、リクエストの送信元がKARTEであることを確認するために使うことができます。
- Karteからのリクエストは下記のヘッダーを含みます。
フィールド名 | 説明 | サンプル値 |
---|---|---|
X-KarteSigunature | 署名検証に使うための署名 | unTcht0qFrIv/9jg |
karte_nonce | ランダムに生成された値 | 2020-02-13T08:28:22:694Z |
timestamp | リクエストが送信された時間 | LqRM04LilUPZw9cSKANlU273picAcezrp1WpuLcmA= |
- リクエストの署名検証
- リクエストの署名を検証することで、リクエストの送信元がKarteであることを確認できます。
- 以下の手順で署名を検証することができます。
- Web File APIの「接続先の詳細」画面からシークレットキーを取得する
- リクエストヘッダーから
X-KarteSigunature
,karte_nonce
,timestamp
を取得する - シークレットキーと
karte_nonce
,timestamp
を使って、HMAC-SHA256アルゴリズムでダイジェスト値を取得する - ダイジェスト値と
X-KarteSigunature
の値が一致するか確認する - タイムスタンプと現在時刻にずれがないかを確認する
- リクエストの送信元がKARTEであることを確認するサンプルコードを記載します。
const crypto = require('crypto');
const SECRET_KEY = 'LqRM04LilUPZw9cSKANlU273picAcezrp1WpuLcmA='
app.post('/', function(req, res) {
const karteSignature = req.get('X-KarteSignature');
const timestamp = req.get('Time-Stamp');
const karte_nonce = req.get('karte_nonce');
const calculatedHMAC = crypto
.createHmac('sha256', SECRET_KEY)
.update(karte_nonce)
.update(timestamp)
.digest('base64');
if (karteSignature !== calculatedHMAC) {
throw new Error('Invalid hamc signature');
} // HMAC署名の確認
const timestampFromKarte = Date.parse(timestamp);
if (new Date() - timestampFromKarte > 60 * 5 * 1000) {
throw new Error('The request timestamp is more than five minutes from local time');
} // Timestampの確認
// do something
});
※2020/02/21 以前に作成された外部API接続の設定では、HMAC認証を利用できません。HMAC認証を利用する場合は新しく外部API接続の設定を作成してください。
Updated 9 months ago