GlobalLink Strings REST API

GlobalLink Strings REST API (1.0)

Introduction

The GlobalLink Strings REST API allows you to access the platform to request or send translation data as JSON, edit your content (e.g. changing, adding, deleting, etc) and to control certain features of the platform (e.g. adding tags, uploading screenshots, etc) via API calls.

The GlobalLink Strings API is organized around REST, accepts and returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.

Note: The API base URL api.applanga.com is deprecated but will continue to work for the foreseeable future. All new integrations should use api.globallinkstrings.com.

To make requests to the GlobalLink Strings API you first need to create a Project in the GlobalLink Strings Dashboard.

Then you need to get a Project API Token from the Project Settings (click Project Settings in the Project overview), and click Show API Token.

POST Requests may also require a Personal Access Token to be able to trace actions to a specific user. The Personal Access Token can be sent on any POST request but it is mandatory for some.

Authorization

1. Project API Token

To authenticate your request you need to set the Authorization header to carry your Project API Token in the bearer format (as described here https://tools.ietf.org/html/rfc6750#page-5 ). The value of the Authorization header needs to be 'Bearer ${projectApiToken}'.

Example: Authorization: Bearer deadbeef1337c0decafef00d!decafbad0ddba110deadc0defeedface.

2. Personal Access Token

The Personal Access Token can be sent in one of two headers, depending on the request type:

X-Personal-Access-Token header — on project-related write requests (POST / PUT / DELETE). Set this header in addition to your Project API Token so the action can be attributed to a specific user in the audit trail. Whether this header is mandatory or recommended depends on the endpoint — each endpoint's Authentication note states which applies.

Example: X-Personal-Access-Token: baadf00dfeedfacedecafbaddeadc0de.

Authorization: Bearer — on non-project-related requests. When a request doesn't operate on a specific project (e.g. listing projects, retrieving a project's API Token), the Personal Access Token replaces the Project API Token as the primary authentication. Place it in the Authorization header in bearer format.

Example: Authorization: Bearer baadf00dfeedfacedecafbaddeadc0de.

3. Project Identifier

You also need to pass the ID of your project to the query with the app parameter. https://api.globallinkstrings.com/v1/api?app={project_id}. The project_id is the first part of your Project API Token until the ! e.g. if your Project API Token would be deadbeef1337c0decafef00d!decafbad0ddba110deadc0defeedface the project_id is deadbeef1337c0decafef00d.

4. Branching Projects

If you are using a project with Branching and want to target a specific branch you also need to provide the branch_id through the branch parameter. You can get the branch_id either in the Settings of your project or request it via an api route (see Request Branch Info). Example: https://api.globallinkstrings.com/v1/api?app={project_id}&branch={branch_id}

5. Authorized IP's

For API write access, as an additional security measure you have to specify a list of authorized IP's or IP ranges. Go to your Project in the GlobalLink Strings Dashboard, click Project Settings, if you have API access you will have an input field below Show API Token which will allow you to enter IP addresses (ipv4 and ipv6) or address ranges in CIDR Notation (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing). To allow write access from all ipv4 addresses add 0.0.0.0/0, for all ipv6 addresses ::/0. For unrestricted access add both. Not adding any IP addresses/ranges will block all write access.

Payload Compression

Optional payload compression for API requests is by default supported.

To receive a response with a compressed payload you only need to set the Accept-Encoding header to gzip on a request.

The client then receives the response with a content-encoding: gzip response header and GZIP-encoded payload.

Request Body Size Limits

The maximum allowed size for any API request body is 50 MB. This limit applies to all requests, including JSON payloads and file uploads (e.g. screenshot uploads).

If a request exceeds this limit, the server will respond with HTTP status 413 Request Entity Too Large.

To avoid hitting this limit:

  • Large translation imports: Split your data into multiple smaller requests rather than sending all translations in a single call.
  • Screenshot uploads: Ensure individual screenshot files are under 50 MB before uploading.

Entries

Operations associated with translations. Please note that the terms Entry and Translation are synonymous and are used interchangeably or sometimes together.

entry

_id
string (databaseId)

Unique identifier of the object

key
string

ISO language code.

language
string

Unique identifier of the language for which the entry was created.

group
string (databaseId)

Unique identifier of the object

user
string (databaseId)

Unique identifier of the object

updatedAt
string (date)

ISO 8601 Date

value
string

Entry translation string; this is also referred to as the published string.

draft
string

Entry translation draft string that has not been finalized or still possibly needs review. This is not supported for branching projects.

locked
boolean
Default: false

Indicates if the entry can be edited or not. When this is true, the entry cannot be updated.

src
string

Describes a file origin for the specific string in that language. These file sources can originate from imported via the GlobalLink Strings dashboard or from data written through this API.

comment
string

Useful info about the entry.

status
integer

This is also referred to as the entry's Workflow Statuses. It represents the current state of the entry (translation). See Workflow Statuses and Rules for more information.

Statuses are divided into two categories:

  • System statuses: fixed, built-in values with IDs less than 1000 (currently 0–8). These cannot be renamed or removed.
  • Custom statuses: team-defined values with IDs greater than 1000 (starting at 1001). Created and managed in the team settings.

The system status values are:

Value Label
0 nostatus/new
1 accepted
2 needs review
3 needs translation
4 rejected
5 in order
6 translation certified
7 screenshot review certified
8 pseudo-translated

Values 5–8 are set by the system and cannot be assigned via the POST API; only 0–4 and custom statuses are accepted as input on setStatus, setStatusOnNewStrings, and setStatusOnChangedStrings.

Custom statuses start at 1001 and are defined per team. Use includeStatusDescription=true on the GET endpoint to retrieve a mapping of all status IDs to their labels for a given team.

{
  • "_id": "deadbeef0ddba110cafef00d",
  • "key": "en",
  • "language": "string",
  • "group": "deadbeef0ddba110cafef00d",
  • "user": "deadbeef0ddba110cafef00d",
  • "updatedAt": "2024-01-22T12:40:51.711Z",
  • "value": "string",
  • "draft": "string",
  • "locked": false,
  • "src": "/src/File1",
  • "comment": "string",
  • "status": 0
}

getEntryCounts

additional property
object

Dataset mapped to a language name. ISO language codes corresponding to languages in the project is mapped to various entries statistics described here. Essentially the counts are calculated per language.

{
  • "<language>1": {
    },
  • "<language>2": {
    }
}

Posting translation data

Authentication: Requires a Project API Token in the Authorization header. Additionally providing a Personal Access Token via the X-Personal-Access-Token header is recommended so the action can be attributed to a specific user.

Personal Access Token Permission Requirements:

  • create_and_update_translations

Use this endpoint to upload translation strings to a project or to a specific branch if the project is a branching project. The API will identify your project and authenticate the token. If your request is authorized the data will be written to your project and a json object describing the changes will be returned. Otherwise you will receive an http error.

Authorizations:
(Bearer Project API TokenX-Personal-Access-Token Header (recommended))
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

header Parameters
X-Personal-Access-Token
string
Example: baadf00dfeedfacedecafbaddeadc0de

For POST requests it is recommended and in some cases required to provide a Personal Access Token. To do so, set the X-Personal-Access-Token header with your token.

Example: X-Personal-Access-Token: baadf00dfeedfacedecafbaddeadc0de.

Request Body schema: application/json
object
object

Set a custom name for any language in the request body. A language code should be set as the key and the custom language name as the value. The language set here must correspond to one of the languages in the request data or else it will be ignored.

Note that the language code must be a valid ISO language code. GlobalLink Strings supports all ISO 639-1, 639-2, and 639-3 language codes. For more information where to find them please see: Adding and Removing Languages.

Additionally you can also specify a custom language code either as 2 letter lowercase language e.g. "pt" or combined with an uppercase region code e.g. "pt-BR". If the language code is not valid as described above an error response will be returned. As an example if you want to upload some strings for a language xx-ZZ as shown below

{
    "data": {
        "xx-ZZ" {
            "main": {
                "entries": {
                    "key1":{
                        "d":"draft1",
                        "v":"value1",
                        "src":"/src/File1"
                    },
                }
            }
        }
    }
}

to set the language display of name of xx-ZZ to Custom display name for xx-ZZ for example, update the request body like so

{
    "data": {
        "xx-ZZ" {
            "main": {
                "entries": {
                    "key1":{
                        "d":"draft1",
                        "v":"value1",
                        "src":"/src/File1"
                    },
                }
            }
        }
    },
    "languageDisplayNames": {
        "xx-ZZ": "Custom display name for xx-ZZ"
    }
}

It supports updating the display name for any language, not just custom ones, while keeping the underlying language code unchanged. The language code must already exist in the project for the update to be applied. This property should only be used to correct mistakes in display names and not as a general method for renaming or managing locales.

object

Top-level data object

Responses

Response Schema: application/json
total
integer

Total number of entries uploaded

added
integer

Number of new entries added

updated
integer

Number of existing entries updated

tagUpdates
integer

Number of tags updated

groupChanged
integer

Count of entries reassigned to a different group

groupCountChanges
object

Maps group ids to the count of entries added

object
keys
Array of strings

Request samples

Content type
application/json
Example

Basic example with no only the setStatus set to needs review(2) in options and the value, draft set in entry data.

{
  • "options": {
    },
  • "data": {
    }
}

Response samples

Content type
application/json
{
  • "total": 1,
  • "added": 1,
  • "updated": 1,
  • "tagUpdates": 0,
  • "groupChanged": 1,
  • "groupCountChanges": {
    },
  • "_additionalData": {
    },
  • "keys": [
    ]
}

Requesting translation data.

The API will identify your project and authenticate the token and return your Project's translation data.

Note If you are using a Branching Project and want to request a specific branch you also need to provide the branch_id as a parameter, please see here The API is using a Content Delivery Network for fast and reliable content distribution. It is updated in fixed intervals and it therefore might take up to 10 minutes until changes made in the dashboard appear live in the api.

To limit the response data to certain groups, and/or languages, and/or tags, and/or status you can add query parameters requestedLanguages, requestedGroups, requestedTagIds and requestedStatus, as json string arrays which have to be urlencoded as well.

An Example for requested group main and languages en and de: https://api.globallinkstrings.com/v1/api?app={project_id}&requestedGroups=[%22main%22]&requestedLanguages=[%22en%22,%22de%22]&requestedTagIds=[%22tag_id_1%22, %22tag_id_2%22]&requestedStatus=[1,%202].

If you do not request any languages or groups, all groups and languages will be returned. If you have not activated groups and created additional groups, all your translations will be in group main.

It is also possible to include additional data or remove data from the response by adding additional query parameters, see the query parameters below.

Authorizations:
Bearer Project API Token
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

includeSrc
boolean
Default: false
Example: includeSrc=true

If set to true, adds src property which describes a file origin for the specific string in that specific language. These file sources can originate from imported .xliff files or from data written through this API.

includeStatus
boolean
Default: false
Example: includeStatus=true

If set to true, adds status property which describes the current state of the translation. Use the option in combination with keepEmptyDataEntries to include the status for entries without translation.

includeComment
boolean
Default: false
Example: includeComment=true

If set to true, adds comment property of the translation if a comment was made.

includeLockInfo
boolean
Default: false
Example: includeLockInfo=true

If set to true, adds locked property to the translation, to indicate if it is locked or not. Use the option in combination with keepEmptyDataEntries to include the locking information for entries without translation.

includeDescription
boolean
Default: false
Example: includeDescription=true

If set to true, adds description property of the translation keys in the base language.

includeMeta
boolean
Default: false
Example: includeMeta=true

If set to true, adds meta (metadata) property of the translation keys in the base language. Empty metadata values are not included.

includeMetaForAllLanguages
boolean
Default: false
Example: includeMetaForAllLanguages=true

If set to true, adds meta (metadata) property of the translation keys in all languages. Empty metadata values are not included.

includeDraft
boolean
Default: true
Example: includeDraft=false

If set to true, adds d(draft) property.

includeValue
boolean
Default: true
Example: includeValue=false

If set to true, adds v(value) property.

keepEmptyDataEntries
boolean
Default: false
Example: keepEmptyDataEntries=true

By default all groups and entries that do not have values or draft get deleted from response. Set this to true to include them.

includeUpdateDate
boolean
Default: false
Example: includeUpdateDate=true

If set to true, adds updatedAt property.

includeUserId
boolean
Default: false
Example: includeUserId=true

If set to true, adds userId property.

includeLanguageId
boolean
Default: false
Example: includeLanguageId=true

If set to true, adds languageId property under each group.

includeGroupId
boolean
Default: false
Example: includeGroupId=true

If set to true, adds groupId property under each group.

includeStringLength
boolean
Default: false
Example: includeStringLength=true

If set to true, the length restriction is included in the translation data.

The possible values for the returned maxLength property are:

  • positive number is the maximum allowed character length. The restriction in the project base language is automatically applied to all target languages unless there is a different value specified for that target language entry;
  • no value for base language means that there is no character length restriction. In target language it means that the base language restriction applied to the target language. (Or there is no restriction if none was applied in base language).
  • -1 have is used for target languages only and it means the length check is disabled, no matter the maxLength value in the base language;
removeCrChar
boolean
Default: false
Example: removeCrChar=true

If set to true, removes Windows CR character from downloaded data.

includeStatusDescription
boolean
Default: false
Example: includeStatusDescription=true

When this parameter is set to true, the response body includes a top-level property statusDescription, which is an object mapping status labels (strings) to their numeric IDs.

Statuses are divided into two categories:

  • System statuses: fixed, built-in values with IDs less than 1000 (currently 0–8). These are the same across all projects.
  • Custom statuses: team-defined values with IDs greater than 1000 (starting at 1001). These vary per team.

An example statusDescription object:

"statusDescription": {
    "nostatus/new": 0,
    "accepted": 1,
    "needs review": 2,
    "needs translation": 3,
    "rejected": 4,
    "in order": 5,
    "translation certified": 6,
    "screenshot review certified": 7,
    "pseudo-translated": 8,
    "testing": 1001,
    "In Custom Review": 1002
}

In the preceding example, statuses 0–8 are system statuses (always lowercased in the map); "testing": 1001 and "In Custom Review": 1002 are custom team-defined statuses, whose keys preserve the label as defined in the team settings.

Use the statusDescription map to look up the label for a given entry status integer, rather than hardcoding status names in your integration.

Example request: https://api.globallinkstrings.com/v1/api?app={project_id}&includeSrc=true&includeStatus=true&includeStatusDescription=true

requestedGroups
Array of strings
Example: requestedGroups=["main"]

Limit scope of entries returned to the specified groups. Note that the group names are expected here.

requestedLanguages
Array of strings
Example: requestedLanguages=["en","de"]

Limit scope of entries returned to the specified languages. Note that the language codes are expected here.

requestedTagIds
Array of strings
Example: requestedTagIds=["cafef00dbaadf00d1337c0de","cafef00ddeadc0de1337c0de"]

Limit scope of entries returned to the specified Tags. Note that the tag id's are expected here. If both the requestedOrderId and requestedTagIds parameters are used in the same call, the response will include only the keys that are part of the specified order and are simultaneously associated with the given tags.

requestedOrderId
string
Example: requestedOrderId=baadf00ddeadc0defeedface

Limit scope of entries returned to the specified Order. Note an order id is needed. If both the requestedOrderId and requestedTagIds parameters are used in the same call, the response will include only the keys that are part of the specified order and are simultaneously associated with the given tags.

requestedStatus
Array of integers
Example: requestedStatus=[1, 2]

Limit scope of entries returned to the specified statuses.

Responses

Response Schema: application/json
_id
string (databaseId)

Unique identifier of the object

__v
string

Project version

draftModeEnabled
boolean
Default: false

Indicates if draft mode is enabled for the project, see this guide for more info on draft mode /docs/applanga-mobile-sdks/draft_on-device-testing.

collectMissingEnabled
boolean
Default: false
baseLanguage
string

This is also referred to as the source language of a project. Entries are translated from this language to other languages.

name
string

This is the name of the project.

object

Map of translation status labels to their numeric status IDs. Included only when includeStatusDescription=true is set on the request. See the includeStatusDescription query parameter for the full structure, the system vs custom status distinction, and an example.

object

Top-level data object.

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api?app=deadbeef0ddba110cafef00d&branch=deadbeef0ddba110cafef00d&includeSrc=true&includeStatus=true&includeComment=true&includeLockInfo=true&includeDescription=true&includeMeta=true&includeMetaForAllLanguages=true&includeDraft=false&includeValue=false&keepEmptyDataEntries=true&includeUpdateDate=true&includeUserId=true&includeLanguageId=true&includeGroupId=true&includeStringLength=true&removeCrChar=true&includeStatusDescription=true&requestedGroups=%5B%22main%22%5D&requestedLanguages=%5B%22en%22%2C%22de%22%5D&requestedTagIds=%5B%22cafef00dbaadf00d1337c0de%22%2C%22cafef00ddeadc0de1337c0de%22%5D&requestedOrderId=baadf00ddeadc0defeedface&requestedStatus=%5B1%2C%202%5D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PROJECT_API_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "_id": "deadbeef0ddba110cafef00d",
  • "__v": "string",
  • "draftModeEnabled": false,
  • "collectMissingEnabled": false,
  • "baseLanguage": "string",
  • "name": "string",
  • "statusDescription": {
    },
  • "data": {
    }
}

Requesting project entry counts.

The API will identify your project and authenticate the token and return your App translation data.

Authorizations:
Bearer Project API Token
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

tagId
string
Example: tagId=deadbeef0ddba110cafef00d

This is the id of a tag, inside the given project, to filter a query by. The query will always be limited to the given Tag scope

Responses

Response Schema: application/json
additional property
object

Dataset mapped to a language name. ISO language codes corresponding to languages in the project is mapped to various entries statistics described here. Essentially the counts are calculated per language.

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api/entryCount?app=deadbeef0ddba110cafef00d&branch=deadbeef0ddba110cafef00d&tagId=deadbeef0ddba110cafef00d");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PROJECT_API_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "de": {
    },
  • "en": {
    }
}

Delete one or multiple translations

Authentication: Requires both a Project API Token in the Authorization header and a Personal Access Token in the X-Personal-Access-Token header. The Personal Access Token is mandatory for this endpoint.

Personal Access Token Permission Requirements:

  • delete_translations

Use this endpoint to delete entries in a project. The entries are deleted in all languages.

If any of the keys provided is locked, the endpoint would return an error, showing the locked key and languages.

The API will identify your project and authenticate the token and delete the entries.

Authorizations:
(Bearer Project API TokenX-Personal-Access-Token Header (required))
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

header Parameters
X-Personal-Access-Token
string
Example: baadf00dfeedfacedecafbaddeadc0de

For POST requests it is recommended and in some cases required to provide a Personal Access Token. To do so, set the X-Personal-Access-Token header with your token.

Example: X-Personal-Access-Token: baadf00dfeedfacedecafbaddeadc0de.

Request Body schema: application/json
entries
required
Array of strings

Array of entry keys to be deleted

Responses

Response Schema: application/json
object

Request samples

Content type
application/json
{
  • "entries": [
    ]
}

Response samples

Content type
application/json
{ }

Delete a language

Authentication: Requires both a Project API Token in the Authorization header and a Personal Access Token in the X-Personal-Access-Token header. The Personal Access Token is mandatory for this endpoint.

Personal Access Token Permission Requirements:

  • delete_languages

Deletes a language.

Authorizations:
(Bearer Project API TokenX-Personal-Access-Token Header (required))
path Parameters
langCode
required
string
Example: en,de,fr,fr-Fr,zh-Hant-HK,de-LU

ISO language code

query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

header Parameters
X-Personal-Access-Token
string
Example: baadf00dfeedfacedecafbaddeadc0de

For POST requests it is recommended and in some cases required to provide a Personal Access Token. To do so, set the X-Personal-Access-Token header with your token.

Example: X-Personal-Access-Token: baadf00dfeedfacedecafbaddeadc0de.

Responses

Response Schema: application/json
object

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api/languages/en,de,fr,fr-Fr,zh-Hant-HK,de-LU?app=deadbeef0ddba110cafef00d&branch=deadbeef0ddba110cafef00d");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "X-Personal-Access-Token: baadf00dfeedfacedecafbaddeadc0de");
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PROJECT_API_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{ }

Tags

Operations related to tags. Please see the following guide for more information about tags.

Creating a new tag

Authentication: Requires a Project API Token in the Authorization header. Additionally providing a Personal Access Token via the X-Personal-Access-Token header is recommended so the action can be attributed to a specific user.

Personal Access Token Permission Requirements:

  • create_and_update_tags

Create a new tag in a project using this endpoint. The API will identify your project and authenticate the token and create a new tag.

Authorizations:
(Bearer Project API TokenX-Personal-Access-Token Header (recommended))
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

header Parameters
X-Personal-Access-Token
string
Example: baadf00dfeedfacedecafbaddeadc0de

For POST requests it is recommended and in some cases required to provide a Personal Access Token. To do so, set the X-Personal-Access-Token header with your token.

Example: X-Personal-Access-Token: baadf00dfeedfacedecafbaddeadc0de.

Request Body schema: application/json
name
required
string

Name of the tag.

entryKeys
Array of strings

List of keys for entries assigned to the tag.

category
string

Tags can have specific category associations. Categories are used for more specific tracking of keys. Categories exist within a project and can be used to easily differentiate between tags and to track things like platforms, releases, and workflows (e.g. design review, development review, etc.) The GlobalLink Strings dashboard is pre-populated with some platform-related categories: iOS, Android, Web, and Jira. Category options can be managed on the Project Settings page.

Responses

Response Schema: application/json
name
required
string

Name of the tag.

entryKeys
Array of strings

List of keys for entries assigned to the tag.

category
string

Tags can have specific category associations. Categories are used for more specific tracking of keys. Categories exist within a project and can be used to easily differentiate between tags and to track things like platforms, releases, and workflows (e.g. design review, development review, etc.) The GlobalLink Strings dashboard is pre-populated with some platform-related categories: iOS, Android, Web, and Jira. Category options can be managed on the Project Settings page.

id
string (databaseId)

Unique identifier of the object

createdAt
string (date)

ISO 8601 Date

updatedAt
string (date)

ISO 8601 Date

Request samples

Content type
application/json
{
  • "name": "my_tag_2",
  • "entryKeys": [
    ],
  • "category": "Web"
}

Response samples

Content type
application/json
{
  • "id": "cafef00dbaadf00d1337c0de",
  • "name": "my_tag_2",
  • "entryKeys": [
    ],
  • "category": "Web",
  • "createdAt": "2020-01-23T12:49:40.376Z",
  • "updatedAt": "2020-01-23T17:22:05.276Z"
}

Requesting a list of tags

Request tags in a project with this endpoint. The API will identify your project and authenticate the token and return all the tags in the Project.

Authorizations:
Bearer Project API Token
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

Responses

Response Schema: application/json
Array
name
required
string

Name of the tag.

entryKeys
Array of strings

List of keys for entries assigned to the tag.

category
string

Tags can have specific category associations. Categories are used for more specific tracking of keys. Categories exist within a project and can be used to easily differentiate between tags and to track things like platforms, releases, and workflows (e.g. design review, development review, etc.) The GlobalLink Strings dashboard is pre-populated with some platform-related categories: iOS, Android, Web, and Jira. Category options can be managed on the Project Settings page.

id
string (databaseId)

Unique identifier of the object

createdAt
string (date)

ISO 8601 Date

updatedAt
string (date)

ISO 8601 Date

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api/tags?app=deadbeef0ddba110cafef00d&branch=deadbeef0ddba110cafef00d");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PROJECT_API_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
[
  • {
    }
]

Requesting a tag by id Deprecated

Request for a single tag in a project with this endpoint. The API will identify your project and authenticate the token and then return the tag whose id is specified in the url denoted by tagId.

Authorizations:
Bearer Project API Token
path Parameters
tagId
required
string
Example: cafef00dbaadf00d1337c0de

Unique identifier of a tag

query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

Responses

Response Schema: application/json
name
required
string

Name of the tag.

entryKeys
Array of strings

List of keys for entries assigned to the tag.

category
string

Tags can have specific category associations. Categories are used for more specific tracking of keys. Categories exist within a project and can be used to easily differentiate between tags and to track things like platforms, releases, and workflows (e.g. design review, development review, etc.) The GlobalLink Strings dashboard is pre-populated with some platform-related categories: iOS, Android, Web, and Jira. Category options can be managed on the Project Settings page.

id
string (databaseId)

Unique identifier of the object

createdAt
string (date)

ISO 8601 Date

updatedAt
string (date)

ISO 8601 Date

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api/tags/cafef00dbaadf00d1337c0de?app=deadbeef0ddba110cafef00d&branch=deadbeef0ddba110cafef00d");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PROJECT_API_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "name": "string",
  • "entryKeys": [
    ],
  • "category": "string",
  • "id": "deadbeef0ddba110cafef00d",
  • "createdAt": "2024-01-22T12:40:51.711Z",
  • "updatedAt": "2024-01-22T12:40:51.711Z"
}

Updating a tag by id

Authentication: Requires a Project API Token in the Authorization header. Additionally providing a Personal Access Token via the X-Personal-Access-Token header is recommended so the action can be attributed to a specific user.

Update a tag in a project with this endpoint. The API will identify your project and authenticate the token and then the API will update the tag whose id is specified in the url with the request body.

Authorizations:
(Bearer Project API TokenX-Personal-Access-Token Header (recommended))
path Parameters
tagId
required
string
Example: cafef00dbaadf00d1337c0de

Unique identifier of a tag

query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

header Parameters
X-Personal-Access-Token
string
Example: baadf00dfeedfacedecafbaddeadc0de

For POST requests it is recommended and in some cases required to provide a Personal Access Token. To do so, set the X-Personal-Access-Token header with your token.

Example: X-Personal-Access-Token: baadf00dfeedfacedecafbaddeadc0de.

Request Body schema: application/json
name
string

Name of the tag.

entryKeys
Array of strings

List of keys for entries assigned to the tag.

accumulative
boolean

If true the list of keys for entries is added to the current list of keys in the tag. Otherwise the list overwrites the current tag content.

category
string

Tags can have specific category associations. Categories are used for more specific tracking of keys. Categories exist within a project and can be used to easily differentiate between tags and to track things like platforms, releases, and workflows (e.g. design review, development review, etc.) The GlobalLink Strings dashboard is pre-populated with some platform-related categories: iOS, Android, Web, and Jira. Category options can be managed on the Project Settings page.

Responses

Response Schema: application/json
name
required
string

Name of the tag.

entryKeys
Array of strings

List of keys for entries assigned to the tag.

category
string

Tags can have specific category associations. Categories are used for more specific tracking of keys. Categories exist within a project and can be used to easily differentiate between tags and to track things like platforms, releases, and workflows (e.g. design review, development review, etc.) The GlobalLink Strings dashboard is pre-populated with some platform-related categories: iOS, Android, Web, and Jira. Category options can be managed on the Project Settings page.

id
string (databaseId)

Unique identifier of the object

createdAt
string (date)

ISO 8601 Date

updatedAt
string (date)

ISO 8601 Date

Request samples

Content type
application/json
{
  • "name": "my_tag_2",
  • "entryKeys": [
    ],
  • "accumulative": true,
  • "category": "Web"
}

Response samples

Content type
application/json
{
  • "name": "string",
  • "entryKeys": [
    ],
  • "category": "string",
  • "id": "deadbeef0ddba110cafef00d",
  • "createdAt": "2024-01-22T12:40:51.711Z",
  • "updatedAt": "2024-01-22T12:40:51.711Z"
}

Delete a tag by id

Authentication: Requires both a Project API Token in the Authorization header and a Personal Access Token in the X-Personal-Access-Token header. The Personal Access Token is mandatory for this endpoint.

Personal Access Token Permission Requirements:

  • delete_tags_screenshots

Delete a single tag in a project with this endpoint. Associated screenshots will be deleted. The API will identify your project and authenticate the token and then return the tag whose id is specified in the url denoted by tagId.

Authorizations:
(Bearer Project API TokenX-Personal-Access-Token Header (required))
path Parameters
tagId
required
string
Example: cafef00dbaadf00d1337c0de

Unique identifier of a tag

query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

header Parameters
X-Personal-Access-Token
string
Example: baadf00dfeedfacedecafbaddeadc0de

For POST requests it is recommended and in some cases required to provide a Personal Access Token. To do so, set the X-Personal-Access-Token header with your token.

Example: X-Personal-Access-Token: baadf00dfeedfacedecafbaddeadc0de.

Responses

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api/tags/cafef00dbaadf00d1337c0de?app=deadbeef0ddba110cafef00d&branch=deadbeef0ddba110cafef00d");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "X-Personal-Access-Token: baadf00dfeedfacedecafbaddeadc0de");
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PROJECT_API_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "message": "Error message!"
}

Requesting a tag by name

Request for a single tag in a project with this endpoint. The API will identify your project and authenticate the token and then return the tag whose name is specified in the url denoted by tagName.

Authorizations:
Bearer Project API Token
path Parameters
tagName
required
string
Example: my%20other%20tag

Unique name of a tag uri encoded for special characters.

query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

Responses

Response Schema: application/json
name
required
string

Name of the tag.

entryKeys
Array of strings

List of keys for entries assigned to the tag.

category
string

Tags can have specific category associations. Categories are used for more specific tracking of keys. Categories exist within a project and can be used to easily differentiate between tags and to track things like platforms, releases, and workflows (e.g. design review, development review, etc.) The GlobalLink Strings dashboard is pre-populated with some platform-related categories: iOS, Android, Web, and Jira. Category options can be managed on the Project Settings page.

id
string (databaseId)

Unique identifier of the object

createdAt
string (date)

ISO 8601 Date

updatedAt
string (date)

ISO 8601 Date

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api/tag/byName/my%20other%20tag?app=deadbeef0ddba110cafef00d&branch=deadbeef0ddba110cafef00d");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PROJECT_API_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "name": "string",
  • "entryKeys": [
    ],
  • "category": "string",
  • "id": "deadbeef0ddba110cafef00d",
  • "createdAt": "2024-01-22T12:40:51.711Z",
  • "updatedAt": "2024-01-22T12:40:51.711Z"
}

Requesting a tag by id

Request for a single tag in a project with this endpoint. The API will identify your project and authenticate the token and then return the tag whose id is specified in the url denoted by tagId.

Replaces the /v1/api/tags/{tagId} route.

Authorizations:
Bearer Project API Token
path Parameters
tagId
required
string
Example: cafef00dbaadf00d1337c0de

Unique identifier of a tag

query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

Responses

Response Schema: application/json
name
required
string

Name of the tag.

entryKeys
Array of strings

List of keys for entries assigned to the tag.

category
string

Tags can have specific category associations. Categories are used for more specific tracking of keys. Categories exist within a project and can be used to easily differentiate between tags and to track things like platforms, releases, and workflows (e.g. design review, development review, etc.) The GlobalLink Strings dashboard is pre-populated with some platform-related categories: iOS, Android, Web, and Jira. Category options can be managed on the Project Settings page.

id
string (databaseId)

Unique identifier of the object

createdAt
string (date)

ISO 8601 Date

updatedAt
string (date)

ISO 8601 Date

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api/tag/byId/cafef00dbaadf00d1337c0de?app=deadbeef0ddba110cafef00d&branch=deadbeef0ddba110cafef00d");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PROJECT_API_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "name": "string",
  • "entryKeys": [
    ],
  • "category": "string",
  • "id": "deadbeef0ddba110cafef00d",
  • "createdAt": "2024-01-22T12:40:51.711Z",
  • "updatedAt": "2024-01-22T12:40:51.711Z"
}

Screenshots

Operations associated with screenshots. Please see these guides for more information regarding screenshots

Screenshot Hashes

If you want to save time and bandwidth you can reduce the amount of screenshot uploads by checking the sha1 hash property of an already uploaded screenshot to see if your local file is different and only upload if thats the case. But be aware that the sha1 hash is only available for screenshots uploaded after 15. Nov. 2023.

The sha1 hash is stored in hex format and you could generate the hash locally in nodejs with the following code:

const Crypto = require('crypto');
const fs = require('fs');

const hashSum = Crypto.createHash('sha1');
const buffer = fs.readFileSync('/path/to/your/screenshot');
hashSum.update(buffer);

const hex = hashSum.digest('hex');
return hex;

Uploading screenshot

Authentication: Requires a Project API Token in the Authorization header. Additionally providing a Personal Access Token via the X-Personal-Access-Token header is recommended so the action can be attributed to a specific user.

Personal Access Token Permission Requirements:

  • upload_screenshots

Upload screenshots to a project using this endpoint. Send a POST request to https://api.globallinkstrings.com/v1/api/screenshots?app={project_id} with a FormData containing two keys data and file. The API will identify your project and authenticate the token. If your request is authorized the screenshot will be uploaded to your project and a json object describing the changes will be returned. Otherwise you will receive an http error.

Authorizations:
(Bearer Project API TokenX-Personal-Access-Token Header (recommended))
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

header Parameters
X-Personal-Access-Token
string
Example: baadf00dfeedfacedecafbaddeadc0de

For POST requests it is recommended and in some cases required to provide a Personal Access Token. To do so, set the X-Personal-Access-Token header with your token.

Example: X-Personal-Access-Token: baadf00dfeedfacedecafbaddeadc0de.

Request Body schema: multipart/form-data

Note: the useOCR option which enables the detection of string positions on the image is no longer supported. String postions on images should be managed on the GlobalLink Strings dashboard. Find out more information on how to manage screenshots from the dashboard here.

object

Object containing screenshot data.

file
string <binary>

Image file to upload

Responses

Response Schema: application/json
object

Request samples

Content type
multipart/form-data
Example
{
  "data": {
    "screenTag": "tag99",
    "width": 600,
    "height": 400,
    "deviceModel": "test device model",
    "platform": "iOS",
    "operatingSystem": "iOS 16",
    "bundleVersion": "1.0.5",
    "deviceLanguageLong": "en",
    "category": "iOS",
    "useFuzzyMatching": false,
    "stringPositions": [
      {
        "key": "Key99",
        "x": 100,
        "y": 10,
        "width": 200,
        "height": 40
      },
      {
        "key": "Key98",
        "x": 100,
        "y": 300,
        "width": 100,
        "height": 20
      }
    ]
  },
  "file": "<binary file content>"
}

Response samples

Content type
application/json
{ }

Requesting screenshot data.

Request screenshots in a project with this endpoint. The API will identify your project and authenticate the token and return all the screenshots in the Project.

Note: The generated url's are only working for 15 minutes for security reasons. Be aware that you have to download the images within that timeframe or redo the request to get newly generated urls.

Authorizations:
Bearer Project API Token
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

Responses

Response Schema: application/json
Array
url
string

Screenshot URL. Note: The generated URLs are only working for 15 minutes for security reasons. Be aware that you have to download the images within that timeframe or redo the request to get newly generated URLs.

originalName
string

Name for the screenshot file as uploaded.

mimetype
string
Enum: "image/jpeg" "image/png" "image/jpg"
object

Screenshot tag

object

More information about the screenshot.

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api/screenshots?app=deadbeef0ddba110cafef00d&branch=deadbeef0ddba110cafef00d");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PROJECT_API_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
[
  • {
    }
]

Set custom screen order for screenshots

Authentication: Requires a Project API Token in the Authorization header. Additionally providing a Personal Access Token via the X-Personal-Access-Token header is recommended so the action can be attributed to a specific user.

Personal Access Token Permission Requirements:

  • create_and_update_tags

This endpoint updates the sort order of all screen tags within a project to reflect a custom-defined order. It accepts an ordered array of screen names and applies a sequential ordering for all screens displayed on the dashboard. The request must include all screen names existing in the project. The project must have at least one screenshot. If any screen name is not found in the project or the screen name list is incomplete, an error response will be returned.

Authorizations:
(Bearer Project API TokenX-Personal-Access-Token Header (recommended))
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

header Parameters
X-Personal-Access-Token
string
Example: baadf00dfeedfacedecafbaddeadc0de

For POST requests it is recommended and in some cases required to provide a Personal Access Token. To do so, set the X-Personal-Access-Token header with your token.

Example: X-Personal-Access-Token: baadf00dfeedfacedecafbaddeadc0de.

Request Body schema: application/json
required
screenNames
required
Array of strings

Responses

Response Schema: application/json
success
boolean
updatedCount
integer

Request samples

Content type
application/json
{
  • "screenNames": [
    ]
}

Response samples

Content type
application/json
{
  • "success": true,
  • "updatedCount": 3
}

Mass delete screenshots for given queries

Authentication: Requires both a Project API Token in the Authorization header and a Personal Access Token in the X-Personal-Access-Token header. The Personal Access Token is mandatory for this endpoint.

Personal Access Token Permission Requirements:

  • delete_tags_screenshots

This endpoint deletes screenshots based on the specified parameters in the request body. The deletion is performed for screenshots that match all given criteria, where conditions are combined using AND operations. Additionally, it will silently delete tags associated with affected screenshots if no screenshots remain for those tags (only for those affected screenshots).

Deletions will only happen when we find matching screenshots. If no matching screenshots were found for a given query no screenshots or tags will be deleted.

The API will identify your project and authenticate the token.

Authorizations:
(Bearer Project API TokenX-Personal-Access-Token Header (required))
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

header Parameters
X-Personal-Access-Token
string
Example: baadf00dfeedfacedecafbaddeadc0de

For POST requests it is recommended and in some cases required to provide a Personal Access Token. To do so, set the X-Personal-Access-Token header with your token.

Example: X-Personal-Access-Token: baadf00dfeedfacedecafbaddeadc0de.

Request Body schema: application/json
tagNames
required
Array of strings

Array of tag names of screenshots to be deleted (Only one of tagIds or tagNames is required)

tagIds
required
Array of strings

Array of tag ids of screenshots to be deleted. (Only one of tagIds or tagNames is required)

latestOnly
integer
Default: false
  • false: Only the screenshot variants that match specific languages, resolutions, tagCategories, os, and devices provided in the query. The deletion is performed for screenshots that match all given criteria, where conditions are combined using 'AND' operations.

  • true: Only the latest screenshot variant per tag and languages will be affected given the current query specifications. The latest implies the last added screenshot for per tag and per languages for the given query results.

    languages array is required when latestOnly is set to true.

languages
Array of strings

Array of language codes. ex) ["en", "de"].

Empty Array: Causes the endpoint to return 404 Not Found error.

Required: If any of the additional filter values, resolutions, os, device, versions, tagCategories are set, languages array is required.

Omitted: All languages options will be considered if no additional filter values are set.

resolutions
Array of strings

Array of resolution strings (ex. 100x100, width x height) of screenshots to be deleted. ex) ["100x200", "100x100"]

Empty Array: Causes the endpoint to return 404 Not Found error.

Omitted: All resolutions options will be considered.

tagCategories
Array of strings

Array of tag categories. ex) ["category1", "category2"]

Empty Array: Causes the endpoint to return 404 Not Found error.

Omitted: All tagCategories options will be considered.

os
Array of strings

Array of operating system names. ex) ["os1", "os2"]

Empty Array: Causes the endpoint to return 404 Not Found error.

Omitted: All os options will be considered.

devices
Array of strings

Array of devices. ex) ["device1", "device2"]

Empty Array: Causes the endpoint to return 404 Not Found error.

Omitted: All devices options will be considered.

versions
Array of strings

Array of version strings. ex) ["1.0", "1.2"]

Empty Array: Causes the endpoint to return 404 Not Found error.

Omitted: All versions options will be considered.

Responses

Response Schema: application/json
screenshotsDeletedCount
integer

Count of actual screenshots deleted

Request samples

Content type
application/json
{
  • "tagNames": [
    ],
  • "latestOnly": false,
  • "devices": [
    ],
  • "languages": [
    ],
  • "versions": [
    ],
  • "resolutions": [
    ],
  • "tagCategories": [
    ]
}

Response samples

Content type
application/json
{
  • "screenshotsDeletedCount": 2
}

Tags And Screenshot Deletion

Operations related to tags and screenshots deletion. Please see the delete tag by id and the mass screenshot delete api for more information.

Branches

Operations associated with branches. To learn more about branching please have a look at our Branching Documentation.

All available API features can be extended with the "branch" parameter and will perform the same thing just on the specified branch. If no branch is specified the original Branch will be taken.

Create Branch

Authentication: Requires both a Project API Token in the Authorization header and a Personal Access Token in the X-Personal-Access-Token header. The Personal Access Token is mandatory for this endpoint.

Personal Access Token Permission Requirements:

create_branch

Use this endpoint to create a new branch in a branching Project. The API will identify your project and authenticate the token.

Authorizations:
(Bearer Project API TokenX-Personal-Access-Token Header (required))
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

header Parameters
X-Personal-Access-Token
string
Example: baadf00dfeedfacedecafbaddeadc0de

For POST requests it is recommended and in some cases required to provide a Personal Access Token. To do so, set the X-Personal-Access-Token header with your token.

Example: X-Personal-Access-Token: baadf00dfeedfacedecafbaddeadc0de.

Request Body schema: application/json
name
required
string

Name of te branch.

sourceBranch
required
string

Indicates which branch to copy.

createInitialSettingsFile
boolean

If set to true the response of the request will contain a download link named settingsFileUrl for downloading the settingsfile for the new Branch

object

Object with the permissions for the branch. allowed permissions to set are 'readOnly' (default: false) and 'editableByTranslator' (default: true) (optional).

Responses

Response Schema: application/json
_id
string (databaseId)

Unique identifier of the object

name
string

Name of te branch.

object

Object with the permissions for the branch. allowed permissions to set are 'readOnly' (default: false) and 'editableByTranslator' (default: true) (optional).

settingsFileUrl
string

Only present if createInitialSettingsFile was true within the request. Will contain a download Url that is valid for 15 minutes for getting the settings file of the new Branch

Request samples

Content type
application/json
{
  • "name": "my_new_branch",
  • "sourceBranch": "decafbaddeadc0debada5535",
  • "permissions": {
    }
}

Response samples

Content type
application/json
{
  • "_id": "decafbadcafef00dbada5535",
  • "name": "my_new_branch",
  • "permissions": {
    }
}

Request Branch Info

Use this endpoint to fetch information regarding the branches that exists in a project. The API will identify your project and authenticate the token, then an object that contains the list of all branches for the given project is returned.

Authorizations:
Bearer Project API Token
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

Responses

Response Schema: application/json
defaultBranch
string

Id of the default branch.

Array of objects (branch)

List of all branches that exist in the project.

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api/branches?app=deadbeef0ddba110cafef00d&branch=deadbeef0ddba110cafef00d");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PROJECT_API_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "branches": [
    ],
  • "defaultBranch": "decafbaddeadc0debada5535"
}

Projects

Operations associated with projects.

Requesting list of projects

Authentication: This endpoint requires a Personal Access Token in the Authorization header — not the Project API Token used by most other endpoints. See Personal Access Token.

Personal Access Token Permission Requirements:

  • get_project_list

Return the list of projects the owner of the Personal Access Token has access to.

Authorizations:
Bearer Personal Access Token
query Parameters
userroles
Array of strings
Example: userroles=["admin","owner"]

When the parameter is used, only the projects in which the user has a specified role will be listed. The following roles are supported: 'owner', 'admin', 'manager', 'translator', 'tptadmin', 'tptservices' and 'tpttranslator'. By default all projects are returned.

header Parameters
Authorization
required
string
Example: baadf00dfeedfacedecafbaddeadc0de

For this GET request it is required to provide a Personal Access Token in Authorization header. To do so, set the Authorization header with your token.

Example: Authorization: Bearer baadf00dfeedfacedecafbaddeadc0de.

Responses

Response Schema: application/json
Array
_id
string (databaseId)

Unique identifier of the object

name
string

Project name

role
string

The user role in the project

created
string (date)

ISO 8601 Date

team
string (databaseId)

Unique identifier of the object

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api/projects?userroles=%5B%22admin%22%2C%22owner%22%5D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PERSONAL_ACCESS_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Requesting Project API Token

Authentication: This endpoint requires a Personal Access Token in the Authorization header — not the Project API Token used by most other endpoints. See Personal Access Token.

Personal Access Token Permission Requirements:

  • get_project_token

Return the Project API Token.

Authorizations:
Bearer Personal Access Token
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

header Parameters
Authorization
required
string
Example: baadf00dfeedfacedecafbaddeadc0de

For this GET request it is required to provide a Personal Access Token in Authorization header. To do so, set the Authorization header with your token.

Example: Authorization: Bearer baadf00dfeedfacedecafbaddeadc0de.

Responses

Response Schema: application/json
accessToken
string

Project API Token for the project.

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api/projects/token?app=deadbeef0ddba110cafef00d");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PERSONAL_ACCESS_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "accessToken": "deadbeef1337c0decafef00d!decafbad0ddba110deadc0defeedface"
}

Get API usage for a project

Returns the Monthly Active Users (MAU) and API request counts for a specific project. In case of a project with branches, the branch query parameter is ignored and the usage is aggregated across all related branches for the current UTC month.

Authorizations:
Bearer Project API Token
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

Responses

Response Schema: application/json
apiRequests
integer

Total number of API requests made this month.

mau
integer

Total Monthly Active Users recorded.

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api/projects/usage?app=deadbeef0ddba110cafef00d&branch=deadbeef0ddba110cafef00d");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PROJECT_API_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "apiRequests": 15420,
  • "mau": 1250
}

Create sibling project

Authentication: Requires a Project API Token in the Authorization header. Additionally providing a Personal Access Token via the X-Personal-Access-Token header is recommended so the action can be attributed to a specific user.

Personal Access Token Permission Requirements:

  • create_sibling

Create a new project based on another existing project. This allows you to copy settings, attributes and configs from the existing project into the new one. The API will identify your project and authenticate the token and create a new project that is a copy of the existing project.

By default an empty project is created when the request is completed with only a default language set for the new project. However it is possible to copy some more data, like the project settings, groups, languages, webhooks and other project settings. To enable this, some parameters described below should be set to true in the request body.

Authorizations:
(Bearer Project API TokenX-Personal-Access-Token Header (recommended))
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

header Parameters
X-Personal-Access-Token
string
Example: baadf00dfeedfacedecafbaddeadc0de

For POST requests it is recommended and in some cases required to provide a Personal Access Token. To do so, set the X-Personal-Access-Token header with your token.

Example: X-Personal-Access-Token: baadf00dfeedfacedecafbaddeadc0de.

Request Body schema: application/json
projectName
required
string

This is required and must be set in the request body. It is the name that will be set for the new project.

identicalLanguages
boolean
Default: false

If set to true creates all the languages in the requested project in the new project.

identicalGroups
boolean
Default: false

If set to true creates all the groups in the requested project in the new project, else only a single default group(main) is created.

identicalProjectSettings
boolean
Default: false

If set to true, applies all the settings in the requested project in the new project.

identicalBranches
boolean
Default: false

If set to true creates all the branches in the requested project in the new project. Only applicable if the requested project is a branching project.

createInitialSettingsFile
boolean

If set to true the response of the request will contain a download link named settingsFileUrl for downloading the settingsfile for the new Project. If identicalBranches is also true settingsFileUrl will be a map of the branch name to the corresponding download url.

Responses

Response Schema: application/json
accessToken
string

Project API Token for the newly created project.

string or object

Request samples

Content type
application/json
{
  • "projectName": "Sibling",
  • "identicalLanguages": true,
  • "identicalGroups": true,
  • "identicalProjectSettings": true,
  • "identicalBranches": true
}

Response samples

Content type
application/json
{
  • "accessToken": "deadbeef1337c0decafef00d!decafbad0ddba110deadc0defeedface"
}

Orders

Operations associated with orders.

Create a new order

Authentication: Requires both a Project API Token in the Authorization header and a Personal Access Token in the X-Personal-Access-Token header. The Personal Access Token is mandatory for this endpoint.

Personal Access Token Permission Requirements:

  • create_and_update_orders

The API will identify your project and authenticate the token and creates a new order based on the provided parameters. If you are using a Branching Project you also need to provide the branch_id as a parameter.

The order will be created if any translatable strings can be found for the given order creation parameters. If only some but not all of specified tags, groups or languages are found, the order will be created for the found scope as well. No order will be created if there are 0 words to translate.

On the Dashboard, you can attach reference files to orders for additional context and instructions to share with the TransPerfect team and linguists. To see how this is done via the API, select multipart/form-data from the dropdown next to the Request Body schema section header below.

Authorizations:
(Bearer Project API TokenX-Personal-Access-Token Header (required))
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

header Parameters
X-Personal-Access-Token
string
Example: baadf00dfeedfacedecafbaddeadc0de

For POST requests it is recommended and in some cases required to provide a Personal Access Token. To do so, set the X-Personal-Access-Token header with your token.

Example: X-Personal-Access-Token: baadf00dfeedfacedecafbaddeadc0de.

Request Body schema:
sourceLanguage
required
string

The source language ISO code. The language must exist in the project. The order will not be created if no value or invalid value is provided.

dueDate
string (date)

ISO 8601 Date

languages
required
Array of strings

An array of language ISO codes. These will be languages, into which the order will be translated. At least some of these languages must exist in the project and there must be an orderable content for at least one of them. Otherwise an error is returned (no order will be created).

stringOption
string
Default: "untranslated"

What type of strings should be selected for translation. The following values are available

all - all content

untranslated - all untranslated keys without Draft and without Target value (default)

sourceChanged - all keys with outdated Target values.

invalidTarget - all keys without Draft and without Target values, or with outdated Target values. Current Drafts/Targets will be overwritten.

invalidTargetOrPseudoTranslated - all keys without Draft and without Target values, or with outdated Target values or with Pseudo-Translated status. Current Drafts/Targets will be overwritten.

needsTranslation - all keys with "Needs Translation" status.

needsReview - all keys with "Rejected" status.

needsTranslationOrRejected - all keys with "Needs Translation" or "Rejected" status.

pseudoTranslated - all keys with "Pseudo-Translated" status.

<name_of_custom_status> - all keys with the particular custom status assigned.

withoutTarget - all keys which don't have Target values.

withTarget - all keys which have published values.

tooLong - all keys for which Target or Draft value exceeds the required Max Length

brief
string

Order brief text.

tags
Array of strings

Array of tag (or screenshot) names. Only the tagged keys will be included in the order scope. If additionally there is a source file created for each tag, each key must belong to exactly one tag (in such cases tags cannot "overlap").

includeNoTagKeys
boolean

Indicates if the strings without any assigned tag are in the order scope.

groups
Array of strings

Array of group names. Only strings in the indicated groups will be included in the scope. If the parameter is not specified, strings from all groups will be included in the scope. A maximum of 10 group names is allowed.

customBrief
Array of arrays

Array of custom order brief data consisting of pairs: { name: 'field name', value: 'field value' }. Please see Request custom order brief template for more details.

orderToCopy
string

translation scope is copied from a reference order. The order must be created for the same project. The option is useful, if exactly the same content needs to be included in a new order. If this option is used:

  • sourceLanguage value must match the reference order
  • Only dueDate, brief, notifyAddtionalUsers and customBrief fields will be taken into consideration. All other data will be taken over from the reference order
  • The reference order must have testing or done status (otherwise the same strings cannot be included into a new translation order, because they already have In-Order status)
languageToCopy
string

This option can only be used in combination with orderToCopy. The translation scope of the language specified in languageToCopy is re-used for another language in the same project. For that reason there is no restriction on status of the reference order and additionally the languages array must be provided.

notifyAddtionalUsers
Array of strings

Array of email addresses of users to be notified about order progress. These addresses must belong to the client team members.

ignoreOutdatedInActiveOrders
boolean

By default, the strings that are already in an order but they have become outdated (their source has changed) will be added to a new order. The exception is when sourceLanguage option and the project base language differ. Set the option to false to skip the strings with changed source..

Responses

Response Schema: application/json
_id
string (databaseId)

Unique identifier of the object

orderNumber
integer
sourceLanguage
string

Language code of the source language in the project.

sourceWordCount
number

Total number of words in the source language from all entries requested.

stringOption
string

Selection strategy used when creating the order (e.g. all, invalidTarget).

created
string (date)

ISO 8601 Date

updatedAt
string (date)

ISO 8601 Date

dueDate
string (date)

ISO 8601 Date

requester
string

Name of the person placing the order.

status
string (orderStatus)
Enum: "draft" "requested" "created" "declined" "accepted" "processing" "testing" "done" "canceled" "onHold"

draft - A recently initiated order that is still in the creation phase.

requested - Relates to the quoting step of the translation ordering process. Please see here. This status means the order requester has requested a quote proposal for the order.

created - Relates to the quoting step of the translation ordering process. Please see here. This status means that a quote proposal has been created for the order and uploaded to GlobalLink Strings, which the requester has to review.

declined - Relates to the quoting step of the translation ordering process. Please see here. This means the recent quote proposal created for the order was rejected by the requester.

accepted - Relates to the quoting step of the translation ordering process. Please see here. This means the requester accepts the recent quote proposal.

processing - This means the translation process has started.

testing - Some orders can be marked with the status 'testing' when the translations are delivered instead of done. The translations have been delivered, and testing is in progress. The strings belonging to this order no longer have 'In Order' status.

done - The translations have been delivered, and the order is completed.

canceled - The order was canceled.

onHold - Some orders have automated configurations that send them directly to translation. Sometimes a config misalignment could occur requiring review from a GlobalLink Strings admin. In this case, the order status is automatically set to this status.

tags
Array of strings

List of used tag ids to filter by

includeNoTagKeys
boolean

Order includes all keys that are not Tagged

object

Mapping of target language code to per-language delivery details.

submissionIds
Array of integers

List of GlobaLink Enterprise submission IDs associated with the order. Populated asynchronously after GlobaLink Enterprise acknowledges the order, so this may be empty for orders whose submissions are still in flight or for orders with no submissions linked.

Array of objects (orderBriefFieldValue)

Custom order brief field values configured for the order. Empty when no template is set. Fields without a value have value: null.

Request samples

Content type

In this sample request a new order is created based on scope of de language in existing order with id baadf00ddeadc0defeedface. The source language is en to be translated into fr-CA and es-MX languages in the same project.

{
  • "sourceLanguage": "en",
  • "languages": [
    ],
  • "orderToCopy": "baadf00ddeadc0defeedface",
  • "languageToCopy": "de"
}

Response samples

Content type
application/json
{
  • "order": {
    }
}

Request list of all project orders

Use this endpoint to fetch all the orders in a project. The API will identify your project and authenticate the token and return a list of all orders for the project.

Authorizations:
Bearer Project API Token
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

Responses

Response Schema: application/json
Array
id
string (databaseId)

Unique identifier of the object

orderNumber
integer
sourceLanguage
string

Language code of the source language in the project.

created
string (date)

ISO 8601 Date

updatedAt
string (date)

ISO 8601 Date

dueDate
string (date)

ISO 8601 Date

requester
string

Name of the person placing the order.

status
string (orderStatus)
Enum: "draft" "requested" "created" "declined" "accepted" "processing" "testing" "done" "canceled" "onHold"

draft - A recently initiated order that is still in the creation phase.

requested - Relates to the quoting step of the translation ordering process. Please see here. This status means the order requester has requested a quote proposal for the order.

created - Relates to the quoting step of the translation ordering process. Please see here. This status means that a quote proposal has been created for the order and uploaded to GlobalLink Strings, which the requester has to review.

declined - Relates to the quoting step of the translation ordering process. Please see here. This means the recent quote proposal created for the order was rejected by the requester.

accepted - Relates to the quoting step of the translation ordering process. Please see here. This means the requester accepts the recent quote proposal.

processing - This means the translation process has started.

testing - Some orders can be marked with the status 'testing' when the translations are delivered instead of done. The translations have been delivered, and testing is in progress. The strings belonging to this order no longer have 'In Order' status.

done - The translations have been delivered, and the order is completed.

canceled - The order was canceled.

onHold - Some orders have automated configurations that send them directly to translation. Sometimes a config misalignment could occur requiring review from a GlobalLink Strings admin. In this case, the order status is automatically set to this status.

tags
Array of strings

List of used tag ids to filter by

includeNoTagKeys
boolean

Order includes all keys that are not Tagged

targetLanguages
Array of strings

List of target language codes included in the order.

submissionIds
Array of integers

List of GlobaLink Enterprise submission IDs associated with the order. Populated asynchronously after GlobaLink Enterprise acknowledges the order, so this may be empty for orders whose submissions are still in flight or for orders with no submissions linked.

Array of objects (orderBriefFieldValue)

Custom order brief field values configured for the order. Empty when no template is set. Fields without a value have value: null.

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api/order?app=deadbeef0ddba110cafef00d&branch=deadbeef0ddba110cafef00d");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PROJECT_API_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
[
  • {
    }
]

Request an order by id

Use this endpoint to fetch a single order by id. The API will identify your project and authenticate the token and return details of the requested order.

Authorizations:
Bearer Project API Token
path Parameters
orderId
required
string
Example: baadf00ddeadc0defeedface

Unique identifier of an order

query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

Responses

Response Schema: application/json
_id
string (databaseId)

Unique identifier of the object

orderNumber
integer
sourceLanguage
string

Language code of the source language in the project.

sourceWordCount
number

Total number of words in the source language from all entries requested.

stringOption
string

Selection strategy used when creating the order (e.g. all, invalidTarget).

created
string (date)

ISO 8601 Date

updatedAt
string (date)

ISO 8601 Date

dueDate
string (date)

ISO 8601 Date

requester
string

Name of the person placing the order.

status
string (orderStatus)
Enum: "draft" "requested" "created" "declined" "accepted" "processing" "testing" "done" "canceled" "onHold"

draft - A recently initiated order that is still in the creation phase.

requested - Relates to the quoting step of the translation ordering process. Please see here. This status means the order requester has requested a quote proposal for the order.

created - Relates to the quoting step of the translation ordering process. Please see here. This status means that a quote proposal has been created for the order and uploaded to GlobalLink Strings, which the requester has to review.

declined - Relates to the quoting step of the translation ordering process. Please see here. This means the recent quote proposal created for the order was rejected by the requester.

accepted - Relates to the quoting step of the translation ordering process. Please see here. This means the requester accepts the recent quote proposal.

processing - This means the translation process has started.

testing - Some orders can be marked with the status 'testing' when the translations are delivered instead of done. The translations have been delivered, and testing is in progress. The strings belonging to this order no longer have 'In Order' status.

done - The translations have been delivered, and the order is completed.

canceled - The order was canceled.

onHold - Some orders have automated configurations that send them directly to translation. Sometimes a config misalignment could occur requiring review from a GlobalLink Strings admin. In this case, the order status is automatically set to this status.

tags
Array of strings

List of used tag ids to filter by

includeNoTagKeys
boolean

Order includes all keys that are not Tagged

object

Mapping of target language code to per-language delivery details.

submissionIds
Array of integers

List of GlobaLink Enterprise submission IDs associated with the order. Populated asynchronously after GlobaLink Enterprise acknowledges the order, so this may be empty for orders whose submissions are still in flight or for orders with no submissions linked.

Array of objects (orderBriefFieldValue)

Custom order brief field values configured for the order. Empty when no template is set. Fields without a value have value: null.

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api/order/baadf00ddeadc0defeedface?app=deadbeef0ddba110cafef00d&branch=deadbeef0ddba110cafef00d");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PROJECT_API_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "_id": "baadf00dcafef00dfeedface",
  • "orderNumber": 3926,
  • "sourceLanguage": "en",
  • "sourceWordCount": 235,
  • "stringOption": "all",
  • "created": "2023-12-26T14:09:49.556Z",
  • "updatedAt": "2023-12-27T08:11:02.121Z",
  • "dueDate": "2023-11-28T12:56:46.510Z",
  • "requester": "Jane Doe",
  • "status": "processing",
  • "targetLanguages": {
    },
  • "submissionIds": [
    ],
  • "orderBriefFields": [
    ]
}

Request custom order brief template

The Custom Order Brief feature is currently only available for Enterprise plans. It enables to pass on additional order brief information in a predefined, structured way in a new order request.

The same custom order brief template will be returned for all projects and branches in a particular team. Using branch parameter is possible, but not necessary.

Authorizations:
Bearer Project API Token
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

Responses

Response Schema: application/json
Array
name
required
string

Field name to be used in new order request. In case the field name is not matched to any in the template, it will be ignored, or if the order brief template contains a mandatory fields that is not provided, an error will be returned.

type
required
string

The field can be of type: - text - a free text value is accepted - selection - only values predefined in selectionList are accepted.

selectionList
Array of strings

List of predefined values to be used when the field type is selection.

defaultValue
string

If no value is provided, this will be the value used in the custom order brief.

placeholder
string

Placeholder that defines the value.

mandatory
boolean

A valid value for this field must be provided: non-empty text or item from selectionList. In case of conditional fields, the value must be provided only if the condition is fulfilled.

object

Some fields are used in order brief conditionally. For simplicity the conditions are only one level deep (a conditional field is not included in condition of another field).

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api/orderBriefTemplate?app=deadbeef0ddba110cafef00d&branch=deadbeef0ddba110cafef00d");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PROJECT_API_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json

In the below example there are 4 custom order brief fields defined. The example custom brief should be interpreted as follows:

  1. Project name is a mandatory text field. The non-empty value must be provided, otherwise the order will not be created.
  2. Project type is a selection field. The value in the new order request must match one of the provided selection options. If not provided or not matching, the default value translation will be used.
  3. Review rounds is a conditional text field and can only be used when review value is selected in Project type field.
  4. Screens Review is a conditional and mandatory selection field. If the condition is fulfilled, the field must be provided. In the example, the field is necessary if the value of Project name contains the text screen. The field doesn't have a default value, so if no value or invalid value is provided, the order is not created.

Note The field names and values are case-sensitive, so in particular the custom order brief names in new order request must be exactly as in the response here.

Example values that can be put in customBrief array in a new order creation request based on the below example order brief template:

>     ...
>     "customBrief":[
>         { "name": "Project name", "value": "My app translation project" },
>         { "name": "Project type", "value": "translation" }
>         { "name": "Screens Review", "value": "Yes" }
>     ],
>     ...
[
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

Request list of languages available for ordering

This checks if there are any restrictions on languages. If there are, it lists which languages you can order by Transperfect. Usually, no restrictions apply, and you can order any language.

The information is important when there is a connection set between GlobalLink Strings and GlobalLink Enterprise projects, and the languages that can be ordered are restricted to ones that are linked in these projects. The list of languages available for ordering contains all language codes that either already exist in GlobalLink Strings project or could be created and automatically added to submissions in GlobalLink Enterprise.

Authorizations:
Bearer Project API Token
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

sourceLanguage
string
Default: false
Example: sourceLanguage=en

ISO language code of the expected order source language. If not specified, the project base language is used.

Responses

Response Schema: application/json
allLanguagesOrderable
boolean
orderableLanguages
Array of strings
sourceLanguage
string

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api/order/available-languages?app=deadbeef0ddba110cafef00d&branch=deadbeef0ddba110cafef00d&sourceLanguage=en");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PROJECT_API_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "sourceLanguage": "en",
  • "allLanguagesOrderable": false,
  • "orderableLanguages": [
    ]
}

Webhooks

Operations associated with orders. Learn more about webhooks here.

Create or update project webhooks

Authentication: Requires both a Project API Token in the Authorization header and a Personal Access Token in the X-Personal-Access-Token header. The Personal Access Token is mandatory for this endpoint.

Personal Access Token Permission Requirements:

  • create_and_update_webhooks

Use this endpoint to create a new webhook and update existing webhook. When it is an update, the webhookEndpointId parameter should be set, where webhookEndpointId is the id of the webhook that should be updated. A webhook's id can be copied from the webhook modal in the project settings.

Authorizations:
(Bearer Project API TokenX-Personal-Access-Token Header (required))
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

webhookEndpointId
string

This should be set when a webhook should be updated, set the id of the webhook that should be updated here.

header Parameters
X-Personal-Access-Token
string
Example: baadf00dfeedfacedecafbaddeadc0de

For POST requests it is recommended and in some cases required to provide a Personal Access Token. To do so, set the X-Personal-Access-Token header with your token.

Example: X-Personal-Access-Token: baadf00dfeedfacedecafbaddeadc0de.

Request Body schema: application/json
eventType
string (webhookEventType)
Enum: "TranslationChanges" "StatusChanges" "AllChanges"

Refers to the activities that will trigger a webhook.

TranslationChanges: This refers to changes related to the translation entries. Whenever a translation entry is created, updated, or deleted, it triggers a translation change event.

StatusChanges: This event occurs when the status of a translation entry is changed.

AllChanges: When this option is selected, the webhook is triggered for any change related to translation entries. This includes all events described in Translation Changes and Status Changes, as well as other activities such as updating translation drafts, tagging entries, linking entries, locking entries, etc.

disabled
boolean
Default: false

This is an optional parameter, if set to true, GlobalLink Strings will no longer send requests to the configured url. This is false by default when.

url
string

This is a required parameter when creating a new webhook. It is the endpoint that GlobalLink Strings will make a request when needed. A valid https url is expected here

httpMethod
string
Enum: "get" "post"

This is a required parameter when creating a new webhook. Only get and post http methods are allowed, setting any other value would result in an error response.

Array of objects

It is an array of objects representing HTTP headers, where each object must contain the following fields key, value and optionally description.

object

When the httpMethod is set to post, the content will be set in the webhook request, and in the webhook request a Content-Type header will be set to the value of contentType.

Responses

Response Schema: application/json
_id
string (databaseId)

Unique identifier of the object

disabled
boolean
Default: false

Indicates if the webhook is disabled or not. If set to true then GlobalLink Strings will no longer send requests to the configured url.

url
string

It is the endpoint that GlobalLink Strings will make a request when needed.

httpMethod
string
Enum: "get" "post"
Array of objects

It is an array of objects representing HTTP headers, where each object contains the following fields key, value and optionally description.

object

When the httpMethod is set to post, the content will be set in the webhook request, and in the webhook request a Content-Type header will be set to the value of contentType.

userId
string

Id of the user that created teh webhook.

eventType
string (webhookEventType)
Enum: "TranslationChanges" "StatusChanges" "AllChanges"

Refers to the activities that will trigger a webhook.

TranslationChanges: This refers to changes related to the translation entries. Whenever a translation entry is created, updated, or deleted, it triggers a translation change event.

StatusChanges: This event occurs when the status of a translation entry is changed.

AllChanges: When this option is selected, the webhook is triggered for any change related to translation entries. This includes all events described in Translation Changes and Status Changes, as well as other activities such as updating translation drafts, tagging entries, linking entries, locking entries, etc.

Request samples

Content type
application/json
{
  • "httpMethod": "post",
  • "headers": [
    ],
  • "body": {
    }
}

Response samples

Content type
application/json
{
  • "_id": "feedfacecafef00ddeadbeef",
  • "created": "2023-12-19T14:59:27.607Z",
  • "httpMethod": "post",
  • "body": {
    },
  • "headers": [
    ],
  • "disabled": false,
  • "eventType": "TranslationChanges",
  • "userId": "1337c0debada5535deadbeef"
}

Request list of all project webhooks

Use this endpoints to fetch webhooks configured in a project. The API will identify your project and authenticate the token and return all the webhooks in the project.

Authorizations:
Bearer Project API Token
query Parameters
app
required
string
Example: app=deadbeef0ddba110cafef00d

This ID identifies the GlobalLink Strings project that the API call should target. It is required for both legacy and branching projects.

branch
string
Example: branch=deadbeef0ddba110cafef00d

If you are using a branching project and want to specify the branch, then this parameter should be set to the id of the branch. You can get the branch id either in the settings of your project or request it via an api route (see Requesting Branches) or for more information on branching have a look at our branching documentation).

All available Api features can be extended with the "branch" parameter and will perform the requested action on the specified branch. If there is no branch parameter in the request, the action is performed on the "main" branch.

Responses

Response Schema: application/json
Array
_id
string (databaseId)

Unique identifier of the object

disabled
boolean
Default: false

Indicates if the webhook is disabled or not. If set to true then GlobalLink Strings will no longer send requests to the configured url.

url
string

It is the endpoint that GlobalLink Strings will make a request when needed.

httpMethod
string
Enum: "get" "post"
Array of objects

It is an array of objects representing HTTP headers, where each object contains the following fields key, value and optionally description.

object

When the httpMethod is set to post, the content will be set in the webhook request, and in the webhook request a Content-Type header will be set to the value of contentType.

userId
string

Id of the user that created teh webhook.

eventType
string (webhookEventType)
Enum: "TranslationChanges" "StatusChanges" "AllChanges"

Refers to the activities that will trigger a webhook.

TranslationChanges: This refers to changes related to the translation entries. Whenever a translation entry is created, updated, or deleted, it triggers a translation change event.

StatusChanges: This event occurs when the status of a translation entry is changed.

AllChanges: When this option is selected, the webhook is triggered for any change related to translation entries. This includes all events described in Translation Changes and Status Changes, as well as other activities such as updating translation drafts, tagging entries, linking entries, locking entries, etc.

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.globallinkstrings.com/v1/api/webhooks?app=deadbeef0ddba110cafef00d&branch=deadbeef0ddba110cafef00d");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <REPLACE_WITH_PROJECT_API_TOKEN>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
[
  • {
    }
]