Skip to content

jorttbv/jortt-ruby

Repository files navigation

Jortt REST API client

rspec Actions Status

A Ruby interface to the Jortt REST API.

Check https://developer.jortt.nl/ for more info.

THIS VERSION IS FOR THE NEW OAUTH API. STILL ON THE LEGACY API? USE VERSION 4.x OF THIS GEM: CLICK HERE

Usage examples

To create a jortt client using client credentials grant type:

jortt = Jortt.client('<your-client-id>', '<your-client-secret>')

To create a Jortt client using authorization code grant type:

jortt = Jortt.client(
  '<your-client-id>', 
  '<your-client-secret>', 
  scope: "invoices:read customers:read", 
  access_token: "access-token",
  refresh_token: "refresh-token",
  expires_at: "1657896798"
)

You can use the oauth2 gem to request an access and refresh token.

Customers

All customers (jortt.customers.index(page: 2)) returns:

[{
  "id": "f8fd3e4e-da1c-43a7-892f-1410ac13e38a",
  "is_private": true,
  "customer_name": "Jortt",
  "address_street": "Rozengracht 75a",
  ...
}]

Adding customers:

jortt.customers.create(
  "is_private": true,
  "customer_name": "Jortt",
  ...
)

Invoices

Get invoices by ID (jortt.invoices.get('934d59dd-76f6-4716-9e0f-82a618e1be21')) returns:

{
  "invoice_id": "934d59dd-76f6-4716-9e0f-82a618e1be21",
  "recipient": {
    "company_name": "Zilverline B.V.",
    "attn": null,
    "address": {
      "street": "Cruquisweg 109F",
      "city": "Amsterdam",
      "postal_code": "1111SX",
      "country": {
        "code": "NL",
        "name": "Nederland"
      }
    },
    "email": "ben@jortt.nl",
    "customer_id": "e1c5e15b-e34e-423e-a291-4ed43226a190",
    "extra_information": null,
    ...
  }
  ...
}

Searching invoices (jortt.invoices.index(query: '202001-002')) returns:

[{
  "id": "f8fd3e4e-da1c-43a7-892f-1410ac13e38a",
  "invoice_status": "draft",
  "customer_id": "f8fd3e4e-da1c-43a7-892f-1410ac13e38a",
  "invoice_number": "202001-002",
  "invoice_date": "2020-02-23",
  ...
}]

Adding invoices:

jortt.invoices.create(
  customer_id: "f8fd3e4e-da1c-43a7-892f-1410ac13e38a",
  invoice_date: "2020-02-23",
  delivery_period: "2020-02-01",
  payment_term: 14,
  net_amounts: true,
  send_method: "email",
  introduction: "example",
  remarks: "example",
  payment_method: "pay_later",
  line_items: [
    {
      description: "this is a description example",
      units: "3.14",
      amount_per_unit: {
        value: "365.00",
        currency: "EUR"
      },
      vat_percentage: "21",
      ledger_account_id: "f8fd3e4e-da1c-43a7-892f-1410ac13e38a"
    }
  ],
  reference: "123"
)

Development

Running tests

bundle install and then rake spec or rspec spec.

Building the gem

rake build and then rake install to test it locally (irb followed by require 'jortt/client' and do your stuff).

Releasing the gem

Make a fix, commit and push. Make sure the build is green. Then bump the version (edit lib/jortt/client/version.rb). Now rake release and follow the instructions (you need a rubygems.org account and permissions ;-)).

Otherwise gem build jortt.gemspec and gem push jortt-[version].gem.