認証

API ユーザーがキーの組み合わせ (パブリックキー とプライベートキー) を取得するには、Gengo に予めアカウント登録していることが必要です。 api_key はユーザーの識別に使用され、private_key はAPIを呼び出す際の認証に毎回使用されます。キーの組み合わせは、実質的にユーザー名とパスワードとして機能します。ですから、private_keyは秘密にするようにしてください。

これらのキーは、 アカウント設定ページ から生成や取り出しができます。

毎回の制限された (非公開の) RESTの呼び出しは、以下のようにGengoから認証される必要があります。

呼び出しのサインオン

認証された呼び出しには全て、サインオンが必要になります:

  1. 現在のUNIX時間をInteger (整数型) で取得します
  2. その時間をあなたの引数リストの’ts’ キーの値として入れます
  3. そのタイムスタンプのSHA-1ハッシュ値をお持ちのプライベートキーに対して計算します
  4. このハッシュ値を、api_sigというパラメータとして引数リストに加えます

APIでの認証された呼び出しの例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/python
# -*- coding: utf-8 -*-

from hashlib import sha1
import hmac
import json
import requests
import time

if __name__ == '__main__':
    PUBLIC_KEY = 'your public key'
    PRIVATE_KEY = 'your private key'

    # submit a comment for job ID 20
    JOB_ID = '20'
    COMMENT = 'Please use British spelling'
    URL = "http://api.gengo.com/v2/translate/job/{0}/comment".format(JOB_ID)
    header = {"Accept": "application/json"}

    data = {
        # 'data' must be flattened. We use json.dumps()
        "data": json.dumps({"body": COMMENT}, separators=(',', ':')),
        "api_key": PUBLIC_KEY,
        "api_sig": PRIVATE_KEY,
        "ts": str(int(time.time()))
    }
    # use your private_key to create an hmac
    data["api_sig"] = hmac.new(
        data["api_sig"],
        data["ts"],
        sha1
    ).hexdigest()

    post_comment = requests.post(URL, data=data, headers=header)
    res_json = json.loads(post_comment.text)
    if not res_json["opstat"] == "ok":
        msg = "API error occured.\nerror msg: {0}".format(
            res_json["err"]
        )
        raise AssertionError(msg)
    else:
        print(res_json)