Class: GroupDocs::Signature::Envelope

Inherits:
Api::Entity show all
Extended by:
ResourceMethods
Includes:
Api::Helpers::SignaturePublic, DocumentMethods, EntityFields, EntityMethods, FieldMethods, RecipientMethods
Defined in:
lib/groupdocs/signature/envelope.rb

Defined Under Namespace

Classes: Log

Constant Summary collapse

STATUSES =
{
  :draft       => -1,
  :annotation  =>  0,
  :in_progress =>  1,
  :expired     =>  2,
  :canceled    =>  3,
  :failed      =>  4,
  :completed   =>  5,
  :archived    =>  6,
  :scheduled   => 99,
}

Instance Attribute Summary collapse

Attributes included from EntityFields

#documentsCount, #documentsPages, #emailBody, #emailSubject, #id, #name, #orderedSignature, #ownerGuid, #ownerId, #ownerShouldSign, #recipients, #reminderTime, #stepExpireTime, #waterMarkImage, #waterMarkText

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ResourceMethods

resources!

Methods included from RecipientMethods

#recipients!, #remove_recipient!

Methods included from FieldMethods

#add_field!, #assign_field!, #delete_field!, #delete_field_location!, #fields!, #modify_field!

Methods included from EntityMethods

#create!, #delete!, included, #modify!, #rename!

Methods included from Api::Helpers::Accessor

#alias_accessor

Methods included from DocumentMethods

#add_document!, #documents!, #remove_document!, #rename_document!

Methods inherited from Api::Entity

#initialize, #inspect, #to_hash

Constructor Details

This class inherits a constructor from GroupDocs::Api::Entity

Instance Attribute Details

#attachSignedDocumentObject



104
105
106
# File 'lib/groupdocs/signature/envelope.rb', line 104

def attachSignedDocument
  @attachSignedDocument
end

#canBeCommentedObject



108
109
110
# File 'lib/groupdocs/signature/envelope.rb', line 108

def canBeCommented
  @canBeCommented
end

#creationDateTimeObject



90
91
92
# File 'lib/groupdocs/signature/envelope.rb', line 90

def creationDateTime
  @creationDateTime
end

#enableTypedSignatureObject



114
115
116
# File 'lib/groupdocs/signature/envelope.rb', line 114

def enableTypedSignature
  @enableTypedSignature
end

#enableUploadedSignatureObject



116
117
118
# File 'lib/groupdocs/signature/envelope.rb', line 116

def enableUploadedSignature
  @enableUploadedSignature
end

#envelopeExpireTimeObject



96
97
98
# File 'lib/groupdocs/signature/envelope.rb', line 96

def envelopeExpireTime
  @envelopeExpireTime
end


106
107
108
# File 'lib/groupdocs/signature/envelope.rb', line 106

def includeViewLink
  @includeViewLink
end

#inPersonSignObject



110
111
112
# File 'lib/groupdocs/signature/envelope.rb', line 110

def inPersonSign
  @inPersonSign
end

#isDemoObject



98
99
100
# File 'lib/groupdocs/signature/envelope.rb', line 98

def isDemo
  @isDemo
end

#lockDuringSignObject

added in release 1.9.0



128
129
130
# File 'lib/groupdocs/signature/envelope.rb', line 128

def lockDuringSign
  @lockDuringSign
end

#ownerNameObject



112
113
114
# File 'lib/groupdocs/signature/envelope.rb', line 112

def ownerName
  @ownerName
end

#requestUserAuthByPhotoObject



120
121
122
# File 'lib/groupdocs/signature/envelope.rb', line 120

def requestUserAuthByPhoto
  @requestUserAuthByPhoto
end

#requireUserAuthForSignObject



118
119
120
# File 'lib/groupdocs/signature/envelope.rb', line 118

def requireUserAuthForSign
  @requireUserAuthForSign
end

#showRecipientCommentInSignedDocumentObject



122
123
124
# File 'lib/groupdocs/signature/envelope.rb', line 122

def showRecipientCommentInSignedDocument
  @showRecipientCommentInSignedDocument
end

#statusSymbol

Converts status to human-readable format.

Returns:

  • (Symbol)


92
93
94
# File 'lib/groupdocs/signature/envelope.rb', line 92

def status
  @status
end

#statusDateTimeObject



94
95
96
# File 'lib/groupdocs/signature/envelope.rb', line 94

def statusDateTime
  @statusDateTime
end

#tagsObject



124
125
126
# File 'lib/groupdocs/signature/envelope.rb', line 124

def tags
  @tags
end

#updatedDateTimeObject

added in release 1.7.0



102
103
104
# File 'lib/groupdocs/signature/envelope.rb', line 102

def updatedDateTime
  @updatedDateTime
end

Class Method Details

.all!(options = {}, access = {}) ⇒ Array<GroupDocs::Signature::Envelope>

Changed in release 1.7.0

Returns a list of all envelopes.

Parameters:

  • options (Hash) (defaults to: {})

    Hash of options

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (options):

  • :page (Integer)

    Page to start with

  • :records (Integer)

    How many items to list

  • :status_id (Integer)

    Filter envelopes by status identifier

  • :document (String)

    Filter envelopes by document GUID

  • :recipient (String)

    Filter envelopes by recipient email

  • :date (String)

    Filter envelopes by date

  • :name (String)

    Filter envelopes by name

  • :tag (String)

    Filter envelopes by tag

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/groupdocs/signature/envelope.rb', line 46

def self.all!(options = {}, access = {})
  status_id = options.delete(:status_id)
  options[:statusId] = status_id if status_id

  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = '/signature/{{client_id}}/envelopes'
  end
  api.add_params(options)
  json = api.execute!

  json[:envelopes].map do |envelope|
    new(envelope)
  end
end

.for_me!(options = {}, access = {}) ⇒ Array<GroupDocs::Signature::Envelope>

Returns a list of all envelopes where user is recipient.

Parameters:

  • options (Hash) (defaults to: {})

    Hash of options

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (options):

  • :page (Integer)

    Page to start with

  • :records (Integer)

    How many items to list

  • :statusId (Integer)

    Filter by status identifier

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/groupdocs/signature/envelope.rb', line 75

def self.for_me!(options = {}, access = {})
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = '/signature/{{client_id}}/envelopes/recipient'
  end
  api.add_params(options)
  json = api.execute!

  json[:envelopes].map do |envelope|
    new(envelope)
  end
end

Instance Method Details

#add_recipient!(recipient, access = {}) ⇒ Object

Changed in release 1.5.8

Adds recipient to envelope.

Examples:

roles = GroupDocs::Signature::Role.get!
envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
recipient = GroupDocs::Signature::Recipient.new
recipient.email = '[email protected]'
recipient.first_name = 'John'
recipient.last_name = 'Smith'
recipient.role_id = roles.detect { |role| role.name == "Signer" }.id
envelope.add_recipient! recipient

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Raises:

  • (ArgumentError)

    if recipient is not GroupDocs::Signature::Recipient



165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
# File 'lib/groupdocs/signature/envelope.rb', line 165

def add_recipient!(recipient, access = {})
  recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
    "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"

  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = "/signature/{{client_id}}/envelopes/#{id}/recipient"
  end
  api.add_params(:email     => recipient.email,
                 :firstname => recipient.first_name,
                 :lastname  => recipient.last_name,
                 :role      => recipient.role_id,
                 :order     => recipient.order)
  json = api.execute!
  Signature::Recipient.new(json[:recipient])

end

#archive!(access = {}) ⇒ Object

Archives completed envelope.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


482
483
484
485
486
487
488
# File 'lib/groupdocs/signature/envelope.rb', line 482

def archive!(access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/signature/{{client_id}}/envelopes/#{id}/archive"
  end.execute!
end

#cancel!(access = {}) ⇒ Object

Cancel envelope.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


551
552
553
554
555
556
557
# File 'lib/groupdocs/signature/envelope.rb', line 551

def cancel!( access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/signature/{{client_id}}/envelopes/#{id}/cancel"
  end.execute!
end

#date!(recipient, field, access = {}) ⇒ Array

Changed in release 1.5.8

Get signed envelope field data.

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Array)


711
712
713
714
715
716
717
718
719
720
721
722
# File 'lib/groupdocs/signature/envelope.rb', line 711

def date!(recipient, field, access = {})
  field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
                                                    "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
  recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
                                                            "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"

  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/signature/public/envelopes/#{id}/fields/recipient/#{recipient.id}/field/#{field.id}"
  end.execute!
end

#decline!(recipient, access = {}) ⇒ Object

Declines envelope.

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Raises:

  • (ArgumentError)

    if recipient is not GroupDocs::Signature::Recipient



363
364
365
366
367
368
369
370
371
372
# File 'lib/groupdocs/signature/envelope.rb', line 363

def decline!(recipient, access = {})
  recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
    "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"

  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/signature/{{client_id}}/envelopes/#{id}/recipient/#{recipient.id}/decline"
  end.execute!
end

#delegate_recipient!(old, new, access = {}) ⇒ Object

Delegates recipient to another one.

Examples:

envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
old = envelope.recipients!.first
old.first_name = 'Johnny'
new = GroupDocs::Signature::Recipient.new
new.email = '[email protected]'
new.first_name = 'John'
new.last_name = 'Smith'
envelope.delegate_recipient! old, new

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Raises:

  • (ArgumentError)

    if old recipient is not GroupDocs::Signature::Recipient

  • (ArgumentError)

    if new recipient is not GroupDocs::Signature::Recipient



237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
# File 'lib/groupdocs/signature/envelope.rb', line 237

def delegate_recipient!(old, new, access = {})
  old.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
    "Old recipient should be GroupDocs::Signature::Recipient object, received: #{old.inspect}"
  new.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
    "New recipient should be GroupDocs::Signature::Recipient object, received: #{new.inspect}"

  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = "/signature/{{client_id}}/envelopes/#{id}/recipient/#{old.id}/delegate"
  end
  api.add_params(:email     => new.email,
                 :firstname => new.first_name,
                 :lastname  => new.last_name)
  api.execute!
end

#fill_field!(value, field, document, recipient, options = {}, access = {}) ⇒ GroupDocs::Signature::Field

Fills field with value.

Value differs depending on field type. See examples below.

Examples:

Fill single line field

envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
document = envelope.documents!.first
recipient = envelope.recipients!.first
field = envelope.fields!(document, recipient).first
envelope.fill_field! "my_data", field, document, recipient

Fill signature field

envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
document = envelope.documents!.first
recipient = envelope.recipients!.first
field = envelope.fields!(document, recipient).first
signature = GroupDocs::Signature.get!.first
envelope.fill_field! signature, field, document, recipient

Fill checkbox field

envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
document = envelope.documents!.first
recipient = envelope.recipients!.first
field = envelope.fields!(document, recipient).first
envelope.fill_field! false, field, document, recipient

Parameters:

Options Hash (options):

  • :public (Boolean)

    Defaults to false

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

Raises:

  • (ArgumentError)

    if field is not GroupDocs::Signature::Field

  • (ArgumentError)

    if document is not GroupDocs::Document

  • (ArgumentError)

    if recipient is not GroupDocs::Signature::Recipient



295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
# File 'lib/groupdocs/signature/envelope.rb', line 295

def fill_field!(value, field, document, recipient, options = {}, access = {})
  field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
    "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
  document.is_a?(GroupDocs::Document) or raise ArgumentError,
    "Document should be GroupDocs::Document object, received: #{document.inspect}"
  recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
    "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"

  client_id = client_id(options[:public])
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/signature/#{client_id}/envelopes/#{id}/documents/#{document.file.guid}/recipient/#{recipient.id}/field/#{field.id}"
  end

  type = field.field_type
  if type == :signature && value.is_a?(GroupDocs::Signature)
    api.add_params(:signatureId => value.id)
  else
    if type == :checkbox
      value = (value ? 'on' : 'off')
    end
    api.options[:request_body] = value
    api.options[:plain] = true
  end

  json = api.execute!
  Signature::Field.new(json[:field])
end

#get_envelope!(path, document, access = {}) ⇒ Object

Get signed envelope document.

Examples:

envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
document = GroupDocs::Storage::Folder.list!.last.to_document
envelope.add_document! document

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Raises:

  • (ArgumentError)

    if document is not GroupDocs::Document



519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
# File 'lib/groupdocs/signature/envelope.rb', line 519

def get_envelope!(path, document, access = {})
  document.is_a?(GroupDocs::Document) or raise ArgumentError,
                                               "Document should be GroupDocs::Document object, received: #{document.inspect}"

  response = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/signature/{{client_id}}/envelopes/#{id}/document/#{document.file.guid}"
  end.execute!

  filepath = "#{path}/#{name}."

  if documents!.size == 1
    filepath << 'pdf'
  else
    filepath << 'zip'
  end

  Object::File.open(filepath, 'wb') do |file|
    file.write(response)
  end

  filepath
end

#logs!(access = {}) ⇒ Array<GroupDocs::Signature::Envelope::Log>

Returns a list of audit logs.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



445
446
447
448
449
450
451
452
453
454
455
# File 'lib/groupdocs/signature/envelope.rb', line 445

def logs!(access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/signature/{{client_id}}/envelopes/#{id}/logs"
  end.execute!

  json[:logs].map do |log|
    Log.new(log)
  end
end

#modify_field_location!(location, field, document, recipient, order, access = {}) ⇒ Object

Modify signature envelope field location.

Examples:

Modify field location in envelope

envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
document = envelope.documents!.first
recipient = envelope.recipients!.first
field = envelope.fields!(document, recipient).first
location = field.locations.first
envelope.modify_field_location! location, field, document, recipient

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Raises:

  • (ArgumentError)

    if location is not GroupDocs::Signature::Field::Location

  • (ArgumentError)

    if field is not GroupDocs::Signature::Field

  • (ArgumentError)

    if document is not GroupDocs::Document

  • (ArgumentError)

    if recipient is not GroupDocs::Signature::Recipient



617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
# File 'lib/groupdocs/signature/envelope.rb', line 617

def modify_field_location!(location, field, document, recipient, order, access = {})
  location.is_a?(GroupDocs::Signature::Field::Location) or raise ArgumentError,
                                                                 "Location should be GroupDocs::Signature::Field::Location object, received: #{location.inspect}"
  field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
                                                    "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
  document.is_a?(GroupDocs::Document) or raise ArgumentError,
                                               "Document should be GroupDocs::Document object, received: #{document.inspect}"
  recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
                                                            "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"

 api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/signature/{{client_id}}/envelopes/#{id}/documents/#{document.file.guid}/recipient/#{recipient.id}/fields/#{field.id}/locations/#{location.id}"
  end
  api.add_params(:order => order)
  api.execute!
end

#modify_recipient!(recipient, access = {}) ⇒ Object

Modify recipient of envelope.

Examples:

envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
recipient = envelope.recipients!.first
recipient.first_name = 'Johnny'
envelope.modify_recipient! recipient

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Raises:

  • (ArgumentError)

    if recipient is not GroupDocs::Signature::Recipient



199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# File 'lib/groupdocs/signature/envelope.rb', line 199

def modify_recipient!(recipient, access = {})
  recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
    "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"

  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/signature/{{client_id}}/envelopes/#{id}/recipient/#{recipient.id}"
  end
  api.add_params(:email     => recipient.email,
                 :firstname => recipient.first_name,
                 :lastname  => recipient.last_name,
                 :role      => recipient.role_id,
                 :order     => recipient.order)
  api.execute!
end

#public_get!(recipient, access = {}) ⇒ Array

Changed in release 1.5.8

Get signature envelope.

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Array)


647
648
649
650
651
652
653
654
655
656
657
658
# File 'lib/groupdocs/signature/envelope.rb', line 647

def public_get!(recipient, access = {})
  recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
                                                            "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"

  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/signature/public/envelopes/#{id}/recipient/#{recipient.id}"
  end.execute!

  Signature::Envelope.new(json[:envelope])
end

#public_signed_documents!(path, recipient, access = {}) ⇒ Array

Changed in release 1.5.8

Public downloads signed documents to given path.

If there is only one file in envelope, it’s saved as PDF. If there are two or more files in envelope, it’s saved as ZIP.

Parameters:

  • path (String)

    Directory to download file to

  • recipient (GroupDocs::Signature::Recipient)

    Recipient GUID

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Array)


675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
# File 'lib/groupdocs/signature/envelope.rb', line 675

def public_signed_documents!(path, recipient, access = {})
  recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
                                                            "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DOWNLOAD
    request[:path] = "/signature/public/envelopes/#{id}/recipient/#{recipient.id}/documents/get"
  end.execute!
  filepath = "#{path}/#{name}."
  if documents!.size == 1
    filepath << 'pdf'
  else
    filepath << 'zip'
  end

  Object::File.open(filepath, 'wb') do |file|
    file.write(json)
  end

  filepath
end

#resend!(access = {}) ⇒ Object

added in release 1.6.0

Resend envelope email notification.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


735
736
737
738
739
740
741
# File 'lib/groupdocs/signature/envelope.rb', line 735

def resend!(access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/signature/{{client_id}}/envelopes/#{id}/resend-notification"
  end.execute!
end

#restart!(access = {}) ⇒ Object

Restarts expired envelope.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


497
498
499
500
501
502
503
# File 'lib/groupdocs/signature/envelope.rb', line 497

def restart!(access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/signature/{{client_id}}/envelopes/#{id}/restart"
  end.execute!
end

#retry!(access = {}) ⇒ Object

Retry sign envelope.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


566
567
568
569
570
571
572
# File 'lib/groupdocs/signature/envelope.rb', line 566

def retry!(access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/signature/{{client_id}}/envelopes/#{id}/retry"
  end.execute!
end

#send!(webhook = {}, access = {}) ⇒ Object

Sends envelope.

Parameters:

  • webhook (Hash) (defaults to: {})

    URL to be hooked after envelope is completed

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (webhook):

  • :callbackUrl (String)

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


466
467
468
469
470
471
472
473
# File 'lib/groupdocs/signature/envelope.rb', line 466

def send!(webhook = {}, access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/signature/{{client_id}}/envelopes/#{id}/send"
    request[:request_body] = webhook
  end.execute!
end

#sign!(recipient, settings = {}, options = {}, access = {}) ⇒ Object

Changed in release 1.7.0

Signs envelope.

Parameters:

  • recipient (GroupDocs::Signature::Recipient)
  • settings (Hash) (defaults to: {})
  • options (Hash) (defaults to: {})
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (settings):

  • :authData (String) — default: required
  • :comment (String) — default: required

Options Hash (options):

  • :public (Boolean)

    Defaults to false

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Raises:

  • (ArgumentError)

    if recipient is not GroupDocs::Signature::Recipient



341
342
343
344
345
346
347
348
349
350
351
352
# File 'lib/groupdocs/signature/envelope.rb', line 341

def sign!(recipient, settings = {}, options = {}, access = {})
  recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
    "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"

  client_id = client_id(options[:public])
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/signature/#{client_id}/envelopes/#{id}/recipient/#{recipient.id}/sign"
    request[:request_body] = settings
  end.execute!
end

#signed_document!(document, path, access = {}) ⇒ String

Returns path to file.

Parameters:

  • document (GroupDocs::Document)

    Signed document

  • path (String)

    Directory to download file to

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (String)

    path to file



418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
# File 'lib/groupdocs/signature/envelope.rb', line 418

def signed_document!(document, path, access = {})
  document.is_a?(GroupDocs::Document) or raise ArgumentError,
    "Document should be GroupDocs::Document object, received: #{document.inspect}"

  response = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DOWNLOAD
    request[:path] = "/signature/{{client_id}}/envelopes/#{id}/document/#{document.file.guid}"
  end.execute!

  document.file.name ? filepath = "#{path}/#{document.file.name}" : filepath = "#{path}/#{name}.pdf"

  Object::File.open(filepath, 'wb') do |file|
    file.write(response)
  end

  filepath
end

#signed_documents!(path, access = {}) ⇒ String

Downloads signed documents to given path. If there is only one file in envelope, it’s saved as PDF. If there are two or more files in envelope, it’s saved as ZIP.

Parameters:

  • path (String)

    Directory to download file to

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (String)

    path to file



385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
# File 'lib/groupdocs/signature/envelope.rb', line 385

def signed_documents!(path, access = {})
  response = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DOWNLOAD
    request[:path] = "/signature/{{client_id}}/envelopes/#{id}/documents/get"
  end.execute!

  filepath = "#{path}/#{name}."
  if documents!.size == 1
    filepath << 'pdf'
  else
    filepath << 'zip'
  end

  Object::File.open(filepath, 'wb') do |file|
    file.write(response)
  end

  filepath
end

#update_envelope!(template, access = {}) ⇒ Array

Update envelope.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Array)


582
583
584
585
586
587
588
589
590
591
# File 'lib/groupdocs/signature/envelope.rb', line 582

def update_envelope!(template, access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = "/signature/{{client_id}}/envelopes/#{id}/templates/#{template}"
  end.execute!

  json[:envelope]

end