module Echochamber::Request

Constants

BASE_URL
ENDPOINT

Public Class Methods

agreement_combined_pdf(token, agreement_id, versionId, participantEmail, attachSupportingDocuments, auditReport) click to toggle source

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
agreement_document_file(token, agreement_id, document_id) click to toggle source

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
agreement_documents(token, agreement_id, recipient_email=nil, format=nil, version_id=nil) click to toggle source

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
agreement_form_data(token, agreement_id) click to toggle source

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
agreement_info(token, agreement_id) click to toggle source

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
agreement_signing_urls(token, agreement_id) click to toggle source

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
audit_trail_pdf(token, agreement_id) click to toggle source

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
create_agreement(body, token, user_id=nil, user_email=nil) click to toggle source

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
create_reminder(token, body) click to toggle source

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
create_transient_document(token, file_name, file_handle, mime_type=nil) click to toggle source

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
create_user(body, token) click to toggle source

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
create_widget(token, widget) click to toggle source

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
get_agreements(token) click to toggle source

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
get_library_document(token, library_document_id) click to toggle source

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
get_library_document_file(token, library_document_id, file_id) click to toggle source

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
get_library_document_files(token, library_document_id) click to toggle source

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
get_library_documents(token, user_id=nil, user_email=nil) click to toggle source

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
get_token(credentials) click to toggle source

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
get_user(token, user_id) click to toggle source

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
get_users(token, user_email) click to toggle source

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
get_widget(token, widget_id) click to toggle source

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
get_widget_audit_trail(token, widget_id) click to toggle source

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
get_widget_document_file(token, widget_id, document_id) click to toggle source

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
get_widget_documents(token, widget_id, version_id=nil, participant_email=nil) click to toggle source

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
get_widget_form_data(token, widget_id) click to toggle source

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
get_widgets(token, user_id=nil, user_email=nil) click to toggle source

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
library_combined_document(token, library_document_id, auditReport) click to toggle source

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
library_document_audit_trail(token, library_document_id) click to toggle source

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
personalize_widget(token, widget_id, personalization) click to toggle source

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
update_agreement_status(token, agreement_id, request_body) click to toggle source

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
update_widget_status(token, widget_id, status) click to toggle source

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

add_query(url, query) click to toggle source
# File lib/echochamber/request.rb, line 139
def self.add_query(url, query)
  (url.include?('?') ? '&' : '?') + query
end
get(endpoint, headers) click to toggle source
# 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
post(endpoint, body, headers) click to toggle source
# 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
raise_error(error) click to toggle source
# 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