hellosign-api 1.0.0
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 +19 -0
- data/.rspec +2 -0
- data/.travis.yml +15 -0
- data/CONTRIBUTING.md +42 -0
- data/Gemfile +13 -0
- data/Guardfile +14 -0
- data/LICENSE +21 -0
- data/README.md +112 -0
- data/Rakefile +16 -0
- data/hellosign-api.gemspec +54 -0
- data/lib/hello_sign/.error.rb.swp +0 -0
- data/lib/hello_sign/api/account.rb +78 -0
- data/lib/hello_sign/api/api_app.rb +121 -0
- data/lib/hello_sign/api/bulk_send_job.rb +62 -0
- data/lib/hello_sign/api/embedded.rb +68 -0
- data/lib/hello_sign/api/oauth.rb +95 -0
- data/lib/hello_sign/api/signature_request.rb +691 -0
- data/lib/hello_sign/api/team.rb +107 -0
- data/lib/hello_sign/api/template.rb +227 -0
- data/lib/hello_sign/api/unclaimed_draft.rb +328 -0
- data/lib/hello_sign/api.rb +31 -0
- data/lib/hello_sign/client.rb +372 -0
- data/lib/hello_sign/configuration.rb +78 -0
- data/lib/hello_sign/error.rb +99 -0
- data/lib/hello_sign/resource/account.rb +43 -0
- data/lib/hello_sign/resource/api_app.rb +43 -0
- data/lib/hello_sign/resource/base_resource.rb +73 -0
- data/lib/hello_sign/resource/bulk_send_job.rb +43 -0
- data/lib/hello_sign/resource/embedded.rb +43 -0
- data/lib/hello_sign/resource/resource_array.rb +56 -0
- data/lib/hello_sign/resource/signature_request.rb +43 -0
- data/lib/hello_sign/resource/team.rb +43 -0
- data/lib/hello_sign/resource/template.rb +43 -0
- data/lib/hello_sign/resource/template_draft.rb +44 -0
- data/lib/hello_sign/resource/unclaimed_draft.rb +44 -0
- data/lib/hello_sign/resource.rb +33 -0
- data/lib/hello_sign/version.rb +25 -0
- data/lib/hello_sign.rb +50 -0
- data/lib/hellosign-ruby-sdk.rb +4 -0
- data/spec/fixtures/account.json +15 -0
- data/spec/fixtures/api_app.json +16 -0
- data/spec/fixtures/api_apps.json +43 -0
- data/spec/fixtures/bulk_send_job.json +88 -0
- data/spec/fixtures/bulk_send_jobs.json +22 -0
- data/spec/fixtures/embedded.json +6 -0
- data/spec/fixtures/empty.pdf +0 -0
- data/spec/fixtures/error.json +6 -0
- data/spec/fixtures/file.json +0 -0
- data/spec/fixtures/headers.json +18 -0
- data/spec/fixtures/nda.pdf +0 -0
- data/spec/fixtures/signature_request.json +45 -0
- data/spec/fixtures/signature_requests.json +44 -0
- data/spec/fixtures/team.json +15 -0
- data/spec/fixtures/template.json +53 -0
- data/spec/fixtures/templates.json +59 -0
- data/spec/fixtures/token.json +14 -0
- data/spec/fixtures/unclaimed_draft.json +6 -0
- data/spec/hello_sign/.error_spec.rb.swp +0 -0
- data/spec/hello_sign/api/account_spec.rb +42 -0
- data/spec/hello_sign/api/api_app_spec.rb +104 -0
- data/spec/hello_sign/api/bulk_send_job_spec.rb +53 -0
- data/spec/hello_sign/api/embedded_spec.rb +23 -0
- data/spec/hello_sign/api/oauth_spec.rb +27 -0
- data/spec/hello_sign/api/signature_request_spec.rb +268 -0
- data/spec/hello_sign/api/team_spec.rb +101 -0
- data/spec/hello_sign/api/template_spec.rb +172 -0
- data/spec/hello_sign/api/unclaimed_draft_spec.rb +145 -0
- data/spec/hello_sign/client_spec.rb +191 -0
- data/spec/hello_sign/error_spec.rb +10 -0
- data/spec/hello_sign/resource/base_resource_spec.rb +53 -0
- data/spec/hello_sign_spec.rb +57 -0
- data/spec/scenarios/uploads_spec.rb +19 -0
- data/spec/spec_helper.rb +104 -0
- metadata +261 -0
@@ -0,0 +1,107 @@
|
|
1
|
+
# The MIT License (MIT)
|
2
|
+
#
|
3
|
+
# Copyright (C) 2014 hellosign.com
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
module HelloSign
|
24
|
+
module Api
|
25
|
+
# Contains all the API calls for the Team resource.
|
26
|
+
# Take a look at our API Documentation on the Team Resource (https://app.hellosign.com/api/reference#Team)
|
27
|
+
# for more information about this.
|
28
|
+
#
|
29
|
+
# @author [hellosign]
|
30
|
+
|
31
|
+
module Team
|
32
|
+
|
33
|
+
# Returns member list and information about your Team.
|
34
|
+
# If you do not belong to a Team, HelloSign::Error::NotFound will be raised
|
35
|
+
#
|
36
|
+
# @return [HelloSign::Resource::Team] Current Team
|
37
|
+
#
|
38
|
+
# @example
|
39
|
+
# team = @client.get_team
|
40
|
+
def get_team
|
41
|
+
HelloSign::Resource::Team.new get('/team')
|
42
|
+
end
|
43
|
+
|
44
|
+
# Creates a new Team and adds you as a member. You must not currently belong to a Team.
|
45
|
+
# @option opts [String] name The name of the Team.
|
46
|
+
#
|
47
|
+
# @return [HelloSign::Resource::Team] a Team
|
48
|
+
#
|
49
|
+
# @example
|
50
|
+
# team = @client.create_team name: 'Team America World Police'
|
51
|
+
def create_team(opts)
|
52
|
+
HelloSign::Resource::Team.new post('/team/create', body: opts)
|
53
|
+
end
|
54
|
+
|
55
|
+
# Updates the name of your Team.
|
56
|
+
# @option opts [String] name The name of your Team.
|
57
|
+
#
|
58
|
+
# @return [HelloSign::Resource::Team]
|
59
|
+
#
|
60
|
+
# @example
|
61
|
+
# team = @client.update_team name: 'New Team Name'
|
62
|
+
def update_team(opts)
|
63
|
+
HelloSign::Resource::Team.new post('/team', body: opts)
|
64
|
+
end
|
65
|
+
|
66
|
+
# Deletes your Team. Can only be invoked with a Team with one member (yourself).
|
67
|
+
#
|
68
|
+
# @return [HTTP::Status] 200 OK
|
69
|
+
#
|
70
|
+
# @example
|
71
|
+
# team = @client.destroy_team
|
72
|
+
def destroy_team
|
73
|
+
post('/team/destroy')
|
74
|
+
end
|
75
|
+
|
76
|
+
# Adds or invites a user to the Team.
|
77
|
+
# If the user does not currently have a HelloSign Account, a new one will be created for them.
|
78
|
+
# If the user currently has a paid subscription, they will be emailed an invitation to join the Team.
|
79
|
+
# If a user is already a part of a Team, a "team_invite_failed" error will be returned.
|
80
|
+
# @option opts [String] account_id The user's Account ID to invite to the Team.
|
81
|
+
# @option opts [String] email_address The user's email address to invite to your Team.
|
82
|
+
# Note: The account_id prevails if both email_address and acccount_id are provided.
|
83
|
+
#
|
84
|
+
# @return [HelloSign::Resource::Team] a Team
|
85
|
+
#
|
86
|
+
# @example
|
87
|
+
# team = @client.add_member_to_team email_address: 'george@example.com'
|
88
|
+
def add_member_to_team(opts)
|
89
|
+
HelloSign::Resource::Team.new post('/team/add_member', body: opts)
|
90
|
+
end
|
91
|
+
|
92
|
+
# Removes a user from the Team. If the user had an outstanding invitation to your Team, the original invitation will expire.
|
93
|
+
# @option opts [String] account_id The user's Account ID to remove from the Team.
|
94
|
+
# @option opts [String] email_address The user's email address to remove from your Team.
|
95
|
+
# @option opts [String] new_owner_email_address The Account's email address to receive all documents, API Apps (if applicable), and API key from removed account. (optional)
|
96
|
+
# Note: The account_id prevails if both email_address and acccount_id are provided.
|
97
|
+
#
|
98
|
+
# @return [HelloSign::Resource::Team] updated Team
|
99
|
+
#
|
100
|
+
# @example
|
101
|
+
# team = @client.remove_member_from_team email_address: 'george@example.com'
|
102
|
+
def remove_member_from_team(opts)
|
103
|
+
HelloSign::Resource::Team.new post('/team/remove_member', body: opts)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -0,0 +1,227 @@
|
|
1
|
+
# The MIT License (MIT)
|
2
|
+
#
|
3
|
+
# Copyright (C) 2014 hellosign.com
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
module HelloSign
|
24
|
+
module Api
|
25
|
+
# Contains all the API calls for the Template resource.
|
26
|
+
# Take a look at our API Documentation for Templates (https://app.hellosign.com/api/reference#Template)
|
27
|
+
# for more information about this.
|
28
|
+
#
|
29
|
+
# @author [hellosign]
|
30
|
+
|
31
|
+
module Template
|
32
|
+
|
33
|
+
# Retrieves the Template with the given ID.
|
34
|
+
# @option opts [String] template_id The ID of the Template to retrieve.
|
35
|
+
#
|
36
|
+
# @return [HelloSign::Resource::Template] a Template
|
37
|
+
#
|
38
|
+
# @example
|
39
|
+
# template = @client.get_template template_id: 'f57db65d3f933b5316d398057a36176831451a35'
|
40
|
+
def get_template(opts)
|
41
|
+
HelloSign::Resource::Template.new get("/template/#{opts[:template_id]}")
|
42
|
+
end
|
43
|
+
|
44
|
+
# Deletes the specified Template.
|
45
|
+
# @option opts [String] template_id The ID of the Template to delete.
|
46
|
+
#
|
47
|
+
# @return [HTTP::Status] 200 OK
|
48
|
+
#
|
49
|
+
# @example
|
50
|
+
# template = @client.delete_template template_id: 'f57db65d3f933b5316d398057a36176831451a35'
|
51
|
+
def delete_template(opts)
|
52
|
+
post("/template/delete/#{opts[:template_id]}")
|
53
|
+
end
|
54
|
+
|
55
|
+
# Retrieves the Templates for the accessible by the current user.
|
56
|
+
# @option opts [String] account_id The Account ID to return Templates for. Use "all" for all team members. Defaults to current account. (optional)
|
57
|
+
# @option opts [Integer] page Sets the page number of the list to return. Defaults to 1. (optional)
|
58
|
+
# @option opts [Integer] page_size Determines the number of Templates returned per page. Defaults to 20. (optional)
|
59
|
+
# @option opts [String] query Search terms and/or fields to filter the Templates. (optional)
|
60
|
+
#
|
61
|
+
# @return [HelloSign::Resource::ResourceArray] a ResourceArray
|
62
|
+
#
|
63
|
+
# @example
|
64
|
+
# templates = @client.get_templates page: 1
|
65
|
+
def get_templates(opts={})
|
66
|
+
path = '/template/list'
|
67
|
+
opts[:query] = create_search_string(opts[:query]) if opts[:query]
|
68
|
+
query = create_query_string(opts, [:page, :page_size, :query])
|
69
|
+
path += query
|
70
|
+
HelloSign::Resource::ResourceArray.new get(path, opts), 'templates', HelloSign::Resource::Template
|
71
|
+
end
|
72
|
+
|
73
|
+
# Gives the specified Account access to a Template. The Account must be part of your Team.
|
74
|
+
# @option opts [String] template_id The Template ID to give access to.
|
75
|
+
# @option opts [String] account_id The Account ID to receive access to the Template.
|
76
|
+
# @option opts [String] email_address The email address of the Account to receive access to the Template.
|
77
|
+
# Note: The account_id prevails if both email_address and acccount_id are provided.
|
78
|
+
#
|
79
|
+
# @return [HelloSign::Resource::Template] a Template
|
80
|
+
#
|
81
|
+
# @example
|
82
|
+
# templates = @client.add_user_to_template template_id: 'f57db65d3f933b5316d398057a36176831451a35', email_address: 'george@example.com'
|
83
|
+
def add_user_to_template(opts)
|
84
|
+
path = "/template/add_user/#{opts[:template_id]}"
|
85
|
+
opts.delete(:template_id)
|
86
|
+
HelloSign::Resource::Template.new post(path, body: opts)
|
87
|
+
end
|
88
|
+
|
89
|
+
# Removes the specified Account access to the specified Template.
|
90
|
+
# @option opts [String] template_id The Template ID to remove access to.
|
91
|
+
# @option opts [String] account_id The Account ID to remove access to the Template.
|
92
|
+
# @option opts [String] email_address The email address of the Account to remove access to the Template.
|
93
|
+
# Note: The account_id prevails if both email_address and acccount_id are provided.
|
94
|
+
#
|
95
|
+
# @return [HelloSign::Resource::Template] a Template
|
96
|
+
#
|
97
|
+
# @example
|
98
|
+
# templates = @client.remove_user_from_template template_id: 'f57db65d3f933b5316d398057a36176831451a35', email_address: 'george@example.com'
|
99
|
+
def remove_user_from_template(opts)
|
100
|
+
path = "/template/remove_user/#{opts[:template_id]}"
|
101
|
+
opts.delete(:template_id)
|
102
|
+
HelloSign::Resource::Template.new post(path, body: opts)
|
103
|
+
end
|
104
|
+
|
105
|
+
# Creates a new Embedded Template draft object that can be launched in an iFrame using the claim_url.
|
106
|
+
# @option opts [Boolean] test_mode Indicates if this is a test Template draft. SignatureRequests using this Template will not be legally binding if set to 1. Defaults to 0. (optional)
|
107
|
+
# @option opts [String] client_id The API App Client ID associated with the Template draft. (optional)
|
108
|
+
# @option opts [Array<String>] files Specified file path(s) to upload file(s) to send for signature. Currently we only support use of either the files parameter or file_urls parameter, not both.
|
109
|
+
# @option opts [Array<String>] file_urls URL(s) for HelloSign to download the file(s) to send for signature. Currently we only support use of either the files parameter or file_urls parameter, not both.
|
110
|
+
# @option opts [String] title The default Template title. (optional)
|
111
|
+
# @option opts [String] subject The default Template title alias. (optional)
|
112
|
+
# @option opts [String] message The default message in the email that will be sent to the signer(s). (optional)
|
113
|
+
# @option opts [Array<Hash>] signers List of signers displayed when the Template is used to create a SignatureRequest
|
114
|
+
# * name (String) Signer role name
|
115
|
+
# * order (Integer) The order the signer role is required to sign in. (optional)
|
116
|
+
# @option opts [Array<Hash>] attachments Sets a list of attachments signers can upload
|
117
|
+
# * name (String) Attachment name
|
118
|
+
# * instructions (String) Instructions for uploading the attachment. (optional)
|
119
|
+
# * signer_index (Integer) The signer's unique number.
|
120
|
+
# * required (Boolean) Determines if the signer is required to upload this attachment. Defaults to 0. (Optional)
|
121
|
+
# @option opts [Array<Hash>] cc_roles The CC roles that must be assigned when using the Template to create a SignatureRequest. (optional)
|
122
|
+
# @option opts [String<Array><Hash>] merge_fields List of fields that can be pre-populated by your application when using the Template to send a SignatureRequest. (optional)
|
123
|
+
# * name (String) Merge field name
|
124
|
+
# * type (String) Field type - either "text" or "checkbox"
|
125
|
+
# @option opts [Boolean] skip_me_now Sets the "Me (Now)" option for the Template preparer. Defaults to 0. (optional)
|
126
|
+
# @option opts [Boolean] use_preexisting_fields Sets the detection of predefined PDF fields. Defaults to 0. (optional)
|
127
|
+
# @option opts [Hash] metadata Key-value data attached to the Template and all SignatureRequests created from the Template. (optional)
|
128
|
+
# @option opts [Boolean] allow_reassign Sets the ability for signers to reassign the SignatureRequest to other signers. Defaults to 0. (optional)
|
129
|
+
#
|
130
|
+
# @return [HelloSign::Resource::Template] a Template
|
131
|
+
#
|
132
|
+
# @example
|
133
|
+
# template_draft = @client.create_embedded_template_draft(
|
134
|
+
# test_mode: 1,
|
135
|
+
# subject: 'The NDA we talked about',
|
136
|
+
# requester_email_address: 'requester@example.com',
|
137
|
+
# message: 'Please sign this NDA and then we can discuss more. Let me know if you have any questions.',
|
138
|
+
# signer_roles: [
|
139
|
+
# {
|
140
|
+
# name: 'Manager',
|
141
|
+
# order: 0
|
142
|
+
# },
|
143
|
+
# {
|
144
|
+
# name: 'Client',
|
145
|
+
# order: 1
|
146
|
+
# }
|
147
|
+
# ],
|
148
|
+
# attachments: [{
|
149
|
+
# name: 'Passport',
|
150
|
+
# instructions: 'Upload your US Passport',
|
151
|
+
# signer_index: 0,
|
152
|
+
# required: true
|
153
|
+
# },
|
154
|
+
# {
|
155
|
+
# name: 'Driver's License',
|
156
|
+
# instructions: 'Upload your CA Driver's License',
|
157
|
+
# signer_index: 1,
|
158
|
+
# required: false
|
159
|
+
# }
|
160
|
+
# ],
|
161
|
+
# cc_roles: ['HRManager'],
|
162
|
+
# files: ['NDA.pdf', 'AppendixA.pdf'],
|
163
|
+
# merge_fields: '[
|
164
|
+
# {
|
165
|
+
# name: 'contract_id',
|
166
|
+
# type: 'text'
|
167
|
+
# },
|
168
|
+
# {
|
169
|
+
# name: 'purchase_price',
|
170
|
+
# order: 'text'
|
171
|
+
# }
|
172
|
+
# ]'
|
173
|
+
# )
|
174
|
+
def create_embedded_template_draft(opts)
|
175
|
+
opts[:client_id] ||= self.client_id
|
176
|
+
prepare_files opts
|
177
|
+
prepare_signer_roles opts
|
178
|
+
prepare_attachments opts
|
179
|
+
HelloSign::Resource::TemplateDraft.new post("/template/create_embedded_draft", body: opts)
|
180
|
+
end
|
181
|
+
|
182
|
+
# Downloads the original files of a specified Template.
|
183
|
+
# @option opts [String] template_id The Template ID to retrieve.
|
184
|
+
# @option opts [String] file_type Determines the format of the file - either 'pdf' or 'zip' depending on the file type desired. Defaults to pdf. (optional)
|
185
|
+
# @option opts [Boolean] get_url Response contains a URL link to the file if set to true. Links are only available for PDFs and have a TTL of 3 days. Defaults to false. (optional)
|
186
|
+
#
|
187
|
+
# @return a PDF or Zip
|
188
|
+
#
|
189
|
+
# @example
|
190
|
+
# file = @client.get_template_files template_id: 'f57db65d3f933b5316d398057a36176831451a35', file_type: 'zip'
|
191
|
+
def get_template_files(opts)
|
192
|
+
path = "/template/files/#{opts[:template_id]}"
|
193
|
+
if opts[:file_type]
|
194
|
+
path = path + "?file_type=#{opts[:file_type]}"
|
195
|
+
end
|
196
|
+
if opts[:get_url]
|
197
|
+
separator = opts[:file_type].nil? ? '?' : '&'
|
198
|
+
path = path + "#{separator}get_url=#{opts[:get_url]}"
|
199
|
+
end
|
200
|
+
|
201
|
+
get(path)
|
202
|
+
end
|
203
|
+
|
204
|
+
# Overlays a new file with the overlay of the specified Template.
|
205
|
+
# @option opts [String] template_id The Template ID to update.
|
206
|
+
# @option opts [Array<String>] files Specified file path(s) to upload file(s) to send for signature. Currently we only support use of either the files parameter or file_urls parameter, not both.
|
207
|
+
# @option opts [Array<String>] file_urls URL(s) for HelloSign to download the file(s) to send for signature. Currently we only support use of either the files parameter or file_urls parameter, not both.
|
208
|
+
# @option opts [String] subject The updated default Template title alias. (optional)
|
209
|
+
# @option opts [String] message The updated default message in the email that will be sent to the signer(s). (optional)
|
210
|
+
# @option opts [String] client_id The API App Client ID associated with the Template. (optional)
|
211
|
+
# @option opts [Boolean] test_mode Indicates if this is a test Template. SignatureRequests using this Template will not be legally binding if set to 1. Defaults to 0. (optional)
|
212
|
+
#
|
213
|
+
# @return a Template ID
|
214
|
+
#
|
215
|
+
# @example
|
216
|
+
# templates = @client.update_template_files template_id: 'f57db65d3f933b5316d398057a36176831451a35', file: '@NDA.pdf'
|
217
|
+
#
|
218
|
+
def update_template_files(opts)
|
219
|
+
template_id = opts.delete(:template_id)
|
220
|
+
path = "/template/update_files/#{template_id}"
|
221
|
+
prepare_files opts
|
222
|
+
|
223
|
+
HelloSign::Resource::Template.new post(path, body: opts)
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
@@ -0,0 +1,328 @@
|
|
1
|
+
# The MIT License (MIT)
|
2
|
+
#
|
3
|
+
# Copyright (C) 2014 hellosign.com
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
module HelloSign
|
24
|
+
module Api
|
25
|
+
# Contains all the API calls for the UnclaimedDraft resource.
|
26
|
+
# Take a look at our API documentation for creating UnclaimedDrafts (https://app.hellosign.com/api/reference#UnclaimedDraft)
|
27
|
+
# for more information about this.
|
28
|
+
#
|
29
|
+
# @author [hellosign]
|
30
|
+
|
31
|
+
module UnclaimedDraft
|
32
|
+
|
33
|
+
# Creates a new UnclaimedDraft that can be claimed using the claim_url.
|
34
|
+
# The first authenticated user to access the claim_url claims the Draft and will be shown either the "Sign and send" or the "Request signature" page with the Draft loaded.
|
35
|
+
# Subsequent access to the claim_url will result in a 404 not found error.
|
36
|
+
# @option opts [Boolean] test_mode Indicates if this is a test SignatureRequest, it will not be legally binding if set to 1. Defaults to 0. (optional)
|
37
|
+
# @option opts [Array<String>] files Specifies the file path(s) to send for the SignatureRequest.
|
38
|
+
# @option opts [Array<String>] file_urls Specifies the URL(s) for the file(s) to send for the SignatureRequest.
|
39
|
+
# @option opts [String] type The type of UnclaimedDraft to create. Use "send_document" to create a claimable file, and "request_signature" for a claimable SignatureRequest.
|
40
|
+
# * For "send_document," only the file parameter is required.
|
41
|
+
# * For "request_signature," then signer name and email_address are required.
|
42
|
+
# @option opts [String] subject The subject in the email that will be sent to the signer(s). (optional)
|
43
|
+
# @option opts [String] message The custom message in the email that will be sent to the signer(s). (optional)
|
44
|
+
# @option opts [Array<Hash>] signers Sets a list of signers, each item is a Hash with these keys:
|
45
|
+
# * name (String) Signer's name
|
46
|
+
# * email_address (String) Signer's email address
|
47
|
+
# * order (Integer) The order the signers are required to sign in (optional)
|
48
|
+
# @option opts [Array<Hash>] attachments Sets a list of attachments signers can upload
|
49
|
+
# * name (String) Attachment name
|
50
|
+
# * instructions (String) Instructions for uploading the attachment. (optional)
|
51
|
+
# * signer_index (Integer) The signer's unique number.
|
52
|
+
# * required (Boolean) Determines if the signer is required to upload this attachment. Defaults to 0. (Optional)
|
53
|
+
# @option opts [Array<Hash>] custom_fields An array of custom merge fields, representing those present on the document with Text Tags or form_fields_per_document (optional)
|
54
|
+
# * name (String) Custom field name or "Field Label"
|
55
|
+
# * value (String) The value of the field. This data will appear on the SignatureRequest.
|
56
|
+
# @option opts [Array<String>] cc_email_addresses The email addresses that should be CCed on the SignatureRequest. (optional)
|
57
|
+
# @option opts [String] signing_redirect_url Redirects the signer(s) to this URL after completing the SignatureRequest. (optional)
|
58
|
+
# @option opts [Boolean] use_text_tags Indicates whether the SignatureRequest should have Text Tags enabled. Defaults to 0. (optional)
|
59
|
+
# @option opts [Boolean] hide_text_tags Indicates whether the Text Tags should be removed automatically. Note that this is not the preferred method. Defaults to 0. (optional)
|
60
|
+
# @option opts [Boolean] use_preexisting_fields Sets the detection of predefined PDF fields. Defaults to 0. (optional)
|
61
|
+
# @option opts [Hash] metadata Key-value data attached to the SignatureRequest. (optional)
|
62
|
+
# @option opts [Boolean] allow_decline Allows signers to decline the SignatureRequest. Defaults to 0. (optional)
|
63
|
+
# @option opts [Boolean] allow_reassign Allows signers to reassign the SignatureRequest to another signer. Defaults to 0. (optional)
|
64
|
+
# @option opts [Array<Hash>] form_fields_per_document The fields that should appear on the document. (optional)
|
65
|
+
# @option opts [Hash] signing_options Specifies the types allowed for creating a signature. (optional)
|
66
|
+
#
|
67
|
+
# @return [HelloSign::Resource::UnclaimedDraft] an UnclaimedDraft
|
68
|
+
#
|
69
|
+
# @example type: send_document
|
70
|
+
# unclaimed_draft = @client.create_unclaimed_draft(
|
71
|
+
# test_mode: 1,
|
72
|
+
# files: ['NDA.pdf', 'AppendixA.pdf']
|
73
|
+
# )
|
74
|
+
#
|
75
|
+
# @example type: request_signature
|
76
|
+
# unclaimed_draft = @client.create_unclaimed_draft(
|
77
|
+
# test_mode: 1,
|
78
|
+
# type: 'request_signature',
|
79
|
+
# subject: 'The NDA we talked about',
|
80
|
+
# message: 'Please sign this NDA and then we can discuss more. Let me know if you have any questions.',
|
81
|
+
# metadata: {
|
82
|
+
# client_id: '1234',
|
83
|
+
# custom_text: 'NDA #9'
|
84
|
+
# },
|
85
|
+
# signers: [
|
86
|
+
# {
|
87
|
+
# email_address: 'jack@example.com',
|
88
|
+
# name: 'Jack',
|
89
|
+
# order: 0
|
90
|
+
# },
|
91
|
+
# {
|
92
|
+
# email_address: 'jill@example.com',
|
93
|
+
# name: 'Jill',
|
94
|
+
# order: 1
|
95
|
+
# }
|
96
|
+
# ],
|
97
|
+
# attachments: [{
|
98
|
+
# name: 'Passport',
|
99
|
+
# instructions: 'Upload your US Passport',
|
100
|
+
# signer_index: 0,
|
101
|
+
# required: true
|
102
|
+
# },
|
103
|
+
# {
|
104
|
+
# name: 'Driver's License',
|
105
|
+
# instructions: 'Upload your CA Driver's License',
|
106
|
+
# signer_index: 1,
|
107
|
+
# required: false
|
108
|
+
# }
|
109
|
+
# ],
|
110
|
+
# cc_email_addresses: ['lawyer@example.com', 'lawyer@example2.com'],
|
111
|
+
# files: ['NDA.pdf', 'AppendixA.pdf'],
|
112
|
+
# signing_options: {
|
113
|
+
# draw: true,
|
114
|
+
# type: true,
|
115
|
+
# upload: false,
|
116
|
+
# phone: true,
|
117
|
+
# default: 'phone'
|
118
|
+
# }
|
119
|
+
# )
|
120
|
+
#
|
121
|
+
def create_unclaimed_draft opts
|
122
|
+
prepare_files opts
|
123
|
+
prepare_signers opts
|
124
|
+
prepare_form_fields opts
|
125
|
+
prepare_custom_fields opts
|
126
|
+
prepare_attachments opts
|
127
|
+
|
128
|
+
HelloSign::Resource::UnclaimedDraft.new post('/unclaimed_draft/create', body: opts)
|
129
|
+
end
|
130
|
+
|
131
|
+
# Creates a new Embedded UnclaimedDraft that can be opened in an embedded iFrame.
|
132
|
+
# @option opts [Boolean] test_mode Indicates if this is a test SignatureRequest, it will not be legally binding if set to 1. Defaults to 0. (optional)
|
133
|
+
# @option opts [String] client_id The API App Client ID associated with this Embedded UnclaimedDraft.
|
134
|
+
# @option opts [Array<String>] files Use files to indicate the uploaded file(s) to send for signature. Currently we only support use of either the files parameter or file_urls parameter, not both.
|
135
|
+
# @option opts [Array<String>] file_urls Use file_urls to have HelloSign download the file(s) to send for signature. Currently we only support use of either the files parameter or file_urls parameter, not both.
|
136
|
+
# @option opts [String] requester_email_address The email address of the requester, if "request_signature" type.
|
137
|
+
# @option opts [String] type The type of UnclaimedDraft to create. Use "send_document" to create a claimable file, and "request_signature" for a claimable signature request.
|
138
|
+
# * For "send_document," only the file parameter is required.
|
139
|
+
# * For "request_signature," then signer name and email_address are required.
|
140
|
+
# @option opts [String] subject Sets the subject in the email sent to the signer(s). (optional)
|
141
|
+
# @option opts [String] message Sets the message in the email sent to the signer(s). (optional)
|
142
|
+
# @option opts [Array<Hash>] signers Sets a list of signers, each item is a Hash with these keys:
|
143
|
+
# * name (String) Signer's name
|
144
|
+
# * email_address (String) Signer's email address
|
145
|
+
# * order (Integer) The order the signers are required to sign in (optional)
|
146
|
+
# @option opts [Array<Hash>] attachments Sets a list of attachments signers can upload
|
147
|
+
# * name (String) Attachment name
|
148
|
+
# * instructions (String) Instructions for uploading the attachment. (optional)
|
149
|
+
# * signer_index (Integer) The signer's unique number.
|
150
|
+
# * required (Boolean) Determines if the signer is required to upload this attachment. Defaults to 0. (Optional)
|
151
|
+
# @option opts [Array<String>] cc_email_addresses The email addresses that should be CCed on the SignatureRequest. (optional)
|
152
|
+
# @option opts [String] signing_redirect_url Redirects the signer(s) to this URL after completing the SignatureRequest. (optional)
|
153
|
+
# @option opts [Array<Hash>] custom_fields An array of custom merge fields, representing those present on the document with Text Tags or form_fields_per_document (optional)
|
154
|
+
# * name (String) Custom field name or "Field Label"
|
155
|
+
# * value (String) The value of the field. This data will appear on the SignatureRequest.
|
156
|
+
# @option opts [Boolean] use_text_tags Indicates whether the SignatureRequest should have Text Tags enabled. Defaults to 0. (optional)
|
157
|
+
# @option opts [Boolean] hide_text_tags Indicates whether the Text Tags should be removed automatically. Note that this is not the preferred method. Defaults to 0. (optional)
|
158
|
+
# @option opts [Boolean] use_preexisting_fields Sets the detection of predefined PDF fields. Defaults to 0. (optional)
|
159
|
+
# @option opts [Boolean] is_for_embedded_signing Enable the UnclaimedDraft to be used for an Embedded SignatureRequest. Defaults to 0. (optional)
|
160
|
+
# @option opts [Boolean] skip_me_now Disables the "Me (Now)" option for the preparer. Not available for type "send_document." Defaults to 0. (optional)
|
161
|
+
# @option opts [Hash] metadata Key-value data attached to the SignatureRequest. (optional)
|
162
|
+
# @option opts [Boolean] allow_decline Allows signers to decline the SignatureRequest. Defaults to 0. (optional)
|
163
|
+
# @option opts [Boolean] allow_reassign Allows signers to reassign the SignatureRequest to another signer. Defaults to 0. (optional)
|
164
|
+
# @option opts [Array<Hash>] form_fields_per_document The fields that should appear on the document. (optional)
|
165
|
+
# @option opts [Hash] signing_options Specifies the types allowed for creating a signature. (optional)
|
166
|
+
#
|
167
|
+
# @return [HelloSign::Resource::UnclaimedDraft] an UnclaimedDraft
|
168
|
+
#
|
169
|
+
# @example type: request_signature
|
170
|
+
# unclaimed_draft = @client.create_embedded_unclaimed_draft(
|
171
|
+
# test_mode: 1,
|
172
|
+
# type: 'request_signature',
|
173
|
+
# subject: 'The NDA we talked about',
|
174
|
+
# requester_email_address: 'requester@example.com',
|
175
|
+
# message: 'Please sign this NDA and then we can discuss more. Let me know if you have any questions.',
|
176
|
+
# metadata: {
|
177
|
+
# client_id: '1234',
|
178
|
+
# custom_text: 'NDA #9'
|
179
|
+
# },
|
180
|
+
# signers: [
|
181
|
+
# {
|
182
|
+
# email_address: 'jack@example.com',
|
183
|
+
# name: 'Jack',
|
184
|
+
# order: 0
|
185
|
+
# },
|
186
|
+
# {
|
187
|
+
# email_address: 'jill@example.com',
|
188
|
+
# name: 'Jill',
|
189
|
+
# order: 1
|
190
|
+
# }
|
191
|
+
# ],
|
192
|
+
# attachments: [{
|
193
|
+
# name: 'Passport',
|
194
|
+
# instructions: 'Upload your US Passport',
|
195
|
+
# signer_index: 0,
|
196
|
+
# required: true
|
197
|
+
# },
|
198
|
+
# {
|
199
|
+
# name: 'Driver's License',
|
200
|
+
# instructions: 'Upload your CA Driver's License',
|
201
|
+
# signer_index: 1,
|
202
|
+
# required: false
|
203
|
+
# }
|
204
|
+
# ],
|
205
|
+
# cc_email_addresses: ['lawyer@example.com', 'lawyer@example2.com'],
|
206
|
+
# files: ['NDA.pdf', 'AppendixA.pdf'],
|
207
|
+
# signing_options: {
|
208
|
+
# draw: true,
|
209
|
+
# type: true,
|
210
|
+
# upload: false,
|
211
|
+
# phone: true,
|
212
|
+
# default: 'phone'
|
213
|
+
# }
|
214
|
+
# )
|
215
|
+
def create_embedded_unclaimed_draft(opts)
|
216
|
+
opts[:client_id] ||= self.client_id
|
217
|
+
prepare_files opts
|
218
|
+
prepare_signers opts
|
219
|
+
prepare_form_fields opts
|
220
|
+
prepare_custom_fields opts
|
221
|
+
prepare_attachments opts
|
222
|
+
|
223
|
+
HelloSign::Resource::UnclaimedDraft.new post('/unclaimed_draft/create_embedded', body: opts)
|
224
|
+
end
|
225
|
+
|
226
|
+
# Creates a new Embedded UnclaimedDraft from a Template that can be opened in an embedded iFrame.
|
227
|
+
# @option opts [Boolean] test_mode Indicates if this is a test SignatureRequest, it will not be legally binding if set to 1. Defaults to 0. (optional)
|
228
|
+
# @option opts [String] client_id The API App Client ID associated with the UnclaimedDraft.
|
229
|
+
# @option opts [String] template_id The Template ID to use when creating the UnclaimedDraft.
|
230
|
+
# * Use template_ids[%i%] if using multiple templates, replacing %i% with an integer to indicate the order of the Templates
|
231
|
+
# @option opts [String] requester_email_address The email address of the requester, if "request_signature" type.
|
232
|
+
# @option opts [String] title Assigns a title to the SignatureRequest. (optional)
|
233
|
+
# @option opts [String] subject Sets the subject in the email sent to the signer(s). (optional)
|
234
|
+
# @option opts [String] message Sets the message in the email sent to the signer(s). (optional)
|
235
|
+
# @option opts [Array<Hash>] signers List of signers
|
236
|
+
# * role (String) The signer role indicated on the Template.
|
237
|
+
# * name (String) Signer's name
|
238
|
+
# * email_address (String) Signer's email address
|
239
|
+
# @option opts [Array<Hash>] ccs The individual(s) to be CC'd on the SignatureRequest. Required when a CC role exists for the Template.
|
240
|
+
# * role (String) The CC role indicated on the Template. Note that the role name is case sensitive.
|
241
|
+
# * email_address (String) CC Recipient's email address
|
242
|
+
# @option opts [String] signing_redirect_url Redirects the signer(s) to this URL after completing the SignatureRequest. (optional)
|
243
|
+
# @option opts [String] requesting_redirect_url Redirects the requester to this URL after sending a SignatureRequest. (optional)
|
244
|
+
# @option opts [Hash] metadata Key-value data attached to the SignatureRequest. (optional)
|
245
|
+
# @option opts [Array<Hash>] custom_fields An array of custom merge fields, representing those present in the Template. (optional)
|
246
|
+
# * name (String) Custom field name or "Field Label"
|
247
|
+
# * value (String) The value of the field. This data will appear on the SignatureRequest.
|
248
|
+
# @option opts [Array<String>] files Specifies the file path(s) to append to the SignatureRequest. (optional)
|
249
|
+
# @option opts [Array<String>] file_urls Specifies the URL(s) for the file(s) to append to the SignatureRequest. (optional)
|
250
|
+
# @option opts [Boolean] skip_me_now Disables the "Me (Now)" option for the preparer. Not available for type "send_document." Defaults to 0. (optional)
|
251
|
+
# @option opts [Boolean] allow_decline Allows signers to decline the SignatureRequest. Defaults to 0. (optional)
|
252
|
+
# @option opts [Boolean] allow_reassign Allows signers to reassign the SignatureRequest to another signer. Defaults to 0. (optional)
|
253
|
+
# @option opts [Hash] signing_options Specifies the types allowed for creating a signature. (optional)
|
254
|
+
#
|
255
|
+
# @return [HelloSign::Resource::UnclaimedDraft] an UnclaimedDraft
|
256
|
+
#
|
257
|
+
# @example type: request_signature
|
258
|
+
# unclaimed_draft = @client.create_embedded_unclaimed_draft_with_template(
|
259
|
+
# test_mode: 1,
|
260
|
+
# subject: 'The NDA we talked about',
|
261
|
+
# template_id: 'c26b8a16784a872da37ea946b9ddec7c1e11dff6',
|
262
|
+
# requester_email_address: 'requester@example.com',
|
263
|
+
# message: 'Please sign this NDA and then we can discuss more. Let me know if you have any questions.',
|
264
|
+
# files: ['NDA.pdf', 'AppendixA.pdf'],
|
265
|
+
# metadata: {
|
266
|
+
# client_id: '1234',
|
267
|
+
# custom_text: 'NDA #9'
|
268
|
+
# },
|
269
|
+
# signers: [
|
270
|
+
# {
|
271
|
+
# email_address: 'george@example.com',
|
272
|
+
# name: 'George',
|
273
|
+
# role: 'Client'
|
274
|
+
# }
|
275
|
+
# ],
|
276
|
+
# ccs: [
|
277
|
+
# {
|
278
|
+
# email_address:'accounting@example.com',
|
279
|
+
# role: 'Accounting'
|
280
|
+
# }
|
281
|
+
# ],
|
282
|
+
# custom_fields: {
|
283
|
+
# Cost: '$20,000'
|
284
|
+
# },
|
285
|
+
# signing_options: {
|
286
|
+
# draw: true,
|
287
|
+
# type: true,
|
288
|
+
# upload: false,
|
289
|
+
# phone: true,
|
290
|
+
# default: 'phone'
|
291
|
+
# }
|
292
|
+
# )
|
293
|
+
def create_embedded_unclaimed_draft_with_template(opts)
|
294
|
+
opts[:client_id] ||= self.client_id
|
295
|
+
prepare_signers opts
|
296
|
+
prepare_custom_fields opts
|
297
|
+
prepare_ccs opts
|
298
|
+
prepare_templates opts
|
299
|
+
prepare_files opts
|
300
|
+
|
301
|
+
HelloSign::Resource::UnclaimedDraft.new post('/unclaimed_draft/create_embedded_with_template', body: opts)
|
302
|
+
end
|
303
|
+
|
304
|
+
# Creates a new SignatureRequest from an Embedded UnclaimedDraft.
|
305
|
+
# @option opts [String] signature_request_id The SignatureRequest ID to edit and resend.
|
306
|
+
# @option opts [String] client_id The API App Client ID associated with the UnclaimedDraft.
|
307
|
+
# @option opts [Boolean] test_mode Indicates if this is a test SignatureRequest, it will not be legally binding if set to 1. Defaults to 0. (optional)
|
308
|
+
# @option opts [String] requesting_redirect_url Redirects the requester to this URL after sending a SignatureRequest. (optional)
|
309
|
+
# @option opts [String] signing_redirect_url Redirects the signer(s) to this URL after completing the SignatureRequest. (optional)
|
310
|
+
# @option opts [Boolean] is_for_embedded_signing Enable the UnclaimedDraft to be used for an Embedded SignatureRequest. Defaults to 0. (optional)
|
311
|
+
#
|
312
|
+
# @return [HelloSign::Resource::UnclaimedDraft] an UnclaimedDraft
|
313
|
+
#
|
314
|
+
# @example
|
315
|
+
# unclaimed_draft = @client.edit_and_resend_unclaimed_draft(
|
316
|
+
# signature_request_id: '75cdf7dc8b323d43b347e4a3614d1f822bd09491',
|
317
|
+
# test_mode: 1,
|
318
|
+
# client_id: 'b6b8e7deaf8f0b95c029dca049356d4a2cf9710a',
|
319
|
+
# )
|
320
|
+
def edit_and_resend_unclaimed_draft(opts)
|
321
|
+
signature_request_id = opts.delete(:signature_request_id)
|
322
|
+
path = "/unclaimed_draft/edit_and_resend/#{signature_request_id}"
|
323
|
+
|
324
|
+
HelloSign::Resource::UnclaimedDraft.new post(path, body: opts)
|
325
|
+
end
|
326
|
+
end
|
327
|
+
end
|
328
|
+
end
|