Project

inkdit

0.0
No commit activity in last 3 years
No release in over 3 years
A library for using the Inkdit API to sign, share and store contracts. This is both a working Ruby gem and a code sample that other client implementations can work from.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0
>= 0
>= 0

Runtime

>= 0
 Project Readme

Inkdit API Client Library

Obtaining an API Key

To use the Inkdit API you need to register your application. Once your application is registered, you'll be given an API key and a shared secret.

Inkdit::Config['api_key'] = '...'
Inkdit::Config['secret']  = '...'

Obtaining an Access Token

Accessing the API requires an OAuth 2 access token. This means the user needs to give your application authorization to access their account.

First, you redirect the user to the authorization code URL:

redirect_to Inkdit.authorization_code_url(scopes, redirect_uri)

scopes is the list of permissions that your application needs (see https://developer.inkdit.com/docs/read/Home). When the user authorizes your application (or denies authorization), their browser will be redirected to redirect_uri.

If the authorization is successfully, a code parameter will be included when the user is redirected.

access_token = Inkdit.get_token(params[:code], redirect_uri)

You should store this token somewhere.

some_storage_function(current_user, access_token.token, access_token.refresh_token, access_token.expires_at)

For the full details (including what a client needs to do for security and error handling), read the OAuth 2 spec.

Using the API

At last, we're ready to go! Once everything is set up, you can create an Inkdit::Client using the access token you stored:

client = Inkdit::Client.new(:access_token => ..., :expires_at => ..., :refresh_token => ...)

The first thing to do is find out who this access token belongs to:

entity = client.get_entity

Then you might want to take a look at that entity's contracts:

entity.get_contracts

or create a new contract:

params = { :name => '...', :content => '...' }
contract = Inkdit::Contract.create(client, entity, params)

Given an Inkdit::Contract, you can list the signature fields:

contract.fetch!
contract.signatures

and sign an unsigned field:

signature_field.sign!

If you know the URL of a form contract, you can sign it:

form_contract = Inkdit::FormContract.new client, form_contract_url
form_contract.fetch!
form_contract.sign!

Running the Specs

To run the specs you need a config.yml file containing your API key, shared secret, and access token. Once you've obtained an API key, there's a demo application that can be used to obtain an access token:

./script/get_access_token.rb

Then visit http://localhost:4567/ in your browser.

Once you've entered your API key and shared scret, you will be prompted to log into Inkdit and authorize the application. When the application is authorized, it will produce a file that you can copy and paste into config.yml.