Skip to content

Instantly share code, notes, and snippets.

@yisraeldov
Created August 14, 2014 13:52
Show Gist options
  • Save yisraeldov/53c28e201ab5b1ce3060 to your computer and use it in GitHub Desktop.
Save yisraeldov/53c28e201ab5b1ce3060 to your computer and use it in GitHub Desktop.
Paymo 3.0 Javascript wrapper
//Paymo API
/**
* This is a quick wrapper for the Paymo 3.0 API
* Requires (jquery.rest)[https://github.com/jpillora/jquery.rest]
*
* Copyright (c) 2014 Yisrael Dov Lebow <lebow@lebowtech.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
var PaymoAPI = new $.RestClient('https://app.paymoapp.com/api/',{ajax:{headers:{Accept:'application/json'}}});
var resourceNames =[
'sessions',
'company',
'me',
'clients',
'clientcontacts',
'projects',
'tasklists',
'tasks',
'entries',
'discussions',
'threads',
'comments',
'milestones',
'users',
'files',
'invoices',
'invoiceitems',
'invoicepayments',
'estimates',
'estimateitems',
'recurringprofiles',
'recurringprofileitems',
'expenses',
'reports',
'tags',
'projecttemplates',
'projecttemplatestasklists',
'projecttemplatestasks'
];
for (var i = resourceNames.length - 1; i >= 0; i--) {
PaymoAPI.add(resourceNames[i]);
};
/**
* logs in and returns a promise for a new session
* clears out username and password
*/
PaymoAPI.login = function(username,password){
PaymoAPI.opts.username = username;
PaymoAPI.opts.password = password;
var promise = PaymoAPI.sessions.create()
PaymoAPI.opts.username = null;
PaymoAPI.opts.password = null;
return promise;
}
/**
* sets up your session ID so you don't need to keep using user name and password to login
*/
PaymoAPI.setSession = function(sessionId){
PaymoAPI.opts.ajax.headers['X-Session'] = sessionId;
}
//so it will work with old version of the wrapper
PaymoAPI.setToken = PaymoAPI.setSession
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment