module Echochamber::Request
Constants
- BASE_URL
- ENDPOINT
Public Class Methods
Gets a single combined PDF document for the documents associated with an agreement.
@param token [String] Auth Token @param agreement_id [String] ID of agreement to retrieve info on. @return [String] Raw bytes from document file
# File lib/echochamber/agreement/request.rb, line 57 def self.agreement_combined_pdf(token, agreement_id, versionId, participantEmail, attachSupportingDocuments, auditReport) headers = { 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:agreement)}/#{agreement_id}/combinedDocument" endpoint << add_query(endpoint, "versionId=#{versionId}") unless versionId.nil? endpoint << add_query(endpoint, "participantEmail=#{participantEmail}") unless participantEmail.nil? endpoint << add_query(endpoint, "attachSupportingDocuments=#{attachSupportingDocuments}") endpoint << add_query(endpoint, "auditReport=#{auditReport}") response = get(endpoint, headers) end
Retrieve agreement document PDF
@param token [String] Auth Token @param agreement_id [String] ID of agreement to retrieve info on. @return [String] Raw bytes from document file
# File lib/echochamber/agreement/request.rb, line 83 def self.agreement_document_file(token, agreement_id, document_id) headers = { 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:agreement)}/#{agreement_id}/documents/#{document_id}" response = get(endpoint, headers) end
Performs REST GET /agreement/:id/documents
@param agreement_id [String] (REQUIRED) @param recipient_email [String] The email address of the participant to be used to retrieve documents. (REQUIRED) @param format [String] Content format of the supported documents. It can have two possible values ORIGINAL or CONVERTED_PDF. (REQUIRED) @param version_id [String] Version of the agreement as provided by {agreement_info agreement_info
}. If not provided, the latest version of the agreement is used. @return [Hash] Agreement
documents response body
# File lib/echochamber/agreement/request.rb, line 107 def self.agreement_documents(token, agreement_id, recipient_email=nil, format=nil, version_id=nil) headers = { :accept => :json, 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:agreement)}/#{agreement_id}/documents" endpoint << add_query(endpoint, "versionId=#{version_id}") unless version_id.nil? endpoint << add_query(endpoint, "participantEmail=#{recipient_email}") unless version_id.nil? endpoint << add_query(endpoint, "supportingDocumentContentFormat=#{format}") unless format.nil? response = get(endpoint, headers) JSON.parse(response.body) end
Retrieves data entered by the user into interactive form fields at the time they signed the agreement
@param token [String] Auth Token @param agreement_id [String] (REQUIRED) @return [String] Raw bytes representing CSV file
# File lib/echochamber/agreement/request.rb, line 72 def self.agreement_form_data(token, agreement_id) headers = { 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:agreement)}/#{agreement_id}/formData" response = get(endpoint, headers) end
Performs REST GET /agreement/:id operation
@param token [String] Auth Token @param agreement_id [String] ID of agreement to retrieve info on. @return [Hash] Agreement
info response body
# File lib/echochamber/agreement/request.rb, line 33 def self.agreement_info(token, agreement_id) headers = { :accept => :json, 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:agreement)}/#{agreement_id}" response = get(endpoint, headers) JSON.parse(response.body) end
Performs REST GET /agreement/:id/signingUrls operation
@param token [String] Auth Token @param agreement_id [String] ID of agreement to retrieve info on. @return [Hash] URL information for the eSign page of the agreement
# File lib/echochamber/agreement/request.rb, line 45 def self.agreement_signing_urls(token, agreement_id) headers = { 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:agreement)}/#{agreement_id}/signingUrls" response = get(endpoint, headers) JSON.parse(response.body) end
Performs REST GET /agreement/:id/auditTrail operation
@param token [String] Auth Token @param agreement_id [String] ID of agreement to retrieve info on. @return [String] Raw bytes from audit pdf file
# File lib/echochamber/agreement/request.rb, line 94 def self.audit_trail_pdf(token, agreement_id) headers = { 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:agreement)}/#{agreement_id}/auditTrail" response = get(endpoint, headers) end
Performs REST create_agreement
operation
@param body [Hash] Request
body (REQUIRED) @param token [String] Auth token (REQUIRED) @param user_id [String] Echosign user ID (REQUIRED) @param user_email [String] Echosign user email @return [Hash] Agreement
response body
# File lib/echochamber/agreement/request.rb, line 10 def self.create_agreement(body, token, user_id=nil, user_email=nil) headers = { :content_type => :json, :accept => :json, 'Access-Token' => token } headers.merge!('X-User-Id' => user_id) unless user_id.nil? headers.merge!('X-User-Email' => user_email) unless user_email.nil? response = post(ENDPOINT.fetch(:agreement), body, headers) JSON.parse(response.body) end
Sends a reminder for an agreement.
@param body [Hash] Valid request body @param token [String] Auth Token @return [Hash] Response body
# File lib/echochamber/request.rb, line 56 def self.create_reminder(token, body) endpoint = ENDPOINT.fetch(:reminder) headers = { :content_type => :json, :accept => :json, 'Access-Token' => token} response = post(endpoint, body, headers) JSON.parse(response.body) end
Performs REST create_transient_document
operation
@param token [String] Auth token (REQUIRED) @param file_name [String] File name (REQUIRED) @param file_handle [File] File handle (REQUIRED) @param mime_type [String] Mime type @return [Hash] Transient Document Response Body
# File lib/echochamber/request.rb, line 70 def self.create_transient_document(token, file_name, file_handle, mime_type=nil) headers = { :content_type => :json, :accept => :json, 'Access-Token' => token } begin response = RestClient.post( ENDPOINT.fetch(:transientDocument), { 'File-Name' => file_name, 'Mime-Type' => mime_type, 'File' => file_handle, :multipart => true}, headers ) rescue Exception => error raise_error(error) end JSON.parse(response.body) end
Performs REST create_user
operation
@param body [Hash] Valid request body @param token [String] Auth Token @return [Hash] New user response body
# File lib/echochamber/request.rb, line 44 def self.create_user(body, token) endpoint = ENDPOINT.fetch(:user) headers = { :content_type => :json, :accept => :json, 'Access-Token' => token} response = post(endpoint, body, headers) JSON.parse(response.body) end
Creates a widget and returns the Javascript snippet and URL to access the widget and widgetID in response to the client
@param token [String] Auth token @param widget [Echochamber::Widget] @return [Hash]
# File lib/echochamber/widget/request.rb, line 8 def self.create_widget(token, widget) endpoint = ENDPOINT.fetch(:widget) headers = { :content_type => :json, :accept => :json, 'Access-Token' => token} headers.merge!('X-User-Id' => widget.user_id) unless widget.user_id.nil? headers.merge!('X-User-Email' => widget.user_email) unless widget.user_email.nil? response = post(endpoint, widget, headers) JSON.parse(response.body) end
Performs REST GET /agreements operation
@param token [String] Auth Token @return [Hash] Agreements response body
# File lib/echochamber/agreement/request.rb, line 22 def self.get_agreements(token) headers = { :accept => :json, 'Access-Token' => token } response = get(ENDPOINT.fetch(:agreement), headers) JSON.parse(response.body) end
Retrieves library document metadata for a user.
@param token [String] Auth Token @param library_document_id [String] @return [Hash] Library document metadata
# File lib/echochamber/library_documents/request.rb, line 23 def self.get_library_document(token, library_document_id) headers = { 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:libraryDocument)}/#{library_document_id}" response = get(endpoint, headers) JSON.parse(response) end
Retrieves library document file data
@param token [String] Auth Token @param library_document_id [String] (REQUIRED) @param file_id [String] (REQUIRED) @return [String] Library document file data
# File lib/echochamber/library_documents/request.rb, line 48 def self.get_library_document_file(token, library_document_id, file_id) headers = { 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:libraryDocument)}/#{library_document_id}/documents/#{file_id}" response = get(endpoint, headers) end
Retrieves library document file
@param token [String] Auth Token @param library_document_id [String] (REQUIRED) @return [Hash] Library document files metadata
# File lib/echochamber/library_documents/request.rb, line 35 def self.get_library_document_files(token, library_document_id) headers = { 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:libraryDocument)}/#{library_document_id}/documents" response = get(endpoint, headers) JSON.parse(response) end
Retrieves library documents for a user.
@param token [String] Auth Token @param user_id [String] The ID of the user whose library documents are being requested. @param user_email [String] The email address of the user whose library documents are being requested. If both user_id and user_email are provided then user_id is given preference. If neither is specified then the user is inferred from the access token. @return [Hash] Library documents metadata
# File lib/echochamber/library_documents/request.rb, line 9 def self.get_library_documents(token, user_id=nil, user_email=nil) headers = { 'Access-Token' => token } headers.merge!('X-User-Id' => user_id) unless user_id.nil? headers.merge!('X-User-Email' => user_email) unless user_email.nil? endpoint = ENDPOINT.fetch(:libraryDocument) response = get(endpoint, headers) JSON.parse(response) end
Retrieves the authentication token
@param credentials [Echochamber::Credentials] Initialized Echochamber::Credentials
@return [String] Valid authentication token
# File lib/echochamber/request.rb, line 32 def self.get_token(credentials) headers = { :content_type => :json, :accept => :json } response = post(ENDPOINT.fetch(:token), credentials, headers) response_body = JSON.parse(response.body) response_body.fetch("accessToken") end
Gets all the users in an account that the caller has permissions to access.
@param token [String] Auth Token @param user_id [String] @return [Hash] User
info hash
# File lib/echochamber/request.rb, line 106 def self.get_user(token, user_id) headers = { 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:user)}/#{user_id}" response = get(endpoint, headers) JSON.parse(response) end
Gets all the users in an account that the caller has permissions to access.
@param token [String] Auth Token @param user_email [String] The email address of the user whose details are being requested. @return [Hash] User
info hash
# File lib/echochamber/request.rb, line 94 def self.get_users(token, user_email) headers = { 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:user)}?x-user-email=#{user_email}" response = get(endpoint, headers) JSON.parse(response) end
Performs GET /widget operation
@param widget_id [String] @return [Hash] Response body
# File lib/echochamber/widget/request.rb, line 82 def self.get_widget(token, widget_id) headers = { :content_type => :json, :accept => :json, 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:widget)}/#{widget_id}" response = get(endpoint, headers) JSON.parse(response.body) end
Performs GET /widget/:id/auditTrail
@param widget_id [String] @return [Hash] Response body
# File lib/echochamber/widget/request.rb, line 116 def self.get_widget_audit_trail(token, widget_id) headers = { :content_type => :json, :accept => :json, 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:widget)}/#{widget_id}/auditTrail" response = get(endpoint, headers) end
Performs GET /widget/:id/documents/:id operation
@param widget_id [String] @return [Hash] Response body
# File lib/echochamber/widget/request.rb, line 106 def self.get_widget_document_file(token, widget_id, document_id) headers = { :content_type => :json, :accept => :json, 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:widget)}/#{widget_id}/documents/#{document_id}" response = get(endpoint, headers) end
Performs GET /widget/:id/documents operation
@param widget_id [String] @return [Hash] Response body
# File lib/echochamber/widget/request.rb, line 93 def self.get_widget_documents(token, widget_id, version_id=nil, participant_email=nil) headers = { :content_type => :json, :accept => :json, 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:widget)}/#{widget_id}/documents" endpoint << add_query(endpoint, "versionId=#{version_id}") unless version_id.nil? endpoint << add_query(endpoint, "participantEmail=#{participant_email}") unless participant_email.nil? response = get(endpoint, headers) JSON.parse(response.body) end
Performs GET /widget/:id/formData
@param widget_id [String] @return [Hash] Response body
# File lib/echochamber/widget/request.rb, line 126 def self.get_widget_form_data(token, widget_id) headers = { :content_type => :json, :accept => :json, 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:widget)}/#{widget_id}/formData" response = get(endpoint, headers) end
Performs GET /widgets operation
@param token [String] Auth Token @param user_id [String] @param user_email [String] @return [Hash] Response body
# File lib/echochamber/widget/request.rb, line 69 def self.get_widgets(token, user_id=nil, user_email=nil) headers = { :content_type => :json, :accept => :json, 'Access-Token' => token } headers.merge!('X-User-Id' => user_id) unless user_id.nil? headers.merge!('X-User-Email' => user_email) unless user_email.nil? endpoint = "#{ENDPOINT.fetch(:widget)}" response = get(endpoint, headers) JSON.parse(response.body) end
Retrieves library combined document file
@param token [String] Auth Token @param library_document_id [String] (REQUIRED) @return [String] Raw library combined document file data
# File lib/echochamber/library_documents/request.rb, line 70 def self.library_combined_document(token, library_document_id, auditReport) headers = { 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:libraryDocument)}/#{library_document_id}/combinedDocument" endpoint << add_query(endpoint, "auditReport=#{auditReport}") response = get(endpoint, headers) end
Retrieves library document file data
@param token [String] Auth Token @param library_document_id [String] (REQUIRED) @return [String] Library document file data
# File lib/echochamber/library_documents/request.rb, line 59 def self.library_document_audit_trail(token, library_document_id) headers = { 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:libraryDocument)}/#{library_document_id}/auditTrail" response = get(endpoint, headers) end
Performs REST PUT /agreement/:id operation
@param token [String] Auth Token @param widget_id [String] @param personalization [Echochamber::WidgetPersonalization] @return [Hash] Response body
# File lib/echochamber/widget/request.rb, line 23 def self.personalize_widget(token, widget_id, personalization) headers = { :content_type => :json, :accept => :json, 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:widget)}/#{widget_id}/personalize" begin response = RestClient.put( endpoint, personalization.to_json, headers ) rescue Exception => error raise_error(error) end JSON.parse(response.body) end
Performs REST PUT /agreement/:id operation
@param token [String] Auth Token @param agreement_id [String] ID of agreement to retrieve info on. @param request_body [Hash] Hash for Agreement
status update @return [Hash] Agreements response body
# File lib/echochamber/agreement/request.rb, line 124 def self.update_agreement_status(token, agreement_id, request_body) headers = { :content_type => :json, :accept => :json, 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:agreement)}/#{agreement_id}/status" begin response = RestClient.put( endpoint, request_body.to_json, headers ) rescue Exception => error raise_error(error) end JSON.parse(response.body) end
Performs REST PUT /agreement/:id operation
@param token [String] Auth Token @param widget_id [String] @param status [Echochamber::WidgetStatus] @return [Hash] Response body
# File lib/echochamber/widget/request.rb, line 46 def self.update_widget_status(token, widget_id, status) headers = { :content_type => :json, :accept => :json, 'Access-Token' => token } endpoint = "#{ENDPOINT.fetch(:widget)}/#{widget_id}/status" begin response = RestClient.put( endpoint, status.to_json, headers ) rescue Exception => error raise_error(error) end JSON.parse(response.body) end
Private Class Methods
# File lib/echochamber/request.rb, line 139 def self.add_query(url, query) (url.include?('?') ? '&' : '?') + query end
# File lib/echochamber/request.rb, line 116 def self.get(endpoint, headers) begin RestClient.get( endpoint, headers ) rescue Exception => error raise_error(error) end end
# File lib/echochamber/request.rb, line 127 def self.post(endpoint, body, headers) begin RestClient.post( endpoint, body.to_json, headers ) rescue Exception => error raise_error(error) end end
# File lib/echochamber/request.rb, line 143 def self.raise_error(error) message = "#{error.inspect}. \nSee Adobe Echosign REST API documentation for Error code meanings: https://secure.echosign.com/public/docs/restapi/v2" raise Failure.new message, error end