APIは、アプリケーションエンティティ(プロジェクト、ジョブ、設定)を取得、作成、変更、削除できるリソースとして扱います。
すべてのHTTPメソッドはアクションを表します:
-
GET
リソースを取得し、リソースは決して変更されません。
-
POST
リソースを作成します。POSTは、4つの操作のいずれにも当てはまらない操作や、長いまたは複雑な入力(翻訳メモリの検索やジョブの作成など)にも使用されます。
-
PUT
リソースを更新します。すべてのフィールドを含むエンティティ全体が必要であり、変更されたフィールドだけでは不十分であることに注意してください。含まれていないフィールドはnullに設定されます。
-
DELETE
リソースを削除します。
注意
入力および出力データは通常、JSON形式でUTF-8エンコードされています。リクエストボディのコンテンツタイプとして、application/octet-streamまたはmultipart/form-dataが使用されます。
エンティティは、良好な応答時間を維持するために可能な限りフラットな構造を使用します。回答に子オブジェクト全体を含める代わりに、ID、UID、その他いくつかの属性を含む参考資料が含まれます。関連するエンティティを参照するためのオブジェクトとして、IDReferenceまたはUidReferenceが期待されます。
すべての応答リストはページ分けされています。要求されたデータを取得するには、パラメータpageNumberおよびpageSizeを使用してください。最大ページサイズは50です。
ドキュメント
OpenAPI 3.0はAPIドキュメントの作成に使用します。Swaggerコードジェネレーターはクライアント開発に推奨されます。
APIの例
すべての翻訳メモリの一覧を取得
GET
/web/api2/v1/transMemories
レスポンス
200
{
"pageNumber":0,
"content": [
{
"internalId":1,
"createdBy": {
"userName": "admin",
"id":"3",
"firstName":"Jan",
"lastName":"ジャノコ",
"role":"管理者",
"email": "jan.janocko@phrase.com"
},
"client": null,
"note": "TMで使用する必要はありません",
"dateCreated":"2018-01-09T14:07:46+0000",
"id":"1",
"targetLangs": [
"es",
"it"
],
"subDomain": null,
"businessUnit": {
"id":"1",
"name":"First BU"
},
"sourceLang": "en",
"domain": null,
"name":"My new 翻訳メモリ"
}
],
"numberOfElements":1,
"totalElements":1,
"pageSize":50,
"totalPages":1
}
新しい翻訳メモリを作成
POST
/web/api2/v1/transMemories
{{
"name":"私の新しい翻訳メモリ"
"sourceLang": "en",
"targetLangs": [
"es", "it-IT"
],
"businessUnit": {
"id":"1"
},
"note": "TMで使用する必要はありません"
}
レスポンス
201
{
"internalId":1,
"createdBy": {
"userName": "admin",
"id":"3",
"firstName":"J"
"lastName":"Jan",
"role":"管理者",
"email": "jan.j@phrase.com"
},
"client": null,
"note": "TMで使用する必要はありません",
"dateCreated":"2018-01-09T14:07:46+0000",
"id":"1",
"targetLangs": [
"es",
"it"
],
"subDomain": null,
"businessUnit": {
"id":"1",
"name":"First BU"
},
"sourceLang": "en",
"domain": null,
"name":"私の新しいTM"
}
ジョブ作成時のファイル追加
このファイルをリクエストの本文にバイナリ添付ファイルとして追加します。PhraseとContent-Dispositionヘッダーが正しく挿入されていることを確認してください。
PostmanからのサンプルPHP:
<?php
$request = new HttpRequest();
$request->setUrl('https://cloud.memsource.com/web/api2/v1/projects/%7BUID%20of%20your%20project%7D/jobs');
$request->setMethod(HTTP_METH_POST);
$request->setQueryData(array(
'token' => 'ここにあなたのトークンを入れてください'
));
$request->setHeaders(array(
'postman-token' => 'ABC',
'cache-control' => 'no-cache',
'content-disposition' => 'filename*=UTF-8''Sample.txt',
'Memsource' => '{\\"targetLangs\\":[\\"de\\",\\"fr\\",\\"es\\"],\\"callbackUrl\\":\\"https://my-shiny-service.com/consumeCallback\\",\\"importSettings\\":{\\"uid\\":\\"WF0T1SfSHxII09yKr0dZh9\\"}}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
エラーハンドリング
APIリクエストの処理中に問題が発生した場合、次のJSON構造が返されます。エラーコードは必ず含まれますが、詳細な説明はnullの場合があります。
{ "errorCode":"InvalidArguments",
"errorDescription":"タイプが\"文字列\"の必須引数\"password\"が欠落しています。"
}
エラー応答はHTTPステータスコードを読み取ることで検出できます。エラーが発生した場合、2xxには決して設定されません。ステータスコードが400(Bad Request)の場合や、401または403の場合は認証または認可の問題です。
問題の報告
テクニカルサポートに問題を報告する際は、次の内容を報告に含めてください:
-
APIエンドポイント
-
リクエスト
-
時間(およびタイムゾーン)
-
レスポンス
-
レスポンスのPhrase-Action-ID