HaveAPI-Client

HaveAPI-Client is a Ruby CLI and client library for APIs built with HaveAPI framework.

Installation

Add this line to your application's Gemfile:

gem 'haveapi-client'

And then execute:

$ bundle

Or install it yourself as:

$ gem install haveapi-client

CLI

$ haveapi-cli -h
Usage: haveapi-cli [options] <resource> <action> [objects ids] [-- [parameters]]
    -u, --api URL                    API URL
    -a, --auth METHOD                Authentication method
        --list-versions              List all available API versions
        --list-auth-methods [VERSION]
                                     List available authentication methods
        --list-resources [VERSION]   List all resource in API version
        --list-actions [VERSION]     List all resources and actions in API version
        --version VERSION            Use specified API version
    -c, --columns                    Print output in columns
    -H, --no-header                  Hide header row
    -L, --list-parameters            List output parameters
    -o, --output PARAMETERS          Parameters to display, separated by a comma
    -r, --rows                       Print output in rows
    -s, --sort PARAMETER             Sort output by parameter
        --save                       Save credentials to config file for later use
        --raw                        Print raw response as is
        --timestamp                  Display Datetime parameters as timestamp
        --utc                        Display Datetime parameters in UTC
        --localtime                  Display Datetime parameters in local timezone
        --date-format FORMAT         Display Datetime in custom format
        --[no-]block                 Toggle action blocking mode
        --timeout SEC                Fail when the action does not finish within the timeout
    -v, --[no-]verbose               Run verbosely
        --client-version             Show client version
        --protocol-version           Show protocol version
        --check-compatibility        Check compatibility with API server
    -h, --help                       Show this message

Using the API example from HaveAPI README, users would be listed with:

$ haveapi-cli --url https://your.api.tld --auth basic --username yourname --password yourpassword user list

Nested resources and object IDs:

$ haveapi-cli --url https://your.api.tld --auth basic --username yourname --password yourpassword user.invoice list 10

where 10 is user ID.

User credentials can be saved to a config:

$ haveapi-cli --url https://your.api.tld --auth basic --username yourname --password yourpassword --save user list

When saved, they don't have to be specified as command line options:

$ haveapi-cli --url https://your.api.tld user list

List options specific to authentication methods:

$ haveapi-cli --url https://your.api.tld --auth basic -h
$ haveapi-cli --url https://your.api.tld --auth token -h

List action parameters with examples:

$ haveapi-cli --url https://your.api.tld user new -h

Provide action parameters (notice the -- separator):

$ haveapi-cli --url https://your.api.tld user new -- --login mylogin --full-name "My Full Name" --role user

Client library

require 'haveapi/client'

api = HaveAPI::Client::Client.new('https://your.api.tld')
api.authenticate(:basic, user: 'yourname', password: 'yourpassword')

api.user.list.each do |user|
    puts user.
end

user = api.user.find(10)
p user.invoice
user.destroy

p api.user.create({
  login: 'mylogin',
  full_name: 'Very Full Name',
  role: 'user'
})

user = api.user.new
user. = 'mylogin'
user.full_name = 'Very Full Name'
user.role = 'user'
user.save
p user.id