Agree2 Client

Agree2 (agree2.com) is a site for creating and maintaining contracts.

This Client library will let you integrate Agree2 into your own web applications to create full legal contracts between you and your users or between your users.

Install the Agree2 gem

The Agree2 client is installed as a ruby gem:

sudo gem install agree2

The source is available on github github.com/pelle/agree2-client/tree/master .

Getting Started

First of all you need to signup with agree2.com.

Now go to the page agree2.dev/client_applications and register an application.

Find the snippet of code on your client application page called “Example using your own AccessToken”. This provides you everything to get started creating agreements under you own account. It should something like this:

@client=Agree2::Client.new "DM0VybBbeTc6GfFSF1WbQ","aVmgGmQ1WOjsbbSZbrPcT4qet6IMa2tqJebaeyIBs"
@user=@client.user "zEHUnKDNuLGXQuicFWZRpQ","0VM3ESRl3rGtg95Wa2JsOFWmu4E78lNHfvMy1j4UtQ"

If you wanted to list all the agreements you’ve got in your account you would do the following:

@user.agreements

Creating a new agreement:

@agreement=@user.agreements.create(:title=>"User Agreement",:body=>"This is the body of the agreement")
@agreement.to_url # Returns the agreement's url
redirect_to @agreement.to_url # Redirect to agreements url in Rails

Invite a party:

@party=@agreement.parties.create :role=>"client",:first_name=>"Joe",:last_name=>"Bloggs",:email=>"[email protected]",:organization_name=>"Big Inc"
redirect_to @party.present # Redirect user in an authenticated way to agreement

List the parties to an agreement:

@agreement.parties

By default new agreements are in draft mode, ready for further customization. For the parties to be able to accept the agreement you must finalize it:

@agreement.finalize!

Using Templates

In most day to day use you will probably be using templates to create agreements. You can create your own templates or use our growing library of public templates (agree2.com/masters/public).

As an example lets use this “Confidentiality Agreement for access to source code” (agree2.com/masters/b4f9a904efaab5ad71f695824c997c332b955876).

You could instantiate the template using the long code that comes at the end of the url:

@template=@agree2_user.templates.find "b4f9a904efaab5ad71f695824c997c332b955876"

We have actually made it even easier though. Each template has it’s own Ruby version that you can download. If you click on “Tools” and then “Instant Ruby API” you will find it customized for your own use. In our example you can find it at:

agree2.com/masters/b4f9a904efaab5ad71f695824c997c332b955876.rb

Save this file and require it into your application. This will also provide you with an instance of the template in @template.

Preparing an Agreement from a Template

To create an agreement with no customizations simply do:

@agreement=@template.prepare

Templates have user defined fields that can be filled out by the application. This is where it gets interesting:

@agreement=@template.prepare :holder => "John Doe",
       :holder_info => "[email protected]",
       :coder => "Phil Armonic",
       :coder_info => "[email protected]",
       :project => "Spoogle.com",
       :svn => "http://svnhost.inv/spoogle"

Each of the custom fields from the template is now directly available in the agreement:

puts @agreement.holder
> "John Doe"

You can also get the full list of fields using:

@agreement.fields

Preparing Agreement from a Template and adding Parties

To reduce the amount of network activity between your servers and ours you can create an agreement from a template and add parties in one step.

@[email protected] {
   :holder => "John Doe",
   :holder_info => "[email protected]",
   :coder => "Phil Armonic",
   :coder_info => "[email protected]",
   :project => "Spoogle.com",
   :svn => "http://svnhost.inv/spoogle"
  },{
    :coder=>{ 
      :first_name=>"Phil",
      :last_name=>"Armonic",
      :email=>"[email protected]"
    },
    :holder=>{ 
      :first_name=>"John",
      :last_name=>"Doe",
      :email=>"[email protected]",
      :organization_name=>"Spoogle Inc"
    }
  }

The above creates the agreement, adds the 2 parties and sends emails to them.

You can also add your applications user in agree2 as a party without having to repeat all the information:

@[email protected] {

 :holder => "John Doe",
 :holder_info => "[email protected]",
 :coder => "Phil Armonic",
 :coder_info => "[email protected]",
 :project => "Spoogle.com",
 :svn => "http://svnhost.inv/spoogle"
},{
  :coder=>{ 
    :first_name=>"Phil",
    :last_name=>"Armonic",
    :email=>"[email protected]"
  }
},"holder"

This does the same as the first example except “holder” will have the details from your user account.

Preparing and signing an agreeement from the API

Lets say you want to create an agreement, add the parties and sign it so your user can go straight to it to accept it. Agree2 offers the possibility of signing an agreement during the creation process. Not all accounts have access to this feature.

The signing process is done using the OAuth protocol we use for authentication. We also only allow you to sign on behalf of the application’s user.

@[email protected]_and_sign {
   :holder => "John Doe",
   :holder_info => "[email protected]",
   :coder => "Phil Armonic",
   :coder_info => "[email protected]",
   :project => "Spoogle.com",
   :svn => "http://svnhost.inv/spoogle"
  },{
    :coder=>{ 
      :first_name=>"Phil",
      :last_name=>"Armonic",
      :email=>"[email protected]"
    }
  },"holder"

The final parameter “holder” is optional. It will add you as a party with the role “application” by default.

About Agree2 Client

Author

Pelle Braendgaard (stakeventures.com)

Copyright

Copyright © 2008 Extra Eagle LLC

License

MIT

Git

github.com/pelle/agree2-client/tree/master

This client library allows you to integrate Agree2 into your application.