Skip to content

maxkoryukov/node-freshdesk-api

 
 

Repository files navigation

Node Freshdesk SDK

Build Status codecov Codacy Badge NSP Status

Node wrapper for Freshdesk v2 API

NPM

Install

npm install --save freshdesk-api

Also, you could use version 1 of API, provided by Kumar Harsh @kumarharsh, but this version is obsolete, and marked as deprecated:

npm install freshdesk-api@APIv1

Usage

var Freshdesk = require('freshdesk-api')
var freshdesk = new Freshdesk('https://yourdomain.freshdesk.com', 'yourApiKey')

Or, with promises:

var Freshdesk = require('freshdesk-api')
var Promise   = require('bluebird')
var asyncFreshdesk = Promise.promisifyAll(
    new Freshdesk('https://yourdomain.freshdesk.com', 'yourApiKey')
)

// see usage examples

bluebird is not a dependency of this package, install it separately: npm install bluebird

Examples

Create a new ticket

freshdesk.createTicket({
    name: 'test ticket',
    email: '[email protected]',
    subject: 'test sub',
    description: 'test description',
    status: 2,
    priority: 1
}, function (err, data) {
    console.log(err || data)
})

Update a ticket

freshdesk.updateTicket(21, {
    description: 'updated description',
    status: 2,
    priority: 1
}, function (err, data, extra) {
    console.log(err || data)
})

Get a ticket

freshdesk.getTicket(21, function (err, data, extra) {
    console.log(err || data)
})

Delete a ticket

freshdesk.deleteTicket(21, function (err, data, extra) {
    console.log(err || data)
})

Get a ticket PROMISIfied

* for promisified version only

asyncFreshdesk.getTicketAsync(21)
    .then((data, extra) => {
        console.log(data, extra)
    })

    .catch(Freshdesk.FreshdeskError, err => {
        // typed `catch` exists only in bluebird

        console.log('ERROR OCCURED', err)
    })
})

Use with Webpack

Here is a part of webpack.config:

webpackConfig.node = {

	// ...

	console: true,
	fs: 'empty',
	net: 'empty',
	tls: 'empty',

	// ...
}

A little bit more about webpack here

Callback

Every SDK method receives a callback parameter. It is a function, which will be called on Freshdesk response received.

Callback called with following arguments:

  • err - Error instance (if occured) or null
  • data - object. Freshdesk response, an object, parsed from JSON
  • extra - additional data, gathered from response. For example, information about paging

extra parameter

extra is an object with following fields:

  • pageIsLast - indicates, that the response is generated from the last page, and there is no sense to play with page and per_page parameters. This parameter is useful for listXXX methods, called with pagination

Extended/debugging output

To enable debug info, run your program with environment flags

  • on linux
    $ DEBUG=freshdesk-api nodejs NAME-OF-YOUR-SCRIPT.js

Functions and Responses

Tickets

  • createTicket(ticket, callback) - Create a new ticket, list of parameters
  • getTicket(id, callback) - Get a ticket by its id
  • updateTicket(id, ticket, callback) - Update a ticket by its id, list of parameters
  • deleteTicket(id, callback) - Delete a ticket by its id
  • restoreTicket(id, callback) - Restore a ticket by its id
  • listAllTickets(filter, callback) - List All Tickets, check list of filters
  • filterTickets(query, callback) - Filter tickets, based on ticket fields, read more
  • listAllTicketFields(callback) - List All Ticket Fields
  • listAllConversations(id, callback) - List All Conversations of a Ticket by its id
  • listAllTicketTimeEntries(id, callback) - List All Time Entries of a Ticket by its id
  • listAllSatisfactionRatings - NOT IMPLEMENTED http://developers.freshdesk.com/api/#view_ticket_satisfaction_ratings

Conversations

  • createReply(id, reply, callback) - Create a Reply for a ticket by its id, list of parameters
  • createNote(id, note, callback) - Create a Note for a ticket by its id, list of parameters
  • updateConversation(id, conversation, callback) - Update a conversation by its id, list of parameters
  • deleteConversation(id, callback) - Delete a conversation by its id

Contacts

  • createContact(contact, callback) - Create a new contact, list of parameters
  • getContact(id, callback) - Get a contact by its id
  • updateContact(id, contact, callback) - Update a contact by its id, list of parameters
  • deleteContact(id, callback) - Delete a contact by its id
  • listAllContacts(filter, callback) - List All Contact, check list of filters
  • listAllContactFields(callback) - List All Contact Fields
  • makeAgent(id, callback) - Make a contact an Agent, read more

Agents

  • getAgent(id, callback) - Get agent by ID read more
  • listAllAgents(params, callback) - List all agents read more
  • updateAgent(id, data, callback) - Update an agent by ID read more
  • deleteAgent(id, callback) - Delete an agent by ID read more
  • currentAgent(callback) - Currently Authenticated Agentread more

Roles

  • getRole(id, callback) - View a Role
  • listAllRoles(callback) - List All Roles

Groups

Not implemented: http://developers.freshdesk.com/api/#groups

Companies

  • createCompany(data, callback) - Create a new company record using parameters
  • getCompany(id, callback) - Get company by ID; read more
  • listAllCompanies(callback) - List all companies; parameters
  • updateCompany(id, data, callback) - Update a company by ID; parameters
  • deleteCompany(id, callback) - Delete a company by ID, read more
  • filterCompanies(query, callback) - Filter companies (beta), based on company fields, read more
  • listAllCompanyFields(callback) - List All Company Fields

Discussions

Not implemented: http://developers.freshdesk.com/api/#discussions

Solutions

Not implemented: http://developers.freshdesk.com/api/#solutions

Surveys

Not implemented: http://developers.freshdesk.com/api/#surveys

Satisfaction Ratings

Not implemented: http://developers.freshdesk.com/api/#satisfaction-ratings

Time Entries

  • createTimeEntry(ticketID, data, callback) - Create new ticket read more
  • listAllTimeEntries(params, callback) - Lists all time entries, if no params pass 'null' read more
  • updateTimeEntry(entryID, data, callback) - Update a time entry by ID read more
  • toggleTimer(entryID, callback) - Toggle timer on time entry by ID read more
  • deleteTimeEntry(id, callback) - Deletes a time entry by ID read more

Email Configs

Not implemented: http://developers.freshdesk.com/api/#email-configs

Products

Not implemented: http://developers.freshdesk.com/api/#products

Business Hours

Not implemented: http://developers.freshdesk.com/api/#business-hours

SLA Policies

SLA = service level agreement

Not implemented: http://developers.freshdesk.com/api/#sla-policies

Settings

Not implemented: http://developers.freshdesk.com/api/#settings

Contributors

Feature Request, Bugs and Ideas can be added here.

About Author

Built with <3 by Arjun Komath (and contributors), [email protected]

License

See the LICENSE file for license rights and limitations (MIT).

About

Node wrapper for Freshdesh v2 API

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%