rightsignature-railstyle 1.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +8 -0
- data/CONTRIBUTING.md +26 -0
- data/Gemfile +2 -0
- data/README.md +443 -0
- data/Rakefile +2 -0
- data/lib/rightsignature.rb +15 -0
- data/lib/rightsignature/account.rb +37 -0
- data/lib/rightsignature/connection.rb +207 -0
- data/lib/rightsignature/connection/oauth_connection.rb +109 -0
- data/lib/rightsignature/connection/token_connection.rb +36 -0
- data/lib/rightsignature/document.rb +333 -0
- data/lib/rightsignature/errors.rb +51 -0
- data/lib/rightsignature/helpers/normalizing.rb +137 -0
- data/lib/rightsignature/helpers/refine_hash_to_indifferent_access.rb +23 -0
- data/lib/rightsignature/rails_style.rb +89 -0
- data/lib/rightsignature/template.rb +299 -0
- data/lib/rightsignature/version.rb +3 -0
- data/rightsignature-api.gemspec +26 -0
- data/spec/account_spec.rb +54 -0
- data/spec/api_token_connection_spec.rb +27 -0
- data/spec/configuration_spec.rb +98 -0
- data/spec/connection_spec.rb +224 -0
- data/spec/document_spec.rb +301 -0
- data/spec/errors_spec.rb +153 -0
- data/spec/normalizing_spec.rb +85 -0
- data/spec/oauth_connnection_spec.rb +143 -0
- data/spec/rails_style_spec.rb +331 -0
- data/spec/spec_helper.rb +12 -0
- data/spec/template_spec.rb +408 -0
- metadata +143 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d6dac84b987a3973b7100641164500f413f80746
|
4
|
+
data.tar.gz: 5e5f3de36c945c0ea489af01545306a2b20914a5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e64eb512785e4a09a1be4448edd8111f50491d3ff3914f363ed50747d2c7d9c59e6dded30d5aaad5cbc60861789ae5b217dd91527234459d18b022d9fb1b6b9e
|
7
|
+
data.tar.gz: 840e1bcacf410f46eb61a661907ebb4f7a6b3cdd6b0316b11eb2a9c1f2676b581f28c0c6dba89757510d7b818507810d944ccf36014c041ad9963526ed7b1b76
|
data/.gitignore
ADDED
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
Contributing
|
2
|
+
------------
|
3
|
+
Awesome! Here are some guidelines:
|
4
|
+
* **Contributions will not be accepted without tests.**
|
5
|
+
* If you're creating a small fix or patch to an existing feature, just a simple
|
6
|
+
test will do. Please stay in the confines of the current test suite and use
|
7
|
+
[RSpec](https://github.com/rspec/rspec).
|
8
|
+
* If your contribution changes any behavior, make sure to update the
|
9
|
+
documentation.
|
10
|
+
* Please follow the [GitHub Ruby Styleguide](https://github.com/styleguide/ruby)
|
11
|
+
when modifying Ruby code.
|
12
|
+
|
13
|
+
Running the tests
|
14
|
+
-----------------
|
15
|
+
```
|
16
|
+
rspec spec/*_spec.rb
|
17
|
+
```
|
18
|
+
|
19
|
+
Basic Steps
|
20
|
+
-----------
|
21
|
+
* Fork it
|
22
|
+
* Create your feature branch (git checkout -b my-new-feature)
|
23
|
+
* Commit your changes (git commit -am 'Add some feature')
|
24
|
+
* Make sure the tests pass (rspec spec/*_spec.rb)
|
25
|
+
* Push to the branch (git push origin my-new-feature)
|
26
|
+
* Create new [Pull Request](https://help.github.com/articles/using-pull-requests)
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,443 @@
|
|
1
|
+
RightSignature API
|
2
|
+
==================
|
3
|
+
This gem is a wrapper to RightSignature's API for both OAuth authentication and Token authentication
|
4
|
+
|
5
|
+
#####Install
|
6
|
+
```
|
7
|
+
gem install rightsignature
|
8
|
+
```
|
9
|
+
or in your Gemfile
|
10
|
+
```
|
11
|
+
gem 'rightsignature', '~> 1.0.0'
|
12
|
+
```
|
13
|
+
|
14
|
+
Setup
|
15
|
+
-----
|
16
|
+
After getting an API key from RightSignature, you can use the Secure Token or generate an Access Token with the OAuth key and secret using RightSignature::Connection.new. Below are examples on how to use the gem as yourself.
|
17
|
+
|
18
|
+
#####Using Token authentication
|
19
|
+
```
|
20
|
+
@rs_connection = RightSignature::Connection.new(:api_token => YOUR_TOKEN)
|
21
|
+
```
|
22
|
+
|
23
|
+
#####Using OAuth authentication
|
24
|
+
```
|
25
|
+
@rs_connection = RightSignature::Connection.new(
|
26
|
+
:consumer_key => "Consumer123",
|
27
|
+
:consumer_secret => "Secret098",
|
28
|
+
:access_token => "AccessToken098",
|
29
|
+
:access_secret => "AccessSecret123"
|
30
|
+
)
|
31
|
+
```
|
32
|
+
Note: if the both OAuth credentials and api_token are set, the default action is to use Token Authentication.
|
33
|
+
|
34
|
+
#####Getting Access Token
|
35
|
+
Make sure you have a server that is can recieve the parameters from RightSignature and the callback is setup correctly in the RightSignature API settings (https://rightsignature.com/oauth_clients).
|
36
|
+
```
|
37
|
+
request_token = @rs_connection.oauth_connection.new_request_token
|
38
|
+
```
|
39
|
+
|
40
|
+
Now Visit the url generated from
|
41
|
+
```
|
42
|
+
@rs_oauth = @rs_connection.oauth_connection
|
43
|
+
@rs_oauth.request_token.authorize_url
|
44
|
+
```
|
45
|
+
and log into the site.
|
46
|
+
|
47
|
+
After approving the application, you will be redirected to the callback url that is in the RightSignature API settings (https://rightsignature.com/oauth_clients). The OAuth verifier should be in the params "oauth_verifier". Put the verifier in:
|
48
|
+
```
|
49
|
+
@rs_oauth = @rs_connection.oauth_connection
|
50
|
+
@rs_oauth.generate_access_token(params[:oauth_verifer])
|
51
|
+
```
|
52
|
+
|
53
|
+
Now, you should have your Connection setup. You can save the access token and access token secret for later use and skip the previous steps.
|
54
|
+
```
|
55
|
+
@rs_oauth.access_token.token
|
56
|
+
@rs_oauth.access_token.secret
|
57
|
+
```
|
58
|
+
Will give you the Access Token's token and secret.
|
59
|
+
|
60
|
+
You can also load the Access Token and Secret by calling
|
61
|
+
```
|
62
|
+
@rs_oauth.set_access_token(token, secret)
|
63
|
+
```
|
64
|
+
|
65
|
+
If you need to set the Request Token for the OAuth Consumer:
|
66
|
+
```
|
67
|
+
@rs_oauth.set_request_token(token, secret)
|
68
|
+
```
|
69
|
+
|
70
|
+
After loading the configuration, you can use wrappers in RightSignature::Connection to call the API, or use RightSignature::Connection for more custom calls.
|
71
|
+
|
72
|
+
Documents
|
73
|
+
---------
|
74
|
+
#####Listing Document
|
75
|
+
For showing all documents
|
76
|
+
```
|
77
|
+
@rs_connection.documents_list
|
78
|
+
```
|
79
|
+
|
80
|
+
For showing page 1 of completed and trashed documents, with 20 per page, matching search term 'me', with tag "single_tag" and tag "key" with value of "with_value"
|
81
|
+
```
|
82
|
+
options = {
|
83
|
+
:state => ['completed', 'trashed'],
|
84
|
+
:page => 1,
|
85
|
+
:per_page => 20,
|
86
|
+
:search => "me",
|
87
|
+
:tags => ["single_tag", "key" => "with_value"]
|
88
|
+
}
|
89
|
+
@rs_connection.documents_list(options)
|
90
|
+
```
|
91
|
+
Optional Options:
|
92
|
+
* page: page number
|
93
|
+
* per_page: number of documents to return per page.
|
94
|
+
API only supports 10, 20, 30, 40, or 50. Default is 10.
|
95
|
+
* tags: filter documents with given tags. Tags are an array of strings (single tag) and hashes (tag_name => tag_value).
|
96
|
+
Ex. ["single_tag",{"tag_key" => "tag_value"}] would filter documents with 'single_tag' and the name/value of 'tag_key' with value 'tag_value'.
|
97
|
+
* search: filter documents with given term.
|
98
|
+
* state: An array of document states to filter documents by.
|
99
|
+
API supports 'pending', 'completed', 'trash', and 'pending'.
|
100
|
+
* sort: sort documents by given attribute.
|
101
|
+
API supports 'created', 'completed', and 'activity'
|
102
|
+
* range: return documents with a certain date range.
|
103
|
+
API only supports 'today', 'thisweek', 'thismonth', 'alltime', or a Date
|
104
|
+
* recipient_email: filter document where it has a recipient with given email and involves the current OAuth user.
|
105
|
+
* account: include all documents in current account if true. Should be true or false
|
106
|
+
Only available for account admins and owners.
|
107
|
+
|
108
|
+
#####Document Details
|
109
|
+
```
|
110
|
+
@rs_connection.document_details(guid)
|
111
|
+
```
|
112
|
+
|
113
|
+
#####Document Details for Multiple documents
|
114
|
+
```
|
115
|
+
@rs_connection.documents_batch_details(guids)
|
116
|
+
```
|
117
|
+
* guids: Array of document GUIDs
|
118
|
+
|
119
|
+
#####Send Reminder
|
120
|
+
```
|
121
|
+
@rs_connection.send_reminder(guid)
|
122
|
+
```
|
123
|
+
|
124
|
+
#####Trash Document
|
125
|
+
```
|
126
|
+
@rs_connection.trash_document(guid)
|
127
|
+
```
|
128
|
+
|
129
|
+
#####Extend Expiration of Document by 7 days
|
130
|
+
```
|
131
|
+
@rs_connection.extend_document_expiration(guid)
|
132
|
+
```
|
133
|
+
|
134
|
+
#####Replace Tags on Document
|
135
|
+
```
|
136
|
+
tags=['sent_from_api', {'user_id' => '12345'}]
|
137
|
+
@rs_connection.update_document_tags(guid, tags)
|
138
|
+
```
|
139
|
+
* guid
|
140
|
+
* tags: An array of 'tag_name' or {'tag_name' => 'tag_value'}
|
141
|
+
|
142
|
+
#####Sending New Documents
|
143
|
+
From file:
|
144
|
+
```
|
145
|
+
recipients = [
|
146
|
+
{:name => "RightSignature", :email => "support@rightsignature.com", :role => 'cc'},
|
147
|
+
{:name => "John Bellingham", :email => "john@rightsignature.com", :role => 'signer'},
|
148
|
+
{'is_sender' => true, :role => 'signer'}
|
149
|
+
]
|
150
|
+
options={
|
151
|
+
:tags => [{:tag => {:name => 'sent_from_api'}}, {:tag => {:name => 'user_id', :value => '12345'}}],
|
152
|
+
:expires_in => '5 days',
|
153
|
+
:action => "redirect",
|
154
|
+
'callback_location' => "http://example.com/doc_callback",
|
155
|
+
'use_text_tags' => false
|
156
|
+
}
|
157
|
+
|
158
|
+
@rs_connection.send_document_from_file("here/is/myfile.pdf", 'My Subject', recipients, options)
|
159
|
+
```
|
160
|
+
Or
|
161
|
+
```
|
162
|
+
@rs_connection.send_document_from_file(File.open("here/is/myfile.pdf", 'r'), 'My Subject', recipients)
|
163
|
+
```
|
164
|
+
* subject: Document subject
|
165
|
+
* recipients: Recipients of the document, should be an array of hashes with :name, :email, and :role ('cc' or 'signer').
|
166
|
+
One recipient requires a :is_sender => true to reference the API User and doesn't need to supply :name and :email. Ex. {:is_sender => true, :role => "cc"}
|
167
|
+
* Optional options:
|
168
|
+
* description: document description that'll appear in the email
|
169
|
+
* action: 'send' or 'redirect'. Redirect will prefill the document and generate a redirect token that can be used on for someone to send document under API user's account.
|
170
|
+
* expires_in: number of days before expiring the document. API only allows 2,5,15, or 30.
|
171
|
+
* tags: document tags, an array of string or hashes 'single_tag' (for simple tag) or {'tag_name' => 'tag_value'} (for tuples pairs)
|
172
|
+
Ex. ['sent_from_api', {"user_id" => "32"}]
|
173
|
+
* callback_location: A URI encoded URL that specifies the location for API to POST a callback notification to when the document has been created and signed.
|
174
|
+
Ex. "http://yoursite/callback"
|
175
|
+
* use_text_tags: Parse document for special Text Tags. true or false.
|
176
|
+
More info: https://rightsignature.com/apidocs/text_tags
|
177
|
+
|
178
|
+
From raw data:
|
179
|
+
```
|
180
|
+
recipients = [
|
181
|
+
{:name => "RightSignature", :email => "support@rightsignature.com", :role => 'cc'},
|
182
|
+
{:name => "John Bellingham", :email => "john@rightsignature.com", :role => 'signer'},
|
183
|
+
{'is_sender' => true, :role => 'signer'}
|
184
|
+
]
|
185
|
+
raw_data = File.read("here/is/myfile.pdf")
|
186
|
+
filename = "Desired Filename.pdf"
|
187
|
+
@rs_connection.send_document_from_file(raw_data, filename, 'My Subject', recipients)
|
188
|
+
```
|
189
|
+
|
190
|
+
#####Embedded Signing Links
|
191
|
+
Generates URLs for the embedded signing page for documents with recipients with email of 'noemail@rightsignature.com'.
|
192
|
+
Returns an array of {:name => "John Bellingham", "url" => "https://rightsignature.com/signatures/embedded?rt=1234"}
|
193
|
+
```
|
194
|
+
@rs_connection.get_document_signer_links_for(guid, redirect_location=nil)
|
195
|
+
```
|
196
|
+
Optional Option:
|
197
|
+
* redirect_location: URL to redirect user after signing.
|
198
|
+
|
199
|
+
|
200
|
+
Templates
|
201
|
+
---------
|
202
|
+
#####Listing Templates
|
203
|
+
```
|
204
|
+
@rs_connection.templates_list(options={})
|
205
|
+
```
|
206
|
+
Optional Options:
|
207
|
+
* page: page number
|
208
|
+
* per_page: number of documents to return per page.
|
209
|
+
API only supports 10, 20, 30, 40, or 50. Default is 10.
|
210
|
+
* tags: filter documents with given tags. Tags are an array of strings, name and value in a name/value tag should be separated by colon (:).
|
211
|
+
Ex. ["single_tag","tag_key:tag_value"] would filter documents with 'single_tag' and the name/value of 'tag_key' with value 'tag_value'.
|
212
|
+
* search: filter documents with given term.
|
213
|
+
|
214
|
+
#####Template Details
|
215
|
+
```
|
216
|
+
@rs_connection.template_details(guid)
|
217
|
+
```
|
218
|
+
|
219
|
+
#####Prepackage and Send template
|
220
|
+
Most common use of API, clones a template and sends it for signature.
|
221
|
+
```
|
222
|
+
@rs_connection.prepackage_and_send(guid, roles, options={})
|
223
|
+
```
|
224
|
+
* guid: template guid to use. Should be a template that was prepackaged
|
225
|
+
* roles: recipient names in array of {:name => "Person's Name", :email => "Email"} hashed by Role ID. Ex. {"signer_A" => {:name => "Your Name", :email => "a@example.com"}}
|
226
|
+
Optional options:
|
227
|
+
* subject: document subject. Defaults to the subject in prepackage response.
|
228
|
+
* description: document description that'll appear in the email
|
229
|
+
* merge_fields: document merge fields, should be an array of merge_field_values in a hash with the merge_field_name.
|
230
|
+
Ex. [{"Salary" => "$1,000,000"}]
|
231
|
+
* expires_in: number of days before expiring the document. API only allows 2,5,15, or 30.
|
232
|
+
* tags: document tags, an array of string or hashes 'single_tag' (for simple tag) or {'tag_name' => 'tag_value'} (for tuples pairs)
|
233
|
+
Ex. ['sent_from_api', {"user_id" => "32"}]
|
234
|
+
* callback_location: A URI encoded URL that specifies the location for API to POST a callback notification to when the document has been created and signed.
|
235
|
+
Ex. "http://yoursite/callback"
|
236
|
+
* use_merge_field_ids: Using merge field ids instead of merge field name for merge_fields. true or false.
|
237
|
+
|
238
|
+
#####Template Prepacking
|
239
|
+
For cloning a Template before sending it.
|
240
|
+
```
|
241
|
+
@rs_connection.prepackage(guid)
|
242
|
+
```
|
243
|
+
|
244
|
+
#####Template Prefilling
|
245
|
+
After prepacking, the new template can be updated with prefill data. This won't send out the template as a document.
|
246
|
+
```
|
247
|
+
@rs_connection.prefill(guid, subject, roles, options={})
|
248
|
+
```
|
249
|
+
* guid: template guid to use. Should be a template that was prepackaged
|
250
|
+
* subject: document subject.
|
251
|
+
* roles: recipient names in array of {:name => "Person's Name", :email => "Email"} hashed by Role ID. Ex. {"signer_A" => {:name => "Your Name", :email => "a@example.com"}}
|
252
|
+
* Optional options:
|
253
|
+
* description: document description that'll appear in the email
|
254
|
+
* merge_fields: document merge fields, should be an array of merge_field_values in a hash with the merge_field_name.
|
255
|
+
Ex. [{"Salary" => "$1,000,000"}]
|
256
|
+
* expires_in: number of days before expiring the document. API only allows 2,5,15, or 30.
|
257
|
+
* tags: document tags, an array of string or hashes 'single_tag' (for simple tag) or {'tag_name' => 'tag_value'} (for tuples pairs)
|
258
|
+
Ex. ['sent_from_api', {"user_id" => "32"}]
|
259
|
+
* callback_location: A URI encoded URL that specifies the location for API to POST a callback notification to when the document has been created and signed.
|
260
|
+
Ex. "http://yoursite/callback"
|
261
|
+
* use_merge_field_ids: Using merge field ids instead of merge field name for merge_fields. true or false.
|
262
|
+
|
263
|
+
```
|
264
|
+
options = {
|
265
|
+
:description => "Please read over the handbook and sign it.",
|
266
|
+
:merge_fields => [
|
267
|
+
{ "Department" => "Fun and games" },
|
268
|
+
{ "Salary" => "$1,000,000" }
|
269
|
+
],
|
270
|
+
:expires_in => 5,
|
271
|
+
:tags => [
|
272
|
+
{:name => 'sent_from_api'},
|
273
|
+
{:name => 'user_id', :value => '32'}
|
274
|
+
],
|
275
|
+
:callback_location => "http://yoursite/callback"
|
276
|
+
}
|
277
|
+
@rs_connection.prefill(guid, subject, roles, options)
|
278
|
+
```
|
279
|
+
|
280
|
+
|
281
|
+
#####Template Sending
|
282
|
+
Send template as a document for signing. Same options as prefill.
|
283
|
+
```
|
284
|
+
@rs_connection.send_template(guid, subject, roles, options={})
|
285
|
+
```
|
286
|
+
* guid: template guid to use. Should be a template that was prepackaged
|
287
|
+
* subject: document subject.
|
288
|
+
* roles: recipient names in array of {:name => "Person's Name", :email => "Email"} hashed by Role ID. Ex. {"signer_A" => {:name => "Your Name", :email => "a@example.com"}}
|
289
|
+
* Optional options:
|
290
|
+
* description: document description that'll appear in the email
|
291
|
+
* merge_fields: document merge fields, should be an array of merge_field_values in a hash with the merge_field_name.
|
292
|
+
Ex. [{"Salary" => "$1,000,000"}]
|
293
|
+
* expires_in: number of days before expiring the document. API only allows 2,5,15, or 30.
|
294
|
+
* tags: document tags, an array of string or hashes 'single_tag' (for simple tag) or {'tag_name' => 'tag_value'} (for tuples pairs)
|
295
|
+
Ex. ['sent_from_api', {"user_id" => "32"}]
|
296
|
+
* callback_location: A URI encoded URL that specifies the location for API to POST a callback notification to when the document has been created and signed.
|
297
|
+
Ex. "http://yoursite/callback"
|
298
|
+
* use_merge_field_ids: Using merge field ids instead of merge field name for merge_fields. true or false.
|
299
|
+
|
300
|
+
```
|
301
|
+
options = {
|
302
|
+
:description => "Please read over the handbook and sign it.",
|
303
|
+
:merge_fields => [
|
304
|
+
{ "Department" => "Fun and games" },
|
305
|
+
{ "Salary" => "$1,000,000" }
|
306
|
+
],
|
307
|
+
:expires_in => 5,
|
308
|
+
:tags => [
|
309
|
+
{:name => 'sent_from_api'},
|
310
|
+
{:name => 'user_id', :value => '32'}
|
311
|
+
],
|
312
|
+
:callback_location => "http://yoursite/callback"
|
313
|
+
}
|
314
|
+
@rs_connection.send_template(guid, subject, roles, options)
|
315
|
+
```
|
316
|
+
|
317
|
+
#####Embedded Signing Links for Sent Template
|
318
|
+
Prepackages a template, and sends it out with each recipients marked as a embedded signer (email as noemail@rightsignature.com), then generates embedded signing URLs.
|
319
|
+
Returns an array of {:name => "John Bellingham", "url" => "https://rightsignature.com/signatures/embedded?rt=1234"}
|
320
|
+
```
|
321
|
+
@rs_connection.send_as_embedded_signers(guid, recipients, options={})
|
322
|
+
```
|
323
|
+
* guid: guid of template to create document with
|
324
|
+
* recipient: recipient names in array of {:name => "Person's Name"} hashed by Role ID. Ex. {"signer_A" => {:name => "Your Name"}}
|
325
|
+
* options:
|
326
|
+
* subject: document subject that'll appear in the email
|
327
|
+
* description: document description that'll appear in the email
|
328
|
+
* merge_fields: document merge fields, should be an array of merge_field_values in a hash with the merge_field_name.
|
329
|
+
Ex. [{"Salary" => "$1,000,000"}]
|
330
|
+
* expires_in: number of days before expiring the document. API only allows 2,5,15, or 30.
|
331
|
+
* tags: document tags, an array of string or hashes 'single_tag' (for simple tag) or {'tag_name' => 'tag_value'} (for tuples pairs)
|
332
|
+
Ex. ['sent_from_api', {"user_id" => "32"}]
|
333
|
+
* callback_location: A URI encoded URL that specifies the location for API to POST a callback notification to when the document has been created and signed.
|
334
|
+
Ex. "http://yoursite/callback"
|
335
|
+
* redirect_location: URL to redirect users after signing.
|
336
|
+
* use_merge_field_ids: Using merge field ids instead of merge field name for merge_fields. true or false.
|
337
|
+
|
338
|
+
#####Create New Template Link
|
339
|
+
Generate a url that let's someone upload and create a template under OAuth user's account.
|
340
|
+
```
|
341
|
+
@rs_connection.generate_build_url
|
342
|
+
```
|
343
|
+
|
344
|
+
You can also add restrictions to what the person can do:
|
345
|
+
* callback_location: URI encoded URL that specifies the location we will POST a callback notification to when the template has been created.
|
346
|
+
* redirect_location: A URI encoded URL that specifies the location we will redirect the user to, after they have created a template.
|
347
|
+
* tags: tags to add to the template. an array of strings (for simple tag) or hashes like {'tag_name' => 'tag_value'} (for tuples pairs)
|
348
|
+
Ex. ['created_from_api', {"user_id" => "123"}]
|
349
|
+
* acceptable_role_names: The user creating the Template will be forced to select one of the values provided.
|
350
|
+
There will be no free-form name entry when adding roles to the Template. An array of strings.
|
351
|
+
Ex. ["Employee", "Employeer"]
|
352
|
+
* acceptable_merge_field_names: The user creating the Template will be forced to select one of the values provided.
|
353
|
+
There will be no free-form name entry when adding merge fields to the Template.
|
354
|
+
Ex. ["Location", "Tax ID", "Company Name"]
|
355
|
+
|
356
|
+
```
|
357
|
+
options = {
|
358
|
+
:acceptable_merge_field_names =>
|
359
|
+
[
|
360
|
+
"Site ID",
|
361
|
+
"Starting City"
|
362
|
+
],
|
363
|
+
:acceptable_role_names =>
|
364
|
+
[
|
365
|
+
"Http Monster",
|
366
|
+
"Party Monster"
|
367
|
+
],
|
368
|
+
:callback_location => "http://example.com/done_signing",
|
369
|
+
:redirect_location => "http://example.com/come_back_here"
|
370
|
+
}
|
371
|
+
@rs_connection.generate_build_url(options)
|
372
|
+
```
|
373
|
+
|
374
|
+
|
375
|
+
Account
|
376
|
+
---------
|
377
|
+
API calls involving API user's account.
|
378
|
+
|
379
|
+
#####User Details
|
380
|
+
```
|
381
|
+
@rs_connection.user_details
|
382
|
+
```
|
383
|
+
|
384
|
+
#####Add User to Account
|
385
|
+
```
|
386
|
+
@rs_connection.add_user(name, email)
|
387
|
+
```
|
388
|
+
|
389
|
+
#####Usage Report
|
390
|
+
Returns number of documents sent. Can scope to week, month, or day and count only signed, unsigned, or all documents.
|
391
|
+
```
|
392
|
+
@rs_connection.usage_report(since=nil, signed=nil)
|
393
|
+
```
|
394
|
+
* since: Only count documents sent withing the 'week', 'month', or 'day'.
|
395
|
+
* signed: Only count signed documents if 'true', else all documents
|
396
|
+
|
397
|
+
Custom API calls using RightSignature::Connection
|
398
|
+
-------------------------------------------------
|
399
|
+
|
400
|
+
In case there are new API paths, RightSignature::Connection allows a specific path to be specified.
|
401
|
+
#####Ex. GET https://rightsignature.com/api/documents.xml
|
402
|
+
```
|
403
|
+
@rs_connection.get('/api/documents.xml', {:my => 'params'}, {'custom_header' => 'headerValue'})
|
404
|
+
```
|
405
|
+
|
406
|
+
#####Ex. POST https://rightsignature.com/api/documents.xml
|
407
|
+
```
|
408
|
+
request_hash= {
|
409
|
+
:document => {
|
410
|
+
:subject => "Your Form",
|
411
|
+
'document_data' => {:type => 'url', :value => 'http://localhost:3000/sub.pdf' }
|
412
|
+
}
|
413
|
+
}
|
414
|
+
@rs_connection.post('/api/documents.xml', request_hash, {'custom_header' => 'headerValue'})
|
415
|
+
```
|
416
|
+
|
417
|
+
Getting API Error Messages
|
418
|
+
--------------------------
|
419
|
+
If a request does not return a success response (200), a RightSignature::ResponseError is raised. You can rescue the error and inspect the response object or call detailed_message. detailed_message only returns if the response from the server contains an error message in the XML.
|
420
|
+
#####Ex. Trying to parse the error message response from API
|
421
|
+
```
|
422
|
+
begin
|
423
|
+
@rs_connection.post('/api/documents.xml', {:bad => 'params'})
|
424
|
+
rescue RightSignature::ResponseError => error
|
425
|
+
puts error.detailed_message
|
426
|
+
end
|
427
|
+
```
|
428
|
+
|
429
|
+
#####Ex. Trying to inspect the response object for more information
|
430
|
+
```
|
431
|
+
begin
|
432
|
+
@rs_connection.post('/api/documents.xml', {:bad => 'params'})
|
433
|
+
rescue RightSignature::ResponseError => error
|
434
|
+
puts error.response.inspect
|
435
|
+
end
|
436
|
+
```
|
437
|
+
|
438
|
+
Development Notes
|
439
|
+
-----------------
|
440
|
+
To load in irb from project root:
|
441
|
+
```
|
442
|
+
$:.push File.expand_path("../lib", __FILE__); require "rightsignature"; RightSignature::Connection.new(MY_KEYS)
|
443
|
+
```
|