Class: Attio::Client

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

Overview

Since:

  • 1.0.0

Direct Known Subclasses

EnhancedClient

Constant Summary collapse

API_BASE_URL =

The base URL for the Attio API v2

Since:

  • 1.0.0

"https://api.attio.com/v2"
DEFAULT_TIMEOUT =

Default request timeout in seconds

Since:

  • 1.0.0

30

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key:, timeout: DEFAULT_TIMEOUT) ⇒ Client

Initialize a new Attio API client.

Examples:

client = Attio::Client.new(api_key: 'sk-...your-key...')

Raises:

  • if api_key is nil or empty

Since:

  • 1.0.0

Parameters:

  • Your Attio API key (required)

  • (defaults to: DEFAULT_TIMEOUT)

    Request timeout in seconds (default: 30)



38
39
40
41
42
43
# File 'lib/attio/client.rb', line 38

def initialize(api_key:, timeout: DEFAULT_TIMEOUT)
  raise ArgumentError, "API key is required" if api_key.nil? || api_key.empty?

  @api_key = api_key
  @timeout = timeout
end

Instance Attribute Details

#api_keyString (readonly)

Returns The API key used for authentication.

Since:

  • 1.0.0

Returns:

  • The API key used for authentication



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

def api_key
  @api_key
end

#timeoutInteger (readonly)

Returns The request timeout in seconds.

Since:

  • 1.0.0

Returns:

  • The request timeout in seconds



28
29
30
# File 'lib/attio/client.rb', line 28

def timeout
  @timeout
end

Instance Method Details

#attributesResources::Attributes

Access to the Attributes API resource.

Examples:

attributes = client.attributes.list

Since:

  • 1.0.0

Returns:

  • Attributes resource instance



117
118
119
# File 'lib/attio/client.rb', line 117

def attributes
  @attributes ||= Resources::Attributes.new(self)
end

#bulkResources::Bulk

Access to the Bulk Operations API resource.

Examples:

client.bulk.create_records(object: 'companies', records: [...])

Since:

  • 1.0.0

Returns:

  • Bulk operations resource instance



189
190
191
# File 'lib/attio/client.rb', line 189

def bulk
  @bulk ||= Resources::Bulk.new(self)
end

#commentsResources::Comments

Access to the Comments API resource.

Examples:

comments = client.comments.list(thread_id: 'thread_123')

Since:

  • 1.0.0

Returns:

  • Comments resource instance



153
154
155
# File 'lib/attio/client.rb', line 153

def comments
  @comments ||= Resources::Comments.new(self)
end

#connectionHttpClient

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the HTTP connection instance for making API requests.

This method creates and configures the HTTP client with proper authentication headers and settings. The connection is cached for subsequent requests.

Since:

  • 1.0.0

Returns:

  • The configured HTTP client instance

API:

  • private



53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/attio/client.rb', line 53

def connection
  @connection ||= HttpClient.new(
    base_url: API_BASE_URL,
    headers: {
      "Authorization" => "Bearer #{api_key}",
      "Accept" => "application/json",
      "Content-Type" => "application/json",
      "User-Agent" => "Attio Ruby Client/#{VERSION}",
    },
    timeout: timeout,
    rate_limiter: rate_limiter
  )
end

#dealsResources::Deals

Access to the Deals API resource.

Examples:

deals = client.deals.list

Since:

  • 1.0.0

Returns:

  • Deals resource instance



180
181
182
# File 'lib/attio/client.rb', line 180

def deals
  @deals ||= Resources::Deals.new(self)
end

#listsResources::Lists

Access to the Lists API resource.

Examples:

lists = client.lists.list

Since:

  • 1.0.0

Returns:

  • Lists resource instance



99
100
101
# File 'lib/attio/client.rb', line 99

def lists
  @lists ||= Resources::Lists.new(self)
end

#metaResources::Meta

Access to the Meta API resource.

Examples:

info = client.meta.identify

Since:

  • 1.0.0

Returns:

  • Meta resource instance



72
73
74
# File 'lib/attio/client.rb', line 72

def meta
  @meta ||= Resources::Meta.new(self)
end

#notesResources::Notes

Access to the Notes API resource.

Examples:

notes = client.notes.list(parent_object: 'people', parent_record_id: 'rec_123')

Since:

  • 1.0.0

Returns:

  • Notes resource instance



135
136
137
# File 'lib/attio/client.rb', line 135

def notes
  @notes ||= Resources::Notes.new(self)
end

#objectsResources::Objects

Access to the Objects API resource.

Examples:

objects = client.objects.list

Since:

  • 1.0.0

Returns:

  • Objects resource instance



90
91
92
# File 'lib/attio/client.rb', line 90

def objects
  @objects ||= Resources::Objects.new(self)
end

#rate_limiter(limiter = nil) ⇒ RateLimiter

Get or set the rate limiter for this client.

Examples:

client.rate_limiter = Attio::RateLimiter.new(max_requests: 100)

Since:

  • 1.0.0

Parameters:

  • (defaults to: nil)

    Optional rate limiter to set

Returns:

  • The rate limiter instance



199
200
201
202
203
204
205
# File 'lib/attio/client.rb', line 199

def rate_limiter(limiter = nil)
  if limiter
    @rate_limiter = limiter
  else
    @rate_limiter ||= RateLimiter.new
  end
end

#recordsResources::Records

Access to the Records API resource.

Examples:

records = client.records.list(object: 'people')

Since:

  • 1.0.0

Returns:

  • Records resource instance



81
82
83
# File 'lib/attio/client.rb', line 81

def records
  @records ||= Resources::Records.new(self)
end

#tasksResources::Tasks

Access to the Tasks API resource.

Examples:

tasks = client.tasks.list(status: 'pending')

Since:

  • 1.0.0

Returns:

  • Tasks resource instance



144
145
146
# File 'lib/attio/client.rb', line 144

def tasks
  @tasks ||= Resources::Tasks.new(self)
end

#threadsResources::Threads

Access to the Threads API resource.

Examples:

threads = client.threads.list(parent_object: 'companies', parent_record_id: 'rec_456')

Since:

  • 1.0.0

Returns:

  • Threads resource instance



162
163
164
# File 'lib/attio/client.rb', line 162

def threads
  @threads ||= Resources::Threads.new(self)
end

#usersResources::Users

Access to the Users API resource.

Examples:

users = client.users.list

Since:

  • 1.0.0

Returns:

  • Users resource instance



126
127
128
# File 'lib/attio/client.rb', line 126

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

#workspace_membersResources::WorkspaceMembers

Access to the Workspace Members API resource.

Examples:

members = client.workspace_members.list

Since:

  • 1.0.0

Returns:

  • Workspace Members resource instance



171
172
173
# File 'lib/attio/client.rb', line 171

def workspace_members
  @workspace_members ||= Resources::WorkspaceMembers.new(self)
end

#workspacesResources::Workspaces

Access to the Workspaces API resource.

Examples:

workspaces = client.workspaces.list

Since:

  • 1.0.0

Returns:

  • Workspaces resource instance



108
109
110
# File 'lib/attio/client.rb', line 108

def workspaces
  @workspaces ||= Resources::Workspaces.new(self)
end