Наш интерфейс приложений API рассматривает сущности приложений (проекты, задания, настройки) как ресурсы, которые можно извлекать, создавать, изменять и удалять.
Каждый HTTP-метод представляет действие:
-
GET
Извлекает ресурс, никогда не изменяя его.
-
POST
Создает ресурс. POST также используется для операций, которые не вписываются ни в одну из четырёх операций или требуют длинного или сложного ввода — например, для поиска памяти переводов или для создания заданий.
-
PUT
Обновляет ресурс. Обратите внимание, что всю сущность со всеми её полями необходимо передавать, а не только изменённые; отсутствие какого-либо поля означает, что его следует установить в null.
-
DELETE
Удаляет ресурс.
Важно
Входные и выходные данные обычно представлены в формате JSON и закодированы в UTF-8. Для файла в качестве типа содержимого тела запроса используется application/octet-stream или multipart/form-data.
Сущности используют плоскую структуру, когда это возможно, чтобы поддерживать хорошее время отклика. Вместо включения полных объектов-дочерних элементов в ответы используются справочные файлы, содержащие Идентификатор, UID и несколько других атрибутов. Ожидаются либо IDReference, либо UidReferenc объекты для ссылки на связанные сущности.
Все списки ответов разбиты на страницы. Используйте параметры 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": "Ян",
"lastName": "Янокко",
"role": "администратор",
"email": "jan.janocko@phrase.com"
},
"клиент": null,
"заметка": "не обязательно использовать в 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)"
}
],
"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": "lastName": "Ян",
"role": "role": "администратор",
"email": "jan.j@phrase.com"
},
"клиент": 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": "name": "Моя новая память переводов (TM)"
}
Добавление файлов при создании задания
Добавьте этот файл в тело запроса в качестве двоичного вложения. Убедитесь, что заголовки «Phrase» и «Content-Disposition» правильно вставлены.
Пример PHP из Postman:
<?php
$request = new HttpRequest();
$request->setUrl('https://cloud.memsource.com/web/api2/v1/projects/%7BUID%20вашего%20проекта%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\" типа \"string\" отсутствует."
}
Ответ с ошибкой можно определить по коду ответа. Если ошибка произошла, её код никогда не будет в диапазоне 2xx. Код статуса — 400 (неверный запрос), 401 или 403 — для проблем с аутентификацией или авторизацией.
Сообщение о проблемах
При обращении в Техническую поддержку обязательно укажите следующее в отчёте:
-
Конечная точка API
-
Запрос
-
Время (и часовой пояс)
-
Ответ
-
Phrase-Action-Идентификатор ответа