Наш интерфейс приложений API рассматривает сущности приложения (проекты, задания, настройки) как ресурсы, которые можно извлекать, создавать, изменять и удалять.
Каждый метод HTTP представляет собой действие:
-
GET
Извлекает ресурс, никогда не изменяя его
-
POST
Создает ресурс. POST также используется для операций, которые не вписываются ни в одну из четырех операций или имеют длинный или сложный ввод — например, поиск в памяти переводов или создание заданий.
-
PUT
Обновляет ресурс. Обратите внимание, что требуется вся сущность целиком со всеми ее полями, а не только измененные; если поле не включено, это означает, что для него должно быть установлено значение null.
-
УДАЛИТЬ
Удаляет ресурс.
Важно
Входные и выходные данные обычно представлены в формате JSON, кодировка UTF-8. Для файла в качестве контента тела запроса используется тип application/octet-stream или multipart/form-data.
Сущности используют плоскую структуру, когда это возможно, для поддержания хорошего времени отклика. Вместо включения целых дочерних объектов в ответы содержатся ссылки, которые включают Идентификатор, UID и несколько других атрибутов. Ожидается использование объектов IDReference или UidReference для ссылки на связанные сущности.
Все списки ответов разбиты на страницы. Использовать параметры pageNumber и pageSize для получения запрошенных данных. Максимальный размер страницы составляет 50.
Документация
OpenAPI 3.0 используется для Документация интерфейс приложений API. Генераторы кода Swagger рекомендуются для разработка клиент.
Примеры интерфейс приложений API
Получить список всех память переводов (TM)
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": "не обязательно использовать в память переводов (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
}
Создать новую память переводов (TM)
POST
/web/api2/v1/transMemories
{{
"name": "My new TM",
"sourceLang": "en",
"targetLangs": [
"es", "it-IT"
],
"businessUnit": {
"id": "1"
},
"note": "не обязательно использовать в память переводов (TM)"
}
Ответ
201
{
"internalId": 1,
"createdBy": {
"userName": "admin",
"id": "3",
"firstName": "J",
"lastName": "Jan",
"role": "ADMIN",
"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": "My new TM"
}
Добавление файлов при создании задания
Добавьте этот файл в тело запроса в качестве бинарного вложения. Убедитесь, что Phrase и заголовки Content-Disposition вставлены правильно.
Пример PHP из Postman:
<?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-токен' => '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 для неверного запроса, 401 или 403 для проблем с аутентификация или авторизацией.
Сообщение о проблемах
При сообщении о проблеме в Техническую поддержку, включите в отчет следующее:
-
Конечная точка API
-
Запрос
-
Время (и часовой пояс)
-
Ответ
-
Phrase-Действие-Идентификатор ответа