eversign-sdk 0.2.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 5af06750d603bb41b4eed125818e0579adafb0c5f8ee697b53fc149a85d17d5b
4
+ data.tar.gz: ee662d44b412958dcf513570699180d8437f84791f80c426ee90ee1693e8526a
5
+ SHA512:
6
+ metadata.gz: 6b247028ac81c4accfe0a86c988345b693904f1c1dad8d45532570cdefc1fa2f57027b44acbd887ed57836295cce3eb6cb638ad7a79d9937743c8a50f1f9d95c
7
+ data.tar.gz: 30640dcaf8365d8986a5f95dd7f8afe12f974cff268025533b243ba44c0e603ee87110b426248a69ac0dac6a08530df112bb516b28ab6f1824a11355312a8439
data/lib/eversign.rb ADDED
@@ -0,0 +1,33 @@
1
+ require 'eversign/version'
2
+ require 'configurations'
3
+ require 'addressable/uri'
4
+ require_relative 'eversign/client'
5
+ require_relative 'eversign/models/business'
6
+ require_relative 'eversign/models/file'
7
+ require_relative 'eversign/models/field'
8
+ require_relative 'eversign/models/signer'
9
+ require_relative 'eversign/models/recipient'
10
+ require_relative 'eversign/models/document'
11
+ require_relative 'eversign/models/template'
12
+ require_relative 'eversign/models/error'
13
+ require_relative 'eversign/models/exception'
14
+ require_relative 'eversign/mappings/business'
15
+ require_relative 'eversign/mappings/file'
16
+ require_relative 'eversign/mappings/document'
17
+ require_relative 'eversign/mappings/exception'
18
+
19
+ module Eversign
20
+ include Configurations
21
+ configurable String, :access_key
22
+ configurable Integer, :business_id
23
+ configurable String, :oauth_base
24
+ configurable String, :api_base do |value|
25
+ value ||= 'https://api.eversign.com'
26
+ parsed = Addressable::URI.parse(value)
27
+ if %w(http https).include?(parsed.scheme)
28
+ value
29
+ else
30
+ raise ArgumentError 'Invalid API Base URL'
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,207 @@
1
+ require "addressable/template"
2
+ require "faraday"
3
+ require "json"
4
+ require "logger"
5
+
6
+ module Eversign
7
+ class FileNotFoundException < Exception
8
+ end
9
+
10
+ class Client
11
+ attr_accessor :access_key, :base_uri, :business_id, :token
12
+
13
+ def initialize()
14
+ self.base_uri = Eversign.configuration.api_base || "https://api.eversign.com"
15
+ access_key = Eversign.configuration.access_key
16
+ if access_key.start_with?("Bearer ")
17
+ self.set_oauth_access_token(access_key)
18
+ else
19
+ self.access_key = access_key
20
+ end
21
+ self.business_id = Eversign.configuration.business_id
22
+ end
23
+
24
+ def set_oauth_access_token(oauthtoken)
25
+ if oauthtoken.startswith("Bearer ")
26
+ self.token = oauthtoken
27
+ else
28
+ self.token = "Bearer " + oauthtoken
29
+ end
30
+ self.get_businesses()
31
+ end
32
+
33
+ def generate_oauth_authorization_url(options)
34
+ check_arguments(["client_id", "state"], options)
35
+ template = Addressable::Template.new(Eversign.configuration.oauth_base + "/authorize{?clinet_id,state}")
36
+ return template.partial_expand(clinet_id: options["client_id"], state: options["state"]).pattern
37
+ end
38
+
39
+ def request_oauth_token(options)
40
+ check_arguments(["client_id", "client_secret", "code", "state"], options)
41
+
42
+ req = execute_request(:post, "/token", options)
43
+ if req.status == 200
44
+ response_obj = JSON.parse(req.body)
45
+
46
+ if response_obj.key?("success")
47
+ raise response_obj["message"]
48
+ else
49
+ return response_obj["access_token"]
50
+ end
51
+ end
52
+ raise "no success"
53
+ end
54
+
55
+ def get_buisnesses
56
+ response = execute_request(:get, "/api/business?access_key=#{access_key}")
57
+ extract_response(response.body, Eversign::Mappings::Business)
58
+ end
59
+
60
+ def get_all_documents
61
+ get_documents("all")
62
+ end
63
+
64
+ def get_completed_documents
65
+ get_documents("completed")
66
+ end
67
+
68
+ def get_draft_documents
69
+ get_documents("draft")
70
+ end
71
+
72
+ def get_cancelled_documents
73
+ get_documents("cancelled")
74
+ end
75
+
76
+ def get_action_required_documents
77
+ get_documents("my_action_required")
78
+ end
79
+
80
+ def get_waiting_for_others_documents
81
+ get_documents("waiting_for_others")
82
+ end
83
+
84
+ def get_templates
85
+ get_documents("templates")
86
+ end
87
+
88
+ def get_archived_templates
89
+ get_documents("templates_archived")
90
+ end
91
+
92
+ def get_draft_templates
93
+ get_documents("template_draft")
94
+ end
95
+
96
+ def get_document(document_hash)
97
+ path = "/api/document?access_key=#{access_key}&business_id=#{business_id}&document_hash=#{document_hash}"
98
+ response = execute_request(:get, path)
99
+ extract_response(response.body, Eversign::Mappings::Document)
100
+ end
101
+
102
+ def create_document(document, isFromTemplate = false)
103
+ if document.files
104
+ for file in document.files
105
+ if file.file_url
106
+ file_response = self.upload_file(file.file_url)
107
+ file.file_url = nil
108
+ file.file_id = file_response.file_id
109
+ end
110
+ end
111
+ end
112
+ path = "/api/document?access_key=#{access_key}&business_id=#{business_id}"
113
+ data = Eversign::Mappings::Document.representation_for(document, isFromTemplate)
114
+ response = execute_request(:post, path, data)
115
+ extract_response(response.body, Eversign::Mappings::Document)
116
+ end
117
+
118
+ def create_document_from_template(template)
119
+ create_document(template, true)
120
+ end
121
+
122
+ def delete_document(document_hash)
123
+ path = "/api/document?access_key=#{access_key}&business_id=#{business_id}&document_hash=#{document_hash}"
124
+ delete(path, document_hash)
125
+ end
126
+
127
+ def cancel_document(document_hash)
128
+ path = "/api/document?access_key=#{access_key}&business_id=#{business_id}&document_hash=#{document_hash}&cancel=1"
129
+ delete(path, document_hash)
130
+ end
131
+
132
+ def download_raw_document_to_path(document_hash, path)
133
+ sub_uri = "/api/download_raw_document?access_key=#{access_key}&business_id=#{business_id}&document_hash=#{document_hash}"
134
+ download(sub_uri, path)
135
+ end
136
+
137
+ def download_final_document_to_path(document_hash, path, audit_trail = 1)
138
+ sub_uri = "/api/download_raw_document?access_key=#{access_key}&business_id=#{business_id}&document_hash=#{document_hash}&audit_trail=#{audit_trail}"
139
+ download(sub_uri, path)
140
+ end
141
+
142
+ def upload_file(file_path)
143
+ payload = { upload: Faraday::UploadIO.new(file_path, "text/plain") }
144
+ path = "/api/file?access_key=#{access_key}&business_id=#{business_id}"
145
+ response = execute_request(:post, path, payload, true)
146
+ extract_response(response.body, Eversign::Mappings::File)
147
+ end
148
+
149
+ def send_reminder_for_document(document_hash, signer_id)
150
+ path = "/api/send_reminder?access_key=#{access_key}&business_id=#{business_id}"
151
+ response = execute_request(:post, path, { document_hash: document_hash, signer_id: signer_id }.to_json)
152
+ eval(response.body)[:success] ? true : extract_response(response.body)
153
+ end
154
+
155
+ private
156
+
157
+ def execute_request(method, path, body = nil, multipart = false)
158
+ @faraday ||= Faraday.new(base_uri) do |conn|
159
+ conn.headers = {}
160
+ conn.headers["User-Agent"] = "Eversign_Ruby_SDK"
161
+ conn.headers["Authorization"] = token if token
162
+ conn.request :multipart if multipart
163
+ conn.adapter :net_http
164
+ end
165
+
166
+ @faraday.send(method) do |request|
167
+ request.url path
168
+ request.body = body if body
169
+ end
170
+ end
171
+
172
+ def check_arguments(arguments = [], options = {})
173
+ arguments.each do |argument|
174
+ raise ("Please specify " + argument) unless options.has_key?(argument.to_sym)
175
+ end
176
+ end
177
+
178
+ def delete(path, document_hash)
179
+ response = execute_request(:delete, path)
180
+ eval(response.body)[:success] ? true : extract_response(response.body)
181
+ end
182
+
183
+ def download(sub_uri, path)
184
+ response = execute_request(:get, sub_uri)
185
+ File.open(path, "wb") { |fp| fp.write(response.body) }
186
+ end
187
+
188
+ def get_documents(doc_type)
189
+ path = "/api/document?access_key=#{access_key}&business_id=#{business_id}&type=#{doc_type}"
190
+ response = execute_request(:get, path)
191
+ extract_response(response.body, Eversign::Mappings::Document)
192
+ end
193
+
194
+ def extract_response(body, mapping = nil)
195
+ data = JSON.parse(body)
196
+ if data.kind_of?(Array)
197
+ mapping.extract_collection(body, nil)
198
+ else
199
+ if data.key?("success")
200
+ Eversign::Mappings::Exception.extract_single(body, nil)
201
+ else
202
+ mapping.extract_single(body, nil)
203
+ end
204
+ end
205
+ end
206
+ end
207
+ end
@@ -0,0 +1,16 @@
1
+ require 'kartograph'
2
+ require_relative '../models/business'
3
+
4
+ module Eversign
5
+ module Mappings
6
+ class Business
7
+ include Kartograph::DSL
8
+
9
+ kartograph do
10
+ mapping Eversign::Models::Business
11
+
12
+ property :business_id, :business_status, :business_identifier, :business_name, :creation_time_stamp, :is_primary
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,105 @@
1
+ require "kartograph"
2
+ require_relative "../models/document"
3
+
4
+ module Eversign
5
+ module Mappings
6
+ class File
7
+ include Kartograph::DSL
8
+
9
+ kartograph do
10
+ mapping Eversign::Models::File
11
+
12
+ property :name, :file_id, :file_url, :file_base64
13
+ end
14
+ end
15
+
16
+ class Signer
17
+ include Kartograph::DSL
18
+
19
+ kartograph do
20
+ mapping Eversign::Models::Signer
21
+
22
+ property :id, :name, :email, :order, :pin, :message, :deliver_email, :role
23
+ end
24
+ end
25
+
26
+ class Field
27
+ include Kartograph::DSL
28
+
29
+ kartograph do
30
+ mapping Eversign::Models::Field
31
+
32
+ property :name, :type, :x, :y, :width, :height, :page, :signer, :identifier, :required, :readonly, :merge, :type,
33
+ :validation_type, :text_style, :text_font, :text_size, :text_color, :value, :options, :group
34
+ end
35
+ end
36
+
37
+ class Recipient
38
+ include Kartograph::DSL
39
+
40
+ kartograph do
41
+ mapping Eversign::Models::Recipient
42
+
43
+ property :name, :email, :role
44
+ end
45
+ end
46
+
47
+ class Document
48
+ include Kartograph::DSL
49
+
50
+ kartograph do
51
+ mapping Eversign::Models::Document
52
+
53
+ property :document_hash, :template_id, :sandbox, :is_draft, :title, :message, :use_signer_order, :reminders, :require_all_signers,
54
+ :redirect, :redirect_decline, :client, :expires, :embedded_signing_enabled, :requester_email, :is_template,
55
+ :is_completed, :is_archived, :is_deleted, :is_trashed, :is_cancelled, :embedded, :in_person, :permission
56
+ property :files, plural: true, include: File
57
+ property :signers, plural: true, include: Signer
58
+ property :recipients, plural: true, include: Recipient
59
+ end
60
+
61
+ def self.extract_collection(content, scope)
62
+ data = JSON.parse(content)
63
+ result = []
64
+ data.each do |item|
65
+ result << extract_single(item.to_json, nil)
66
+ end
67
+ result
68
+ end
69
+
70
+ def self.extract_single(content, scope)
71
+ obj = super(content, scope)
72
+ data = JSON.parse(content)
73
+ if data["fields"]
74
+ data["fields"].each do |field_list|
75
+ field_data = []
76
+ field_list.each do |field|
77
+ extracted_field = Field.extract_single(field.to_json, nil)
78
+ field_data << extracted_field if extracted_field
79
+ end
80
+ obj.add_field_list(field_data)
81
+ end
82
+ end
83
+ obj
84
+ end
85
+
86
+ def self.representation_for(document, isFromTemplate = false)
87
+ data = super(nil, document)
88
+ list = []
89
+ if document.fields
90
+ document.fields.each do |field_list|
91
+ field_data = []
92
+ field_list.each do |field|
93
+ field_data << JSON.parse(Field.representation_for(nil, field))
94
+ end
95
+ list << field_data
96
+ end
97
+ end
98
+ data = JSON.parse(data)
99
+ # Fix for issue 7. When we create a document from template (isFromTemplate=true) fields array is 1 dimentional, so we flatten it:
100
+ data["fields"] = isFromTemplate ? list.flatten : list
101
+ JSON.dump(data)
102
+ end
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,27 @@
1
+ require 'kartograph'
2
+ #require_relative '../models/document'
3
+
4
+ module Eversign
5
+ module Mappings
6
+ class Error
7
+ include Kartograph::DSL
8
+
9
+ kartograph do
10
+ mapping Eversign::Models::Error
11
+
12
+ property :code, :type, :info
13
+ end
14
+ end
15
+
16
+ class Exception
17
+ include Kartograph::DSL
18
+
19
+ kartograph do
20
+ mapping Eversign::Models::Exception
21
+
22
+ property :success
23
+ property :error, include: Error
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,16 @@
1
+ require 'kartograph'
2
+ require_relative '../models/file'
3
+
4
+ module Eversign
5
+ module Mappings
6
+ class File
7
+ include Kartograph::DSL
8
+
9
+ kartograph do
10
+ mapping Eversign::Models::File
11
+
12
+ property :name, :file_id, :file_url, :file_base64, :pages, :total_pages
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,7 @@
1
+ module Eversign
2
+ module Models
3
+ class Business
4
+ attr_accessor :business_id, :business_status, :business_identifier, :business_name, :creation_time_stamp, :is_primary
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,34 @@
1
+ module Eversign
2
+ module Models
3
+ class Document
4
+ attr_accessor :document_hash, :template_id, :sandbox, :is_draft, :title, :message, :use_signer_order, :reminders, :require_all_signers,
5
+ :redirect, :redirect_decline, :client, :expires, :embedded_signing_enabled, :requester_email, :is_template,
6
+ :is_completed, :is_archived, :is_deleted, :is_trashed, :is_cancelled, :embedded, :in_person, :permission,
7
+ :files, :signers, :recipients, :meta, :fields
8
+
9
+ def add_file(file)
10
+ self.files ||= []
11
+ self.files << file
12
+ end
13
+
14
+ def add_field(field)
15
+ add_field_list([field])
16
+ end
17
+
18
+ def add_field_list(field_list)
19
+ self.fields ||= []
20
+ self.fields << field_list
21
+ end
22
+
23
+ def add_recipient(recipient)
24
+ self.recipients ||= []
25
+ self.recipients << recipient
26
+ end
27
+
28
+ def add_signer(signer)
29
+ self.signers ||= []
30
+ self.signers << signer
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,7 @@
1
+ module Eversign
2
+ module Models
3
+ class Error
4
+ attr_accessor :code, :type, :info
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Eversign
2
+ module Models
3
+ class Exception
4
+ attr_accessor :success, :error
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ module Eversign
2
+ module Models
3
+ class Field
4
+ attr_accessor :name, :type, :x, :y, :width, :height, :page, :signer, :identifier, :required, :readonly, :merge, :type,
5
+ :validation_type, :text_style, :text_font, :text_size, :text_color, :value, :options, :group
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,30 @@
1
+ require 'active_model'
2
+ module Eversign
3
+ module Models
4
+ class File
5
+ include ActiveModel::Validations
6
+
7
+ attr_accessor :name, :file_id, :file_url, :file_base64, :pages, :total_pages
8
+
9
+ validate :only_one_option
10
+
11
+ def initialize(name=nil)
12
+ self.name = name
13
+ end
14
+
15
+ def only_one_option()
16
+ error = false
17
+ if file_id && !file_id.empty?
18
+ error = file_url || file_base64
19
+ elsif file_url && !file_url.empty?
20
+ error = file_id || file_base64
21
+ elsif file_base64 && !file_base64.empty?
22
+ error = file_id || file_url
23
+ else
24
+ error = true
25
+ end
26
+ errors.add('Please provide only one file option') if error
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,13 @@
1
+ module Eversign
2
+ module Models
3
+ class Recipient
4
+ attr_accessor :name, :email, :role
5
+
6
+ def initialize(name=nil, email=nil, role=nil)
7
+ self.name = name
8
+ self.email = email
9
+ self.role = role
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Eversign
2
+ module Models
3
+ class Signer
4
+ attr_accessor :id, :name, :email, :order, :pin, :message, :deliver_email, :role
5
+
6
+ def initialize(name=nil, email=nil, role=nil)
7
+ self.name = name
8
+ self.email = email
9
+ self.role = role
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,6 @@
1
+ module Eversign
2
+ module Models
3
+ class Template < Document
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,3 @@
1
+ module Eversign
2
+ VERSION = '0.2.1'
3
+ end
metadata ADDED
@@ -0,0 +1,199 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: eversign-sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
5
+ platform: ruby
6
+ authors:
7
+ - eversign
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-04-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0.13'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0.13'
41
+ - !ruby/object:Gem::Dependency
42
+ name: addressable
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.5'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.5'
55
+ - !ruby/object:Gem::Dependency
56
+ name: kartograph
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.2.3
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.2.3
69
+ - !ruby/object:Gem::Dependency
70
+ name: configurations
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.2'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '10.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '10.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '3.0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: dotenv-rails
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ description: Gem for Eversign API SDK.
154
+ email:
155
+ - support@eversign.com
156
+ executables: []
157
+ extensions: []
158
+ extra_rdoc_files: []
159
+ files:
160
+ - lib/eversign.rb
161
+ - lib/eversign/client.rb
162
+ - lib/eversign/mappings/business.rb
163
+ - lib/eversign/mappings/document.rb
164
+ - lib/eversign/mappings/exception.rb
165
+ - lib/eversign/mappings/file.rb
166
+ - lib/eversign/models/business.rb
167
+ - lib/eversign/models/document.rb
168
+ - lib/eversign/models/error.rb
169
+ - lib/eversign/models/exception.rb
170
+ - lib/eversign/models/field.rb
171
+ - lib/eversign/models/file.rb
172
+ - lib/eversign/models/recipient.rb
173
+ - lib/eversign/models/signer.rb
174
+ - lib/eversign/models/template.rb
175
+ - lib/eversign/version.rb
176
+ homepage: https://github.com/workatbest/eversign-ruby-sdk
177
+ licenses:
178
+ - MIT
179
+ metadata: {}
180
+ post_install_message:
181
+ rdoc_options: []
182
+ require_paths:
183
+ - lib
184
+ required_ruby_version: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ required_rubygems_version: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: '0'
194
+ requirements: []
195
+ rubygems_version: 3.1.2
196
+ signing_key:
197
+ specification_version: 4
198
+ summary: Gem for Eversign API Client.
199
+ test_files: []