Class: Boldsign::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/boldsign/client.rb

Overview

HTTP client for the BoldSign REST API.

Holds API credentials and exposes one accessor per resource group (‘documents`, `templates`, `contacts`, …). Each accessor returns a memoized resource object whose methods wrap individual endpoints.

Low-level verb methods (#get, #post, #put, #patch, #delete, #download) are also available for hitting any endpoint directly.

Examples:

client = Boldsign::Client.new(api_key: ENV["BOLDSIGN_API_KEY"], region: :us)
client.documents.send_document(title: "NDA", signers: [...])

Constant Summary collapse

DEFAULT_BASE_URL =

Default region (US).

"https://api.boldsign.com".freeze
USER_AGENT =

User-Agent header value sent on every request.

"boldsign-ruby/#{Boldsign::VERSION}".freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key: nil, region: nil, base_url: nil, adapter: Faraday.default_adapter, logger: nil) ⇒ Client

Returns a new instance of Client.

Parameters:

  • api_key (String, nil) (defaults to: nil)

    BoldSign API key. Falls back to ‘ENV`.

  • region (Symbol, nil) (defaults to: nil)

    One of ‘:us`, `:eu`, `:ca`, `:au`. Ignored if `base_url` is given.

  • base_url (String, nil) (defaults to: nil)

    Explicit base URL override.

  • adapter (Symbol) (defaults to: Faraday.default_adapter)

    Faraday adapter (defaults to ‘Faraday.default_adapter`).

  • logger (Logger, nil) (defaults to: nil)

    Optional logger; when present, Faraday’s logger middleware is enabled.

Raises:



33
34
35
36
37
38
39
40
# File 'lib/boldsign/client.rb', line 33

def initialize(api_key: nil, region: nil, base_url: nil, adapter: Faraday.default_adapter, logger: nil)
  @api_key = api_key || ENV["BOLDSIGN_API_KEY"]
  raise ConfigurationError, "Missing BoldSign API key" if @api_key.nil? || @api_key.empty?

  @base_url = base_url || Boldsign::REGIONS[region&.to_sym] || DEFAULT_BASE_URL
  @adapter = adapter
  @logger = logger
end

Instance Attribute Details

#api_keyString (readonly)

Returns the API key in use.

Returns:

  • (String)

    the API key in use.



22
23
24
# File 'lib/boldsign/client.rb', line 22

def api_key
  @api_key
end

#base_urlString (readonly)

Returns the resolved base URL (region or explicit override).

Returns:

  • (String)

    the resolved base URL (region or explicit override).



25
26
27
# File 'lib/boldsign/client.rb', line 25

def base_url
  @base_url
end

Instance Method Details

#brandResources::Brand

Returns:



43
# File 'lib/boldsign/client.rb', line 43

def brand;                 @brand ||= Resources::Brand.new(self); end

#contact_groupsResources::ContactGroup



47
# File 'lib/boldsign/client.rb', line 47

def contact_groups;        @contact_groups ||= Resources::ContactGroup.new(self); end

#contactsResources::Contact

Returns:



45
# File 'lib/boldsign/client.rb', line 45

def contacts;              @contacts ||= Resources::Contact.new(self); end

#custom_fieldsResources::CustomField



49
# File 'lib/boldsign/client.rb', line 49

def custom_fields;         @custom_fields ||= Resources::CustomField.new(self); end

#delete(path, params = {}) ⇒ Object

Issue a DELETE request.

Parameters:

  • path (String)

    request path.

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

    query string parameters.



100
101
102
# File 'lib/boldsign/client.rb', line 100

def delete(path, params = {})
  request(:delete, path, params: params)
end

#documentsResources::Document

Returns:



51
# File 'lib/boldsign/client.rb', line 51

def documents;             @documents ||= Resources::Document.new(self); end

#download(path, params = {}) ⇒ String

Issue a GET request and return the raw response body without JSON parsing. Use for binary endpoints (downloads, audit logs, attachments).

Parameters:

  • path (String)

    request path.

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

    query string parameters.

Returns:

  • (String)

    raw response bytes.

Raises:

  • (Error)

    on any non-success HTTP status.



110
111
112
113
114
115
116
# File 'lib/boldsign/client.rb', line 110

def download(path, params = {})
  response = connection.get(path) do |req|
    req.params.update(params) if params && !params.empty?
  end
  handle_errors(response)
  response.body
end

#get(path, params = {}) ⇒ Hash, ...

Issue a GET request.

Parameters:

  • path (String)

    request path (e.g. ‘/v1/document/list`).

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

    query string parameters.

Returns:

  • (Hash, Array, String, nil)

    parsed JSON body, or raw body for non-JSON responses.

Raises:

  • (Error)

    on any non-success HTTP status.



70
71
72
# File 'lib/boldsign/client.rb', line 70

def get(path, params = {})
  request(:get, path, params: params)
end

#identity_verificationResources::IdentityVerification



53
# File 'lib/boldsign/client.rb', line 53

def identity_verification; @identity_verification ||= Resources::IdentityVerification.new(self); end

#patch(path, body: nil, params: {}) ⇒ Object

Issue a PATCH request. See #post for parameter semantics.



93
94
95
# File 'lib/boldsign/client.rb', line 93

def patch(path, body: nil, params: {})
  request(:patch, path, body: body, params: params)
end

#planResources::Plan

Returns:



55
# File 'lib/boldsign/client.rb', line 55

def plan;                  @plan ||= Resources::Plan.new(self); end

#post(path, body: nil, params: {}, multipart: false) ⇒ Hash, ...

Issue a POST request.

Parameters:

  • path (String)

    request path.

  • body (Hash, String, nil) (defaults to: nil)

    request body. Hashes are JSON-encoded; pre-serialized JSON strings are sent as-is.

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

    query string parameters.

  • multipart (Boolean) (defaults to: false)

    when ‘true`, body is sent as `multipart/form-data` (include `Faraday::Multipart::FilePart` values to upload files).

Returns:

  • (Hash, Array, String, nil)

Raises:

  • (Error)

    on any non-success HTTP status.



83
84
85
# File 'lib/boldsign/client.rb', line 83

def post(path, body: nil, params: {}, multipart: false)
  request(:post, path, body: body, params: params, multipart: multipart)
end

#put(path, body: nil, params: {}) ⇒ Object

Issue a PUT request. See #post for parameter semantics.



88
89
90
# File 'lib/boldsign/client.rb', line 88

def put(path, body: nil, params: {})
  request(:put, path, body: body, params: params)
end

#sender_identitiesResources::SenderIdentity



57
# File 'lib/boldsign/client.rb', line 57

def sender_identities;     @sender_identities ||= Resources::SenderIdentity.new(self); end

#teamsResources::Team

Returns:



59
# File 'lib/boldsign/client.rb', line 59

def teams;                 @teams ||= Resources::Team.new(self); end

#templatesResources::Template

Returns:



61
# File 'lib/boldsign/client.rb', line 61

def templates;             @templates ||= Resources::Template.new(self); end

#usersResources::User

Returns:



63
# File 'lib/boldsign/client.rb', line 63

def users;                 @users ||= Resources::User.new(self); end