Phrase TMS API

API Technology (TMS)

컨텐츠는 영어 텍스트를 Phrase Language AI를 이용해 기계 번역한 것입니다.

우리 API는 애플리케이션 엔티티(프로젝트, 작업, 설정)를 검색, 생성, 수정, 삭제할 수 있는 리소스로 본다. 

모든 HTTP 메서드는 하나의 작업을 나타낸다:

  • GET

    리소스를 검색하지만, 리소스에는 어떠한 변경도 가하지 않는다.

  • POST

    리소스를 생성한다. POST는 네 가지 작업에 속하지 않거나, 입력이 길거나 복잡한 작업(예: 번역 메모리 검색 혹은 작업 생성)에 사용된다.

  • PUT

    리소스를 업데이트한다. 전체 엔티티의 모든 필드를 반드시 포함해야 하며, 변경된 필드만 보내는 것이 아니다. 포함하지 않은 필드는 null로 설정된다.

  • DELETE

    리소스를 삭제한다.

중요

입력 및 아웃풋 데이터는 보통 JSON 형식이며, UTF-8로 인코딩된다. 파일을 요청 본문에 보낼 때는 application/octet-stream 또는 multipart/form-data 형식을 사용한다.

엔티티는 가능한 경우 평면 구조를 사용해 좋은 응답 시간을 유지한다. 전체 하위 요소 대신, ID, UID 및 몇 가지 속성을 포함한 참조를 사용한다. 관련 엔티티를 참조하기 위해 IDReference 또는 UidReferenc 객체를 사용한다.

모든 응답 목록은 페이지로 나뉜다. 요청된 데이터를 가져오기 위해 매개변수 pageNumberpageSize을 사용한다. 최대 페이지 크기는 50이다.

문서

OpenAPI 3.0은 API 문서에 사용된다. Swagger 코드 생성기는 클라이언트 개발에 권장된다.

API 예제

모든 번역 메모리 목록 가져오기

GET

/web/api2/v1/transMemories

응답

200

{
    "pageNumber": 0,
    "content": [
        {
            "internalId": 1,
            "createdBy": {
                "userName": "admin",
                "id": "3",
                "firstName": "Jan", // 수정: 이름은 번역하지 않고 그대로 사용해야 합니다.
                "lastName": "lastName": "Janocko",
                "role": "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": "name": "내 새로운 TM"
        }
    ],
    "numberOfElements": 1,
    "totalElements": 1,
    "pageSize": 50,
    "totalPages": 1
}

새 번역 메모리 생성

POST

/web/api2/v1/transMemories

{{
"name": "My new TM", -> "내 새로운 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": "관리자",
        "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": "내 새로운 TM"
}

작업 생성 시 파일 추가

이 파일을 요청 본문에 바이너리 첨부 파일로 추가해. Phrase와 Content-Disposition 헤더가 제대로 삽입됐는지 확인해.

Postman의 샘플 PHP:

<?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' => '여기에 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\"의 타입 \"문자열\"이 누락되었습니다."
}

오류 응답은 HTTP 상태 응답 코드를 읽어 감지할 수 있다. 오류가 발생하면 절대 2xx로 설정되지 않는다. 상태 코드는 400(잘못된 요청), 401 또는 403(인증 또는 권한 문제)이다.

문제 보고

문제를 기술 지원에 보고할 때는 다음 내용을 포함한다:

  • API 엔드포인트

  • 요청

  • 시간 (및 시간대)

  • 응답

  • 응답의 Phrase-Action-ID

도움이 되었습니까?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.