curl --request POST \
--url https://cloud.memsource.com/web/api2/v1/connectors \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"commitMessage": "<string>",
"defaultRemoteFolder": "<string>",
"encodedDefaultRemoteFolder": "<string>",
"sourceUrl": "<string>"
}
'import requests
url = "https://cloud.memsource.com/web/api2/v1/connectors"
payload = {
"name": "<string>",
"commitMessage": "<string>",
"defaultRemoteFolder": "<string>",
"encodedDefaultRemoteFolder": "<string>",
"sourceUrl": "<string>"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
commitMessage: '<string>',
defaultRemoteFolder: '<string>',
encodedDefaultRemoteFolder: '<string>',
sourceUrl: '<string>'
})
};
fetch('https://cloud.memsource.com/web/api2/v1/connectors', 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://cloud.memsource.com/web/api2/v1/connectors",
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([
'name' => '<string>',
'commitMessage' => '<string>',
'defaultRemoteFolder' => '<string>',
'encodedDefaultRemoteFolder' => '<string>',
'sourceUrl' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$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://cloud.memsource.com/web/api2/v1/connectors"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"commitMessage\": \"<string>\",\n \"defaultRemoteFolder\": \"<string>\",\n \"encodedDefaultRemoteFolder\": \"<string>\",\n \"sourceUrl\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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://cloud.memsource.com/web/api2/v1/connectors")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"commitMessage\": \"<string>\",\n \"defaultRemoteFolder\": \"<string>\",\n \"encodedDefaultRemoteFolder\": \"<string>\",\n \"sourceUrl\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cloud.memsource.com/web/api2/v1/connectors")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"commitMessage\": \"<string>\",\n \"defaultRemoteFolder\": \"<string>\",\n \"encodedDefaultRemoteFolder\": \"<string>\",\n \"sourceUrl\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"created": "2023-11-07T05:31:56Z",
"id": "<string>",
"linkedAccount": "<string>",
"localToken": "<string>",
"name": "<string>",
"status": "<string>",
"type": "<string>"
}{
"message": "<string>",
"status": "<string>"
}{
"message": "<string>",
"status": "<string>"
}Create connector
Creates a connector of the specified type.
A connection test is run automatically for MAGENTO and TYPO3 connector types, or whenever connectionTest=true is passed.
For OAuth-based connectors (e.g. GitHub, GitLab, Google Drive, OneDrive), complete the three-step OAuth flow first:
POST /connectorAuthData → user authorizes → POST /connectorAuthCode. Then include the resulting code in the request.
For credential-based connectors (FTP, SFTP, GIT, Amazon S3, etc.) no OAuth flow is required.
type=PHRASE connects this TMS organization to Phrase Strings (Job Sync); see the phrase* request fields below.
Requires ADMIN or PROJECT_MANAGER role with the Connector setup access right.
curl --request POST \
--url https://cloud.memsource.com/web/api2/v1/connectors \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"commitMessage": "<string>",
"defaultRemoteFolder": "<string>",
"encodedDefaultRemoteFolder": "<string>",
"sourceUrl": "<string>"
}
'import requests
url = "https://cloud.memsource.com/web/api2/v1/connectors"
payload = {
"name": "<string>",
"commitMessage": "<string>",
"defaultRemoteFolder": "<string>",
"encodedDefaultRemoteFolder": "<string>",
"sourceUrl": "<string>"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
commitMessage: '<string>',
defaultRemoteFolder: '<string>',
encodedDefaultRemoteFolder: '<string>',
sourceUrl: '<string>'
})
};
fetch('https://cloud.memsource.com/web/api2/v1/connectors', 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://cloud.memsource.com/web/api2/v1/connectors",
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([
'name' => '<string>',
'commitMessage' => '<string>',
'defaultRemoteFolder' => '<string>',
'encodedDefaultRemoteFolder' => '<string>',
'sourceUrl' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$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://cloud.memsource.com/web/api2/v1/connectors"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"commitMessage\": \"<string>\",\n \"defaultRemoteFolder\": \"<string>\",\n \"encodedDefaultRemoteFolder\": \"<string>\",\n \"sourceUrl\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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://cloud.memsource.com/web/api2/v1/connectors")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"commitMessage\": \"<string>\",\n \"defaultRemoteFolder\": \"<string>\",\n \"encodedDefaultRemoteFolder\": \"<string>\",\n \"sourceUrl\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cloud.memsource.com/web/api2/v1/connectors")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"commitMessage\": \"<string>\",\n \"defaultRemoteFolder\": \"<string>\",\n \"encodedDefaultRemoteFolder\": \"<string>\",\n \"sourceUrl\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"created": "2023-11-07T05:31:56Z",
"id": "<string>",
"linkedAccount": "<string>",
"localToken": "<string>",
"name": "<string>",
"status": "<string>",
"type": "<string>"
}{
"message": "<string>",
"status": "<string>"
}{
"message": "<string>",
"status": "<string>"
}Authorizations
Get a token from auth/login endpoint and then pass it in the Authorization HTTP header in every subsequent API call. For more information visit our help center.
Query Parameters
Run a connection test before creating; automatically true for MAGENTO and TYPO3
Body
Name of the connector
255Connector type. PHRASE connects this TMS organization to Phrase Strings (Job Sync), automatically routing translation jobs between the two products.
AEM_PLUGIN, AMAZON_S3, BITBUCKET, BLUEPRINT, BOX, BRAZE, BRAZE_MULTILANG, CONTENTFULENTRYLEVEL, CONTENTFUL, CONTENTFUL2, CONTENTSTACK, DRUPAL_PLUGIN, FTP, GIT, GITHUB, GITHUB2, GITLAB, GOOGLE, GOOGLE_DRIVE2, HUBSPOT, JOOMLA, KENTICO_KONTENT, MARKETO, ONEDRIVE, OPTIMIZELY, SHAREPOINT, PARDOT, PHRASE, SALESFORCE, SFTP, SITECORE, TRIDION, VERBIS, WORDPRESS, ZENDESK Response
Created
Date and time the connector was created
Internal identifier of the connector; an opaque string, not numeric
Name of the account linked to this connector on the remote service; null if unavailable. For connector types without a live connection test (e.g. PHRASE, GIT), this may be null while the connector is in the initial PENDING synchronization state and becomes populated once synchronization completes.
Backend token identifying this connector; required by connector backend calls
Connector display name
Connection status reported by the backend; null if the backend did not return a status. Fetched live from the connector backend on every call. A live remote connectivity test is only run for MAGENTO and TYPO3 connector types (see PATCH connector docs); for all other types this reflects the backend's stored credential/sync state rather than a live health check. For PHRASE (Strings job sync) and GIT connectors, PENDING is a valid, expected state meaning an initial synchronization is still in progress - typically right after connector creation - and is not itself an error; the status transitions to OK once synchronization completes.
Connector type identifier (e.g. FTP, GIT, GITHUB)
Was this page helpful?