- Example
- Install
- Using OAuth for Authentication
- Command Line Options
- Library Mode
- Core API Methods
- Help Center API Methods
- Voice API Methods
- Contributions
var zendesk = require('node-zendesk');
var client = zendesk.createClient({
username: 'username',
token: 'token',
remoteUri: 'https://remote.zendesk.com/api/v2'
});
client.users.list(function (err, req, result) {
if (err) {
console.log(err);
return;
}
console.log(JSON.stringify(result[0], null, 2, true));//gets the first page
});
Take a look in the examples
folder for more examples.
Install using npm:
npm install node-zendesk
If you want to use an OAuth token to authenticate with Zendesk, pass in the oauth
key with a value of true when creating the client.
You can learn more about obtaining OAuth tokens from Zendesk's developer site.
var zendesk = require('node-zendesk');
var client = zendesk.createClient({
username: 'username',
token: 'oauth_token',
remoteUri: 'https://remote.zendesk.com/api/v2',
oauth: true
});
Below is a list of options you may use when calling any scripts you may have written
-s --subdomain X
-u --username X
-p --password X
-t --token X
-r --remoteUri X
-hc --helpcenter
-v --voice
--debug
--no-cookies
--timeout X(ms)
--proxy X
--encoding X
They are fairly self-explanatory no-cookies, timeout, proxy, encoding are all options to request. if using debug its recommended you use --encoding utf8
or something similar as all you will see is a buffer otherwise in the response.
Because of these command line options you can try a few already from the examples section:
node examples/users-list.js -u <username> -t <token> -s <subdomain>
node examples/check-auth.js -u <username> -p <password> -s <subdomain>
node examples/check-auth-token.js -u <username> -t <token> -s <subdomain>
node examples/users-list.js -u <username> -t <token> -s <subdomain>
If you rather use this library/script runner as a library only you should disable the library from reading from process.argv
and process.env
by enabling disableGlobalState
.
var zendesk = require('node-zendesk');
var client = zendesk.createClient({
username: 'username',
token: 'oauth_token',
remoteUri: 'https://remote.zendesk.com/api/v2',
disableGlobalState: true,
debug: true // if you want to debug in library only mode, you'll have to include this
});
For the endpoints that support side-loading, you can specify which other objects to bring in by setting the sideLoad variable to an array of object names:
client.tickets.sideLoad = ['users', 'organizations', 'metric_sets'];
client.users.sideLoad = ['organizations', 'roles'];
For a full list of endpoints that support side-loading, see Zendesk's developer site
See Making API requests on behalf of end users to grant impersonate scope. Pass end-user's email when creating client.
var zendesk = require('node-zendesk');
var client = zendesk.createClient({
username: 'username',
token: 'oauth_token',
remoteUri: 'https://remote.zendesk.com/api/v2',
oauth: true,
asUser: 'end-user@example.com'
});
request(method, uri)
requestAll(method, uri) //pulls back multiple pages
requestUpload(uri, file, fileToken, callback)
When using the requestAll
method, the client automatically pages-through results, accumulating all responses before returning them to the cb
method. To monitor pagination, the cb
parameter can also be an observer – see this example.
(See: https://developer.zendesk.com/rest_api/docs/core/introduction)
show(cb)
show(activityID, cb)
list(cb)
upload(file, fileOptions, cb)
deleteUpload(token, cb)
show(attachmentID, cb)
delete(attachmentID, cb)
redactAttachmentComment(ticketID, commentID, attachmentID, cb)
fileOptions = {filename: 'file.txt', token: 'P1c4rDRuLz'}
// token is [optional]
file = // string or Stream (with 'pipe' function)
https://developer.zendesk.com/rest_api/docs/core/dynamic_content
listItems(cb)
listAllItems(cb)
showItem(itemID, cb)
createItem(item, cb)
updateItem(itemID, item, cb)
deleteItem(itemID, cb)
listVariants(itemID, cb)
listAllVariants(itemID, cb)
showVariant((itemID, variantID, cb)
createVariant(itemID, variant, cb)
updateVariant(itemID, variantID, variant, cb)
deleteVariant(itemID, variantID, cb)
list(cb)
show(categoryID, cb)
create(category, cb)
update(categoryID, category, cb)
delete(categoryID, cb)
list(cb)
list(cb)
listByCategory(categoryID, cb)
show(forumID, cb)
create(forum, cb)
update(forumID, forum, cb)
delete(forumID, cb)
list(cb)
listByForum(forumID, cb)
show(forumSubscriptionID, cb)
create(forumSubscription, cb)
delete(forumSubscriptionID, cb)
list(cb)
listByUser(userID, cb)
listByGroup(groupID, cb)
show(groupMembershipID, cb)
showByUser(userID, groupMembershipID, cb)
create(groupMembership, cb)
createByUser(userID, groupMembership, cb)
delete(groupMembershipID, cb)
deleteByUser(userID, groupMembershipID, cb)
makeDefault(userID, groupMembershipID, cb)
list(cb)
assignable(cb)
show(groupID, cb)
create(group, cb)
update(groupID, group, cb)
delete(groupID, cb)
show(jobStatusID, cb)
watch(jobStatusID, interval, maxAttempts, cb)
list(cb)
show(localeID, cb)
showCurrent(cb)
current(cb)
list(cb)
listByParams(params, cb)
apply(macroID, cb)
applyTicket(ticketID, macroID, cb)
create(macro, cb)
categories(cb)
update(macroID, macro, cb)
createMany(users, cb)
list(cb)
show(id, cb)
current(cb)
revoke(id, cb)
list(cb)
show(organizationID, cb)
create(organization, cb)
update(organizationID, organization, cb)
upsert(organizationID, organization, cb)
delete(organizationID, cb)
incrementalInclude(startTime, includes, cb) // New Export API supporing includes
incremental(startTime, cb) // New Export API
incrementalSample(startTime, cb) // New Export API Sample
list(cb)
show(organizationFieldID, cb)
create(organizationField, cb)
update(organizationFieldID, organizationField, cb)
delete(organizationFieldID, cb)
list(cb)
show(policyID, cb)
create(policy, cb)
update(policyID, policy, cb)
delete(policyID, cb)
list(cb)
listOpen(cb)
listSolved(cb)
listCCD(cb)
listByUser(userID, cb)
listByOrganization(orgID, cb)
getRequest(requestID, cb)
create(request, cb)
update(requestID, request, cb)
listComments(requestID, cb)
getComment(requestID, commentID, cb)
list(cb)
received(cb)
show(satisfactionRatingID, cb)
query(searchTerm, cb)
queryAll(searchTerm, cb)
queryAnonymous (searchTerm, cb)
queryAnonymousAll (searchTerm, cb)
get(cb)
getByUserId(userId, cb)
getByUserIdBySessionId(userId, sessionId, cb)
getMyAuthenticatedSession(cb)
deleteByUserIdBySessionId(userId, sessionId, cb)
bulkDeleteByUserId(userId, cb)
logMeOut(cb)
list(cb)
show(suspendedTicketID, cb)
recover(suspendedTicketID, cb)
recoverMany(suspendedTicketIDs, cb)
delete(suspendedTicketID, cb)
destroyMany(suspendedTicketIDs, cb)
deleteMany(suspendedTicketIDs, cb)
list(cb)
list(ticketID, cb)
incrementalInclude(startTime, includes, cb) // New Export API supporing includes
incremental(startTime, cb)
incrementalSample(startTime, cb)
list(cb)
show(ticketFormID, cb)
list(cb)
show(ticketFieldID, cb)
create(ticketField, cb)
update(ticketFieldID, ticketField, cb)
delete(ticketFieldID, cb)
list(ticketId, cb)
listAll(cb)
show(ticketMetricId, cb)
list(cb)
listAssigned(userID, cb)
listByOrganization(orgID, cb)
listByUserRequested(userID, cb)
listByUserCCD(userID, cb) // email cc
listRecent(cb)
listCollaborators(ticketID, cb)
listIncidents(ticketID, cb)
listMetrics(ticketID, cb)
show(ticketID, cb)
showMany(ticket_ids, cb)
create(ticket, cb)
createMany(tickets, cb)
update(ticketID, ticket, cb)
merge(ticketID, mergedTicket, cb)
updateMany(ticket_ids, ticket, cb)
deleteMany(ticket_ids, cb)
delete(ticketID, cb)
export(startTime, cb) //1000 per page export
exportSample(startTime, cb) //Ticket Export Sample (max 50 tickets per request)
exportAudit(ticketID, cb) //Listing Audits
getComments(ticketID, cb)
incrementalInclude(startTime, includes, cb) // New Export API supporing includes
incremental(startTime, cb) // New Export API
incrementalSample(startTime, cb) // New Export API Sample
export(start_time, cb)
exportWithUser(start_time, cb)
exportAudit(ticketID, cb)
import(ticket, cb)
exportAudit(ticketID, cb)
list(topicID, cb)
listByUser(userID, cb)
show(topicID, commentID, cb)
showByUser(userID, commentID, cb)
create(topicID, comment, cb)
update(topicID, commentID, comment, cb)
delete(topicID, commentID, cb)
list(cb)
listByForum(forumID, cb)
listByUser(userID, cb)
show(topicID, cb)
showMany(topicIDs, cb)
create(topic, cb)
update(topicID, topic, cb)
delete(topicID, cb)
list(cb)
listByTopic(topicID, cb)
show(topicSubscriptionsID, cb)
create(topicSubscription, cb)
delete(topicSubscriptionsID, cb)
list(topicID, cb)
listByUser(userID, cb)
show(topicID, cb)
create(topicID, vote, cb)
delete(topicID, cb)
list(cb)
listActive(triggerID, cb)
show(triggerID, cb)
create(trigger, cb)
update(triggerID, trigger, cb)
delete(triggerID, cb)
reorder(triggerIDs, cb) // triggerIDs is Array
list(userID, cb)
show(userID, userIDentityID, cb)
create(userID, userIDentity, cb)
update(userID, userIDentityID, cb)
makePrimary(userID, userIDentityID, cb)
verify(userID, userIDentityID, cb)
requestVerification(userID, userIDentityID, cb)
delete(userID, userIDentityID, cb)
auth(cb) //also me()
list(cb)
listByGroup(id, cb)
listByOrganization(id, cb)
show(id, cb)
showMany( userids, cb )
create(user, cb)
createMany(users, cb)
update(id, user, cb)
updateMany(/*Optional*/ids, users, cb)
createOrUpdate(user, cb)
createOrUpdateMany(users, cb)
suspend(id, cb)
unsuspend(id, cb)
delete(id, cb)
search(params, cb)
me(cb)
merge(id, targetId, cb)
incrementalInclude(startTime, includes, cb) // New Export API supporing includes
incremental(startTime, cb) // New Export API
incrementalSample(startTime, cb) // New Export API Sample
list(cb)
show(userFieldID, cb)
create(userField, cb)
update(userFieldID, userField, cb)
delete(userFieldID, cb)
list(cb)
listActive(cb)
listCompact(cb)
show(viewID, cb)
create(view, cb)
update(viewID, viewData, cb)
execute(viewID, params, cb)
tickets(viewID, cb)
preview(params, cb)
showCount(viewID, cb)
showCounts(viewIDs, cb)
export(viewID, cb)
(See: https://developer.zendesk.com/rest_api/docs/help_center/introduction)
To enable help center client, use -hc
or --helpcenter
parameter.
show(sectionID, cb)
update(sectionID, accessPolicy, cb)
list(articleID, cb)
listInline(articleID, cb)
listBlock(articleID, cb)
show(attachmentID, cb)
delete(attachmentID, cb)
listByUser(userID, cb)
listByArticle(articleID, cb)
show(articleID, commentID, cb)
create(articleID, comment, cb)
update(articleID, commentID, comment, cb)
delete(articleID, commentID, cb)
list(cb)
listByArticle(articleID, cb)
show(labelID, cb)
create(articleID, label, cb)
delete(articleID, labelID, cb)
list(cb)
listByLocale(locale,cb)
listBySection(sectionID,cb)
listByCategory(categoryID,cb)
listByUser(userID,cb)
listSinceStartTime(startTime,cb)
listByLabelNames(labelNames,cb)
show(articleID, cb)
showWithLocale(locale, articleID, cb)
create(sectionID, article, cb)
createWithLocale(locale, sectionID, article, cb)
update(articleID, article, cb)
updateByLocale(locale, articleID, article, cb)
associateAttachmentsInBulk(articleID, attachmentIDsInBulk, cb)
delete(articleID, cb)
list(cb)
listWithLocale(locale, cb)
show(categoryID, cb)
create(category, cb)
update(categoryID, category, cb)
delete(categoryID, cb)
searchArticles(searchString, cb)
searchArticlesInLocale(searchString, locale, cb)
searchArticlesByLabels(labelNames, cb)
searchQuestions(searchString, cb)
list(cb)
listByCategory(categoryID, cb)
show(sectionID, cb)
create(section, cb)
update(sectionID, section, cb)
delete(sectionID, cb)
listByUser(userID, cb)
listByArticle(articleID, cb)
listBySection(sectionID, cb)
showbyArticle(articleID, subscriptionID, cb)
showbySection(sectionID, subscriptionID, cb)
createbyArticle(articleID, subscription, cb)
createbySection(sectionID, subscription, cb)
deletebyArticle(articleID, subscriptionID, cb)
deletebySection(sectionID, subscriptionID, cb)
show(articleID, locale, cb)
listByArticle(articleID, filterParams, cb)
listBySection(sectionID, cb)
listByCategory(categoryID, cb)
listMissingLocalesByArticle(articleID, cb)
listMissingLocalesBySection(sectionID, cb)
listMissingLocalesByCategory(categoryID, cb)
createForArticle(articleID, translation, cb)
createForSection(sectionID, translation, cb)
createForCategory(categoryID, translation, cb)
updateForArticle(articleID, locale, translation, cb)
updateForSection(sectionID, locale, translation, cb)
delete(translationID, cb)
listByUser(userID, cb)
listByArticle(articleID, cb)
show(voteID, cb)
createUpVoteForArticle(articleID, cb)
createDownVoteForArticle(articleID, cb)
createUpVoteForQuestion(questionID, cb)
createDownVoteForQuestion(questionID, cb)
createUpVoteForAnswer(answerID, cb)
createDownVoteForAnswer(answerID, cb)
delete(voteID, cb)
(See: https://developer.zendesk.com/rest_api/docs/voice-api/voice)
To enable help center client, use -v
or --voice
parameter.
show(cb)
update(agentID, cb)
show(agentID, cb)
show(cb)
list(cb)
show(greetingCategoryID, cb)
list(cb)
show(greetingID, cb)
create(greetingID, cb)
update(greetingID, cb)
delete(greetingID, cb)
show(cb)
search(searchTerm, cb)
update(phoneID, cb)
list(cb)
create(cb)
update(phoneID, phone_number, cb)
delete(phoneID, cb)
If you're looking to contribute, please refer to the API Coverage Document, open an issue, or make a PR!
Tests and examples are also welcome.
Zendesk's documentation can be found here.
MIT.