当社のAPIは、アプリケーションエンティティ(プロジェクト、ジョブ、設定)を、取得、作成、変更、削除が可能なリソースとして扱います。
各HTTPメソッドはアクションを表します。
-
GET
リソースを取得します。リソースを変更することはありません。
-
POST
リソースを作成します。POSTは、4つの操作のいずれにも当てはまらない操作や、翻訳メモリの検索やジョブの作成のように入力が長く複雑な操作にも使用されます。
-
PUT
リソースを更新します。変更されたフィールドだけでなく、すべてのフィールドを含むエンティティ全体が必要であることに注意してください。含めない場合はnullに設定する必要があります。
-
DELETE
リソースを削除します。
注意
入力および出力データは、通常UTF-8エンコードされたJSONファイル形式です。リクエストボディのコンテンツタイプとしてファイルを使用する場合は、application/octet-streamまたはmultipart/form-dataが使用されます。
エンティティは、良好な応答時間を維持するために、可能な限りフラットな構造を使用します。回答に子オブジェクト全体を含める代わりに、ID、UID、およびその他のいくつかの属性を含む参照が含まれます。関連エンティティを参照するために、IDReferenceまたはUidReferenceオブジェクトのいずれかが想定されています。
すべての応答リストはページ分割されています。要求されたデータを取得するには、pageNumberおよびpageSizeパラメータを使用します。最大ページサイズは50です。
ドキュメント
APIドキュメントにはOpenAPI 3.0が使用されます。Swaggerコードジェネレーターは、クライアント開発に推奨されます。
APIの例
すべての翻訳メモリの一覧を取得
GET
/web/api2/v1/transMemories
レスポンス
200
{
"pageNumber": 0,
"content": [
{
"internalId": 1,
"createdBy": {
"userName": "admin",
"id": "3",
"firstName": "Jan",
"lastName": "Janocko",
"role": "ADMIN",
"email": "jan.janocko@phrase.com"
},
"client": null,
"note": "not necessary to use in 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 TM"
}
],
"numberOfElements": 1,
"totalElements": 1,
"pageSize": 50,
"totalPages": 1
}
新しい翻訳メモリを作成
POST
/web/api2/v1/transMemories
{{
"name": "My new TM",
"sourceLang": "en",
"targetLangs": [
"es", "it-IT"
],
"businessUnit": {
"id": "1"
},
"note": "not necessary to use in TM"
}
レスポンス
201
{
"internalId": 1,
"createdBy": {
"userName": "admin",
"id": "3",
"firstName": "J",
"lastName": "Jan",
"role": "ADMIN",
"email": "jan.j@phrase.com"
},
"client": null,
"note": "not necessary to use in 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 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(
'トークン' => 'ここにトークンを入力してください'
));
$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-サービス.com/consumeCallback\\\\\",\\\\\"importSettings\\\\\":{\\\\\"uid\\\\\":\\\\\"WF0T1SfSHxII09yKr0dZh9\\\\\"}}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
エラーハンドリング
APIリクエストの処理中に問題が発生した場合、以下のJSON構造が返されます。エラーコードは常に存在しますが、詳細な説明はnullになる場合があります。
{ "errorCode": "InvalidArguments",
"errorDescription": "Required argument \"password\" of type \"string\" is missing."
}
エラーレスポンスは、HTTPステータスコードを確認することで検出できます。エラーが発生した場合、それが2xxに設定されることはありません。ステータスコードは、400 (不正なリクエスト)、または認証や認可の問題の場合は401または403となります。
問題の報告
テクニカルサポートに問題を報告する際は、レポートに以下を含めてください:
-
APIエンドポイント
-
リクエスト
-
時刻 (およびタイムゾーン)
-
レスポンス
-
レスポンスのPhrase-Action-ID