freesidejs

1.3.6 • Public • Published

Freeside.js

This is a node.js API wrapper for Freeside Billing Software

Freeside uses xml-rpc for its api. This wrapper will serialize methods and parameters for transport.


Installation

# using npm
npm install freesidejs

Documentation

You will need to use the require() method to get the module into your project. If you are going to use the post() method, please specify your hostname and port of your freeside server.

var Freeside = require('freesidejs');
Freeside.hostname = "127.0.0.1";
Freeside.port = 8080;
Freeside.timeout = 15000; //.post() timeout

Freeside.pack(methodName, params)

The pack() method can be used to generate an xml-rpc request body. It takes 2 parameters, a methodName which is a string, and a object params which has key value pairs. It is worth noting that all the parameters for a method must be included even if they are blank.

// generate an xml-rpc request for the freeside api
var xmlData = Freeside.pack("login", {
    email: "test@email.com",
    username: "",
    domain: "",
    password: "password"
});

## VALUE OF xmlData ##
<?xml version="1.0" encoding="utf-8"?>
<methodCall>
    <methodName>FS.ClientAPI_XMLRPC.login</methodName>
    <params>
        <param><value><string>email</string></value></param>
        <param><value><string>test@email.com</string></value></param>
        <param><value><string>username</string></value></param>
        <param><value><string></string></value></param>
        <param><value><string>domain</string></value></param>
        <param><value><string></string></value></param>
        <param><value><string>password</string></value></param>
        <param><value><string>password</string></value></param>
    </params>
</methodCall>

Acceptable methodName Strings (some are deprecated, check freeside docs) 'passwd' 'chfn' 'chsh' 'login_info' 'login_banner_image' 'login' 'logout' 'switch_acct' 'switch_cust' 'customer_info' 'customer_info_short' 'customer_recurring' 'contact_passwd' 'list_contacts' 'edit_contact' 'delete_contact' 'new_contact' 'billing_history' 'edit_info' 'invoice' 'invoice_pdf' 'legacy_invoice' 'legacy_invoice_pdf' 'invoice_logo' 'list_invoices' 'list_payby' 'insert_payby' 'update_payby' 'delete_payby' 'cancel' 'payment_info' 'payment_info_renew_info' 'process_payment' 'store_payment' 'process_stored_payment' 'process_payment_order_pkg' 'process_payment_change_pkg' 'process_payment_order_renew' 'process_prepay' 'start_thirdparty' 'finish_thirdparty' 'realtime_collect' 'list_pkgs' 'list_svcs' 'list_svc_usage' 'svc_status_html' 'svc_status_hash' 'set_svc_status_hash' 'set_svc_status_listadd' 'set_svc_status_listdel' 'set_svc_status_vacationadd' 'set_svc_status_vacationdel' 'acct_forward_info' 'process_acct_forward' 'list_dsl_devices' 'add_dsl_device' 'delete_dsl_device' 'port_graph' 'list_cdr_usage' 'list_support_usage' 'order_pkg' 'change_pkg' 'order_recharge' 'renew_info' 'order_renew' 'cancel_pkg' 'suspend_pkg' 'charge' 'part_svc_info' 'provision_acct' 'provision_phone' 'provision_pbx' 'provision_external' 'unprovision_svc' 'myaccount_passwd' 'reset_passwd' 'check_reset_passwd' 'process_reset_passwd' 'validate_passwd' 'list_tickets' 'create_ticket' 'get_ticket' 'adjust_ticket_priority' 'did_report' 'signup_info' 'skin_info' 'access_info' 'domain_select_hash' 'new_customer' 'new_customer_minimal' 'capture_payment' 'clear_signup_cache' 'new_prospect' 'new_agent' 'agent_login' 'agent_logout' 'agent_info' 'agent_list_customers' 'check_username' 'suspend_username' 'unsuspend_username' 'mason_comp' 'call_time' 'call_time_nanpa' 'phonenum_balance' 'list_quotations' 'quotation_new' 'quotation_delete' 'quotation_info' 'quotation_print' 'quotation_add_pkg' 'quotation_remove_pkg' 'quotation_order' 'freesideinc_service'

Freeside.unpack(xmlResponse, callback(results))

The unpack() method will parse the xml-rpc response body. The parsed values are available through the callback results parameter.

Freeside.unpack(xmlResponse, function(results){
    console.dir(results);
    // results: { session_id: 'deb0bc80c62f04fa0fc759989886299e', error: '' }
});

Freeside.post(requestBody, callback(results))

The post() method will POST your xml-rpc request using http and provide the return xml body.

var xmlData = Freeside.pack("login", {
    email: "test@email.com",
    username: "",
    domain: "",
    password: "password"
});
Freeside.post(xmlData, function(results){
    console.log(results); // will be xml-rpc response body
});


Full Use Example

var Freeside = require('freesidejs');

var xmlData = Freeside.pack("login", {
    email: "test@email.com",
    username: "",
    domain: "",
    password: "password"
});

Freeside.post(xmlData, function(xmlResponse){
    
    if(!xmlResponse){
        console.error("No XML Response");
    } else {
        Freeside.unpack(xmlResponse, function(results){

            if(results.error != null && results.error != ""){
                // Handle Error best way you see fit
                conosle.error(JSON.stringify(results));
            } else if (results.faultCode != null){
                // Should never happen, but better to be safe
                console.error(JSON.stringify(results));
            } else {

                // Here is where you handle the data
                console.log(results);

            }

        });
    }

});

Readme

Keywords

none

Package Sidebar

Install

npm i freesidejs

Weekly Downloads

33

Version

1.3.6

License

ISC

Last publish

Collaborators

  • magreenberg