memoQ: Server Resources API文档
当前文档为您提供了界面的一般概述,还包括详细介绍每个服务和所有操作的参考。
1. 概述
1.1. 简介
memoQ 服务器资源 API 是一个 REST 风格的接口,用于由 memoQ 服务器提供的一组功能。 这个接口使 memoQ 服务器可以从多种客户端应用程序访问,让它们成为桌面、移动或 Web 应用程序。 客户端只需要发送简单、易于组装的 HTTP 请求并使用响应。 在客户端和服务器之间来回传输的信息通常是 JSON 序列化的。 目前,该 API 支持操作翻译记忆库 (TM) 和术语库 (TB)。
TM 支持以下操作:
TB 支持以下操作:
在响应中,您将返回以 JSON 序列化的 TM 列表:
[
{
"AccessLevel": 1,
"Client": "client 1",
"Domain": "domain 1",
"Subject": "subject 1",
"Project": "project 1",
"NumEntries": 0,
"FriendlyName": "Test TM 1",
"SourceLangCode": "eng",
"TargetLangCode": "hun",
"TMGuid": "dea956bd-52ce-4fd5-a666-cb28ddefb090",
"TMOwner": "csiri"
},
{
"AccessLevel": 1,
"Client": "client 2",
"Domain": "domain 2",
"Subject": "subject 2",
"Project": "project 2",
"NumEntries": 0,
"FriendlyName": "Test TM 2",
"SourceLangCode": "ger",
"TargetLangCode": "spa",
"TMGuid": "2433ea4e-0ea6-4339-9c1f-f84bce41ad3b",
"TMOwner": "csiri"
}
]
1.2. 数据表示
API 操作的参数可能来自两个地方。 一些参数是 URL 的一部分,其他参数被放置在请求的正文中。 API 参考明确指定了所有可能的参数(包括它们的预期位置)和所有操作的返回类型。 作为规则,用于标识资源(例如 TM 条目)的参数是 URL 的一部分,所有其他参数(如果有)都放在正文中。 身份验证令牌是一个例外,因为它是一个通用参数。 您可以将其放入 URL,但最佳做法是将其放入 HTTP 标头中(见下文)。
API 支持 JSON 序列化作为 HTTP 正文中请求和响应的数据表示。 这意味着客户端发布的数据应该是 JSON 序列化的。 服务器返回的数据也是 JSON 序列化的。
客户端需要正确设置 Accept 和 Content-type HTTP 标头。
1.3. 安全
1.3.1. 身份验证和会话处理
只有在 memoQ 服务器用户成功登录后才能访问 API 的操作。 登录将为您提供一个身份验证令牌,您需要在所有即将到来的请求中提供该令牌。 从技术上讲,此访问令牌可识别您与 memoQ 服务器的用户会话。 令牌可以作为查询字符串参数包含在 URL 中,也可以放入 Authorization HTTP 标头中。
要登录到 memoQ 服务器,您需要向以下 URL 发送 HTTP POST 请求,请求正文包含您要使用的凭据和身份验证类型。
在响应中,您将获得身份验证令牌:
Response body:
{
"Name": "admin",
"Sid": "00000000-0000-0000-0001-000000000001",
"AccessToken": "fde0f7ed-d585-48ec-a0a9-397aea195ccd"
}
您现在可以将令牌作为查询字符串参数附加到 URL
或者您可以将其放入 Authorization HTTP 标头中:
Authorization: MQS-API fde0f7ed-d585-48ec-a0a9-397aea195ccd
API 支持您可以与 memoQ 服务器一起使用的所有用户类型:
示例请求:
{
username: "admin",
password: "secret",
LoginMode: "0"
}
·
示例请求:
{
username: "mydomain\testuser",
password: "secret",
LoginMode: "1"
}
·
示例请求:
{
LTST: "",
LoginMode: "2"
}
用户的会话过期并且令牌在一段时间不活动后失效。 客户端通过专用错误 (ErrorCode: InvalidOrExpiredToken) 收到通知。 会话到期后需要重新登录。
也可以通过调用 Logout 手动终止会话
1.3.2. 授权
对资源(TM 和 TB)的访问由 API 用户的组成员控制。 memoQ 包含两个内置组,称为“通过 API/插件查找资源”和“通过 API/插件更新资源”。 这两个组的成员资格自动授予对 memoQ 服务器上所有资源的查找和更新权限。
通过在 HttpApiConfig.xml 文件中指定以下标志,可以覆盖此行为并强制执行默认资源访问策略:
true
当用户无权访问请求的资源时,她会返回一个专门的错误(错误代码:未授权)。
1.3.3. 许可
访问 API 需要 Translator light 或 Translator Pro 许可证。 首先,它会尝试检索 Translator Light 许可证,当没有 Translator Light 许可证时,它会尝试获取 Translator Pro。 当池中既没有light 也没有pro 许可证时,用户将收到一个专门的错误(错误代码:NoLicenseAvailable)并且在返回许可证之前将无法使用该 API。
处理许可证对客户端是透明的,memoQ 服务器以按需方式请求许可证,并在一段时间不活动后释放它们。 此超时比会话超时短。 许可证的生命周期和会话没有绑定在一起。 因此,您应该为所有请求中的许可错误做好准备。
1.3.4. HTTPS
出于安全原因,API 仅支持 HTTPS。
1.4. 错误处理
请求的成功通过响应的 HTTP 状态码反映出来。 如果成功,则为 2xx(200 OK、201 Created 或 204 No Content)。 否则在执行请求期间出现错误。 如果出现错误,响应还包含有关错误的 JSON 结构,该结构为您提供比 HTTP 状态代码更多的信息。
错误响应的一般形式是:
{
"ErrorCode": "InvalidOrExpiredToken",
"Message": "Security token is invalid or has expired."
}
ErrorCode 是标识问题的字符串常量,Message 是一些英文(非本地化)文本信息,可为您提供更多详细信息。
下表总结了 API 客户端应准备的所有错误。
HTTP 状态代码 |
错误代码 |
消息 |
401 未授权 |
认证失败 |
用户无法通过身份验证。 |
401 未授权 |
无效或过期令牌 |
安全令牌无效、已过期或从请求中丢失。 |
401 未授权 |
太频繁登录 |
注销后登录过于频繁 |
401 未授权 |
无许可证可用 |
无法申请许可证。 |
403 禁止 |
未授权 |
用户未授权访问资源。 |
404 未找到 |
资源未找到 |
在服务器上找不到资源 |
404 未找到 |
未找到条目 |
在服务器上找不到资源的条目。 |
409 冲突 |
乐观并发错误 |
有人修改了该条目。 |
400 错误的请求 |
TBExclusion错误 |
不能执行该操作。TB是开放的,供专用的(例如用于编辑)。 |
400 错误的请求 |
TB只读错误 |
不能执行该操作。TB是只读的。 |
400 错误的请求 |
不支持反向查找 |
TM不支持反向查询。 |
400 错误的请求 |
无效参数 |
这些参数是无效的。 |
400 错误的请求 |
自定义MetaError |
未找到自定义元定义。 |
500 内部服务器错误 |
内部错误 |
服务器发生内部错误。 检查日志以获取详细信息。 |
1.5. 服务版本控制
目前该 API 包含三个服务。 他们每个人都有一个专用的 URL 和一个版本号。 版本号可能因服务而异。
服务:
URL: /memoqserverhttpapi/v1/auth
当前版本:v1
URL: /memoqserverhttpapi/v1/tms
当前版本:v1
URL: /memoqserverhttpapi/v1/tbs
当前版本:v1
1.6. 例子
以下示例显示了对 TM 的一些操作。
登录 memoQ 服务器
要求:
POST memoqserverhttpapi/v1/auth/login
{
username: "admin",
password: "secret",
LoginMode: "0"
}
回复:
{
"Name": "admin",
"Sid": "00000000-0000-0000-0001-000000000001",
"AccessToken": "803be2ac-f4a1-4b47-abea-8b12f2a172d8"
}
列出所有 TM
要求:
GET memoqserverhttpapi/v1/tms?authToken=803be2ac-f4a1-4b47-abea-8b12f2a172d8
回复:
[
{
"AccessLevel": 1,
"Client": "client 1",
"Domain": "domain 1",
"Subject": "subject 1",
"Project": "project 1",
"NumEntries": 0,
"FriendlyName": "Test TM 1",
"SourceLangCode": "eng",
"TargetLangCode": "hun",
"TMGuid": "dea956bd-52ce-4fd5-a666-cb28ddefb090",
"TMOwner": "csiri"
},
{
"AccessLevel": 1,
"Client": "client 2",
"Domain": "domain 2",
"Subject": "subject 2",
"Project": "project 2",
"NumEntries": 0,
"FriendlyName": "Test TM 2",
"SourceLangCode": "ger",
"TargetLangCode": "spa",
"TMGuid": "2433ea4e-0ea6-4339-9c1f-f84bce41ad3b",
"TMOwner": "csiri"
}
]
获取有关 TM 的信息
要求:
GET memoqserverhttpapi/v1/tms/2433ea4e-0ea6-4339-9c1f-f84bce41ad3b?authToken=803be2ac-f4a1-4b47-abea-8b12f2a172d8
回复:
{
"AccessLevel": 1,
"Client": "client 2",
"Domain": "domain 2",
"Subject": "subject 2",
"Project": "project 2",
"NumEntries": 0,
"FriendlyName": "Test TM 2",
"SourceLangCode": "ger",
"TargetLangCode": "spa",
"TMGuid": "2433ea4e-0ea6-4339-9c1f-f84bce41ad3b",
"TMOwner": "csiri"
}
向 TM 添加新条目
要求:
POST memoqserverhttpapi/v1/tms/2433ea4e-0ea6-4339-9c1f-f84bce41ad3b/entries/create?authToken=803be2ac-f4a1-4b47-abea-8b12f2a172d8
{
"Modifier": "testuser",
"SourceSegment": "Második szegmens",
"TargetSegment": "Second segment"
}
获取 TM 的条目
要求:
GET memoqserverhttpapi/v1/tms/2433ea4e-0ea6-4339-9c1f-f84bce41ad3b/entries/0?authToken=803be2ac-f4a1-4b47-abea-8b12f2a172d8
回复:
{
"Client": "",
"ContextID": null,
"Created": "2015-10-15T12:45:49.209Z",
"Creator": "admin",
"Document": "",
"Domain": "",
"FollowingSegment": "",
"Key": 0,
"Modified": "2015-10-15T12:45:49.209Z",
"Modifier": "admin",
"PrecedingSegment": "",
"Project": "",
"SourceSegment": "Második szegmens",
"Subject": "",
"TargetSegment": "Second segment",
"CustomMetas": []
}
更新 TM 的条目
要求:
POST memoqserverhttpapi/v1/tms/2433ea4e-0ea6-4339-9c1f-f84bce41ad3b/entries/0/update?authToken=803be2ac-f4a1-4b47-abea-8b12f2a172d8
{
"Modifier": "testuser",
"Modified": "2015-10-15T12:45:49.209Z",
"SourceSegment": "Második szegmens",
"TargetSegment": "Second segment updated"
}
在 TM 中查找句段
要求:
POST memoqserverhttpapi/v1/tms/2433ea4e-0ea6-4339-9c1f-f84bce41ad3b/lookupsegments?authToken=803be2ac-f4a1-4b47-abea-8b12f2a172d8
{
"Segments": [
{
"Segment": "Második"
}
]
}
回复:
{
"Result": [
{
"TMHits": [
{
"MatchRate": 58,
"TransUnit": {
"Client": "",
"ContextID": null,
"Created": "0001-01-01T00:00:00Z",
"Creator": "",
"Document": "",
"Domain": "",
"FollowingSegment": "",
"Key": 0,
"Modified": "2015-10-15T12:52:37.781Z",
"Modifier": "admin",
"PrecedingSegment": "",
"Project": "",
"SourceSegment": "Második szegmens",
"Subject": "",
"TargetSegment": "Second segment updated",
"CustomMetas": []
}
}
]
}
]
}
备注:出于性能原因,操作当前未在返回的 TMHits 对象的 TransUnit 字段的上下文相关字段(ContextID、PrecedingSegment、FollowSegment)中返回有效值。 这些信息可以通过发出一个额外的请求来检索,该请求基于其密钥获取特定的 TM 条目。
TM 中的相关搜索
要求:
POST memoqserverhttpapi/v1/tms/2433ea4e-0ea6-4339-9c1f-f84bce41ad3b/concordance?authToken=803be2ac-f4a1-4b47-abea-8b12f2a172d8
{
"SearchExpression": ["második"]
}
回复:
{
"ConcResult": [
{
"ConcordanceTextRanges": [
{
"Length": 7,
"Start": 0
}
],
"ConcordanceTranslationRanges": [],
"Length": 7,
"StartPos": 0,
"TMEntry": {
"SourceSegment": "Második szegmens",
"TargetSegment": "Second segment updated"
}
}
],
"ConcTransResult": [],
"Errors": [],
"TotalConcResult": 1
}
删除 TM 的条目
要求:
POST memoqserverhttpapi/v1/tms/2433ea4e-0ea6-4339-9c1f-f84bce41ad3b/entries/0/delete?authToken=803be2ac-f4a1-4b47-abea-8b12f2a172d8
2. API 参考
2.1. 验证
负责用户认证。 使用户能够登录和注销 memoQ 服务器。
API |
描述 |
POST v1/auth/login |
使用 memoQ 服务器、Windows 或语言终端用户登录 memoQ 服务器。 它在 memoQ 服务器上为用户创建一个会话。 |
POST v1/auth/logout |
从 memoQ 服务器注销当前用户。 它从 memoQ 服务器中删除用户的会话。 |
2.2. 翻译记忆库
负责翻译记忆库相关的动作。
API |
描述 |
GET v1/tms?srcLang={srcLang}&targetLang={targetLang} |
获取 memoQ 服务器上的翻译记忆库列表。 按指定的源语言或目标语言过滤 TM。 |
GET v1/tms?tmGuid={tmGuid} |
获取指定 Guid 的翻译记忆库。 |
GET v1/tms/{tmGuid} |
获取指定 Guid 的翻译记忆库。 |
GET v1/tms/{tmGuid}/custommetascheme |
获取由 Guid 指定的翻译记忆库的自定义元方案。 |
POST v1/tms/{tmGuid}/concordance |
在 Guid 指定的翻译记忆库中执行相关搜索。 |
POST v1/tms/{tmGuid}/lookupsegments |
在 Guid 指定的翻译记忆库中执行查找操作。 备注:出于性能原因,该操作当前未在返回的 TMHits 对象的 TransUnit 字段的上下文相关字段(ContextID、PrecedingSegment、FollowSegment)中返回有效值。 这些信息可以通过发出一个额外的请求来检索,该请求基于其密钥获取特定的 TM 条目。 |
GET v1/tms/{tmGuid}/entries/{entryId} |
获取由 TM Guid 和条目 ID 指定的翻译记忆库条目。 |
POST v1/tms/{tmGuid}/entries/{entryId}/update |
更新由 TM Guid 和条目 ID 指定的翻译记忆库条目。 |
POST v1/tms/{tmGuid}/entries/create |
在 Guid 指定的 TM 中创建翻译记忆库条目。 |
POST v1/tms/{tmGuid}/entries/{entryId}/delete |
删除由 TM Guid 和条目 ID 指定的翻译记忆库条目。 |
2.3. 术语库
负责术语库相关操作。
API |
描述 |
GET v1/tbs?lang[0]={lang[0]}&lang[1]={lang[1]} |
获取 memoQ 服务器上的术语库列表。 按指定的语言过滤 TB。 |
GET v1/tbs?tbGuid={tbGuid} |
按指定的 Guid 获取术语库。 |
GET v1/tbs/{tbGuid} |
按指定的 Guid 获取术语库。 |
GET v1/tbs/{tbGuid}/metadefinitions |
获取由 Guid 指定的术语库的元定义。 |
POST v1/tbs/{tbGuid}/lookupterms |
在 Guid 指定的术语库中执行查找操作。 |
POST v1/tbs/{tbGuid}/search |
在术语库中查找给定的表达式。 |
GET v1/tbs/{tbGuid}/entries/{entryId} |
获取由 TB Guid 和条目 ID 指定的术语库条目。 |
POST v1/tbs/{tbGuid}/entries/{entryId}/update |
更新由 TB Guid 和条目 ID 指定的术语库条目。 |
POST v1/tbs/{tbGuid}/entries/create?returnNewEntry={returnNewEntry} |
在 Guid 指定的 TB 中创建术语库条目。 |
POST v1/tbs/{tbGuid}/entries/{entryId}/delete |
删除由 TB Guid 和条目 ID 指定的术语库条目。 |
GET v1/tbs/{tbGuid}/entries/{entryId}/entrymetas/{metaname} |
获取术语库条目的入门级元属性的图像。 |
GET v1/tbs/{tbGuid}/entries/{entryId}/languagemetas/{metaname} |
获取术语库条目的语言级别元属性的图像。 |
GET v1/tbs/{tbGuid}/entries/{entryId}/languagemetas/{language}/{metaname} |
获取术语库条目的语言级别元属性的图像。 |
GET v1/tbs/{tbGuid}/entries/{entryId}/termmetas/{metaname} |
获取术语库条目的术语级别元属性的图像。 |
GET v1/tbs/{tbGuid}/entries/{entryId}/termmetas/{termId}/{metaname} |
获取术语库条目的术语级别元属性的图像。 |
POST v1/tbs/{tbGuid}/entries/{entryId}/entrymetas/{metaname} |
设置术语库条目的条目级元属性的图像。 |
POST v1/tbs/{tbGuid}/entries/{entryId}/languagemetas/{metaname} |
设置术语库条目的语言级别元属性的图像。 |
POST v1/tbs/{tbGuid}/entries/{entryId}/languagemetas/{language}/{metaname} |
设置术语库条目的语言级别元属性的图像。 |
POST v1/tbs/{tbGuid}/entries/{entryId}/termmetas/{metaname} |
设置术语库条目的术语级别元属性的图像。 |
POST v1/tbs/{tbGuid}/entries/{entryId}/termmetas/{termId}/{metaname} |
设置术语库条目的术语级别元属性的图像。 |
京ICP备09015132号-996 | 网络文化经营许可证京网文[2017]4225-497号 | 违法和不良信息举报电话:4006561155
© Copyright 2000-2023 北京哲想软件有限公司版权所有 | 地址:北京市海淀区西三环北路50号豪柏大厦C2座11层1105室