Наш API рассматривает сущности приложений (проекты, задания, настройки) как ресурсы, которые можно извлекать, создавать, изменять и удалять.
Каждый метод HTTP представляет собой действие:
-
GET
Извлекает ресурс, никогда не изменяя его
-
POST
Создает ресурс. POST также используется для операций, которые не подходят ни под одну из четырех операций или имеют длинный или сложный ввод — например, для поиска памяти переводов или создания заданий.
-
PUT
Обновляет ресурс. Обратите внимание, что требуется целая сущность со всеми ее полями, а не только измененные; не включая это, значит, что оно должно быть установлено в null.
-
DELETE
Удаляет ресурс.
Важно
Входные и выходные данные обычно находятся в формате JSON, закодированном в UTF-8. Для файла в качестве типа содержимого тела запроса используется application/octet-stream или multipart/form-data.
Сущности используют плоскую структуру, когда это возможно, чтобы поддерживать хорошее время отклика. Вместо того чтобы включать целые дочерние объекты в ответы, содержатся ссылки, которые содержат ID, UID и несколько других атрибутов. Ожидаются либо IDReference, либо UidReference объекты для ссылки на связанные сущности.
Все списки ответов разбиты на страницы. Используйте параметры номер страницы и размер страницы для получения запрашиваемых данных. Максимальный размер страницы составляет 50.
Документация
OpenAPI 3.0 используется для документации API. Рекомендуемые генераторы кода Swagger для разработки клиентов.
Примеры API
Получить список всех память переводов
GET
/web/api2/v1/transMemories
Ответ
200
{
"pageNumber": 0,
"content": [
{
"internalId": 1,
"создано": {
"userName": "администратор",
"id": "3",
"firstName": "Ян",
"lastName": "Янокко",
"role": "ADMIN",
"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": "Первая БУ"
},
"sourceLang": "en",
"domain": null,
"name": "Моя новая память переводов"
}
],
"numberOfElements": 1,
"totalElements": 1,
"pageSize": 50,
"totalPages": 1
}
Создать новую память переводов
POST
/web/api2/v1/transMemories
{{
"name": "Моя новая память переводов",
"sourceLang": "en",
"targetLangs": [
"es", "it-IT"
],
"businessUnit": {
"id": "1"
},
"note": "необязательно использовать в памяти переводов"
}
Ответ
201
{
"internalId": 1,
"создано": {
"userName": "администратор",
"id": "3",
"firstName": "J",
"lastName": "Jan",
"role": "ADMIN",
"email": "jan.j@phrase.com"
},
"клиент": null,
"заметка": "не обязательно использовать в TM",
"dateCreated": "2018-01-09T14:07:46+0000"
"id": "1",
"targetLangs": [
"es",
"it"
],
"subDomain": null,
"businessUnit": {
"id": "1",
"name": "Первая БУ"
},
"sourceLang": "en",
"domain": null,
"name": "Моя новая память переводов"
}
Добавление файлов при создании задания
Добавьте этот файл в тело запроса в качестве бинарного вложения. Убедитесь, что заголовки 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 структура. Код ошибки всегда будет присутствовать; подробное описание может быть нулевым.
{ "errorCode": "InvalidArguments",
"errorDescription": "Обязательный аргумент \"password\" типа \"строка\" отсутствует."
}
Ответ об ошибке можно определить, прочитав HTTP статус код ответа. Если возникает ошибка, она никогда не будет установлена в 2xx. Код статуса 400 - неверный запрос, 401 или 403 для проблем с аутентификацией или авторизацией.
Сообщение о проблемах
При сообщении о проблеме в Техническую поддержку включите следующее в отчет:
-
API endpoint
-
Запрос
-
Время (и часовой пояс)
-
Ответ
-
Phrase-Action-ID ответа