primary
boolean
Whether 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-Type
string
Indicates 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_id
string
The Canva-generated SCIM ID for the user.
schemas
string[]
The URIs of the SCIM schemas. The value for this can only be urn:ietf:params:scim:api:messages:2.0:PatchOp
.
Operations
object[]
List of patch operations
Operations
op
string
The SCIM patch operation to perform. This can be one of the following:
add
remove
replace
path
string
An attribute path describing the target of the operation. For more information, see the SCIM specification(opens in a new tab or window).
value
The 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:
schemas
string[]
The URIs of the SCIM schemas. The value for this can only be urn:ietf:params:scim:schemas:core:2.0:User
.
id
string
The Canva-generated SCIM ID for the user.
meta
object
Meta properties for the user.
meta
resourceType
string
The SCIM resource type of the object. The value for this can only be User
.
created
string
The timestamp when the object was created.
userName
string
A unique identifier for the user.
displayName
string
The name of the user, suitable for display to end-users.
emails
object[]
The email address for the user.
The Canva SCIM API only supports one email address for each user.
emails
primary
boolean
Whether the email is the primary address. Only one email address for a user can be the primary one.
value
string
The email address.
type
string
The type of email address for the user. The Canva SCIM API only supports work
as the type of the email address.
active
boolean
Whether the user account is active. Setting this to false
deprovisions the user in Canva.
role
string
The role of the user. This can be one of the following:
Member
Teacher
Staff
Admin
Template-designer
Aide
Administrator
School administrator
School
Tenant
Faculty
If 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).
externalId
string
A string that is an identifier for the resource as defined by the provisioning client.
name
name
The components of the user's name.
name
givenName
string
The first or 'given' name for the user.
familyName
string
The last or 'family' name for the user.
locale
string
The 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"}
schemas
string[]
The value for this can only be urn:ietf:params:scim:api:messages:2.0:Error
.
detail
string
The value for this can only be No SSO configurations found, please check the settings page
.
status
string
The 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"}
schemas
string[]
The value for this can only be urn:ietf:params:scim:api:messages:2.0:Error
.
detail
string
The value for this can only be Email domain not authorized for SCIM.
.
status
string
The 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"}
schemas
string[]
The value for this can only be urn:ietf:params:scim:api:messages:2.0:Error
.
detail
string
The value for this can only be No user found for id {canva_scim_id}
.
status
string
The 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"}
schemas
string[]
The value for this can only be urn:ietf:params:scim:api:messages:2.0:Error
.
detail
string
This can be one of the following:
userName not available
Account with email can not be updated. User needs to accept SSO linking
Account with email already exists. User must first log in with SAML to confirm account ownership
Account with email is soft deleted. The user must first log in to reactivate their account
status
string
The HTTP status code of the error.
{"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],"detail": "userName not available","status": "409"}