Descopers with SDKs
You can use the Descope management SDK to create, update, delete, or load Descopers (Descope console users). The management SDK requires a management key, which can be generated here.
If you wish to learn more about Descopers in general, see the Company Settings page.
Descoper management using the management SDK
Backend SDK
Install SDK
npm i --save @descope/node-sdkImport and initialize SDK
import DescopeClient from '@descope/node-sdk';
try{
// baseUrl="<URL>" // When initializing the Descope client, you can also configure the baseUrl ex: https://auth.company.com - this is useful when you utilize a custom domain within your Descope project.
const descopeClient = DescopeClient({ projectId: '__ProjectID__' });
} catch (error) {
// handle the error
console.log("failed to initialize: " + error)
}
Load All Descopers
Note
You can also use our List Descopers API to list all Descopers.
This operation lists all Descopers in your company and returns both the Descoper details and the total count.
const resp = await descopeClient.management.descoper.list();
if (!resp.ok) {
console.log("Failed to load descopers.")
console.log("Status Code: " + resp.code)
console.log("Error Code: " + resp.error.errorCode)
console.log("Error Description: " + resp.error.errorDescription)
console.log("Error Message: " + resp.error.errorMessage)
}
else {
console.log("Successfully loaded descopers.")
console.log("Total: " + resp.data.total)
console.log(resp.data.descopers)
}Load Descoper by ID
Note
You can also use our Get Descoper API to load a specific Descoper.
This operation loads an existing Descoper by ID, including their attributes, status, and RBAC configuration.
// Args:
// id (str): The Descoper ID.
const id = "descoper-id";
const resp = await descopeClient.management.descoper.load(id);
if (!resp.ok) {
console.log("Failed to load descoper.")
console.log("Status Code: " + resp.code)
console.log("Error Code: " + resp.error.errorCode)
console.log("Error Description: " + resp.error.errorDescription)
console.log("Error Message: " + resp.error.errorMessage)
}
else {
console.log("Successfully loaded descoper.")
console.log(resp.data)
}Create Descoper
Note
You can also use our Create Descopers API to create a Descoper.
This operation creates one or more Descopers within the company. Each Descoper requires a login ID. You can optionally set attributes (display name, email, phone), send an invitation email, and configure Descoper roles via RBAC — typically as company admin (isCompanyAdmin), or with granular access scoped to projects or tags.
// Args:
// descopers (List[DescoperCreate]): An array of Descoper creation objects. Each Descoper must have a loginId.
// loginId (str): The login ID for the Descoper.
// attributes (DescoperAttributes): Optional attributes (displayName, email, phone).
// sendInvite (bool): Optional. Set to true to send an invitation email.
// rbac (DescoperRBAC): Optional RBAC configuration. Typically use exactly one of isCompanyAdmin, projects, or tags.
const descopers = [
{
loginId: "user@example.com",
attributes: {
displayName: "Test User",
email: "user@example.com",
phone: "+1234567890",
},
sendInvite: true,
rbac: {
// exactly one of isCompanyAdmin, projects, or tags
projects: [
{
projectIds: ["project-id"],
role: "admin", // 'admin' | 'developer' | 'support'
},
],
},
},
];
const resp = await descopeClient.management.descoper.create(descopers);
if (!resp.ok) {
console.log("Failed to create descoper.")
console.log("Status Code: " + resp.code)
console.log("Error Code: " + resp.error.errorCode)
console.log("Error Description: " + resp.error.errorDescription)
console.log("Error Message: " + resp.error.errorMessage)
}
else {
console.log("Successfully created descoper.")
console.log("Total: " + resp.data.total)
console.log(resp.data.descopers)
}Update Descoper
Note
You can also use our Update Descopers API to update a Descoper.
This operation updates an existing Descoper. You can update attributes (display name, email, phone) and/or RBAC configuration (company admin, or granular project/tag roles).
// Args:
// id (str): The Descoper ID.
const id = "descoper-id";
// attributes (DescoperAttributes): Optional attributes to update (displayName, email, phone).
const attributes = {
displayName: "Updated Name",
};
// rbac (DescoperRBAC): Optional RBAC configuration to update. Typically use exactly one of isCompanyAdmin, projects, or tags.
const rbac = {
isCompanyAdmin: true,
};
const resp = await descopeClient.management.descoper.update(id, attributes, rbac);
if (!resp.ok) {
console.log("Failed to update descoper.")
console.log("Status Code: " + resp.code)
console.log("Error Code: " + resp.error.errorCode)
console.log("Error Description: " + resp.error.errorDescription)
console.log("Error Message: " + resp.error.errorMessage)
}
else {
console.log("Successfully updated descoper.")
console.log(resp.data)
}Delete Descoper
Note
You can also use our Delete Descopers API to delete a Descoper.
This operation deletes an existing Descoper by ID. It is important to note that this operation is irreversible and the Descoper will be removed and will not be able to be added back without recreation.
// Args:
// id (str): The Descoper ID.
const id = "descoper-id";
const resp = await descopeClient.management.descoper.delete(id);
if (!resp.ok) {
console.log("Failed to delete descoper.")
console.log("Status Code: " + resp.code)
console.log("Error Code: " + resp.error.errorCode)
console.log("Error Description: " + resp.error.errorDescription)
console.log("Error Message: " + resp.error.errorMessage)
}
else {
console.log("Successfully deleted descoper.")
}