Наш интерфейс приложений API рассматривает сущности приложения (проекты, задания, настройки) как ресурсы, которые можно получить, создать, изменить и удалить.
Каждый метод HTTP представляет действие:
-
ПОЛУЧИТЬ
Получает ресурс, никогда не изменяя его
-
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)
ПОЛУЧИТЬ
/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": "Моя новая память переводов (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 bad request, 401 или 403 при проблемах с аутентификацией или авторизацией.
Сообщение о проблемах
При сообщении о проблеме в Техническую поддержку включите в отчет следующее:
-
Конечная точка API
-
Запрос
-
Время (и часовой пояс)
-
Ответ
-
Phrase-Action-Идентификатор ответа