Phrase TMS API

API 기술 (TMS)

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

당사의 API는 애플리케이션 엔티티(프로젝트, 작업, 설정)를 검색, 생성, 수정 및 삭제할 수 있는 리소스로 간주합니다. 

모든 HTTP 메서드는 작업을 나타냅니다:

  • GET

    리소스를 검색하며, 리소스를 변경하지 않습니다.

  • POST

    리소스를 생성합니다. POST는 네 가지 작업에 맞지 않거나 검색 번역 메모리 또는 작업 생성과 같이 길거나 복잡한 입력이 필요한 작업에도 사용됩니다.

  • PUT

    리소스를 업데이트합니다. 변경된 필드뿐만 아니라 모든 필드를 포함한 전체 엔티티가 필요하다는 점에 유의하십시오. 포함하지 않으면 null로 설정해야 합니다.

  • DELETE

    리소스를 삭제합니다.

중요 사항

입력 및 아웃풋 데이터는 일반적으로 UTF-8로 인코딩된 JSON 형식입니다. 요청 본문 콘텐츠 형식으로 파일의 경우 application/octet-stream 또는 multipart/form-data이 사용됩니다.

엔티티는 원활한 응답 시간을 유지하기 위해 가능한 경우 평면 구조를 사용합니다. 응답에 전체 하위 요소 객체를 포함하는 대신 ID, UID 및 기타 몇 가지 속성을 포함하는 참조가 포함됩니다. 관련 엔티티를 참조하기 위해 IDReference 또는 UidReference 객체가 예상됩니다.

모든 응답 목록은 페이징 처리됩니다. 요청된 데이터를 검색하려면 pageNumberpageSize 매개변수를 사용하십시오. 최대 페이지 크기는 50입니다.

문서화

API 문서화를 위해 OpenAPI 3.0이 사용됩니다. Swagger 코드 생성기는 클라이언트 개발에 권장됩니다.

API 예시

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

GET

/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
}

새 번역 메모리 생성

POST

/web/api2/v1/transMemories

{{
\"name\": \"My new 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 헤더가 올바르게 삽입되었는지 확인하십시오.

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' => '여기에 토큰을 입력하십시오'
));

$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-서비스.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-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.