airbyte-agent-airtable 0.1.5__py3-none-any.whl
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.
Potentially problematic release.
This version of airbyte-agent-airtable might be problematic. Click here for more details.
- airbyte_agent_airtable/__init__.py +81 -0
- airbyte_agent_airtable/_vendored/__init__.py +1 -0
- airbyte_agent_airtable/_vendored/connector_sdk/__init__.py +82 -0
- airbyte_agent_airtable/_vendored/connector_sdk/auth_strategies.py +1171 -0
- airbyte_agent_airtable/_vendored/connector_sdk/auth_template.py +135 -0
- airbyte_agent_airtable/_vendored/connector_sdk/cloud_utils/__init__.py +5 -0
- airbyte_agent_airtable/_vendored/connector_sdk/cloud_utils/client.py +338 -0
- airbyte_agent_airtable/_vendored/connector_sdk/connector_model_loader.py +1121 -0
- airbyte_agent_airtable/_vendored/connector_sdk/constants.py +78 -0
- airbyte_agent_airtable/_vendored/connector_sdk/exceptions.py +23 -0
- airbyte_agent_airtable/_vendored/connector_sdk/executor/__init__.py +31 -0
- airbyte_agent_airtable/_vendored/connector_sdk/executor/hosted_executor.py +230 -0
- airbyte_agent_airtable/_vendored/connector_sdk/executor/local_executor.py +1848 -0
- airbyte_agent_airtable/_vendored/connector_sdk/executor/models.py +202 -0
- airbyte_agent_airtable/_vendored/connector_sdk/extensions.py +693 -0
- airbyte_agent_airtable/_vendored/connector_sdk/http/__init__.py +37 -0
- airbyte_agent_airtable/_vendored/connector_sdk/http/adapters/__init__.py +9 -0
- airbyte_agent_airtable/_vendored/connector_sdk/http/adapters/httpx_adapter.py +260 -0
- airbyte_agent_airtable/_vendored/connector_sdk/http/config.py +98 -0
- airbyte_agent_airtable/_vendored/connector_sdk/http/exceptions.py +119 -0
- airbyte_agent_airtable/_vendored/connector_sdk/http/protocols.py +114 -0
- airbyte_agent_airtable/_vendored/connector_sdk/http/response.py +104 -0
- airbyte_agent_airtable/_vendored/connector_sdk/http_client.py +693 -0
- airbyte_agent_airtable/_vendored/connector_sdk/introspection.py +481 -0
- airbyte_agent_airtable/_vendored/connector_sdk/logging/__init__.py +11 -0
- airbyte_agent_airtable/_vendored/connector_sdk/logging/logger.py +273 -0
- airbyte_agent_airtable/_vendored/connector_sdk/logging/types.py +93 -0
- airbyte_agent_airtable/_vendored/connector_sdk/observability/__init__.py +11 -0
- airbyte_agent_airtable/_vendored/connector_sdk/observability/config.py +179 -0
- airbyte_agent_airtable/_vendored/connector_sdk/observability/models.py +19 -0
- airbyte_agent_airtable/_vendored/connector_sdk/observability/redactor.py +81 -0
- airbyte_agent_airtable/_vendored/connector_sdk/observability/session.py +103 -0
- airbyte_agent_airtable/_vendored/connector_sdk/performance/__init__.py +6 -0
- airbyte_agent_airtable/_vendored/connector_sdk/performance/instrumentation.py +57 -0
- airbyte_agent_airtable/_vendored/connector_sdk/performance/metrics.py +93 -0
- airbyte_agent_airtable/_vendored/connector_sdk/schema/__init__.py +75 -0
- airbyte_agent_airtable/_vendored/connector_sdk/schema/base.py +212 -0
- airbyte_agent_airtable/_vendored/connector_sdk/schema/components.py +244 -0
- airbyte_agent_airtable/_vendored/connector_sdk/schema/connector.py +120 -0
- airbyte_agent_airtable/_vendored/connector_sdk/schema/extensions.py +301 -0
- airbyte_agent_airtable/_vendored/connector_sdk/schema/operations.py +156 -0
- airbyte_agent_airtable/_vendored/connector_sdk/schema/security.py +241 -0
- airbyte_agent_airtable/_vendored/connector_sdk/secrets.py +182 -0
- airbyte_agent_airtable/_vendored/connector_sdk/telemetry/__init__.py +10 -0
- airbyte_agent_airtable/_vendored/connector_sdk/telemetry/config.py +32 -0
- airbyte_agent_airtable/_vendored/connector_sdk/telemetry/events.py +59 -0
- airbyte_agent_airtable/_vendored/connector_sdk/telemetry/tracker.py +155 -0
- airbyte_agent_airtable/_vendored/connector_sdk/types.py +274 -0
- airbyte_agent_airtable/_vendored/connector_sdk/utils.py +127 -0
- airbyte_agent_airtable/_vendored/connector_sdk/validation.py +997 -0
- airbyte_agent_airtable/_vendored/connector_sdk/validation_replication.py +970 -0
- airbyte_agent_airtable/connector.py +834 -0
- airbyte_agent_airtable/connector_model.py +365 -0
- airbyte_agent_airtable/models.py +219 -0
- airbyte_agent_airtable/types.py +367 -0
- airbyte_agent_airtable-0.1.5.dist-info/METADATA +140 -0
- airbyte_agent_airtable-0.1.5.dist-info/RECORD +58 -0
- airbyte_agent_airtable-0.1.5.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Type definitions for airtable connector.
|
|
3
|
+
"""
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
# Use typing_extensions.TypedDict for Pydantic compatibility
|
|
7
|
+
try:
|
|
8
|
+
from typing_extensions import TypedDict, NotRequired
|
|
9
|
+
except ImportError:
|
|
10
|
+
from typing import TypedDict, NotRequired # type: ignore[attr-defined]
|
|
11
|
+
|
|
12
|
+
from typing import Any, Literal
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# ===== NESTED PARAM TYPE DEFINITIONS =====
|
|
16
|
+
# Nested parameter schemas discovered during parameter extraction
|
|
17
|
+
|
|
18
|
+
# ===== OPERATION PARAMS TYPE DEFINITIONS =====
|
|
19
|
+
|
|
20
|
+
class BasesListParams(TypedDict):
|
|
21
|
+
"""Parameters for bases.list operation"""
|
|
22
|
+
offset: NotRequired[str]
|
|
23
|
+
|
|
24
|
+
class TablesListParams(TypedDict):
|
|
25
|
+
"""Parameters for tables.list operation"""
|
|
26
|
+
base_id: str
|
|
27
|
+
|
|
28
|
+
class RecordsListParams(TypedDict):
|
|
29
|
+
"""Parameters for records.list operation"""
|
|
30
|
+
base_id: str
|
|
31
|
+
table_id_or_name: str
|
|
32
|
+
offset: NotRequired[str]
|
|
33
|
+
page_size: NotRequired[int]
|
|
34
|
+
view: NotRequired[str]
|
|
35
|
+
filter_by_formula: NotRequired[str]
|
|
36
|
+
sort: NotRequired[str]
|
|
37
|
+
|
|
38
|
+
class RecordsGetParams(TypedDict):
|
|
39
|
+
"""Parameters for records.get operation"""
|
|
40
|
+
base_id: str
|
|
41
|
+
table_id_or_name: str
|
|
42
|
+
record_id: str
|
|
43
|
+
|
|
44
|
+
# ===== SEARCH TYPES =====
|
|
45
|
+
|
|
46
|
+
# Sort specification
|
|
47
|
+
AirbyteSortOrder = Literal["asc", "desc"]
|
|
48
|
+
|
|
49
|
+
# ===== BASES SEARCH TYPES =====
|
|
50
|
+
|
|
51
|
+
class BasesSearchFilter(TypedDict, total=False):
|
|
52
|
+
"""Available fields for filtering bases search queries."""
|
|
53
|
+
id: str | None
|
|
54
|
+
"""Unique identifier for the base"""
|
|
55
|
+
name: str | None
|
|
56
|
+
"""Name of the base"""
|
|
57
|
+
permission_level: str | None
|
|
58
|
+
"""Permission level for the base"""
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class BasesInFilter(TypedDict, total=False):
|
|
62
|
+
"""Available fields for 'in' condition (values are lists)."""
|
|
63
|
+
id: list[str]
|
|
64
|
+
"""Unique identifier for the base"""
|
|
65
|
+
name: list[str]
|
|
66
|
+
"""Name of the base"""
|
|
67
|
+
permission_level: list[str]
|
|
68
|
+
"""Permission level for the base"""
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class BasesAnyValueFilter(TypedDict, total=False):
|
|
72
|
+
"""Available fields with Any value type. Used for 'contains' and 'any' conditions."""
|
|
73
|
+
id: Any
|
|
74
|
+
"""Unique identifier for the base"""
|
|
75
|
+
name: Any
|
|
76
|
+
"""Name of the base"""
|
|
77
|
+
permission_level: Any
|
|
78
|
+
"""Permission level for the base"""
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
class BasesStringFilter(TypedDict, total=False):
|
|
82
|
+
"""String fields for text search conditions (like, fuzzy, keyword)."""
|
|
83
|
+
id: str
|
|
84
|
+
"""Unique identifier for the base"""
|
|
85
|
+
name: str
|
|
86
|
+
"""Name of the base"""
|
|
87
|
+
permission_level: str
|
|
88
|
+
"""Permission level for the base"""
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
class BasesSortFilter(TypedDict, total=False):
|
|
92
|
+
"""Available fields for sorting bases search results."""
|
|
93
|
+
id: AirbyteSortOrder
|
|
94
|
+
"""Unique identifier for the base"""
|
|
95
|
+
name: AirbyteSortOrder
|
|
96
|
+
"""Name of the base"""
|
|
97
|
+
permission_level: AirbyteSortOrder
|
|
98
|
+
"""Permission level for the base"""
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
# Entity-specific condition types for bases
|
|
102
|
+
class BasesEqCondition(TypedDict, total=False):
|
|
103
|
+
"""Equal to: field equals value."""
|
|
104
|
+
eq: BasesSearchFilter
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
class BasesNeqCondition(TypedDict, total=False):
|
|
108
|
+
"""Not equal to: field does not equal value."""
|
|
109
|
+
neq: BasesSearchFilter
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
class BasesGtCondition(TypedDict, total=False):
|
|
113
|
+
"""Greater than: field > value."""
|
|
114
|
+
gt: BasesSearchFilter
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
class BasesGteCondition(TypedDict, total=False):
|
|
118
|
+
"""Greater than or equal: field >= value."""
|
|
119
|
+
gte: BasesSearchFilter
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
class BasesLtCondition(TypedDict, total=False):
|
|
123
|
+
"""Less than: field < value."""
|
|
124
|
+
lt: BasesSearchFilter
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
class BasesLteCondition(TypedDict, total=False):
|
|
128
|
+
"""Less than or equal: field <= value."""
|
|
129
|
+
lte: BasesSearchFilter
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
class BasesLikeCondition(TypedDict, total=False):
|
|
133
|
+
"""Partial string match with % wildcards."""
|
|
134
|
+
like: BasesStringFilter
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
class BasesFuzzyCondition(TypedDict, total=False):
|
|
138
|
+
"""Ordered word text match (case-insensitive)."""
|
|
139
|
+
fuzzy: BasesStringFilter
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
class BasesKeywordCondition(TypedDict, total=False):
|
|
143
|
+
"""Keyword text match (any word present)."""
|
|
144
|
+
keyword: BasesStringFilter
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
class BasesContainsCondition(TypedDict, total=False):
|
|
148
|
+
"""Check if value exists in array field. Example: {"contains": {"tags": "premium"}}"""
|
|
149
|
+
contains: BasesAnyValueFilter
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
# Reserved keyword conditions using functional TypedDict syntax
|
|
153
|
+
BasesInCondition = TypedDict("BasesInCondition", {"in": BasesInFilter}, total=False)
|
|
154
|
+
"""In list: field value is in list. Example: {"in": {"status": ["active", "pending"]}}"""
|
|
155
|
+
|
|
156
|
+
BasesNotCondition = TypedDict("BasesNotCondition", {"not": "BasesCondition"}, total=False)
|
|
157
|
+
"""Negates the nested condition."""
|
|
158
|
+
|
|
159
|
+
BasesAndCondition = TypedDict("BasesAndCondition", {"and": "list[BasesCondition]"}, total=False)
|
|
160
|
+
"""True if all nested conditions are true."""
|
|
161
|
+
|
|
162
|
+
BasesOrCondition = TypedDict("BasesOrCondition", {"or": "list[BasesCondition]"}, total=False)
|
|
163
|
+
"""True if any nested condition is true."""
|
|
164
|
+
|
|
165
|
+
BasesAnyCondition = TypedDict("BasesAnyCondition", {"any": BasesAnyValueFilter}, total=False)
|
|
166
|
+
"""Match if ANY element in array field matches nested condition. Example: {"any": {"addresses": {"eq": {"state": "CA"}}}}"""
|
|
167
|
+
|
|
168
|
+
# Union of all bases condition types
|
|
169
|
+
BasesCondition = (
|
|
170
|
+
BasesEqCondition
|
|
171
|
+
| BasesNeqCondition
|
|
172
|
+
| BasesGtCondition
|
|
173
|
+
| BasesGteCondition
|
|
174
|
+
| BasesLtCondition
|
|
175
|
+
| BasesLteCondition
|
|
176
|
+
| BasesInCondition
|
|
177
|
+
| BasesLikeCondition
|
|
178
|
+
| BasesFuzzyCondition
|
|
179
|
+
| BasesKeywordCondition
|
|
180
|
+
| BasesContainsCondition
|
|
181
|
+
| BasesNotCondition
|
|
182
|
+
| BasesAndCondition
|
|
183
|
+
| BasesOrCondition
|
|
184
|
+
| BasesAnyCondition
|
|
185
|
+
)
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
class BasesSearchQuery(TypedDict, total=False):
|
|
189
|
+
"""Search query for bases entity."""
|
|
190
|
+
filter: BasesCondition
|
|
191
|
+
sort: list[BasesSortFilter]
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
# ===== TABLES SEARCH TYPES =====
|
|
195
|
+
|
|
196
|
+
class TablesSearchFilter(TypedDict, total=False):
|
|
197
|
+
"""Available fields for filtering tables search queries."""
|
|
198
|
+
id: str | None
|
|
199
|
+
"""Unique identifier for the table"""
|
|
200
|
+
name: str | None
|
|
201
|
+
"""Name of the table"""
|
|
202
|
+
primary_field_id: str | None
|
|
203
|
+
"""ID of the primary field"""
|
|
204
|
+
fields: list[Any] | None
|
|
205
|
+
"""List of fields in the table"""
|
|
206
|
+
views: list[Any] | None
|
|
207
|
+
"""List of views in the table"""
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
class TablesInFilter(TypedDict, total=False):
|
|
211
|
+
"""Available fields for 'in' condition (values are lists)."""
|
|
212
|
+
id: list[str]
|
|
213
|
+
"""Unique identifier for the table"""
|
|
214
|
+
name: list[str]
|
|
215
|
+
"""Name of the table"""
|
|
216
|
+
primary_field_id: list[str]
|
|
217
|
+
"""ID of the primary field"""
|
|
218
|
+
fields: list[list[Any]]
|
|
219
|
+
"""List of fields in the table"""
|
|
220
|
+
views: list[list[Any]]
|
|
221
|
+
"""List of views in the table"""
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
class TablesAnyValueFilter(TypedDict, total=False):
|
|
225
|
+
"""Available fields with Any value type. Used for 'contains' and 'any' conditions."""
|
|
226
|
+
id: Any
|
|
227
|
+
"""Unique identifier for the table"""
|
|
228
|
+
name: Any
|
|
229
|
+
"""Name of the table"""
|
|
230
|
+
primary_field_id: Any
|
|
231
|
+
"""ID of the primary field"""
|
|
232
|
+
fields: Any
|
|
233
|
+
"""List of fields in the table"""
|
|
234
|
+
views: Any
|
|
235
|
+
"""List of views in the table"""
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
class TablesStringFilter(TypedDict, total=False):
|
|
239
|
+
"""String fields for text search conditions (like, fuzzy, keyword)."""
|
|
240
|
+
id: str
|
|
241
|
+
"""Unique identifier for the table"""
|
|
242
|
+
name: str
|
|
243
|
+
"""Name of the table"""
|
|
244
|
+
primary_field_id: str
|
|
245
|
+
"""ID of the primary field"""
|
|
246
|
+
fields: str
|
|
247
|
+
"""List of fields in the table"""
|
|
248
|
+
views: str
|
|
249
|
+
"""List of views in the table"""
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
class TablesSortFilter(TypedDict, total=False):
|
|
253
|
+
"""Available fields for sorting tables search results."""
|
|
254
|
+
id: AirbyteSortOrder
|
|
255
|
+
"""Unique identifier for the table"""
|
|
256
|
+
name: AirbyteSortOrder
|
|
257
|
+
"""Name of the table"""
|
|
258
|
+
primary_field_id: AirbyteSortOrder
|
|
259
|
+
"""ID of the primary field"""
|
|
260
|
+
fields: AirbyteSortOrder
|
|
261
|
+
"""List of fields in the table"""
|
|
262
|
+
views: AirbyteSortOrder
|
|
263
|
+
"""List of views in the table"""
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
# Entity-specific condition types for tables
|
|
267
|
+
class TablesEqCondition(TypedDict, total=False):
|
|
268
|
+
"""Equal to: field equals value."""
|
|
269
|
+
eq: TablesSearchFilter
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
class TablesNeqCondition(TypedDict, total=False):
|
|
273
|
+
"""Not equal to: field does not equal value."""
|
|
274
|
+
neq: TablesSearchFilter
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
class TablesGtCondition(TypedDict, total=False):
|
|
278
|
+
"""Greater than: field > value."""
|
|
279
|
+
gt: TablesSearchFilter
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
class TablesGteCondition(TypedDict, total=False):
|
|
283
|
+
"""Greater than or equal: field >= value."""
|
|
284
|
+
gte: TablesSearchFilter
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
class TablesLtCondition(TypedDict, total=False):
|
|
288
|
+
"""Less than: field < value."""
|
|
289
|
+
lt: TablesSearchFilter
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
class TablesLteCondition(TypedDict, total=False):
|
|
293
|
+
"""Less than or equal: field <= value."""
|
|
294
|
+
lte: TablesSearchFilter
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
class TablesLikeCondition(TypedDict, total=False):
|
|
298
|
+
"""Partial string match with % wildcards."""
|
|
299
|
+
like: TablesStringFilter
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
class TablesFuzzyCondition(TypedDict, total=False):
|
|
303
|
+
"""Ordered word text match (case-insensitive)."""
|
|
304
|
+
fuzzy: TablesStringFilter
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
class TablesKeywordCondition(TypedDict, total=False):
|
|
308
|
+
"""Keyword text match (any word present)."""
|
|
309
|
+
keyword: TablesStringFilter
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
class TablesContainsCondition(TypedDict, total=False):
|
|
313
|
+
"""Check if value exists in array field. Example: {"contains": {"tags": "premium"}}"""
|
|
314
|
+
contains: TablesAnyValueFilter
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
# Reserved keyword conditions using functional TypedDict syntax
|
|
318
|
+
TablesInCondition = TypedDict("TablesInCondition", {"in": TablesInFilter}, total=False)
|
|
319
|
+
"""In list: field value is in list. Example: {"in": {"status": ["active", "pending"]}}"""
|
|
320
|
+
|
|
321
|
+
TablesNotCondition = TypedDict("TablesNotCondition", {"not": "TablesCondition"}, total=False)
|
|
322
|
+
"""Negates the nested condition."""
|
|
323
|
+
|
|
324
|
+
TablesAndCondition = TypedDict("TablesAndCondition", {"and": "list[TablesCondition]"}, total=False)
|
|
325
|
+
"""True if all nested conditions are true."""
|
|
326
|
+
|
|
327
|
+
TablesOrCondition = TypedDict("TablesOrCondition", {"or": "list[TablesCondition]"}, total=False)
|
|
328
|
+
"""True if any nested condition is true."""
|
|
329
|
+
|
|
330
|
+
TablesAnyCondition = TypedDict("TablesAnyCondition", {"any": TablesAnyValueFilter}, total=False)
|
|
331
|
+
"""Match if ANY element in array field matches nested condition. Example: {"any": {"addresses": {"eq": {"state": "CA"}}}}"""
|
|
332
|
+
|
|
333
|
+
# Union of all tables condition types
|
|
334
|
+
TablesCondition = (
|
|
335
|
+
TablesEqCondition
|
|
336
|
+
| TablesNeqCondition
|
|
337
|
+
| TablesGtCondition
|
|
338
|
+
| TablesGteCondition
|
|
339
|
+
| TablesLtCondition
|
|
340
|
+
| TablesLteCondition
|
|
341
|
+
| TablesInCondition
|
|
342
|
+
| TablesLikeCondition
|
|
343
|
+
| TablesFuzzyCondition
|
|
344
|
+
| TablesKeywordCondition
|
|
345
|
+
| TablesContainsCondition
|
|
346
|
+
| TablesNotCondition
|
|
347
|
+
| TablesAndCondition
|
|
348
|
+
| TablesOrCondition
|
|
349
|
+
| TablesAnyCondition
|
|
350
|
+
)
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
class TablesSearchQuery(TypedDict, total=False):
|
|
354
|
+
"""Search query for tables entity."""
|
|
355
|
+
filter: TablesCondition
|
|
356
|
+
sort: list[TablesSortFilter]
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
# ===== SEARCH PARAMS =====
|
|
361
|
+
|
|
362
|
+
class AirbyteSearchParams(TypedDict, total=False):
|
|
363
|
+
"""Parameters for Airbyte cache search operations (generic, use entity-specific query types for better type hints)."""
|
|
364
|
+
query: dict[str, Any]
|
|
365
|
+
limit: int
|
|
366
|
+
cursor: str
|
|
367
|
+
fields: list[list[str]]
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: airbyte-agent-airtable
|
|
3
|
+
Version: 0.1.5
|
|
4
|
+
Summary: Airbyte Airtable Connector for AI platforms
|
|
5
|
+
Project-URL: Homepage, https://github.com/airbytehq/airbyte-agent-connectors
|
|
6
|
+
Project-URL: Documentation, https://docs.airbyte.com/ai-agents/
|
|
7
|
+
Project-URL: Repository, https://github.com/airbytehq/airbyte-agent-connectors
|
|
8
|
+
Project-URL: Issues, https://github.com/airbytehq/airbyte-agent-connectors/issues
|
|
9
|
+
Author-email: Airbyte <contact@airbyte.io>
|
|
10
|
+
License: Elastic-2.0
|
|
11
|
+
Keywords: agent,ai,airbyte,airtable,api,connector,data-integration,llm,mcp
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: Other/Proprietary License
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
19
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
|
+
Classifier: Typing :: Typed
|
|
21
|
+
Requires-Python: >=3.13
|
|
22
|
+
Requires-Dist: httpx>=0.24.0
|
|
23
|
+
Requires-Dist: jinja2>=3.0.0
|
|
24
|
+
Requires-Dist: jsonpath-ng>=1.6.1
|
|
25
|
+
Requires-Dist: jsonref>=1.1.0
|
|
26
|
+
Requires-Dist: opentelemetry-api>=1.37.0
|
|
27
|
+
Requires-Dist: opentelemetry-sdk>=1.37.0
|
|
28
|
+
Requires-Dist: pydantic>=2.0.0
|
|
29
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
30
|
+
Requires-Dist: pyyaml>=6.0
|
|
31
|
+
Requires-Dist: segment-analytics-python>=2.2.0
|
|
32
|
+
Description-Content-Type: text/markdown
|
|
33
|
+
|
|
34
|
+
# Airtable agent connector
|
|
35
|
+
|
|
36
|
+
Airtable is a cloud-based platform that combines the simplicity of a spreadsheet with the
|
|
37
|
+
power of a database. This connector provides access to bases, tables, and records for
|
|
38
|
+
data analysis and workflow automation.
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
## Example questions
|
|
42
|
+
|
|
43
|
+
The Airtable connector is optimized to handle prompts like these.
|
|
44
|
+
|
|
45
|
+
- List all my Airtable bases
|
|
46
|
+
- What tables are in base appXXX?
|
|
47
|
+
- Show me the schema for tables in base appXXX
|
|
48
|
+
- List records from table tblXXX in base appXXX
|
|
49
|
+
- Get record recXXX from table tblXXX in base appXXX
|
|
50
|
+
- What fields are in table tblXXX?
|
|
51
|
+
- List records where Status is 'Done' in table tblXXX
|
|
52
|
+
|
|
53
|
+
## Unsupported questions
|
|
54
|
+
|
|
55
|
+
The Airtable connector isn't currently able to handle prompts like these.
|
|
56
|
+
|
|
57
|
+
- Create a new record in Airtable
|
|
58
|
+
- Update a record in Airtable
|
|
59
|
+
- Delete a record from Airtable
|
|
60
|
+
- Create a new table
|
|
61
|
+
- Modify table schema
|
|
62
|
+
|
|
63
|
+
## Installation
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
uv pip install airbyte-agent-airtable
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Usage
|
|
70
|
+
|
|
71
|
+
Connectors can run in open source or hosted mode.
|
|
72
|
+
|
|
73
|
+
### Open source
|
|
74
|
+
|
|
75
|
+
In open source mode, you provide API credentials directly to the connector.
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
from airbyte_agent_airtable import AirtableConnector
|
|
79
|
+
from airbyte_agent_airtable.models import AirtableAuthConfig
|
|
80
|
+
|
|
81
|
+
connector = AirtableConnector(
|
|
82
|
+
auth_config=AirtableAuthConfig(
|
|
83
|
+
personal_access_token="<Airtable Personal Access Token. See https://airtable.com/developers/web/guides/personal-access-tokens>"
|
|
84
|
+
)
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
@agent.tool_plain # assumes you're using Pydantic AI
|
|
88
|
+
@AirtableConnector.tool_utils
|
|
89
|
+
async def airtable_execute(entity: str, action: str, params: dict | None = None):
|
|
90
|
+
return await connector.execute(entity, action, params or {})
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Hosted
|
|
94
|
+
|
|
95
|
+
In hosted mode, API credentials are stored securely in Airbyte Cloud. You provide your Airbyte credentials instead.
|
|
96
|
+
|
|
97
|
+
This example assumes you've already authenticated your connector with Airbyte. See [Authentication](AUTH.md) to learn more about authenticating. If you need a step-by-step guide, see the [hosted execution tutorial](https://docs.airbyte.com/ai-agents/quickstarts/tutorial-hosted).
|
|
98
|
+
|
|
99
|
+
```python
|
|
100
|
+
from airbyte_agent_airtable import AirtableConnector
|
|
101
|
+
|
|
102
|
+
connector = AirtableConnector(
|
|
103
|
+
external_user_id="<your_external_user_id>",
|
|
104
|
+
airbyte_client_id="<your-client-id>",
|
|
105
|
+
airbyte_client_secret="<your-client-secret>"
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
@agent.tool_plain # assumes you're using Pydantic AI
|
|
109
|
+
@AirtableConnector.tool_utils
|
|
110
|
+
async def airtable_execute(entity: str, action: str, params: dict | None = None):
|
|
111
|
+
return await connector.execute(entity, action, params or {})
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Full documentation
|
|
115
|
+
|
|
116
|
+
### Entities and actions
|
|
117
|
+
|
|
118
|
+
This connector supports the following entities and actions. For more details, see this connector's [full reference documentation](REFERENCE.md).
|
|
119
|
+
|
|
120
|
+
| Entity | Actions |
|
|
121
|
+
|--------|---------|
|
|
122
|
+
| Bases | [List](./REFERENCE.md#bases-list) |
|
|
123
|
+
| Tables | [List](./REFERENCE.md#tables-list) |
|
|
124
|
+
| Records | [List](./REFERENCE.md#records-list), [Get](./REFERENCE.md#records-get) |
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
### Authentication and configuration
|
|
128
|
+
|
|
129
|
+
For all authentication and configuration options, see the connector's [authentication documentation](AUTH.md).
|
|
130
|
+
|
|
131
|
+
### Airtable API docs
|
|
132
|
+
|
|
133
|
+
See the official [Airtable API reference](https://airtable.com/developers/web/api/introduction).
|
|
134
|
+
|
|
135
|
+
## Version information
|
|
136
|
+
|
|
137
|
+
- **Package version:** 0.1.5
|
|
138
|
+
- **Connector version:** 1.0.2
|
|
139
|
+
- **Generated with Connector SDK commit SHA:** 9d9866b0aae8c3494d04d34e193b9bd860bfc1c6
|
|
140
|
+
- **Changelog:** [View changelog](https://github.com/airbytehq/airbyte-agent-connectors/blob/main/connectors/airtable/CHANGELOG.md)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
airbyte_agent_airtable/__init__.py,sha256=Hjdtbfm8P8gJt7qdAfkBgpZLzYo0EBV8wWYUkSpGfL4,1666
|
|
2
|
+
airbyte_agent_airtable/connector.py,sha256=4JDxbiRocnXfv9JzZgMQWGJlxq061tHi-e-yQkbHCn0,28977
|
|
3
|
+
airbyte_agent_airtable/connector_model.py,sha256=XH_KBkmRTddcvaSWnsjb63vMU27UpxDDtVA5hnoZKiI,17735
|
|
4
|
+
airbyte_agent_airtable/models.py,sha256=eHSxZ20hzlkPsuf_gGVLquRKz-0-dUq1iBrynHFETC8,7071
|
|
5
|
+
airbyte_agent_airtable/types.py,sha256=sS8tFxAG_Vq1bJrw5Z6LsW526VwIAvXb8EtYPN3_f_0,10795
|
|
6
|
+
airbyte_agent_airtable/_vendored/__init__.py,sha256=ILl7AHXMui__swyrjxrh9yRa4dLiwBvV6axPWFWty80,38
|
|
7
|
+
airbyte_agent_airtable/_vendored/connector_sdk/__init__.py,sha256=T5o7roU6NSpH-lCAGZ338sE5dlh4ZU6i6IkeG1zpems,1949
|
|
8
|
+
airbyte_agent_airtable/_vendored/connector_sdk/auth_strategies.py,sha256=5Sb9moUp623o67Q2wMa8iZldJH08y4gQdoutoO_75Iw,42088
|
|
9
|
+
airbyte_agent_airtable/_vendored/connector_sdk/auth_template.py,sha256=nju4jqlFC_KI82ILNumNIyiUtRJcy7J94INIZ0QraI4,4454
|
|
10
|
+
airbyte_agent_airtable/_vendored/connector_sdk/connector_model_loader.py,sha256=1AAvSvjxM9Nuto6w7D6skN5VXGb4e6na0lMFcFmmVkI,41761
|
|
11
|
+
airbyte_agent_airtable/_vendored/connector_sdk/constants.py,sha256=AtzOvhDMWbRJgpsQNWl5tkogHD6mWgEY668PgRmgtOY,2737
|
|
12
|
+
airbyte_agent_airtable/_vendored/connector_sdk/exceptions.py,sha256=ss5MGv9eVPmsbLcLWetuu3sDmvturwfo6Pw3M37Oq5k,481
|
|
13
|
+
airbyte_agent_airtable/_vendored/connector_sdk/extensions.py,sha256=XWRRoJOOrwUHSKbuQt5DU7CCu8ePzhd_HuP7c_uD77w,21376
|
|
14
|
+
airbyte_agent_airtable/_vendored/connector_sdk/http_client.py,sha256=09Fclbq4wrg38EM2Yh2kHiykQVXqdAGby024elcEz8E,28027
|
|
15
|
+
airbyte_agent_airtable/_vendored/connector_sdk/introspection.py,sha256=e9uWn2ofpeehoBbzNgts_bjlKLn8ayA1Y3OpDC3b7ZA,19517
|
|
16
|
+
airbyte_agent_airtable/_vendored/connector_sdk/secrets.py,sha256=J9ezMu4xNnLW11xY5RCre6DHP7YMKZCqwGJfk7ufHAM,6855
|
|
17
|
+
airbyte_agent_airtable/_vendored/connector_sdk/types.py,sha256=MsWJsQy779r7Mqiqf_gh_4Vs6VDqieoMjLPyWt7qhu8,9412
|
|
18
|
+
airbyte_agent_airtable/_vendored/connector_sdk/utils.py,sha256=UYwYuSLhsDD-4C0dBs7Qy0E0gIcFZXb6VWadJORhQQU,4080
|
|
19
|
+
airbyte_agent_airtable/_vendored/connector_sdk/validation.py,sha256=w5WGnmILkdBslpXhAXhKhE-c8ANBc_OZQxr_fUeAgtc,39666
|
|
20
|
+
airbyte_agent_airtable/_vendored/connector_sdk/validation_replication.py,sha256=v7F5YWd5m4diIF7_4m4nOkC9crg97vqRUUkt9ka9HZ4,36043
|
|
21
|
+
airbyte_agent_airtable/_vendored/connector_sdk/cloud_utils/__init__.py,sha256=4799Hv9f2zxDVj1aLyQ8JpTEuFTp_oOZMRz-NZCdBJg,134
|
|
22
|
+
airbyte_agent_airtable/_vendored/connector_sdk/cloud_utils/client.py,sha256=e0VLNCmesGGfo2uD0GiICgXsXTeTkh0GYiVgx_e4VEc,12296
|
|
23
|
+
airbyte_agent_airtable/_vendored/connector_sdk/executor/__init__.py,sha256=EmG9YQNAjSuYCVB4D5VoLm4qpD1KfeiiOf7bpALj8p8,702
|
|
24
|
+
airbyte_agent_airtable/_vendored/connector_sdk/executor/hosted_executor.py,sha256=tv0njAdy-gdHBg4izgcxhEWYbrNiBifEYEca9AWzaL0,8693
|
|
25
|
+
airbyte_agent_airtable/_vendored/connector_sdk/executor/local_executor.py,sha256=RtdTXFzfoJz5Coz9nwQi81Df1402BRgO1Mgd3ZzTkfw,76581
|
|
26
|
+
airbyte_agent_airtable/_vendored/connector_sdk/executor/models.py,sha256=mUUBnuShKXxVIfsTOhMiI2rn2a-50jJG7SFGKT_P6Jk,6281
|
|
27
|
+
airbyte_agent_airtable/_vendored/connector_sdk/http/__init__.py,sha256=y8fbzZn-3yV9OxtYz8Dy6FFGI5v6TOqADd1G3xHH3Hw,911
|
|
28
|
+
airbyte_agent_airtable/_vendored/connector_sdk/http/config.py,sha256=6J7YIIwHC6sRu9i-yKa5XvArwK2KU60rlnmxzDZq3lw,3283
|
|
29
|
+
airbyte_agent_airtable/_vendored/connector_sdk/http/exceptions.py,sha256=eYdYmxqcwA6pgrSoRXNfR6_nRBGRH6upp2-r1jcKaZo,3586
|
|
30
|
+
airbyte_agent_airtable/_vendored/connector_sdk/http/protocols.py,sha256=eV7NbBIQOcPLw-iu8mtkV2zCVgScDwP0ek1SbPNQo0g,3323
|
|
31
|
+
airbyte_agent_airtable/_vendored/connector_sdk/http/response.py,sha256=Q-RyM5D0D05ZhmZVJk4hVpmoS8YtyXNOTM5hqBt7rWI,3475
|
|
32
|
+
airbyte_agent_airtable/_vendored/connector_sdk/http/adapters/__init__.py,sha256=gjbWdU4LfzUG2PETI0TkfkukdzoCAhpL6FZtIEnkO-s,209
|
|
33
|
+
airbyte_agent_airtable/_vendored/connector_sdk/http/adapters/httpx_adapter.py,sha256=7ounOUlpx7RBLLqYSGWzEsOnnCgCBH3WCDaQFJcmKj0,8902
|
|
34
|
+
airbyte_agent_airtable/_vendored/connector_sdk/logging/__init__.py,sha256=IZoE5yXhwSA0m3xQqh0FiCifjp1sB3S8jnnFPuJLYf8,227
|
|
35
|
+
airbyte_agent_airtable/_vendored/connector_sdk/logging/logger.py,sha256=rUdKDEQe3pOODmBLEcvhgZeEZi48BvrgKXKq1xvCXu0,8387
|
|
36
|
+
airbyte_agent_airtable/_vendored/connector_sdk/logging/types.py,sha256=ONb9xKNXUkrR2lojSBMF7ruof7S2r92WjrO_kEZic84,3239
|
|
37
|
+
airbyte_agent_airtable/_vendored/connector_sdk/observability/__init__.py,sha256=ojx1n9vaWCXFFvb3-90Pwtg845trFdV2v6wcCoO75Ko,269
|
|
38
|
+
airbyte_agent_airtable/_vendored/connector_sdk/observability/config.py,sha256=uWvRAPHnEusVKviQQncqcpnHKNhoZ4ZoFK6nUOSVClY,5372
|
|
39
|
+
airbyte_agent_airtable/_vendored/connector_sdk/observability/models.py,sha256=IRGjlJia28_IU7BMSBb5RHWs47yAOLvE20JIIXHazLY,448
|
|
40
|
+
airbyte_agent_airtable/_vendored/connector_sdk/observability/redactor.py,sha256=HRbSwGxsfQYbYlG4QBVvv8Qnw0d4SMowMv0dTFHsHqQ,2361
|
|
41
|
+
airbyte_agent_airtable/_vendored/connector_sdk/observability/session.py,sha256=WYRIB3bVz9HhpElkUO9CILCRIrWs9p2MR2hmf8uJm3E,3086
|
|
42
|
+
airbyte_agent_airtable/_vendored/connector_sdk/performance/__init__.py,sha256=Sp5fSd1LvtIQkv-fnrKqPsM7-6IWp0sSZSK0mhzal_A,200
|
|
43
|
+
airbyte_agent_airtable/_vendored/connector_sdk/performance/instrumentation.py,sha256=_dXvNiqdndIBwDjeDKNViWzn_M5FkSUsMmJtFldrmsM,1504
|
|
44
|
+
airbyte_agent_airtable/_vendored/connector_sdk/performance/metrics.py,sha256=FRff7dKt4iwt_A7pxV5n9kAGBR756PC7q8-weWygPSM,2817
|
|
45
|
+
airbyte_agent_airtable/_vendored/connector_sdk/schema/__init__.py,sha256=Uymu-QuzGJuMxexBagIvUxpVAigIuIhz3KeBl_Vu4Ko,1638
|
|
46
|
+
airbyte_agent_airtable/_vendored/connector_sdk/schema/base.py,sha256=mOO5eZSK-FB7S-ZXpt5HFG5YBg8x-oM6RZRLPOEGxZM,7115
|
|
47
|
+
airbyte_agent_airtable/_vendored/connector_sdk/schema/components.py,sha256=nJIPieavwX3o3ODvdtLHPk84d_V229xmg6LDfwEHjzc,8119
|
|
48
|
+
airbyte_agent_airtable/_vendored/connector_sdk/schema/connector.py,sha256=mSZk1wr2YSdRj9tTRsPAuIlCzd_xZLw-Bzl1sMwE0rE,3731
|
|
49
|
+
airbyte_agent_airtable/_vendored/connector_sdk/schema/extensions.py,sha256=5hgpFHK7fzpzegCkJk882DeIP79bCx_qairKJhvPMZ8,9590
|
|
50
|
+
airbyte_agent_airtable/_vendored/connector_sdk/schema/operations.py,sha256=St-A75m6sZUZlsoM6WcoPaShYu_X1K19pdyPvJbabOE,6214
|
|
51
|
+
airbyte_agent_airtable/_vendored/connector_sdk/schema/security.py,sha256=R-21DLnp-ANIRO1Dzqo53TYFJL6lCp0aO8GSuxa_bDI,9225
|
|
52
|
+
airbyte_agent_airtable/_vendored/connector_sdk/telemetry/__init__.py,sha256=RaLgkBU4dfxn1LC5Y0Q9rr2PJbrwjxvPgBLmq8_WafE,211
|
|
53
|
+
airbyte_agent_airtable/_vendored/connector_sdk/telemetry/config.py,sha256=tLmQwAFD0kP1WyBGWBS3ysaudN9H3e-3EopKZi6cGKg,885
|
|
54
|
+
airbyte_agent_airtable/_vendored/connector_sdk/telemetry/events.py,sha256=8Y1NbXiwISX-V_wRofY7PqcwEXD0dLMnntKkY6XFU2s,1328
|
|
55
|
+
airbyte_agent_airtable/_vendored/connector_sdk/telemetry/tracker.py,sha256=SginFQbHqVUVYG82NnNzG34O-tAQ_wZYjGDcuo0q4Kk,5584
|
|
56
|
+
airbyte_agent_airtable-0.1.5.dist-info/METADATA,sha256=Ru02s-QiFRde7RB8nkD6VQ07CIH9FnfW1OwWsTcPmnc,4983
|
|
57
|
+
airbyte_agent_airtable-0.1.5.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
58
|
+
airbyte_agent_airtable-0.1.5.dist-info/RECORD,,
|