attio 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.codecov.yml +52 -0
- data/.github/CODEOWNERS +28 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +40 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +28 -0
- data/.github/dependabot.yml +54 -0
- data/.github/pull_request_template.md +40 -0
- data/.github/workflows/ci.yml +112 -0
- data/.github/workflows/dependabot-auto-merge.yml +45 -0
- data/.github/workflows/pr_checks.yml +145 -0
- data/.github/workflows/release.yml +147 -0
- data/.gitignore +10 -0
- data/.rspec +4 -0
- data/.rubocop.yml +133 -0
- data/.yardopts +18 -0
- data/CHANGELOG.md +34 -0
- data/CODE_OF_CONDUCT.md +37 -0
- data/CONTRIBUTING.md +280 -0
- data/Gemfile +17 -0
- data/Gemfile.lock +127 -0
- data/LICENSE.txt +21 -0
- data/README.md +292 -0
- data/Rakefile +57 -0
- data/SECURITY.md +59 -0
- data/attio.gemspec +34 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/danger/Dangerfile +121 -0
- data/docs/.nojekyll +0 -0
- data/docs/Attio/AuthenticationError.html +152 -0
- data/docs/Attio/Client.html +1373 -0
- data/docs/Attio/ConnectionPool/TimeoutError.html +148 -0
- data/docs/Attio/ConnectionPool.html +944 -0
- data/docs/Attio/Error.html +152 -0
- data/docs/Attio/HttpClient/ConnectionError.html +152 -0
- data/docs/Attio/HttpClient/TimeoutError.html +152 -0
- data/docs/Attio/HttpClient.html +1329 -0
- data/docs/Attio/Logger.html +747 -0
- data/docs/Attio/NotFoundError.html +152 -0
- data/docs/Attio/RateLimitError.html +152 -0
- data/docs/Attio/RequestLogger.html +780 -0
- data/docs/Attio/Resources/Attributes.html +508 -0
- data/docs/Attio/Resources/Base.html +624 -0
- data/docs/Attio/Resources/Lists.html +1002 -0
- data/docs/Attio/Resources/Objects.html +415 -0
- data/docs/Attio/Resources/Records.html +1465 -0
- data/docs/Attio/Resources/Users.html +415 -0
- data/docs/Attio/Resources/Workspaces.html +324 -0
- data/docs/Attio/Resources.html +141 -0
- data/docs/Attio/RetryHandler.html +1023 -0
- data/docs/Attio/ServerError.html +152 -0
- data/docs/Attio/ValidationError.html +152 -0
- data/docs/Attio.html +397 -0
- data/docs/SETUP.md +117 -0
- data/docs/_index.html +378 -0
- data/docs/class_list.html +54 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +503 -0
- data/docs/example.rb +119 -0
- data/docs/file.CHANGELOG.html +124 -0
- data/docs/file.README.html +371 -0
- data/docs/file_list.html +64 -0
- data/docs/frames.html +22 -0
- data/docs/index.html +371 -0
- data/docs/js/app.js +344 -0
- data/docs/js/full_list.js +242 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +750 -0
- data/docs/top-level-namespace.html +110 -0
- data/lib/attio/client.rb +118 -0
- data/lib/attio/connection_pool.rb +69 -0
- data/lib/attio/errors.rb +9 -0
- data/lib/attio/http_client.rb +100 -0
- data/lib/attio/logger.rb +110 -0
- data/lib/attio/resources/attributes.rb +26 -0
- data/lib/attio/resources/base.rb +55 -0
- data/lib/attio/resources/lists.rb +56 -0
- data/lib/attio/resources/objects.rb +20 -0
- data/lib/attio/resources/records.rb +158 -0
- data/lib/attio/resources/users.rb +20 -0
- data/lib/attio/resources/workspaces.rb +13 -0
- data/lib/attio/retry_handler.rb +70 -0
- data/lib/attio/version.rb +3 -0
- data/lib/attio.rb +60 -0
- data/run_tests.rb +52 -0
- data/test_basic.rb +51 -0
- data/test_typhoeus.rb +31 -0
- metadata +160 -0
data/docs/index.html
ADDED
@@ -0,0 +1,371 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
+
<title>
|
7
|
+
File: README
|
8
|
+
|
9
|
+
— Attio Ruby Client Documentation
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" />
|
16
|
+
|
17
|
+
<script type="text/javascript">
|
18
|
+
pathId = "README";
|
19
|
+
relpath = '';
|
20
|
+
</script>
|
21
|
+
|
22
|
+
|
23
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
24
|
+
|
25
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
26
|
+
|
27
|
+
|
28
|
+
</head>
|
29
|
+
<body>
|
30
|
+
<div class="nav_wrap">
|
31
|
+
<iframe id="nav" src="class_list.html?1"></iframe>
|
32
|
+
<div id="resizer"></div>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div id="main" tabindex="-1">
|
36
|
+
<div id="header">
|
37
|
+
<div id="menu">
|
38
|
+
|
39
|
+
<a href="_index.html">Index</a> »
|
40
|
+
<span class="title">File: README</span>
|
41
|
+
|
42
|
+
</div>
|
43
|
+
|
44
|
+
<div id="search">
|
45
|
+
|
46
|
+
<a class="full_list_link" id="class_list_link"
|
47
|
+
href="class_list.html">
|
48
|
+
|
49
|
+
<svg width="24" height="24">
|
50
|
+
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
51
|
+
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
52
|
+
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
53
|
+
</svg>
|
54
|
+
</a>
|
55
|
+
|
56
|
+
</div>
|
57
|
+
<div class="clear"></div>
|
58
|
+
</div>
|
59
|
+
|
60
|
+
<div id="content"><div id='filecontents'><h1 id="attio-ruby-client">Attio Ruby Client</h1>
|
61
|
+
|
62
|
+
<p><a href="https://your-username.github.io/attio-ruby"><img src="https://img.shields.io/badge/docs-yard-blue.svg" alt="Documentation"></a>
|
63
|
+
<a href="https://badge.fury.io/rb/attio"><img src="https://badge.fury.io/rb/attio.svg" alt="Gem Version"></a></p>
|
64
|
+
|
65
|
+
<p>Official Ruby client for the <a href="https://developers.attio.com/">Attio CRM API</a>. This library provides easy access to the Attio API, allowing you to manage records, objects, lists, and more.</p>
|
66
|
+
|
67
|
+
<h2 id="installation">Installation</h2>
|
68
|
+
|
69
|
+
<p>Add this line to your application's Gemfile:</p>
|
70
|
+
|
71
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_gem'>gem</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>attio</span><span class='tstring_end'>'</span></span>
|
72
|
+
</code></pre>
|
73
|
+
|
74
|
+
<p>And then execute:</p>
|
75
|
+
|
76
|
+
<pre class="code ruby"><code class="ruby">$ bundle install
|
77
|
+
</code></pre>
|
78
|
+
|
79
|
+
<p>Or install it yourself as:</p>
|
80
|
+
|
81
|
+
<pre class="code ruby"><code class="ruby">$ gem install attio
|
82
|
+
</code></pre>
|
83
|
+
|
84
|
+
<h2 id="quick-start">Quick Start</h2>
|
85
|
+
|
86
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>attio</span><span class='tstring_end'>'</span></span>
|
87
|
+
|
88
|
+
<span class='comment'># Initialize the client with your API key
|
89
|
+
</span><span class='id identifier rubyid_client'>client</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Attio.html" title="Attio (module)">Attio</a></span></span><span class='period'>.</span><span class='id identifier rubyid_client'><span class='object_link'><a href="Attio.html#client-class_method" title="Attio.client (method)">client</a></span></span><span class='lparen'>(</span><span class='label'>api_key:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>your-api-key-here</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
90
|
+
|
91
|
+
<span class='comment'># List people records
|
92
|
+
</span><span class='id identifier rubyid_people'>people</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_records'>records</span><span class='period'>.</span><span class='id identifier rubyid_list'>list</span><span class='lparen'>(</span><span class='label'>object:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>people</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>limit:</span> <span class='int'>10</span><span class='rparen'>)</span>
|
93
|
+
|
94
|
+
<span class='comment'># Create a new person
|
95
|
+
</span><span class='id identifier rubyid_person'>person</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_records'>records</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span>
|
96
|
+
<span class='label'>object:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>people</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
97
|
+
<span class='label'>data:</span> <span class='lbrace'>{</span>
|
98
|
+
<span class='label'>name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Jane Doe</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
99
|
+
<span class='label'>email:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>jane@example.com</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
100
|
+
<span class='label'>phone:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>+1-555-0123</span><span class='tstring_end'>'</span></span>
|
101
|
+
<span class='rbrace'>}</span>
|
102
|
+
<span class='rparen'>)</span>
|
103
|
+
|
104
|
+
<span class='comment'># Get a specific person
|
105
|
+
</span><span class='id identifier rubyid_person'>person</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_records'>records</span><span class='period'>.</span><span class='id identifier rubyid_get'>get</span><span class='lparen'>(</span><span class='label'>object:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>people</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>id:</span> <span class='id identifier rubyid_person'>person</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>id</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
106
|
+
|
107
|
+
<span class='comment'># Update a person
|
108
|
+
</span><span class='id identifier rubyid_updated_person'>updated_person</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_records'>records</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span>
|
109
|
+
<span class='label'>object:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>people</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
110
|
+
<span class='label'>id:</span> <span class='id identifier rubyid_person'>person</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>id</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='comma'>,</span>
|
111
|
+
<span class='label'>data:</span> <span class='lbrace'>{</span> <span class='label'>name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Jane Smith</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span>
|
112
|
+
<span class='rparen'>)</span>
|
113
|
+
|
114
|
+
<span class='comment'># Delete a person
|
115
|
+
</span><span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_records'>records</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='label'>object:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>people</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>id:</span> <span class='id identifier rubyid_person'>person</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>id</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
116
|
+
</code></pre>
|
117
|
+
|
118
|
+
<h2 id="usage">Usage</h2>
|
119
|
+
|
120
|
+
<h3 id="client-configuration">Client Configuration</h3>
|
121
|
+
|
122
|
+
<pre class="code ruby"><code class="ruby"><span class='comment'># Basic client with default timeout (30 seconds)
|
123
|
+
</span><span class='id identifier rubyid_client'>client</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Attio.html" title="Attio (module)">Attio</a></span></span><span class='period'>.</span><span class='id identifier rubyid_client'><span class='object_link'><a href="Attio.html#client-class_method" title="Attio.client (method)">client</a></span></span><span class='lparen'>(</span><span class='label'>api_key:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>your-api-key</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
124
|
+
|
125
|
+
<span class='comment'># Client with custom timeout
|
126
|
+
</span><span class='id identifier rubyid_client'>client</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Attio.html" title="Attio (module)">Attio</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Attio/Client.html" title="Attio::Client (class)">Client</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Attio/Client.html#initialize-instance_method" title="Attio::Client#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='label'>api_key:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>your-api-key</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>60</span><span class='rparen'>)</span>
|
127
|
+
</code></pre>
|
128
|
+
|
129
|
+
<h3 id="working-with-records">Working with Records</h3>
|
130
|
+
|
131
|
+
<h4 id="listing-records">Listing Records</h4>
|
132
|
+
|
133
|
+
<pre class="code ruby"><code class="ruby"><span class='comment'># List all people
|
134
|
+
</span><span class='id identifier rubyid_people'>people</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_records'>records</span><span class='period'>.</span><span class='id identifier rubyid_list'>list</span><span class='lparen'>(</span><span class='label'>object:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>people</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
135
|
+
|
136
|
+
<span class='comment'># List with filters
|
137
|
+
</span><span class='id identifier rubyid_filtered_people'>filtered_people</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_records'>records</span><span class='period'>.</span><span class='id identifier rubyid_list'>list</span><span class='lparen'>(</span>
|
138
|
+
<span class='label'>object:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>people</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
139
|
+
<span class='label'>filters:</span> <span class='lbrace'>{</span>
|
140
|
+
<span class='label'>name:</span> <span class='lbrace'>{</span> <span class='label'>contains:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>John</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
141
|
+
<span class='label'>company:</span> <span class='lbrace'>{</span> <span class='label'>target_object:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>companies</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>target_record_id:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>company-123</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span>
|
142
|
+
<span class='rbrace'>}</span><span class='comma'>,</span>
|
143
|
+
<span class='label'>limit:</span> <span class='int'>50</span>
|
144
|
+
<span class='rparen'>)</span>
|
145
|
+
|
146
|
+
<span class='comment'># List with sorting
|
147
|
+
</span><span class='id identifier rubyid_sorted_people'>sorted_people</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_records'>records</span><span class='period'>.</span><span class='id identifier rubyid_list'>list</span><span class='lparen'>(</span>
|
148
|
+
<span class='label'>object:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>people</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
149
|
+
<span class='label'>sorts:</span> <span class='lbracket'>[</span><span class='lbrace'>{</span> <span class='label'>field:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>created_at</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>direction:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>desc</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
150
|
+
<span class='label'>limit:</span> <span class='int'>25</span>
|
151
|
+
<span class='rparen'>)</span>
|
152
|
+
</code></pre>
|
153
|
+
|
154
|
+
<h4 id="creating-records">Creating Records</h4>
|
155
|
+
|
156
|
+
<pre class="code ruby"><code class="ruby"><span class='comment'># Create a person
|
157
|
+
</span><span class='id identifier rubyid_person'>person</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_records'>records</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span>
|
158
|
+
<span class='label'>object:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>people</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
159
|
+
<span class='label'>data:</span> <span class='lbrace'>{</span>
|
160
|
+
<span class='label'>name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>John Doe</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
161
|
+
<span class='label'>email:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>john@example.com</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
162
|
+
<span class='label'>phone:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>+1-555-0123</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
163
|
+
<span class='label'>company:</span> <span class='lbrace'>{</span>
|
164
|
+
<span class='label'>target_object:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>companies</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
165
|
+
<span class='label'>target_record_id:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>company-123</span><span class='tstring_end'>'</span></span>
|
166
|
+
<span class='rbrace'>}</span>
|
167
|
+
<span class='rbrace'>}</span>
|
168
|
+
<span class='rparen'>)</span>
|
169
|
+
|
170
|
+
<span class='comment'># Create a company
|
171
|
+
</span><span class='id identifier rubyid_company'>company</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_records'>records</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span>
|
172
|
+
<span class='label'>object:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>companies</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
173
|
+
<span class='label'>data:</span> <span class='lbrace'>{</span>
|
174
|
+
<span class='label'>name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Acme Corp</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
175
|
+
<span class='label'>domain:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>acme.com</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
176
|
+
<span class='label'>industry:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Technology</span><span class='tstring_end'>'</span></span>
|
177
|
+
<span class='rbrace'>}</span>
|
178
|
+
<span class='rparen'>)</span>
|
179
|
+
</code></pre>
|
180
|
+
|
181
|
+
<h4 id="updating-records">Updating Records</h4>
|
182
|
+
|
183
|
+
<pre class="code ruby"><code class="ruby"><span class='comment'># Update a person's email
|
184
|
+
</span><span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_records'>records</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span>
|
185
|
+
<span class='label'>object:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>people</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
186
|
+
<span class='label'>id:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>person-123</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
187
|
+
<span class='label'>data:</span> <span class='lbrace'>{</span> <span class='label'>email:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>newemail@example.com</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span>
|
188
|
+
<span class='rparen'>)</span>
|
189
|
+
|
190
|
+
<span class='comment'># Update multiple fields
|
191
|
+
</span><span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_records'>records</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span>
|
192
|
+
<span class='label'>object:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>people</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
193
|
+
<span class='label'>id:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>person-123</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
194
|
+
<span class='label'>data:</span> <span class='lbrace'>{</span>
|
195
|
+
<span class='label'>name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>John Smith</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
196
|
+
<span class='label'>phone:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>+1-555-9999</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
197
|
+
<span class='label'>notes:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Updated contact information</span><span class='tstring_end'>'</span></span>
|
198
|
+
<span class='rbrace'>}</span>
|
199
|
+
<span class='rparen'>)</span>
|
200
|
+
</code></pre>
|
201
|
+
|
202
|
+
<h3 id="working-with-other-resources">Working with Other Resources</h3>
|
203
|
+
|
204
|
+
<h4 id="objects">Objects</h4>
|
205
|
+
|
206
|
+
<pre class="code ruby"><code class="ruby"><span class='comment'># List all object types
|
207
|
+
</span><span class='id identifier rubyid_objects'>objects</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_objects'>objects</span><span class='period'>.</span><span class='id identifier rubyid_list'>list</span>
|
208
|
+
|
209
|
+
<span class='comment'># Get a specific object schema
|
210
|
+
</span><span class='id identifier rubyid_people_object'>people_object</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_objects'>objects</span><span class='period'>.</span><span class='id identifier rubyid_get'>get</span><span class='lparen'>(</span><span class='label'>id:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>people</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
211
|
+
</code></pre>
|
212
|
+
|
213
|
+
<h4 id="lists">Lists</h4>
|
214
|
+
|
215
|
+
<pre class="code ruby"><code class="ruby"><span class='comment'># List all lists
|
216
|
+
</span><span class='id identifier rubyid_lists'>lists</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_lists'>lists</span><span class='period'>.</span><span class='id identifier rubyid_list'>list</span>
|
217
|
+
|
218
|
+
<span class='comment'># Get entries from a specific list
|
219
|
+
</span><span class='id identifier rubyid_entries'>entries</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_lists'>lists</span><span class='period'>.</span><span class='id identifier rubyid_entries'>entries</span><span class='lparen'>(</span><span class='label'>id:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>list-123</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
220
|
+
</code></pre>
|
221
|
+
|
222
|
+
<h4 id="workspaces">Workspaces</h4>
|
223
|
+
|
224
|
+
<pre class="code ruby"><code class="ruby"><span class='comment'># List workspaces
|
225
|
+
</span><span class='id identifier rubyid_workspaces'>workspaces</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_workspaces'>workspaces</span><span class='period'>.</span><span class='id identifier rubyid_list'>list</span>
|
226
|
+
|
227
|
+
<span class='comment'># Get current workspace
|
228
|
+
</span><span class='id identifier rubyid_workspace'>workspace</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_workspaces'>workspaces</span><span class='period'>.</span><span class='id identifier rubyid_get'>get</span>
|
229
|
+
</code></pre>
|
230
|
+
|
231
|
+
<h4 id="attributes">Attributes</h4>
|
232
|
+
|
233
|
+
<pre class="code ruby"><code class="ruby"><span class='comment'># List attributes for an object
|
234
|
+
</span><span class='id identifier rubyid_attributes'>attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_attributes'>attributes</span><span class='period'>.</span><span class='id identifier rubyid_list'>list</span><span class='lparen'>(</span><span class='label'>object:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>people</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
235
|
+
|
236
|
+
<span class='comment'># Create a custom attribute
|
237
|
+
</span><span class='id identifier rubyid_attribute'>attribute</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_attributes'>attributes</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span>
|
238
|
+
<span class='label'>object:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>people</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
239
|
+
<span class='label'>data:</span> <span class='lbrace'>{</span>
|
240
|
+
<span class='label'>title:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Custom Field</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
241
|
+
<span class='label'>api_slug:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>custom_field</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
242
|
+
<span class='label'>type:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>text</span><span class='tstring_end'>'</span></span>
|
243
|
+
<span class='rbrace'>}</span>
|
244
|
+
<span class='rparen'>)</span>
|
245
|
+
</code></pre>
|
246
|
+
|
247
|
+
<h4 id="users">Users</h4>
|
248
|
+
|
249
|
+
<pre class="code ruby"><code class="ruby"><span class='comment'># List workspace users
|
250
|
+
</span><span class='id identifier rubyid_users'>users</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_users'>users</span><span class='period'>.</span><span class='id identifier rubyid_list'>list</span>
|
251
|
+
|
252
|
+
<span class='comment'># Get current user
|
253
|
+
</span><span class='id identifier rubyid_user'>user</span> <span class='op'>=</span> <span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_users'>users</span><span class='period'>.</span><span class='id identifier rubyid_me'>me</span>
|
254
|
+
</code></pre>
|
255
|
+
|
256
|
+
<h3 id="error-handling">Error Handling</h3>
|
257
|
+
|
258
|
+
<p>The client will raise appropriate exceptions for different error conditions:</p>
|
259
|
+
|
260
|
+
<pre class="code ruby"><code class="ruby"><span class='kw'>begin</span>
|
261
|
+
<span class='id identifier rubyid_client'>client</span><span class='period'>.</span><span class='id identifier rubyid_records'>records</span><span class='period'>.</span><span class='id identifier rubyid_get'>get</span><span class='lparen'>(</span><span class='label'>object:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>people</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>id:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>invalid-id</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
262
|
+
<span class='kw'>rescue</span> <span class='const'><span class='object_link'><a href="Attio.html" title="Attio (module)">Attio</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Attio/NotFoundError.html" title="Attio::NotFoundError (class)">NotFoundError</a></span></span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
263
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Record not found: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
264
|
+
<span class='kw'>rescue</span> <span class='const'><span class='object_link'><a href="Attio.html" title="Attio (module)">Attio</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Attio/AuthenticationError.html" title="Attio::AuthenticationError (class)">AuthenticationError</a></span></span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
265
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Authentication failed: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
266
|
+
<span class='kw'>rescue</span> <span class='const'><span class='object_link'><a href="Attio.html" title="Attio (module)">Attio</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Attio/RateLimitError.html" title="Attio::RateLimitError (class)">RateLimitError</a></span></span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
267
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Rate limit exceeded. Retry after: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_retry_after'>retry_after</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
268
|
+
<span class='kw'>rescue</span> <span class='const'><span class='object_link'><a href="Attio.html" title="Attio (module)">Attio</a></span></span><span class='op'>::</span><span class='const'>APIError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
269
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>API error: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
270
|
+
<span class='kw'>end</span>
|
271
|
+
</code></pre>
|
272
|
+
|
273
|
+
<h2 id="configuration-options">Configuration Options</h2>
|
274
|
+
|
275
|
+
<table><thead>
|
276
|
+
<tr>
|
277
|
+
<th>Option</th>
|
278
|
+
<th>Type</th>
|
279
|
+
<th>Default</th>
|
280
|
+
<th>Description</th>
|
281
|
+
</tr>
|
282
|
+
</thead><tbody>
|
283
|
+
<tr>
|
284
|
+
<td><code>api_key</code></td>
|
285
|
+
<td>String</td>
|
286
|
+
<td>Required</td>
|
287
|
+
<td>Your Attio API key</td>
|
288
|
+
</tr>
|
289
|
+
<tr>
|
290
|
+
<td><code>timeout</code></td>
|
291
|
+
<td>Integer</td>
|
292
|
+
<td>30</td>
|
293
|
+
<td>Request timeout in seconds</td>
|
294
|
+
</tr>
|
295
|
+
</tbody></table>
|
296
|
+
|
297
|
+
<h2 id="api-coverage">API Coverage</h2>
|
298
|
+
|
299
|
+
<p>This client supports all major Attio API endpoints:</p>
|
300
|
+
|
301
|
+
<ul>
|
302
|
+
<li>✅ Records (CRUD operations, querying)</li>
|
303
|
+
<li>✅ Objects (list, get schema)</li>
|
304
|
+
<li>✅ Lists (list, get entries)</li>
|
305
|
+
<li>✅ Workspaces (list, get current)</li>
|
306
|
+
<li>✅ Attributes (list, create, update)</li>
|
307
|
+
<li>✅ Users (list, get current user)</li>
|
308
|
+
</ul>
|
309
|
+
|
310
|
+
<h2 id="development">Development</h2>
|
311
|
+
|
312
|
+
<p>After checking out the repo, run <code>bin/setup</code> to install dependencies. You can also run <code>bin/console</code> for an interactive prompt that will allow you to experiment.</p>
|
313
|
+
|
314
|
+
<h3 id="running-tests">Running Tests</h3>
|
315
|
+
|
316
|
+
<pre class="code bash"><code class="bash">bundle exec rspec
|
317
|
+
</code></pre>
|
318
|
+
|
319
|
+
<h3 id="generating-documentation">Generating Documentation</h3>
|
320
|
+
|
321
|
+
<pre class="code bash"><code class="bash"># Generate YARD documentation
|
322
|
+
bundle exec rake docs:generate
|
323
|
+
|
324
|
+
# Open documentation in browser
|
325
|
+
bundle exec rake docs:open
|
326
|
+
|
327
|
+
# Serve documentation locally
|
328
|
+
bundle exec rake docs:serve
|
329
|
+
</code></pre>
|
330
|
+
|
331
|
+
<h3 id="code-coverage">Code Coverage</h3>
|
332
|
+
|
333
|
+
<pre class="code bash"><code class="bash">bundle exec rake coverage:report
|
334
|
+
</code></pre>
|
335
|
+
|
336
|
+
<h2 id="contributing">Contributing</h2>
|
337
|
+
|
338
|
+
<p>Bug reports and pull requests are welcome on GitHub at <a href="https://github.com/your-username/attio-ruby">https://github.com/your-username/attio-ruby</a>.</p>
|
339
|
+
|
340
|
+
<ol>
|
341
|
+
<li>Fork the repository</li>
|
342
|
+
<li>Create your feature branch (<code>git checkout -b my-new-feature</code>)</li>
|
343
|
+
<li>Make your changes and add tests</li>
|
344
|
+
<li>Ensure all tests pass (<code>bundle exec rspec</code>)</li>
|
345
|
+
<li>Commit your changes (<code>git commit -am 'Add some feature'</code>)</li>
|
346
|
+
<li>Push to the branch (<code>git push origin my-new-feature</code>)</li>
|
347
|
+
<li>Create a new Pull Request</li>
|
348
|
+
</ol>
|
349
|
+
|
350
|
+
<h2 id="license">License</h2>
|
351
|
+
|
352
|
+
<p>The gem is available as open source under the terms of the <a href="https://opensource.org/licenses/MIT">MIT License</a>.</p>
|
353
|
+
|
354
|
+
<h2 id="support">Support</h2>
|
355
|
+
|
356
|
+
<ul>
|
357
|
+
<li>📖 <a href="https://developers.attio.com/">API Documentation</a></li>
|
358
|
+
<li>🐛 <a href="https://github.com/your-username/attio-ruby/issues">Issues</a></li>
|
359
|
+
<li>💬 <a href="https://github.com/your-username/attio-ruby/discussions">Discussions</a></li>
|
360
|
+
</ul>
|
361
|
+
</div></div>
|
362
|
+
|
363
|
+
<div id="footer">
|
364
|
+
Generated on Mon Aug 11 11:26:43 2025 by
|
365
|
+
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
366
|
+
0.9.37 (ruby-3.4.5).
|
367
|
+
</div>
|
368
|
+
|
369
|
+
</div>
|
370
|
+
</body>
|
371
|
+
</html>
|