Themes with SDKs
Manage your themes by exporting them for backup or migration, and importing them across different projects. You can do this through the Descope Console or programmatically using the Management SDK.
Install SDK
npm i --save @descope/node-sdkImport and Initialize Management SDK
import DescopeClient from '@descope/node-sdk';
const managementKey = "xxxx"
try{
// baseUrl="<URL>" // When initializing the Descope client you can 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__', managementKey: managementKey });
} catch (error) {
// handle the error
console.log("failed to initialize: " + error)
}
Export Theme
Use the code below to export a theme:
import * as fs from 'fs';
// Args
// None
const resp = await descopeClient.management.theme.export()
if (!resp.ok) {
console.log(resp)
console.log("Unable to export theme.")
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 exported theme.")
console.log(resp.data)
let data = JSON.stringify(resp.data, null, 2);
fs.writeFile('theme.json', data, (err) => {
if (err) throw err;
console.log('Theme written to file');
});
}Import Theme
Use the code below to import a theme:
import * as fs from 'fs';
// Args
// theme (Theme): the theme to import. dict in the format
// {"id": "", "cssTemplate": {} }
let data = fs.readFileSync('theme.json');
let jsonData = JSON.parse(data);
const theme = jsonData["theme"]
const resp = await descopeClient.management.theme.import(theme)
if (!resp.ok) {
console.log(resp)
console.log("Unable to import theme.")
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 imported theme.")
console.log(resp.data)
} Was this helpful?