Browser SDK
The Zephr Browser SDK is available to view in the Zephr Bitbucket account. If you have trouble accessing this page, please email support@zuora.com.
Installation
The Zephr SDK for browsers supports AMD and CommonJS modules. If neither require nor define are on the global scope then a global obejct, BlaizeSDK
, will be created.
// for AMD or CommonJS
var BlaizeSDK = require('/path/to/blaize-front-end-sdk.min.js');
The Zephr SDK for browsers uses the Zephr Public API and will work with the blaize_session
cookie to operate as the site visitor.
General usage
The SDK is built to be cross browsers and lightweight, therefore Promises and other ES6 features are not used.
All functions in the SDK accept a callback function that takes two parameters: an error message then a success response. You should check that the error
parameter is falsey before continuing execution.
BlaizeSDK.getAnonymousSession(function(error, success) {
if (error) {
console.log(error);
} else {
// do something now that you have an anonymous session
}
});
All functions will also check the arguments passed to them before execution. If the SDK is being used incorrectly (i.e. a function is called with inappropriate parameters) an error message will be written to the console and the function will not execute; the callback will not be invoked at all.
SDK functions
getAnonymousSession
This function is used to set an anonymous session cookie. This method only needs to be called if you have disabled automatic anonymous user sessions within the Zephr Admin Console.
Arguments: * callback
Example:
function optIn() {
BlaizeSDK.getAnonymousSession(function(error, success) {
if (error) {
console.log(error);
document.querySelector('input.opt-in').value = false;
} else {
console.log('now tracking anonymous usage');
}
});
}
document.querySelector('input.opt-in').addEventListener('click', optIn);
An API reference is available in the Public API specification, under Authentication > Anonymous Session.
register
This function is used to register a new user and will set an authenticated session cookie.
Arguments: user callback
Example:
function getEmailFromForm() {
// get the user's email
}
function getPasswordFromForm() {
// get the user's password
}
function getFirstNameFromForm() {
// get the user's name
}
let user = {
identifiers: {
email\_address: getEmailFromForm()
},
validators: {
password: getPasswordFromForm()
},
attributes: {
first\_name: getFIrstNameFromForm()
}
};
BlaizeSDK.register(user, function(error, success) {
if (error) {
console.log(error);
} else {
// do something now that the visitor is logged in
}
});
An API reference is available in the Public API specification, under User > Register.
login
This function is used to authenticate an existing user and will set an authenticated session cookie.
Arguments: user callback
Example:
function getEmailFromForm() {
// get the user's email
}
function getPasswordFromForm() {
// get the user's password
}
let user = {
identifiers: {
email\_address: getEmailFromForm()
},
validators: {
password: getPasswordFromForm()
}
};
BlaizeSDK.login(user, function(error, success) {
if (error) {
console.log(error);
} else {
// do something now that the visitor is logged in
}
});
An API reference is available in the Public API specification, under Authentication > Login.
logout
This function is used to logout the current user and will delete their authenticated session cookie.
Arguments: * callback
Example:
BlaizeSDK.logout(function(error, success) {
if (error) {
console.log(error);
} else {
// do something now that the session is anonymous
}
});
An API reference is available in the Public API specification, under Authentication > Logout.
forgetMe
This function is used to delete all data about the current user and will also remove their authenticated session cookie.
Arguments: * callback
Example:
BlaizeSDK.forgetMe(function(error, success) {
if (error) {
console.log(error);
} else {
// do something now that the session is anonymous
}
});
entitlementChallenge
This function is used check whether the current user is entitled to certain content. The first argument is an array of Entitlements IDs (from the Zephr Admin API or Admin Console). The successful response object is a map from the Entitlement ID to a boolean.
Be aware that entitlement challenges may use credits from the user’s meter, so responses should not be cached.
Arguments: entitlements callback
Example:
const articleEntitlement = '1234';
const videoEntitlement = '5678';
function loadArticleContent() {
// do something here
}
function loadVideoContent() {
// do something here
}
BlaizeSDK.entitlementChallenge(\[articleEntitlement, videoEntitlement\], function(error, results) {
if (error) {
console.log(error);
} else {
if (results\[articleEntitlement\]) {
loadArticleContent();
}
if (results\[videoEntitlement\]) {
loadVideoContent();
}
}
});
An API reference is available in the Admin API specification, under Entitlement > Entitlements.
getAccount
This function is used to retrieve account data (including email address) for the current user. The user must be logged in to use this function.
The successful response object is:
{
"identifiers": {
"email\_address": "x@y.z"
},
"tracking\_id": "1234"
}
Arguments: * callback
Example:
BlaizeSDK.getAccount(function(error, account) {
if (error) {
console.log(error);
} else {
console.log(account.identifiers.email\_address);
}
});
An API reference is available in the Public API specification, under User > Account.
getProfile
This function is used to retrieve the current user’s profile. The user must be logged in to use this function.
The successful response object is a map of user attributes to values. This depends upon the user schema created in the Admin API or Admin Console.
Arguments: * callback
Example:
BlaizeSDK.getProfile(function(error, profile) {
if (error) {
console.log(error);
} else {
console.log(profile\['first\_name'\]);
}
});
An API reference is available in the Public API specification, under User > Account. Details on the User Schema are available in the Admin API Specification under User > Schema.
updateProfile
This function is used to update the current user’s profile. The user must be logged in to use this function.
The first argument is a map of user attributes to values. This depends upon the user schema created in the Admin API or Admin Console. The merge
argument is a boolean flag; if true, the first argument is treated as a partial profile and will update the existing profile; if false, the first argument is treated as a complete profile and will completely replace any existing attributes (potentially removing attributes that are not in the update).
Arguments: profile merge * callback
Example:
function getJobTitleFromForm() {
// get the user's job title
}
let update = {
job\_title: getJobTitleFromForm()
};
BlaizeSDK.updateProfile(update, true, function(error, profile) {
if (error) {
console.log(error);
} else {
// do something
}
});
An API reference is available in the Public API specification, under User > Account. Details on the User Schema are available in the Admin API Specification under User > Schema.
getExtendedProfileDocument
This function is used to retrieve a JSON document from the current user’s extended profile. The user must be logged in to use this function.
Note: while extended profiles may be non-JSON, the Public API only supports JSON data types to prevent CSRF attacks.
Arguments: documentId callback
Example:
function prepareReadingList(topics) {
// do something
}
BlaizeSDK.getExtendedProfileDocument('topics-to-follow', function(error, json) {
if (error) {
console.log(error);
} else {
prepareReadingList(json);
}
});
An API reference is available in the Public API specification, under User > Extended Profile.
updateExtendedProfileDocument
This function is used to write a JSON document to the current user’s extended profile. The user must be logged in to use this function.
Note: while extended profiles may be non-JSON, the Public API only supports JSON data types to prevent CSRF attacks.
Arguments: documentId callback
Example:
function getReadingList(topics) {
// get some topics
return \['fishing', 'politics'\];
}
BlaizeSDK.updateExtendedProfileDocument('topics-to-follow', getReadingList(), function(error, json) {
if (error) {
console.log(error);
} else {
// do something
}
});
An API reference is available in the Public API specification, under User > Extended Profile.
listSubscriptions
This function is used to retrieve a list of the user’s current subscriptions. The user must be logged in to use this function.
Each subscription will include an external ID, a state, a Zephr product and an array of transactions.
The first argument must be the payment provider. Currently, only the Zephr Braintree integration supports listing subscriptions, so that value must be “braintree”.
Arguments: provider callback
Example:
function renderTransactionHistory(subscriptions) {
// do something
}
BlaizeSDK.listSubscriptions('braintree', function(error, subscriptions) {
if (error) {
console.log(error);
} else {
renderTransactionHistory(subscriptions);
}
});