curl --request POST \
--url https://eu.phrase.com/connectors/contentful2/v1/async/upload-xliff-file \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Webhook: <x-webhook>' \
--data '
{
"connectorUuid": "4282fec0-d2e9-4266-8733-3e634feb7b59",
"configuration": {
"tags": [
"translate-me"
],
"includeReferences": true
},
"path": {
"pathType": "ROOT"
},
"sourceLocale": "en-US",
"targetLocale": "de-DE",
"storageId": "e48eda63928c4155bez9fdbsaadc15f3"
}
'import requests
url = "https://eu.phrase.com/connectors/contentful2/v1/async/upload-xliff-file"
payload = {
"connectorUuid": "4282fec0-d2e9-4266-8733-3e634feb7b59",
"configuration": {
"tags": ["translate-me"],
"includeReferences": True
},
"path": { "pathType": "ROOT" },
"sourceLocale": "en-US",
"targetLocale": "de-DE",
"storageId": "e48eda63928c4155bez9fdbsaadc15f3"
}
headers = {
"X-Webhook": "<x-webhook>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Webhook': '<x-webhook>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
connectorUuid: '4282fec0-d2e9-4266-8733-3e634feb7b59',
configuration: {tags: ['translate-me'], includeReferences: true},
path: {pathType: 'ROOT'},
sourceLocale: 'en-US',
targetLocale: 'de-DE',
storageId: 'e48eda63928c4155bez9fdbsaadc15f3'
})
};
fetch('https://eu.phrase.com/connectors/contentful2/v1/async/upload-xliff-file', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://eu.phrase.com/connectors/contentful2/v1/async/upload-xliff-file",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'connectorUuid' => '4282fec0-d2e9-4266-8733-3e634feb7b59',
'configuration' => [
'tags' => [
'translate-me'
],
'includeReferences' => true
],
'path' => [
'pathType' => 'ROOT'
],
'sourceLocale' => 'en-US',
'targetLocale' => 'de-DE',
'storageId' => 'e48eda63928c4155bez9fdbsaadc15f3'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Webhook: <x-webhook>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://eu.phrase.com/connectors/contentful2/v1/async/upload-xliff-file"
payload := strings.NewReader("{\n \"connectorUuid\": \"4282fec0-d2e9-4266-8733-3e634feb7b59\",\n \"configuration\": {\n \"tags\": [\n \"translate-me\"\n ],\n \"includeReferences\": true\n },\n \"path\": {\n \"pathType\": \"ROOT\"\n },\n \"sourceLocale\": \"en-US\",\n \"targetLocale\": \"de-DE\",\n \"storageId\": \"e48eda63928c4155bez9fdbsaadc15f3\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Webhook", "<x-webhook>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://eu.phrase.com/connectors/contentful2/v1/async/upload-xliff-file")
.header("X-Webhook", "<x-webhook>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"connectorUuid\": \"4282fec0-d2e9-4266-8733-3e634feb7b59\",\n \"configuration\": {\n \"tags\": [\n \"translate-me\"\n ],\n \"includeReferences\": true\n },\n \"path\": {\n \"pathType\": \"ROOT\"\n },\n \"sourceLocale\": \"en-US\",\n \"targetLocale\": \"de-DE\",\n \"storageId\": \"e48eda63928c4155bez9fdbsaadc15f3\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://eu.phrase.com/connectors/contentful2/v1/async/upload-xliff-file")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Webhook"] = '<x-webhook>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"connectorUuid\": \"4282fec0-d2e9-4266-8733-3e634feb7b59\",\n \"configuration\": {\n \"tags\": [\n \"translate-me\"\n ],\n \"includeReferences\": true\n },\n \"path\": {\n \"pathType\": \"ROOT\"\n },\n \"sourceLocale\": \"en-US\",\n \"targetLocale\": \"de-DE\",\n \"storageId\": \"e48eda63928c4155bez9fdbsaadc15f3\"\n}"
response = http.request(request)
puts response.read_body{
"requestId": "e48eda63-928c-4155-bez9-fdbsaadc15f3",
"webHookUrl": "https://example.tld/my-webhook"
}""Upload xliff content asynchronously
Upload translated XLIFF back to Contentful. The connector parses the XLIFF, maps target-language segments back onto the original entries, and writes them to the target locale in the configured space.
Async variant. Returns immediately with { requestId, webHookUrl }. The upload result is POSTed to the URL supplied in X-Webhook. X-Webhook is required.
curl --request POST \
--url https://eu.phrase.com/connectors/contentful2/v1/async/upload-xliff-file \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Webhook: <x-webhook>' \
--data '
{
"connectorUuid": "4282fec0-d2e9-4266-8733-3e634feb7b59",
"configuration": {
"tags": [
"translate-me"
],
"includeReferences": true
},
"path": {
"pathType": "ROOT"
},
"sourceLocale": "en-US",
"targetLocale": "de-DE",
"storageId": "e48eda63928c4155bez9fdbsaadc15f3"
}
'import requests
url = "https://eu.phrase.com/connectors/contentful2/v1/async/upload-xliff-file"
payload = {
"connectorUuid": "4282fec0-d2e9-4266-8733-3e634feb7b59",
"configuration": {
"tags": ["translate-me"],
"includeReferences": True
},
"path": { "pathType": "ROOT" },
"sourceLocale": "en-US",
"targetLocale": "de-DE",
"storageId": "e48eda63928c4155bez9fdbsaadc15f3"
}
headers = {
"X-Webhook": "<x-webhook>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Webhook': '<x-webhook>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
connectorUuid: '4282fec0-d2e9-4266-8733-3e634feb7b59',
configuration: {tags: ['translate-me'], includeReferences: true},
path: {pathType: 'ROOT'},
sourceLocale: 'en-US',
targetLocale: 'de-DE',
storageId: 'e48eda63928c4155bez9fdbsaadc15f3'
})
};
fetch('https://eu.phrase.com/connectors/contentful2/v1/async/upload-xliff-file', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://eu.phrase.com/connectors/contentful2/v1/async/upload-xliff-file",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'connectorUuid' => '4282fec0-d2e9-4266-8733-3e634feb7b59',
'configuration' => [
'tags' => [
'translate-me'
],
'includeReferences' => true
],
'path' => [
'pathType' => 'ROOT'
],
'sourceLocale' => 'en-US',
'targetLocale' => 'de-DE',
'storageId' => 'e48eda63928c4155bez9fdbsaadc15f3'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Webhook: <x-webhook>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://eu.phrase.com/connectors/contentful2/v1/async/upload-xliff-file"
payload := strings.NewReader("{\n \"connectorUuid\": \"4282fec0-d2e9-4266-8733-3e634feb7b59\",\n \"configuration\": {\n \"tags\": [\n \"translate-me\"\n ],\n \"includeReferences\": true\n },\n \"path\": {\n \"pathType\": \"ROOT\"\n },\n \"sourceLocale\": \"en-US\",\n \"targetLocale\": \"de-DE\",\n \"storageId\": \"e48eda63928c4155bez9fdbsaadc15f3\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Webhook", "<x-webhook>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://eu.phrase.com/connectors/contentful2/v1/async/upload-xliff-file")
.header("X-Webhook", "<x-webhook>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"connectorUuid\": \"4282fec0-d2e9-4266-8733-3e634feb7b59\",\n \"configuration\": {\n \"tags\": [\n \"translate-me\"\n ],\n \"includeReferences\": true\n },\n \"path\": {\n \"pathType\": \"ROOT\"\n },\n \"sourceLocale\": \"en-US\",\n \"targetLocale\": \"de-DE\",\n \"storageId\": \"e48eda63928c4155bez9fdbsaadc15f3\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://eu.phrase.com/connectors/contentful2/v1/async/upload-xliff-file")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Webhook"] = '<x-webhook>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"connectorUuid\": \"4282fec0-d2e9-4266-8733-3e634feb7b59\",\n \"configuration\": {\n \"tags\": [\n \"translate-me\"\n ],\n \"includeReferences\": true\n },\n \"path\": {\n \"pathType\": \"ROOT\"\n },\n \"sourceLocale\": \"en-US\",\n \"targetLocale\": \"de-DE\",\n \"storageId\": \"e48eda63928c4155bez9fdbsaadc15f3\"\n}"
response = http.request(request)
puts response.read_body{
"requestId": "e48eda63-928c-4155-bez9-fdbsaadc15f3",
"webHookUrl": "https://example.tld/my-webhook"
}""Authorizations
IDM-issued JWT. Obtain via the IDM authentication flow and pass as: Bearer
Headers
A logging ID of the request. It is propagated through Phrase systems, making it easier to connect logs from various services. If no ActionId is sent with a request, one will be generated by Bifrost and returned with the response.
Required on /async/... endpoints. Bifrost POSTs the operation result to this URL once the connector finishes processing.
Omitting this header on an async endpoint returns 400.
Body
Request body for uploading translated XLIFF back to Contentful. Reference the stored XLIFF by storageId; the connector parses it and writes the target-locale segments to Contentful.
UUID of a connector instance configured in TMS.
"4282fec0-d2e9-4266-8733-3e634feb7b59"
Source locale of the translated content (Contentful locale code).
1"en-US"
Target locale to write into (Contentful locale code).
1"de-DE"
Storage ID of the translated XLIFF file (already uploaded to Phrase file storage).
1"e48eda63928c4155bez9fdbsaadc15f3"
Contentful-specific behavior knobs.
Show child attributes
Show child attributes
Selector inside the Contentful space targeted by the upload.
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
Show child attributes
Show child attributes
Response
Successful operation. If X-ResponseType is set to 'ID' or no value is sent in the header, the file is saved and can be retrieved by sending a GET request to this endpoint. If X-ResponseType is set to 'OBJECT', the file is returned as a stream.
Was this page helpful?