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

#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



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

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)


479
480
481
482
483
484
485
# File 'lib/groupdocs/signature/envelope.rb', line 479

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)


548
549
550
551
552
553
554
# File 'lib/groupdocs/signature/envelope.rb', line 548

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)


708
709
710
711
712
713
714
715
716
717
718
719
# File 'lib/groupdocs/signature/envelope.rb', line 708

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



360
361
362
363
364
365
366
367
368
369
# File 'lib/groupdocs/signature/envelope.rb', line 360

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



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

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



292
293
294
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
# File 'lib/groupdocs/signature/envelope.rb', line 292

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



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

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:



442
443
444
445
446
447
448
449
450
451
452
# File 'lib/groupdocs/signature/envelope.rb', line 442

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



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

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



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

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)


644
645
646
647
648
649
650
651
652
653
654
655
# File 'lib/groupdocs/signature/envelope.rb', line 644

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)


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

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)


732
733
734
735
736
737
738
# File 'lib/groupdocs/signature/envelope.rb', line 732

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)


494
495
496
497
498
499
500
# File 'lib/groupdocs/signature/envelope.rb', line 494

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)


563
564
565
566
567
568
569
# File 'lib/groupdocs/signature/envelope.rb', line 563

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)


463
464
465
466
467
468
469
470
# File 'lib/groupdocs/signature/envelope.rb', line 463

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



338
339
340
341
342
343
344
345
346
347
348
349
# File 'lib/groupdocs/signature/envelope.rb', line 338

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



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

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



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

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)


579
580
581
582
583
584
585
586
587
588
# File 'lib/groupdocs/signature/envelope.rb', line 579

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