permalink: "/{{ year }}/{{ month }}/{{ day }}/badbilla-billomat-api-client" title: "BadBill - a Billomat API client" published_date: "2012-09-21 12:58:00 +0200" layout: post.liquid data: route: blog --- I'm happy to announce the release of my Billomat API client: ## [BadBill][repo] BadBill is a simple API client for the [Billomat API][apidocu]. It allows access to all resources the API offers. For now only `clients` and `invoices` are pure Ruby classes, but all other resources are available trough an easy interface returning Hash-like objects. My goals for this project: * Fast and easy access to all resources the API provides (not all resources are Ruby classes, yet) * Full documentation. * Test coverage as best as I can. * Production-ready (it's for a job project). I'm sure it may include bugs and it's not ready for all use-cases, but as this is open-source now I accept all ideas, improvements, bug reports and pull-requests. Just go to the [Github repository][repo] and start hacking. ;) Install it via Rubygems: gem install badbill Read the documentation online: [BadBill documentation](http://rubydoc.info/github/badboy/badbill/master/frames) And now for some code examples: #### Basic interface: ~~~ruby bill = BadBill.new "billo", "18e40e14" # => # bill.get 'settings' # => {"settings"=> # {"invoice_intro"=>"", # "invoice_note"=>"", # ...}} ~~~ #### Using defined resources classes: ~~~ruby BadBill.new "billo", "18e40e14" BadBill::Invoice.all # => [#], ...] invoice = BadBill::Invoice.find(1) invoice.pdf # => {"id"=>"1", # "created"=>"2012-09-17T13:58:42+02:00", # "invoice_id"=>"322791", # "filename"=>"Invoice 322791.pdf", # "mimetype"=>"application/pdf", # "filesize"=>"90811", # "base64file"=>"JVBERi0xLjM..."} invoice.delete # => true ~~~ [repo]: https://github.com/badboy/badbill [apidocu]: http://www.billomat.com/en/api/