primarybooleanWhether the email is the primary address. Only one email address for a user can be the primary one.
Updates individual attributes for a user. To update a user's attributes, you must use the correct syntax for the operation, as defined in the SCIM specification(opens in a new tab or window).
For example, to update a user's work email and familyName values, use the following for the request body:
{"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],"Operations": [{"op": "replace","path": "emails[type eq \"work\"].value",},{"op": "replace","path": "name.familyName","value": "New-Family-Name"}]}
To deprovision a SCIM user, you can use an operation to set the active attribute to false. For example:
{"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],"Operations": [{"op": "replace","path": "active","value": false}]}
Alternatively, you can provide an operation's value object as a list of paths and values to modify. For example:
{"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],"Operations": [{"op": "add","value": {"name.givenName": "New-Given-Name","name.familyName": "New-Family-Name","externalId": "abcd1234"}}]}
https://www.canva.com /_scim /v2 /Users/{canva_scim_id}Content-TypestringIndicates the media type of the information sent in the request. This must be set to application/scim+json.
For example: Content-Type: application/scim+json
canva_scim_idstringThe Canva-generated SCIM ID for the user.
schemasstring[]The URIs of the SCIM schemas.
Available values: The only valid value is urn:ietf:params:scim:api:messages:2.0:PatchOp.
Operationsobject[]List of patch operations
opstringThe SCIM patch operation to perform.
Available values:
addremovereplacepathstringAn attribute path describing the target of the operation. For more information, see the SCIM specification(opens in a new tab or window).
valueobjectThe value to add, remove, or replace.
Examples for using the /_scim/v2/Users/{canva_scim_id} endpoint:
curl --request PATCH 'https://www.canva.com/_scim/v2/Users/{canva_scim_id}' \--header 'Authorization: Bearer {token}' \--header 'Content-Type: application/scim+json' \--data '{"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],"Operations": [{"op": "replace","path": "name.familyName","value": "Liddell"}]}'
const fetch = require("node-fetch");fetch("https://www.canva.com/_scim/v2/Users/{canva_scim_id}", {method: "PATCH",headers: {"Authorization": "Bearer {token}","Content-Type": "application/scim+json",},body: JSON.stringify({"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],"Operations": [{"op": "replace","path": "name.familyName","value": "Liddell"}]}),}).then(async (response) => {const data = await response.json();console.log(data);}).catch(err => console.error(err));
import java.io.IOException;import java.net.URI;import java.net.http.*;public class ApiExample {public static void main(String[] args) throws IOException, InterruptedException {HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://www.canva.com/_scim/v2/Users/{canva_scim_id}")).header("Authorization", "Bearer {token}").header("Content-Type", "application/scim+json").method("PATCH", HttpRequest.BodyPublishers.ofString("{\"schemas\": [\"urn:ietf:params:scim:api:messages:2.0:PatchOp\"], \"Operations\": [{\"op\": \"replace\", \"path\": \"name.familyName\", \"value\": \"Liddell\"}]}")).build();HttpResponse<String> response = HttpClient.newHttpClient().send(request,HttpResponse.BodyHandlers.ofString());System.out.println(response.body());}}
import requestsheaders = {"Authorization": "Bearer {token}","Content-Type": "application/scim+json"}data = {"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],"Operations": [{"op": "replace","path": "name.familyName","value": "Liddell"}]}response = requests.patch("https://www.canva.com/_scim/v2/Users/{canva_scim_id}",headers=headers,json=data)print(response.json())
using System.Net.Http;var client = new HttpClient();var request = new HttpRequestMessage{Method = HttpMethod.Patch,RequestUri = new Uri("https://www.canva.com/_scim/v2/Users/{canva_scim_id}"),Headers ={{ "Authorization", "Bearer {token}" },},Content = new StringContent("{\"schemas\": [\"urn:ietf:params:scim:api:messages:2.0:PatchOp\"], \"Operations\": [{\"op\": \"replace\", \"path\": \"name.familyName\", \"value\": \"Liddell\"}]}",Encoding.UTF8,"application/scim+json"),};using (var response = await client.SendAsync(request)){response.EnsureSuccessStatusCode();var body = await response.Content.ReadAsStringAsync();Console.WriteLine(body);};
package mainimport ("fmt""io""net/http""strings")func main() {payload := strings.NewReader(`{"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],"Operations": [{"op": "replace","path": "name.familyName","value": "Liddell"}]}`)url := "https://www.canva.com/_scim/v2/Users/{canva_scim_id}"req, _ := http.NewRequest("PATCH", url, payload)req.Header.Add("Authorization", "Bearer {token}")req.Header.Add("Content-Type", "application/scim+json")res, _ := http.DefaultClient.Do(req)defer res.Body.Close()body, _ := io.ReadAll(res.Body)fmt.Println(string(body))}
$curl = curl_init();curl_setopt_array($curl, array(CURLOPT_URL => "https://www.canva.com/_scim/v2/Users/{canva_scim_id}",CURLOPT_CUSTOMREQUEST => "PATCH",CURLOPT_RETURNTRANSFER => true,CURLOPT_HTTPHEADER => array('Authorization: Bearer {token}','Content-Type: application/scim+json',),CURLOPT_POSTFIELDS => json_encode(["schemas" => ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],"Operations" => [["op" => "replace","path" => "name.familyName","value" => "Liddell"]]])));$response = curl_exec($curl);$err = curl_error($curl);curl_close($curl);if (empty($err)) {echo $response;} else {echo "Error: " . $err;}
require 'net/http'require 'uri'url = URI('https://www.canva.com/_scim/v2/Users/{canva_scim_id}')http = Net::HTTP.new(url.host, url.port)http.use_ssl = truerequest = Net::HTTP::Patch.new(url)request['Authorization'] = 'Bearer {token}'request['Content-Type'] = 'application/scim+json'request.body = <<REQUEST_BODY{"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],"Operations": [{"op": "replace","path": "name.familyName","value": "Liddell"}]}REQUEST_BODYresponse = http.request(request)puts response.read_body
If successful, the endpoint returns a 200 response with a JSON body with the following parameters:
schemasstring[]The URIs of the SCIM schemas.
Available values: The only valid value is urn:ietf:params:scim:schemas:core:2.0:User.
idstringThe Canva-generated SCIM ID for the user.
metaobjectMeta properties for the user.
resourceTypestringThe SCIM resource type of the object.
Available values: The only valid value is User.
createdstringThe timestamp when the object was created.
userNamestringA unique identifier for the user.
displayNamestringThe name of the user, suitable for display to end-users.
emailsobject[]The email address for the user.
The Canva SCIM API only supports one email address for each user.
primarybooleanWhether the email is the primary address. Only one email address for a user can be the primary one.
valuestringThe email address.
typestringThe type of email address for the user. The Canva SCIM API only supports work as the type of the email address.
activebooleanWhether the user account is active. Setting this to false deprovisions the user in Canva.
rolestringThe role of the user. This can be one of the following:
MemberTeacherStaffAdminTemplate-designerAideAdministratorSchool administratorSchoolTenantFacultyIf an invalid value is provided, the role defaults to Member.
Except for Member, all other role values map to the Canva "Brand Designer" role. For more information on Canva roles, see Team roles and permissions(opens in a new tab or window).
Default value: Member
externalIdstringA string that is an identifier for the resource as defined by the provisioning client.
namenameThe components of the user's name.
givenNamestringThe first or 'given' name for the user.
familyNamestringThe last or 'family' name for the user.
localestringThe user's default location, for example en_AU.
{"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],"id": "UAFdxab1abC","externalId": "abcd1234","meta": {"resourceType": "User","created": "2023-09-18T06:08:35Z"},"userName": "aliddell","displayName": "Alice Liddell","name": {"givenName": "Alice","familyName": "Liddell"},"emails": [{"primary": true,"type": "work"}],"active": true,"locale": "en_US","role": "Member"}
schemasstring[]Available values: The only valid value is urn:ietf:params:scim:api:messages:2.0:Error.
detailstringAvailable values: The only valid value is No SSO configurations found, please check the settings page.
statusstringThe HTTP status code of the error.
{"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],"detail": "No SSO configurations found, please check the settings page","status": "400"}
schemasstring[]Available values: The only valid value is urn:ietf:params:scim:api:messages:2.0:Error.
detailstringAvailable values: The only valid value is Email domain not authorized for SCIM..
statusstringThe HTTP status code of the error.
{"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],"detail": "Email domain not authorized for SCIM.","status": "403"}
schemasstring[]Available values: The only valid value is urn:ietf:params:scim:api:messages:2.0:Error.
detailstringAvailable values: The only valid value is No user found for id {canva_scim_id}.
statusstringThe HTTP status code of the error.
{"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],"detail": "No user found for id {canva_scim_id}","status": "404"}
schemasstring[]Available values: The only valid value is urn:ietf:params:scim:api:messages:2.0:Error.
detailstringAvailable values:
userName not availableAccount with email can not be updated. User needs to accept SSO linkingAccount with email already exists. User must first log in with SAML to confirm account ownershipAccount with email is soft deleted. The user must first log in to reactivate their accountstatusstringThe HTTP status code of the error.
{"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],"detail": "userName not available","status": "409"}