Наш API рассматривает сущности приложений (проекты, задания, настройки) как ресурсы, которые можно извлекать, создавать, изменять и удалять.
Каждый метод HTTP представляет собой действие:
-
GET
Извлекает ресурс, никогда не изменяя ресурс
-
POST
Создает ресурс. POST также используется для операций, которые не вписываются ни в одну из четырех операций или имеют длинный или сложный ввод — например, для поиска памяти переводов или создания заданий.
-
PUT
Обновляет ресурс. Обратите внимание, что требуется целая сущность со всеми ее полями, а не только измененные; не включая это, значит, что оно должно быть установлено в null.
-
DELETE
Удаляет ресурс.
ВАЖНО:
Входные и выходные данные обычно находятся в формате JSON, закодированном в UTF-8. Для файла в качестве типа содержимого тела запроса используется application/octet-stream или multipart/form-data.
Сущности используют плоскую структуру, когда это возможно, чтобы поддерживать хорошее время отклика. Вместо того, чтобы включать целые дочерние объекты в ответы, содержатся ссылки, которые содержат ID, UID и несколько других атрибутов. Ожидаются либо IDReference, либо UidReferenc объекты для ссылки на связанные сущности.
Все списки ответов разбиты на страницы. Используйте параметры pageNumber и pageSize, чтобы извлечь запрашиваемые данные. Максимальный размер страницы — 50.
Документация
OpenAPI 3.0 используется для документации API. Генераторы кода Swagger рекомендуются для разработки клиентов.
Примеры API
Получить список всех переводческих памятьей
GET
/web/api2/v1/transMemories
Ответ
200
{ "pageNumber": 0, "content": [ { "internalId": 1, "созданоПользователем": { "userName": "admin", "id": "3", "firstName": "Ян", "lastName": "Янокко", "роль": "АДМИНИСТРАТОР", "email": "jan.janocko@phrase.com" }, "клиент": null, "заметка": "необязательно использовать в TM", "dateCreated": "2018-01-09T14:07:46+0000", "id": "1", "targetLangs": [ "es", "it" ], "специализация": null, "businessUnit": { "id": "1", "name": "Первый БУ" }, "sourceLang": "en", "отрасль": 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" }, "заметка": "не обязательно использовать в памяти переводов" }
Ответ
201
{ "internalId": 1, "созданоПользователем": { "userName": "admin", "id": "3", "firstName": "J", "lastName": "Ян", "роль": "АДМИНИСТРАТОР", "электронная почта": "jan.j@phrase.com" }, "клиент": null, "заметка": "необязательно использовать в TM", "dateCreated": "2018-01-09T14:07:46+0000", "id": "1", "targetLangs": [ "es", "it" ], "специализация": null, "businessUnit": { "id": "1", "name": "Первый БУ" }, "sourceLang": "en", "отрасль": 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( 'токен' => 'Ваш токен здесь'. )); $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
-
Запрос
-
Время (и часовой пояс)
-
Ответ
-
Фраза-Действие-ИД ответа