Jobs methods

ここでは、案件をGengo API上で扱うエンドポイントをご説明しています。

Jobs (POST)

概要 :
翻訳する案件またはグループ案件を提出してください。1件のご注文内ですべての案件が同じ言語ペアとレベルである場合は、案件がグループ化されます。
URL :
http://api.gengo.com/v2/translate/jobs
認証 :
必須
パラメータ :
  • api_key (必須) - お客様の API key
  • api_sig (必須) - お客様の API signature
  • ts (必須) - 現在のUNIX時間のInteger (整数型)
データ引数 :
  • jobs (必須) - 案件のペイロードの配列の1つ。案件ペイロードの必須項目についてはパラメータ一覧ページを参照ください。

呼び出し例

 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
43
44
45
46
47
48
49
50
51
#!/usr/bin/python
# -*- coding: utf-8 -*-

from gengo import Gengo


gengo = Gengo(
    public_key='your_public_key',
    private_key='your_private_key',
    sandbox=False,
    debug=False)

data = {
    'jobs': {
        'job_1': {
            'type': 'text',
            'slug': 'Single :: English to Japanese',
            'body_src': 'Testing Gengo API library calls.',
            'lc_src': 'en',
            'lc_tgt': 'ja',
            'tier': 'standard',
            'auto_approve': 0,
            'comment': 'Instructions for translators on this specific job go here',
            'attachments': [{'url': 'http://example.com/image01.jpg', 'filename': 'image01.jpg', 'mime_type': 'image/jpg'},
                            {'url': 'http://example.com/video/1234', 'filename': 'video.mp4', 'mime_type': 'video/mp4'}],
            'callback_url': 'http://...',
            'custom_data': 'your optional custom data, limited to 1kb.',
            'force':  0,
            'use_preferred': 0
        },
        'job_2': {
            'type': 'text',
            'slug': 'Single :: English to Japanese',
            'body_src': 'Testing Gengo API library calls.',
            'lc_src': 'en',
            'lc_tgt': 'ja',
            'tier': 'standard',
            'auto_approve': 0,
            'comment': 'Instructions for translators on this specific job go here',
            'attachments': [{'url': 'http://example.com/image02.jpg', 'filename': 'image02.jpg', 'mime_type': 'image/jpg'},
                            {'url': 'http://example.com/video/4321', 'filename': 'video01.mp4', 'mime_type': 'video/mp4'}],
            'callback_url': 'http://...',
            'custom_data':'your optional custom data, limited to 1kb.',
            'force':  0,
            'use_preferred': 0
        }
    },
    'comment':'Instructions for translators on the entire order go here'
}

print(gengo.postTranslationJobs(jobs=data))

Comments

コメントの提出は、個々の案件またはご注文全体を対象に行うことができます。

返り値

どんなケースでも、レスポンスはほぼ瞬時に返って来るはずです。それを踏まえて申し上げると、POSTの呼び出しで送信された案件により、3種類のレスポンスのペイロードがあり得ます。

すべての案件が既存でない場合

新規案件だけの場合か、全ての案件にforceのフラグが付いている場合は、レスポンスには新しいご注文ID、案件数、ご注文価格 が含まれます。

1
2
3
4
5
6
7
8
9
{
  "opstat": "ok",
  "response": {
    "job_count": 10,
    "order_id": 139370,
    "credits_used": 100.45,
    "currency": "USD"
  }
}

すべての案件が既存の案件と同じ場合

100%マッチする案件だけの場合 (つまり、全ての案件はご注文済みで、翻訳が存在する場合)、レスポンスはその案件のリスト (オリジナルの提出時と同内容) になります。こうした案件のステータスは、”approved” に変更されていくはずです。各インデックスはリストである点にご注目ください。これは、以前のPOSTでforceのフラグが使われている場合、1つのペイロードに対してマッチする案件が数件が存在する可能性があるからです。

翻訳は “body_tgt” として保存されます。order idは新しい値で、credits_usedは同じ価格になりますが再課金はされません。というのは、私たちは新規コンテンツを一切注文していないからです。

  "opstat": "ok",
  "response": {
    "jobs": {
      "job_2": [
        {
          "custom_data": "1234567",
          "job_id": 1821444,
          "credits": 0.10,
          "auto_approve": 0,
          "eta": -1,
          "lc_tgt": "fr",
          "unit_count": 1,
          "lc_src": "en",
          "slug": "3",
          "callback_url": "http://example.com",
          "currency": "USD",
          "tier": "pro",
          "body_src": "Third",
          "body_tgt": "Troisieme",
          "ctime": 1378703629,
          "status": "reviewable"
        }
      ],
      "job_1": [
        {
          "custom_data": "1234567",
          "job_id": 1821443,
          "credits": 0.10,
          "auto_approve": 0,
          "eta": -1,
          "lc_tgt": "fr",
          "unit_count": 1,
          "lc_src": "en",
          "slug": "3",
          "callback_url": "http://example.com",
          "currency": "USD",
          "tier": "pro",
          "body_src": "Second",
          "body_tgt": "Deuxieme",
          "ctime": 1378703629,
          "status": "reviewable"
        }
      ]
    },
    "job_count": 2,
    "order_id": 754511,
    "credits_used": 0.00,
    "currency": "USD"
  }
}

同一案件が案件のペイロード中に存在する場合

ご発注いただいたペイロード中に同一の案件が存在する場合、その案件に関するレスポンスでは以前の案件でお届けしたものと同一の訳文テキストを返します

job countは送付された案件数になりますが、ポイントはペイロード中に含まれた繰り返し案件の1件分だけに課金されます。各リクエストに新しいorder idが作成されます。

  "opstat": "ok",
  "response": {
    "jobs": [
      [
        {
          "job_id": 1087795,
          "credits": 0.10,
          "auto_approve": 0,
          "eta": 25308,
          "lc_tgt": "fr",
          "unit_count": 2,
          "lc_src": "en",
          "slug": "API Job test",
          "callback_url": "http://example.com",
          "currency": "USD",
          "tier": "standard",
          "body_src": "First test.",
          "mt": 1,
          "body_tgt": "Premier test.",
          "ctime": 1378694499,
          "status": "available"
        }
      ],
      [
        {
          "job_id": 1087795,
          "credits": 0.10,
          "auto_approve": 0,
          "eta": 25308,
          "lc_tgt": "fr",
          "unit_count": 2,
          "lc_src": "en",
          "slug": "API Job test",
          "callback_url": "http://example.com",
          "currency": "USD",
          "tier": "standard",
          "body_src": "First test.",
          "mt": 1,
          "body_tgt": "Premier test.",
          "ctime": 1378694499,
          "status": "available"
        }
      ]
    ],
    "job_count": 2,
    "order_id": 122900,
    "credits_used": 0.10,
    "currency": "USD"
  }
}

既存の案件と新規案件が混在する場合

以前にご注文された案件 (コンテンツと言語ペア部分が100%マッチする案件) と新規案件がPOSTに混在する場合、過去の案件、新規案件のご注文ID、ご注文に含まれる新規案件の合計価格が含まれたレスポンスが返されます。

job_countの数は、あなたのペイロードの中で送付された総案件数で、新規の案件数だけではありませんのでご注意ください。

  "opstat": "ok",
  "response": {
    "jobs": {
      "old_job1": [
        {
          "custom_data": "1234567",
          "job_id": 1821444,
          "credits": 0.10,
          "auto_approve": 0,
          "eta": -1,
          "lc_tgt": "fr",
          "unit_count": 1,
          "lc_src": "en",
          "slug": "3",
          "callback_url": "http://example.com",
          "currency": "USD",
          "tier": "pro",
          "body_src": "Third",
          "body_tgt": "Troisieme",
          "ctime": 1378703629,
          "status": "reviewable"
        }
      ]
    },
    "job_count": 2,
    "order_id": 754513,
    "credits_used": 0.20,
    "currency": "USD"
  }
}

Jobs (GET)

概要 :
指定パラメータでフィルターされた直近案件での使用リソースのリストを取得します。
URL :
http://api.gengo.com/v2/translate/jobs
認証 :
必須
パラメータ :
  • api_key (必須) - お客様の API key
  • api_sig (必須) - お客様の API signature
  • ts (必須) - 現在のUNIX時間のInteger (整数型)
データ引数 :
  • status (任意) - 案件の現在のステータス。「新着案件」、「保留中」、「レビュー可」、「修正中」、「承認済み」、または「キャンセル済み」。
  • timestamp_after (任意) - 案件を送信した時間からのエポックタイム
  • count (任意) - デフォルト10件 (最大 200件)
Note
  • countだけを使った場合、直近からcountで指定された件数が返されます
  • countをtimestamp_afterと共に使った場合、timestamp_after以降に送信された、countで指定された件数が返されます
  • timestamp_afterだけを使った場合、timestamp_after以降に送信された全案件数が返されます

呼び出し例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#!/usr/bin/python
# -*- coding: utf-8 -*-

from gengo import Gengo


gengo = Gengo(
    public_key='your_public_key',
    private_key='your_private_key',
    sandbox=False,
    debug=False)

print(gengo.getTranslationJobs(status="available", count=15))

返り値

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
{
  "opstat": "ok",
  "response": [
    {
      "job_id": 123,
      "ctime": "..."
    },
    {
      "job_id": 425,
      "ctime": "..."
    },
    {
      "job_id": 274,
      "ctime": "..."
    }
  ]
}

Jobs by id (GET)

概要 :
案件のリストを取得します。これらは、案件IDをカンマで区切ったリストを使ってリクエストできます。
URL :
http://api.gengo.com/v2/translate/jobs/{ids}
認証 :
必須
パラメータ :
  • api_key (必須) - お客様の API key
  • api_sig (必須) - お客様の API signature
  • ts (必須) - 現在のUNIX時間のInteger (整数型)
Note
  • 案件がファイルの場合、レスポンスに``file_url_src``と``file_url_tgt``が含まれます。

呼び出し例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#!/usr/bin/python
# -*- coding: utf-8 -*-

from gengo import Gengo


gengo = Gengo(
    public_key='your_public_key',
    private_key='your_private_key',
    sandbox=False,
    debug=False)

print(gengo.getTranslationJobBatch(id="1,2"))

返り値

 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
43
{
  "opstat": "ok",
  "response": {
    "jobs": [
      {
        "custom_data": "{internal_id: 2311}",
        "job_id": 1,
        "credits": 0.25,
        "auto_approve": 1,
        "eta": 25308,
        "order_id": 54632,
        "lc_tgt": "jp",
        "unit_count": 5,
        "lc_src": "en",
        "slug": "This is a short story",
        "callback_url": "http://yourapp.com/gengo_callback/job/1",
        "currency": "USD",
        "tier": "standard",
        "body_src": "This is a short story",
        "ctime": 1352879655,
        "status": "available"
      },
      {
        "custom_data": "{internal_id: 2312}",
        "job_id": 2,
        "credits": 0.35,
        "auto_approve": 1,
        "eta": 25308,
        "order_id": 54632,
        "lc_tgt": "jp",
        "unit_count": 7,
        "lc_src": "en",
        "slug": "This is a short story as well",
        "callback_url": "http://yourapp.com/gengo_callback/job/2",
        "currency": "USD",
        "tier": "standard",
        "body_src": "This is a short story as well",
        "ctime": 1352879764,
        "status": "available"
      }
    ]
  }
}

Jobs (PUT)

概要 :
Updates a group of jobs to translate. Request should be no larger than 100MB. Comments per job should not exceed more than 25,000 characters.
URL :
http://api.gengo.com/v2/translate/jobs/
認証 :
必須
パラメータ :
  • api_key (必須) - お客様の API key
  • api_sig (必須) - お客様の API signature
  • ts (必須) - 現在のUNIX時間のInteger (整数型)
データ引数 :
action (必須) : (案件毎)
“revise” - 案件を翻訳者に戻して修正を依頼します。

その他のパラメータ

  • comment (必須) - 翻訳者に案件を戻して修正を求める理由。
“approve” - 案件を承認します。

その他のパラメータ

  • rating (任意) 評価に関するガイドラインを含む ― 1(悪い)から5(非常に良い)まで
  • for_translator (任意) 翻訳者へのコメント
  • for_mygengo (任意) Gengoスタッフへのコメント (非公開)
  • public (任意) 1 (true) か 0 (false - デフォルト)。このフィードバックをGengoが公開してよいか
“reject” - 翻訳を拒否します。案件拒否プロセスの詳細については、弊社のFAQをご覧ください。

その他のパラメータ

  • reason (必須) - “quality”, “incomplete”, “other”
  • comment (必須)
  • captcha (必須) CAPTCHAイメージで表示するテキスト 。
  • captcha_url - それぞれ ``captcha_url``値 (CAPTCHAイメージのURL) が与えられます。 この値が必要になるのは、案件を拒否する場合だけです。CAPTCHAを間違えてしまった場合には、新しいCAPTCHAのURL がエラーメッセージに含まれます。
  • follow_up (任意) “requeue” (デフォルト) か “cancel” のいずれかになります。”requeue” を選択した場合、案件は拒否され、別の翻訳者に再依頼されます。”cancel” を選択した場合、案件は拒否した時点で完全にキャンセルとなります。

““archive“” - 案件をアーカイブします。

呼び出し例

 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
#!/usr/bin/python
# -*- coding: utf-8 -*-

from gengo import Gengo


gengo = Gengo(
    public_key='your_public_key',
    private_key='your_private_key',
    sandbox=False,
    debug=False)

# Archive a group of jobs
gengo.updateTranslationJobs(action={
    'job_ids': [4854, 547],
    'action': 'archive'
})

# Revise a group of jobs
gengo.updateTranslationJobs(action={
  'action': 'revise',
  'job_ids': [{'job_id': 922, 'comment': 'Please change the word banana to gorilla'},
            {'job_id': 923, 'comment': 'Please change the word banana to monkey'}],
})

## Reject a group of jobs
gengo.updateTranslationJobs(action={
  'action': 'reject',
  'job_ids': [{'job_id': 929, 'reason': 'quality', 'comment': 'This sentence should be in the past tense', 'captcha': 'AAAA'},
              {'job_id': 811, 'reason': 'quality', 'comment': 'This should have be capitalized', 'captcha': 'BBBB'}],
})

# Approve a group of jobs
gengo.updateTranslationJobs(action={
  'action': 'approve',
  'job_ids': [{'job_id': 924},
              {'job_id': 928}],
})

返り値

// Archive a group of jobs
{
  "opstat": "ok",
  "response": {

  }
}

// Revising a group of jobs.
{
  "opstat": "ok",
  "response": {

  }
}

// Rejecting a group of jobs.
{
  "opstat": "ok",
  "response": {
    "jobs": [
      {
        "rejection_comments": "...",
        "worker_id": 4,
        "rejection_reason": "quality",
        "customer_id": 3,
        "job_id": 929
      },
      {
        "rejection_comments": "...",
        "worker_id": 4,
        "rejection_reason": "quality",
        "customer_id": 3,
        "job_id": 811
      }
    ]
  }
}

// Approving a group of jobs.
{
  "opstat": "ok",
  "response": {

  }
}