curl --request PUT \
--url https://cloud.memsource.com/web/api2/v1/userProfile \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"avatarUrl": "<string>",
"subscribed": true,
"username": "<string>"
}
'import requests
url = "https://cloud.memsource.com/web/api2/v1/userProfile"
payload = {
"email": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"avatarUrl": "<string>",
"subscribed": True,
"username": "<string>"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: '<string>',
firstName: '<string>',
lastName: '<string>',
avatarUrl: '<string>',
subscribed: true,
username: '<string>'
})
};
fetch('https://cloud.memsource.com/web/api2/v1/userProfile', 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/userProfile",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'email' => '<string>',
'firstName' => '<string>',
'lastName' => '<string>',
'avatarUrl' => '<string>',
'subscribed' => true,
'username' => '<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/userProfile"
payload := strings.NewReader("{\n \"email\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"avatarUrl\": \"<string>\",\n \"subscribed\": true,\n \"username\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://cloud.memsource.com/web/api2/v1/userProfile")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"avatarUrl\": \"<string>\",\n \"subscribed\": true,\n \"username\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cloud.memsource.com/web/api2/v1/userProfile")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"avatarUrl\": \"<string>\",\n \"subscribed\": true,\n \"username\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"email": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"avatarUrl": "<string>",
"pendingEmailChange": true,
"readonly": true,
"role": "SYS_ADMIN",
"subscribed": true,
"timezone": "<string>",
"username": "<string>"
}Edit my profile
Deprecated - profile editing (firstName/lastName/email) has moved to IDM. This endpoint can be disabled via config (returning 410 Gone), with a per-organization exception list kept for customer integrations that still depend on it.
If the caller’s identity is managed by an external identity provider (SSO/SCIM/SAML), the readonly flag in the response is true and firstName/lastName/email changes are silently ignored - only the subscribed flag is applied (when marketing consent is not hidden). Check readonly beforehand to avoid relying on a no-op edit.
curl --request PUT \
--url https://cloud.memsource.com/web/api2/v1/userProfile \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"avatarUrl": "<string>",
"subscribed": true,
"username": "<string>"
}
'import requests
url = "https://cloud.memsource.com/web/api2/v1/userProfile"
payload = {
"email": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"avatarUrl": "<string>",
"subscribed": True,
"username": "<string>"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: '<string>',
firstName: '<string>',
lastName: '<string>',
avatarUrl: '<string>',
subscribed: true,
username: '<string>'
})
};
fetch('https://cloud.memsource.com/web/api2/v1/userProfile', 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/userProfile",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'email' => '<string>',
'firstName' => '<string>',
'lastName' => '<string>',
'avatarUrl' => '<string>',
'subscribed' => true,
'username' => '<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/userProfile"
payload := strings.NewReader("{\n \"email\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"avatarUrl\": \"<string>\",\n \"subscribed\": true,\n \"username\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://cloud.memsource.com/web/api2/v1/userProfile")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"avatarUrl\": \"<string>\",\n \"subscribed\": true,\n \"username\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cloud.memsource.com/web/api2/v1/userProfile")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"avatarUrl\": \"<string>\",\n \"subscribed\": true,\n \"username\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"email": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"avatarUrl": "<string>",
"pendingEmailChange": true,
"readonly": true,
"role": "SYS_ADMIN",
"subscribed": true,
"timezone": "<string>",
"username": "<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.
Body
Response
successful operation
Profile of the currently authenticated user
If user has email change pending (new email not verified)
If the identity is managed by an external identity provider (SSO/SCIM/SAML). When true, PUT /userProfile silently no-ops changes to firstName/lastName/email (returns 200 with the unchanged values).
SYS_ADMIN, SYS_ADMIN_READ, ADMIN, PROJECT_MANAGER, LINGUIST, GUEST, SUBMITTER, PORTAL_MEMBER, BOT Default: true
IANA time zone id (e.g. Europe/Prague); defaults to Europe/London when not set. Used only to render dates and schedule notifications in the TMS UI for this user - it is display/notification only and has no effect on how the API parses or renders dateDue, which is always interpreted and rendered in UTC regardless of this value.
255Was this page helpful?