Ruby Gem to consume Adobe's EchoSign e-signature service - REST service v5
gem install echosign
The bulk of the API is on the Echosign::Client class
You can read Echosign's full API Documentation
It wouldn't hurt to read Adobe's Echosign API documentation
require 'echosign'
credentials = Echosign::Credentials.new(app_id, app_secret)
access_token = credentials.refresh_access_token(refresh_token)
client = Echosign::Client.new(access_token)
Workflow before authorizing:
redirect_uri
must be set in the EchoSign API configurationscope
will typically be something like'agreement_write:account agreement_send:account'
require 'echosign'
credentials = Echosign::Credentials.new(app_id, app_secret)
redirect_to credentials.authorize_url(redirect_uri, scope)
Workflow after authorizing:
require 'echosign'
credentials = Echosign::Credentials.new(app_id, app_secret)
token = credentials.get_token(params[:code], redirect_uri)
# you should persist credentials.refresh_token somewhere to use in future
client = Echosign::Client.new(token)
require 'echosign'
client = Echosign::Client.new(integration_key)
url_file_params = {
url: 'http://somedomain.com/contract.pdf',
mimeType: 'application/pdf',
name: 'contract.pdf'
}
file_info_params = {
documentURL: Echosign::UrlFileInfo.new(url_file_params)
}
recipient_params = {
role: 'SIGNER', email: '[email protected]'
}
agreement_info = {
fileInfos: [ Echosign::Fileinfo.new(file_info_params) ],
recipientSetInfos: [ Echosign::Recipient.new(recipient_params)],
signatureFlow: "SENDER_SIGNS_LAST",
signatureType: "ESIGN",
name: "Rumplestiltskin Contract"
}
agreement = Echosign::Agreement.new(sender_id, sender_email, agreement_info)
agreement_id = client.create_agreement(agreement)
result = client.cancel_agreement(agreement_id, true, 'Because...blah blah.')
user_params = {
firstName: 'JohnQ',
lastName: 'Public',
email: '[email protected]',
password: 'kN12oK9p!3',
title: 'Hedge Wizard'
}
user = Echosign::User.new(user_params)
user_id = client.create_user(user)
tran_doc_id = client.create_transient_document(file_name, mime_type, File.new('myfile.pdf'))