openapi: 3.0.1
info:
contact:
email: support@transifex.com
name: Transifex Support
description: "<br/>\n<br/>\n\n# Introduction\n\nThis API is based on **{json:api}**.\n\n{json:api} is a specification that follows shared conventions and standards. This specification enables API discoverability and partial\nself-descriptiveness through conventions. The Json Api specification exposes resources and their relationships representations with\nunique uris and all CRUD operations are performed on those endpoints. With it's simplified approach it assists the API uniformity.\n\nRead more: https://jsonapi.org/\n\nAdditionally, this API is defined using OpenAPI (ex Swagger). This means that you can easily:\n* Generate clients in your preferred: https://swagger.io/tools/swagger-codegen/\n* Download the specification file (see above) and use it in clients like Postman etc\n\n<br />\n<br />\n\n# Pagination\n\nAll list endpoints include pagination to guarantee performant responses. Those endpoints will return `next` and `previous` links in the\nresponse payload (`links` section). The client does not have to construct any pagination specific URLs or headers, just follow those\nlinks.\n\nPage size is fixed to 150 items per page.\n\n<br />\n<br />\n\n# Content Negotiation\n\nThe basic media type for the API is `application/vnd.api+json`. If you want to execute a request that includes data (`POST`, `PATCH`, `DELETE`)\nyou should include this media type in the `Content-Type` header. The only case where a different `Content-Type` header will be accepted is for\nendpoints that can accept file like objects where the media type used should be `multipart/form-data`.\n\nThe base media type this API responds is `application/vnd.api+json`. To retrieve the data in this media type you should include it in the `Accept`\nheader. The only case where the server will return another media type is for endpoint that return file like objects.\nIn this case the media type used should be `*/*` and the server will prioritize the negotiation to the media type dictated from the file.\nNote that `application/vnd.api+json` will be also available for accept header in these cases and will return a JSON serialized representation of the file.\n\nRead more here: https://jsonapi.org/format/#content-negotiation\n\n# File Uploads\n\nThere are three different methods for uploading file content to Transifex:\n* Using Content-Type `application/vnd.api+json` the content must\n be JSON serializable.\n - For content that is directly JSON serializable you can dump the content\n of the file directly and set the `content_encoding` attribute to `text`.\n - For any content, even if it's not JSON serializable (eg .xlsx, .idml or .docx file extensions),\n you can encode the file using the `base64` encoding and set the `content_encoding` attribute to `base64`.\n* Using Content-Type `multipart/form-data` the content can be any raw file, and can\n be send without further processing.\n\n# Asynchronous Processing\n\nAsynchronous operations are triggered via a POST request. The response status in such cases is 202 Accepted, with a link in the Content-Location header.\nTo check the status of the operation, a client can send a request to the location given earlier.\nAn optional `callback_url` can be provided when the asynchronous operation is triggered. If such url is provided, upon completion\na HTTP POST request is executed containing all information required to identify the specific operation:\n\nExample request:\n```\nPOST callback_url HTTP/1.1\nContent-Type: application/json\n\n{\n \"data\": {\n \"type\": resource_strings_async_downloads\",\n \"id\": \"xxxxxxxxx\",\n \"attributes\": {\n \"location\": \"https://rest.api.transifex.com/resource_strings_async_downloads/xxxxxxxxx\",\n \"status\": \"succeeded\"\n }\n }\n}\n```\n\n# Restrictions\n\nThe following Plan based restrictions apply:\n* [Activity Reports](#tag/Activity-Reports) are available to Premium and up\n* [XLIFF export](#tag/Resource-Translations/paths/~1resource_translations_async_downloads/post) is available to Premium and up.\n* [Screenshots](#tag/Context-Screenshots) are available to Premium and up\n\n# Rate Limit\n\nTo maintain optimal performance and availability of the API, we limit the request rate to 500\nrequests/min or 30,000 requests / 5 minutes / IP. Polling endpoints like\n`resource_translations_async_downloads/{resource_translations_async_download_id}` and\n`resource_strings_async_downloads/{resource_strings_async_download_id}` have a rate limit of 1,200 requests/min.\nOnce past the respective limit, requests will be throttled and you will get a 429 Throttled response.\n\n\nExample response:\n```\n{\n \"errors\": [\n {\n \"code\": \"Throttled\",\n \"detail\": \"Request was throttled. Expected available in 60 seconds.\",\n \"status\": \"429\",\n \"title\": \"Throttled\"\n }\n ]\n}\n```\n\n# Authentication\n<!-- ReDoc-Inject: <security-definitions> -->\n"
title: Transifex Activity Reports Resource Translations API
version: '3.0'
x-logo:
altText: Transifex logo
backgroundColor: '#FFFFFF'
url: transifex-blue-logo.svg
servers:
- url: https://rest.api.transifex.com
security:
- bearerAuth: []
tags:
- name: Resource Translations
paths:
/resource_translations:
summary: Get a Resource Translations collection
get:
parameters:
- description: Filter results by a resource
in: query
name: filter[resource]
required: true
schema:
description: Resource identifier.
example: o:organization_slug:p:project_slug:r:resource_slug
pattern: ^o:[a-zA-Z0-9._-]+:p:[a-zA-Z0-9_-]+:r:[a-zA-Z0-9_-]+$
type: string
- description: Filter results by a language
in: query
name: filter[language]
required: true
schema:
description: Language identifier.
example: l:en_US
pattern: ^l:[a-zA-Z0-9@_.-]+$
type: string
- description: 'The cursor used for pagination. The value of the cursor must be retrieved from pagination links included in previous responses; you should not attempt to write them on your own.
'
in: query
name: page[cursor]
schema:
type: string
- in: query
name: filter[date_translated][gt]
required: false
schema:
oneOf:
- example: XXXX-XX-XXTXX:XX:XXZ
format: date-time
type: string
- description: Date, will be treated as UTC by the API
example: XXXX-XX-XX
format: date
type: string
- in: query
name: filter[date_translated][lt]
required: false
schema:
oneOf:
- example: XXXX-XX-XXTXX:XX:XXZ
format: date-time
type: string
- description: Date, will be treated as UTC by the API
example: XXXX-XX-XX
format: date
type: string
- in: query
name: filter[resource_string][key]
required: false
schema:
example: hello_world
minLength: 1
type: string
- in: query
name: filter[resource_string][date_modified][gte]
required: false
schema:
oneOf:
- example: XXXX-XX-XXTXX:XX:XXZ
format: date-time
type: string
- description: Date, will be treated as UTC by the API
example: XXXX-XX-XX
format: date
type: string
- in: query
name: filter[resource_string][date_modified][lte]
required: false
schema:
oneOf:
- example: XXXX-XX-XXTXX:XX:XXZ
format: date-time
type: string
- description: Date, will be treated as UTC by the API
example: XXXX-XX-XX
format: date
type: string
- in: query
name: filter[translated]
required: false
schema:
example: true
type: boolean
- in: query
name: filter[reviewed]
required: false
schema:
example: true
type: boolean
- in: query
name: filter[proofread]
required: false
schema:
example: false
type: boolean
- in: query
name: filter[finalized]
required: false
schema:
example: false
type: boolean
- in: query
name: filter[translator]
required: false
schema:
example: u:username
minLength: 1
type: string
- in: query
name: filter[origin]
required: false
schema:
enum:
- API
- EDITOR
- UPLOAD
- TM
- VENDORS:GENGO
- VENDORS:TEXTMASTER
- VENDORS:E2F
- MT:GOOGLE
- MT:MICROSOFT
- MT:AMAZON
- MT:DEEPL
- AUTOFETCH
- TX:AUTOMATED
- TX:NATIVE_MIGRATION
- TX:PROPAGATED
- TX:MERGED
example: EDITOR
type: string
- in: query
name: filter[task_language_identifier]
required: false
schema:
example: project_slug:task_number:language_code:type
pattern: ^[a-zA-Z0-9._-]+:[0-9]+:[a-zA-Z0-9._-]+:(translation|review|proofread)$
type: string
- description: Use the value `resource_string` to get the list of resource string objects in the response.
explode: false
in: query
name: include
required: false
schema:
enum:
- resource_string
type: string
style: form
- description: Retrieve translation strings containing all of the query tags.
explode: false
in: query
name: filter[resource_string][tags][all]
required: false
schema:
items:
example: tag1,tag2
type: string
minItems: 1
type: array
style: form
- description: Retrieve translation strings containing any of the query tags. If the filter value is *, all strings with any tag will be returned. However, if you use * along with another tag value, such as *,tag1, only strings with either * or 'tag1' tags will be returned.
explode: false
in: query
name: filter[resource_string][tags][any]
required: false
schema:
items:
example: tag1,tag2
type: string
minItems: 1
type: array
style: form
- description: "Retrieve translation strings based on specified query tags.\n\nTo filter strings, use a combination of tags with the following syntax:\n- Use an ampersand ('&') to signify 'AND' functionality, indicating that all specified\n tags must be present.\n- Use a pipe ('|') to signify 'OR' functionality, meaning that at least one of\n the specified tags must be present.\n- Use parentheses '(' to ')' to define the order of statement execution.\n- To use the above special characters as part of the query content, escape them with a\n backslash ('\\\\')\n\nWhen combining AND and OR conditions, the query is evaluated from left to right, following operator precedence and respecting existing parentheses. Specifically, the AND operator (&) takes precedence over the OR operator (|).\n\nFor example, consider the query:\n'tag1&(tag2|tag3)'\n\nThis query is interpreted as follows:\ntag1 AND (tag2 OR tag3), and it returns strings that have both \"tag1\" and either \"tag2\" or \"tag3\"\n\nSimilarly, for the query:\n'tag1&tag2|tag3'\n\nThis query is read as follows:\n(tag1 AND tag2) OR tag3, and it returns strings that have both \"tag1\" and \"tag2\" or have \"tag3\"\n"
explode: false
in: query
name: filter[resource_string][tags][query]
required: false
schema:
example: tag1&tag2|tag3
minLength: 1
type: string
style: form
- description: The page size limit. If not set, the default value is 150. <br> If set, the minimum value it can take is 150 and the maximum 1000.
in: query
name: limit
schema:
example: 150
nullable: true
type: string
responses:
'200':
content:
application/vnd.api+json:
schema:
additionalProperties: false
properties:
data:
description: List of resource translation objects.
items:
additionalProperties: false
properties:
attributes:
additionalProperties: false
description: Resource Translation attributes.
properties:
datetime_created:
description: The date when a resource string is made available, in a target language, to receive translations. When a new resource string is added to the system, the value of this field is the same as the resource string creation date, for every existing target language in the related project. When a new target language is added to a project, the value of this field is the same as the date the target language was added, for all resource strings already in the project.
example: XXXX-XX-XXTXX:XX:XXZ
format: date-time
type: string
datetime_proofread:
description: The date that the resource translation was proofread. Null, if the resource translation is not proofread.
example: XXXX-XX-XXTXX:XX:XXZ
format: date-time
nullable: true
type: string
datetime_reviewed:
description: The date that the resource translation was reviewed. If multiple reviews have occurred, then this date holds the latest. Null, if the resource translation is not reviewed.
example: XXXX-XX-XXTXX:XX:XXZ
format: date-time
nullable: true
type: string
datetime_translated:
description: The date that the resource string was last translated on this language. If multiple edits on the strings have occurred, then this date holds the latest. Null, if the resource string is not translated.
example: XXXX-XX-XXTXX:XX:XXZ
format: date-time
nullable: true
type: string
finalized:
description: If the resource translation is finalized or not. Depending on the number of review steps in the project, this either denotes reviewed (1 review step) or proofread (2 review steps).
example: false
type: boolean
origin:
description: The origin of the translation
enum:
- API
- EDITOR
- UPLOAD
- TM
- VENDORS:GENGO
- VENDORS:TEXTMASTER
- VENDORS:E2F
- MT:GOOGLE
- MT:MICROSOFT
- MT:AMAZON
- MT:DEEPL
- AUTOFETCH
- TX:AUTOMATED
- TX:NATIVE_MIGRATION
- TX:PROPAGATED
- TX:MERGED
example: EDITOR
nullable: true
type: string
proofread:
description: If the resource translation is proofread or not.
example: false
type: boolean
reviewed:
description: If the resource translation is reviewed or not.
example: true
type: boolean
strings:
additionalProperties: false
description: 'Dictionary with the translation content. For pluralized resource strings, the keys will be all the available plural rules for target language, as defined in CLDR, and the values the actual translation for each plural rule.
For non-pluralized resource strings, only the default plural rule (''other'') will be present.
The object will be `null` in case of untranslated content.'
example:
one: hello
other: world
nullable: true
properties:
few:
type: string
many:
type: string
one:
type: string
other:
type: string
two:
type: string
zero:
type: string
required:
- other
type: object
required:
- strings
- reviewed
- proofread
- finalized
- origin
- datetime_created
- datetime_translated
- datetime_reviewed
- datetime_proofread
type: object
id:
description: Resource Translation identifier.
example: o:organization_slug:p:project_slug:r:resource_slug:s:2e354ef120752c67afa1b6855aa80c52:l:el_GR
pattern: ^o:[a-zA-Z0-9._-]+:p:[a-zA-Z0-9_-]+:r:[a-zA-Z0-9_-]+:s:[0-9a-fA-F]{32}:l:[a-zA-Z0-9@_-]+$
type: string
links:
additionalProperties: false
description: Resource Translation links.
properties:
self:
description: Resource Translation details link.
example: /resource_translations/o:organization_slug:p:project_slug:r:resource_slug:s:2e354ef120752c67afa1b6855aa80c52:l:language_code
type: string
required:
- self
type: object
relationships:
additionalProperties: false
description: Resource Translation relationships.
properties:
language:
additionalProperties: false
description: Language object.
properties:
data:
additionalProperties: false
description: Language data container.
properties:
id:
description: Language identifier.
example: l:en_US
pattern: ^l:[a-zA-Z0-9@_.-]+$
type: string
type:
enum:
- languages
type: string
required:
- type
- id
type: object
links:
additionalProperties: false
description: Language related link.
properties:
related:
description: Language details link.
example: /languages/l:en_US
type: string
required:
- related
type: object
required:
- links
- data
type: object
proofreader:
additionalProperties: false
description: User object.
nullable: true
properties:
data:
description: User id.
properties:
id:
description: User identifier.
example: u:user_1
pattern: ^u:[\w.-]+$
type: string
type:
enum:
- users
type: string
required:
- type
- id
type: object
links:
additionalProperties: false
description: User links.
properties:
related:
description: User details link.
example: /users/u:user_1
type: string
required:
- related
type: object
required:
- links
- data
type: object
resource:
additionalProperties: false
description: Resource object.
properties:
data:
additionalProperties: false
description: Resource data container.
properties:
id:
description: Resource identifier.
example: o:organization_slug:p:project_slug:r:resource_slug
pattern: ^o:[a-zA-Z0-9._-]+:p:[a-zA-Z0-9_-]+:r:[a-zA-Z0-9_-]+$
type: string
type:
enum:
- resources
type: string
required:
- type
- id
type: object
links:
additionalProperties: false
description: Resource related link.
properties:
related:
description: Resource details link.
example: /resources/o:organization_slug:p:project_slug:r:resource_slug
type: string
required:
- related
type: object
required:
- links
- data
type: object
resource_string:
additionalProperties: false
description: Resource String object.
properties:
data:
additionalProperties: false
description: Resource String data container.
properties:
id:
description: Resource String identifier.
example: o:organization_slug:p:project_slug:r:resource_slug:s:2e354ef120752c67afa1b6855aa80c52
pattern: ^o:[a-zA-Z0-9._-]+:p:[a-zA-Z0-9_-]+:r:[a-zA-Z0-9_-]+:s:[0-9a-f]{32}
type: string
type:
enum:
- resource_strings
type: string
required:
- type
- id
type: object
links:
additionalProperties: false
description: Resource String related link.
properties:
related:
description: Resource String details link.
example: /resource_strings/o:organization_slug:p:project_slug:r:resource_slug:s:2e354ef120752c67afa1b6855aa80c52
type: string
required:
- related
type: object
required:
- links
- data
type: object
reviewer:
additionalProperties: false
description: User object.
nullable: true
properties:
data:
description: User id.
properties:
id:
description: User identifier.
example: u:user_1
pattern: ^u:[\w.-]+$
type: string
type:
enum:
- users
type: string
required:
- type
- id
type: object
links:
additionalProperties: false
description: User links.
properties:
related:
description: User details link.
example: /users/u:user_1
type: string
required:
- related
type: object
required:
- links
- data
type: object
translator:
additionalProperties: false
description: User object.
nullable: true
properties:
data:
description: User id.
properties:
id:
description: User identifier.
example: u:user_1
pattern: ^u:[\w.-]+$
type: string
type:
enum:
- users
type: string
required:
- type
- id
type: object
links:
additionalProperties: false
description: User links.
properties:
related:
description: User details link.
example: /users/u:user_1
type: string
required:
- related
type: object
required:
- links
- data
type: object
required:
- resource
- language
- resource_string
- translator
- reviewer
- proofreader
type: object
type:
enum:
- resource_translations
type: string
required:
- type
- id
- attributes
- relationships
- links
type: object
type: array
included:
description: List of included resource string objects.
items:
additionalProperties: false
properties:
attributes:
additionalProperties: false
description: Resource String attributes.
properties:
appearance_order:
description: 'The order that the resource string appears in it''s container.
In case of files appearance order is extracted automatically,
where in other cases this may be missing
'
nullable: true
type: integer
character_limit:
description: The maximum translation string character length, excluding variables. Use value 0 to remove the existing character limit.
example: 100
maxi
# --- truncated at 32 KB (233 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/transifex/refs/heads/main/openapi/transifex-resource-translations-api-openapi.yml