= freeagent_api
Simple ActiveResource Ruby wrapper for the Freeagent Central API (http://www.freeagentcentral.com/developers/freeagent-api).
This supports all GET, POST, PUT and DELETE ActiveResource calls for the following API resources:
- Company
- Contacts
- Projects
- Tasks
- Invoices
- Invoice Items
- Timeslips
- Users
At the moment, the following API resources are NOT supported (although is being worked on):
Feel free to clone, fork and add tests.
== Installation
To install as a Gem, just run:
$ sudo gem install freeagent_api -s http://gemcutter.org
Please note: version 0.2 is significantly different from 0.1 so if you are upgrading from the early development version please re-familiarise yourself with the documentation.
== Usage
=== Authentication
Freeagent.authenticate({
:domain => 'yourdomain.freeagentcentral.com',
:username => 'your@login.com',
:password => 'your_password'})
=== Company
Timelines
@invoice_timeline = Company.invoice_timeline
@tax_timeline = Company.tax_timeline
=== Contacts
Find contacts
@contacts = Contact.find :all # returns all contacts
@contact = Contact.find id # returns specific contact
Create contact
Required attributes
:first_name
:last_name
@contact = Contact.new params
@contact.save
Update contact
@contact.first_name = 'Joe'
@contact.save
Delete contact
Contact.delete id
or
@contact.destroy
=== Projects
Find projects
@projects = Project.find :all # returns all projects
@project = Project.find id # returns specific project
Create project
Required attribues
:contact_id
:name
:payment_term_in_days
:billing_basis # must be 1, 7, 7.5, or 8
:budget_units # must be Hours, Days, or Monetary
:status # must be Active or Completed
@project = Project.new params
@project.save
Update project
@project.name = 'Web design project'
@project.save
Delete project
Project.delete id
or
@project.destroy
Nested resources
@invoices = @project.invoices
@timeslips = @project.timeslips
=== Tasks
Find tasks
@tasks = Task.find :all # returns all tasks
@task = Task.find id # returns specific task
Create task
Required attributes
:name
@task = Task.new params
@task.save
Update task
@task.name = 'Create wireframes'
@task.save
Delete task
Task.delete id
or
@task.destroy
=== Invoices
Find Invoices
@invoices = Invoice.find :all # returns all invoices
@invoice = Invoice.find id # returns specific invoice
Create invoice
Required attributes
:contact_id
:project_id
:dated_on
:reference
:status
@invoice = Invoice.new params
@invoice.save
Update invoice
@invoice.status = 'Sent'
@invoice.save
Delete invoice
Invoice.delete id
or
@invoice.destroy
Changing status
@invoice.mark_as_draft
@invoice.mark_as_sent
@invoice.mark_as_cancelled
=== Invoice items
Find invoice items
@invoice_items = InvoiceItem.find :all # returns all invoice items
@invoice_item = InvoiceItem.find id # returns specific invoice item
Create invoice item
Required attributes
:description
:quantity
:price
:sales_tax_rate
@invoice_item = InvoiceItem.new params
@invoice_item.save
Update invoice item
@invoice_item.name = 'Create wireframes'
@invoice_item.save
Delete invoice item
InvoiceItem.delete id
or
@invoice_item.destroy
=== Timeslips
Find timeslips
@timeslips = Timeslip.find :all, :params => {:from => '2009-10-01', :to => '2009-10-30'}
# returns all timeslips (:from and :to dates required)
@timeslip = Timeslip.find id # returns specific timeslip
Create timeslip
Required attributes
:user_id
:hours
:dated_on
:task_id OR :new_task
@timeslip = Timeslip.new params
@timeslip.save
Update timeslip
@timeslip.hours = '3.5'
@timeslip.save
Delete timeslip
Timeslip.delete id
or
@timeslip.destroy
=== Users
Find users
@users = User.find :all # returns all users
@user = User.find id # returns specific user
@user = User.find_by_email email
Create user
Required attributes
:first_name
:last_name
:email
:role # must be Owner, Director, Partner, Company Secretary, Employee, Shareholder, or Accountant
:password
:password_confirmation
@user = User.new params
@user.save
Update user
@user.first_name = 'Joe Bloggs'
@user.save
Delete user
User.delete id
or
@user.destroy
== Author & Contributors
== Copyright
Copyright (c) 2009-2010 Aaron Russell. See LICENSE for details.