airbyte-agent-klaviyo 0.1.0__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.
- airbyte_agent_klaviyo/__init__.py +225 -0
- airbyte_agent_klaviyo/_vendored/__init__.py +1 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/__init__.py +82 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/auth_strategies.py +1171 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/auth_template.py +135 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/cloud_utils/__init__.py +5 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/cloud_utils/client.py +213 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/connector_model_loader.py +1120 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/constants.py +78 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/exceptions.py +23 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/executor/__init__.py +31 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/executor/hosted_executor.py +201 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/executor/local_executor.py +1854 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/executor/models.py +202 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/extensions.py +693 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/http/__init__.py +37 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/http/adapters/__init__.py +9 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/http/adapters/httpx_adapter.py +251 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/http/config.py +98 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/http/exceptions.py +119 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/http/protocols.py +114 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/http/response.py +104 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/http_client.py +693 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/introspection.py +481 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/logging/__init__.py +11 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/logging/logger.py +273 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/logging/types.py +93 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/observability/__init__.py +11 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/observability/config.py +179 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/observability/models.py +19 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/observability/redactor.py +81 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/observability/session.py +103 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/performance/__init__.py +6 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/performance/instrumentation.py +57 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/performance/metrics.py +93 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/schema/__init__.py +75 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/schema/base.py +201 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/schema/components.py +244 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/schema/connector.py +120 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/schema/extensions.py +301 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/schema/operations.py +156 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/schema/security.py +236 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/secrets.py +182 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/telemetry/__init__.py +10 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/telemetry/config.py +32 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/telemetry/events.py +59 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/telemetry/tracker.py +155 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/types.py +270 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/utils.py +60 -0
- airbyte_agent_klaviyo/_vendored/connector_sdk/validation.py +848 -0
- airbyte_agent_klaviyo/connector.py +1431 -0
- airbyte_agent_klaviyo/connector_model.py +2230 -0
- airbyte_agent_klaviyo/models.py +676 -0
- airbyte_agent_klaviyo/types.py +1319 -0
- airbyte_agent_klaviyo-0.1.0.dist-info/METADATA +151 -0
- airbyte_agent_klaviyo-0.1.0.dist-info/RECORD +57 -0
- airbyte_agent_klaviyo-0.1.0.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,1319 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Type definitions for klaviyo 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 ProfilesListParams(TypedDict):
|
|
21
|
+
"""Parameters for profiles.list operation"""
|
|
22
|
+
page_size: NotRequired[int]
|
|
23
|
+
page_cursor: NotRequired[str]
|
|
24
|
+
|
|
25
|
+
class ProfilesGetParams(TypedDict):
|
|
26
|
+
"""Parameters for profiles.get operation"""
|
|
27
|
+
id: str
|
|
28
|
+
|
|
29
|
+
class ListsListParams(TypedDict):
|
|
30
|
+
"""Parameters for lists.list operation"""
|
|
31
|
+
page_size: NotRequired[int]
|
|
32
|
+
page_cursor: NotRequired[str]
|
|
33
|
+
|
|
34
|
+
class ListsGetParams(TypedDict):
|
|
35
|
+
"""Parameters for lists.get operation"""
|
|
36
|
+
id: str
|
|
37
|
+
|
|
38
|
+
class CampaignsListParams(TypedDict):
|
|
39
|
+
"""Parameters for campaigns.list operation"""
|
|
40
|
+
filter: str
|
|
41
|
+
page_size: NotRequired[int]
|
|
42
|
+
page_cursor: NotRequired[str]
|
|
43
|
+
|
|
44
|
+
class CampaignsGetParams(TypedDict):
|
|
45
|
+
"""Parameters for campaigns.get operation"""
|
|
46
|
+
id: str
|
|
47
|
+
|
|
48
|
+
class EventsListParams(TypedDict):
|
|
49
|
+
"""Parameters for events.list operation"""
|
|
50
|
+
page_size: NotRequired[int]
|
|
51
|
+
page_cursor: NotRequired[str]
|
|
52
|
+
sort: NotRequired[str]
|
|
53
|
+
|
|
54
|
+
class MetricsListParams(TypedDict):
|
|
55
|
+
"""Parameters for metrics.list operation"""
|
|
56
|
+
page_size: NotRequired[int]
|
|
57
|
+
page_cursor: NotRequired[str]
|
|
58
|
+
|
|
59
|
+
class MetricsGetParams(TypedDict):
|
|
60
|
+
"""Parameters for metrics.get operation"""
|
|
61
|
+
id: str
|
|
62
|
+
|
|
63
|
+
class FlowsListParams(TypedDict):
|
|
64
|
+
"""Parameters for flows.list operation"""
|
|
65
|
+
page_size: NotRequired[int]
|
|
66
|
+
page_cursor: NotRequired[str]
|
|
67
|
+
|
|
68
|
+
class FlowsGetParams(TypedDict):
|
|
69
|
+
"""Parameters for flows.get operation"""
|
|
70
|
+
id: str
|
|
71
|
+
|
|
72
|
+
class EmailTemplatesListParams(TypedDict):
|
|
73
|
+
"""Parameters for email_templates.list operation"""
|
|
74
|
+
page_size: NotRequired[int]
|
|
75
|
+
page_cursor: NotRequired[str]
|
|
76
|
+
|
|
77
|
+
class EmailTemplatesGetParams(TypedDict):
|
|
78
|
+
"""Parameters for email_templates.get operation"""
|
|
79
|
+
id: str
|
|
80
|
+
|
|
81
|
+
# ===== SEARCH TYPES =====
|
|
82
|
+
|
|
83
|
+
# Sort specification
|
|
84
|
+
AirbyteSortOrder = Literal["asc", "desc"]
|
|
85
|
+
|
|
86
|
+
# ===== PROFILES SEARCH TYPES =====
|
|
87
|
+
|
|
88
|
+
class ProfilesSearchFilter(TypedDict, total=False):
|
|
89
|
+
"""Available fields for filtering profiles search queries."""
|
|
90
|
+
attributes: dict[str, Any] | None
|
|
91
|
+
""""""
|
|
92
|
+
id: str | None
|
|
93
|
+
""""""
|
|
94
|
+
links: dict[str, Any] | None
|
|
95
|
+
""""""
|
|
96
|
+
relationships: dict[str, Any] | None
|
|
97
|
+
""""""
|
|
98
|
+
segments: dict[str, Any] | None
|
|
99
|
+
""""""
|
|
100
|
+
type: str | None
|
|
101
|
+
""""""
|
|
102
|
+
updated: str | None
|
|
103
|
+
""""""
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
class ProfilesInFilter(TypedDict, total=False):
|
|
107
|
+
"""Available fields for 'in' condition (values are lists)."""
|
|
108
|
+
attributes: list[dict[str, Any]]
|
|
109
|
+
""""""
|
|
110
|
+
id: list[str]
|
|
111
|
+
""""""
|
|
112
|
+
links: list[dict[str, Any]]
|
|
113
|
+
""""""
|
|
114
|
+
relationships: list[dict[str, Any]]
|
|
115
|
+
""""""
|
|
116
|
+
segments: list[dict[str, Any]]
|
|
117
|
+
""""""
|
|
118
|
+
type: list[str]
|
|
119
|
+
""""""
|
|
120
|
+
updated: list[str]
|
|
121
|
+
""""""
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
class ProfilesAnyValueFilter(TypedDict, total=False):
|
|
125
|
+
"""Available fields with Any value type. Used for 'contains' and 'any' conditions."""
|
|
126
|
+
attributes: Any
|
|
127
|
+
""""""
|
|
128
|
+
id: Any
|
|
129
|
+
""""""
|
|
130
|
+
links: Any
|
|
131
|
+
""""""
|
|
132
|
+
relationships: Any
|
|
133
|
+
""""""
|
|
134
|
+
segments: Any
|
|
135
|
+
""""""
|
|
136
|
+
type: Any
|
|
137
|
+
""""""
|
|
138
|
+
updated: Any
|
|
139
|
+
""""""
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
class ProfilesStringFilter(TypedDict, total=False):
|
|
143
|
+
"""String fields for text search conditions (like, fuzzy, keyword)."""
|
|
144
|
+
attributes: str
|
|
145
|
+
""""""
|
|
146
|
+
id: str
|
|
147
|
+
""""""
|
|
148
|
+
links: str
|
|
149
|
+
""""""
|
|
150
|
+
relationships: str
|
|
151
|
+
""""""
|
|
152
|
+
segments: str
|
|
153
|
+
""""""
|
|
154
|
+
type: str
|
|
155
|
+
""""""
|
|
156
|
+
updated: str
|
|
157
|
+
""""""
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
class ProfilesSortFilter(TypedDict, total=False):
|
|
161
|
+
"""Available fields for sorting profiles search results."""
|
|
162
|
+
attributes: AirbyteSortOrder
|
|
163
|
+
""""""
|
|
164
|
+
id: AirbyteSortOrder
|
|
165
|
+
""""""
|
|
166
|
+
links: AirbyteSortOrder
|
|
167
|
+
""""""
|
|
168
|
+
relationships: AirbyteSortOrder
|
|
169
|
+
""""""
|
|
170
|
+
segments: AirbyteSortOrder
|
|
171
|
+
""""""
|
|
172
|
+
type: AirbyteSortOrder
|
|
173
|
+
""""""
|
|
174
|
+
updated: AirbyteSortOrder
|
|
175
|
+
""""""
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
# Entity-specific condition types for profiles
|
|
179
|
+
class ProfilesEqCondition(TypedDict, total=False):
|
|
180
|
+
"""Equal to: field equals value."""
|
|
181
|
+
eq: ProfilesSearchFilter
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
class ProfilesNeqCondition(TypedDict, total=False):
|
|
185
|
+
"""Not equal to: field does not equal value."""
|
|
186
|
+
neq: ProfilesSearchFilter
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
class ProfilesGtCondition(TypedDict, total=False):
|
|
190
|
+
"""Greater than: field > value."""
|
|
191
|
+
gt: ProfilesSearchFilter
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
class ProfilesGteCondition(TypedDict, total=False):
|
|
195
|
+
"""Greater than or equal: field >= value."""
|
|
196
|
+
gte: ProfilesSearchFilter
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
class ProfilesLtCondition(TypedDict, total=False):
|
|
200
|
+
"""Less than: field < value."""
|
|
201
|
+
lt: ProfilesSearchFilter
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
class ProfilesLteCondition(TypedDict, total=False):
|
|
205
|
+
"""Less than or equal: field <= value."""
|
|
206
|
+
lte: ProfilesSearchFilter
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
class ProfilesLikeCondition(TypedDict, total=False):
|
|
210
|
+
"""Partial string match with % wildcards."""
|
|
211
|
+
like: ProfilesStringFilter
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
class ProfilesFuzzyCondition(TypedDict, total=False):
|
|
215
|
+
"""Ordered word text match (case-insensitive)."""
|
|
216
|
+
fuzzy: ProfilesStringFilter
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
class ProfilesKeywordCondition(TypedDict, total=False):
|
|
220
|
+
"""Keyword text match (any word present)."""
|
|
221
|
+
keyword: ProfilesStringFilter
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
class ProfilesContainsCondition(TypedDict, total=False):
|
|
225
|
+
"""Check if value exists in array field. Example: {"contains": {"tags": "premium"}}"""
|
|
226
|
+
contains: ProfilesAnyValueFilter
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
# Reserved keyword conditions using functional TypedDict syntax
|
|
230
|
+
ProfilesInCondition = TypedDict("ProfilesInCondition", {"in": ProfilesInFilter}, total=False)
|
|
231
|
+
"""In list: field value is in list. Example: {"in": {"status": ["active", "pending"]}}"""
|
|
232
|
+
|
|
233
|
+
ProfilesNotCondition = TypedDict("ProfilesNotCondition", {"not": "ProfilesCondition"}, total=False)
|
|
234
|
+
"""Negates the nested condition."""
|
|
235
|
+
|
|
236
|
+
ProfilesAndCondition = TypedDict("ProfilesAndCondition", {"and": "list[ProfilesCondition]"}, total=False)
|
|
237
|
+
"""True if all nested conditions are true."""
|
|
238
|
+
|
|
239
|
+
ProfilesOrCondition = TypedDict("ProfilesOrCondition", {"or": "list[ProfilesCondition]"}, total=False)
|
|
240
|
+
"""True if any nested condition is true."""
|
|
241
|
+
|
|
242
|
+
ProfilesAnyCondition = TypedDict("ProfilesAnyCondition", {"any": ProfilesAnyValueFilter}, total=False)
|
|
243
|
+
"""Match if ANY element in array field matches nested condition. Example: {"any": {"addresses": {"eq": {"state": "CA"}}}}"""
|
|
244
|
+
|
|
245
|
+
# Union of all profiles condition types
|
|
246
|
+
ProfilesCondition = (
|
|
247
|
+
ProfilesEqCondition
|
|
248
|
+
| ProfilesNeqCondition
|
|
249
|
+
| ProfilesGtCondition
|
|
250
|
+
| ProfilesGteCondition
|
|
251
|
+
| ProfilesLtCondition
|
|
252
|
+
| ProfilesLteCondition
|
|
253
|
+
| ProfilesInCondition
|
|
254
|
+
| ProfilesLikeCondition
|
|
255
|
+
| ProfilesFuzzyCondition
|
|
256
|
+
| ProfilesKeywordCondition
|
|
257
|
+
| ProfilesContainsCondition
|
|
258
|
+
| ProfilesNotCondition
|
|
259
|
+
| ProfilesAndCondition
|
|
260
|
+
| ProfilesOrCondition
|
|
261
|
+
| ProfilesAnyCondition
|
|
262
|
+
)
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
class ProfilesSearchQuery(TypedDict, total=False):
|
|
266
|
+
"""Search query for profiles entity."""
|
|
267
|
+
filter: ProfilesCondition
|
|
268
|
+
sort: list[ProfilesSortFilter]
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
# ===== EVENTS SEARCH TYPES =====
|
|
272
|
+
|
|
273
|
+
class EventsSearchFilter(TypedDict, total=False):
|
|
274
|
+
"""Available fields for filtering events search queries."""
|
|
275
|
+
attributes: dict[str, Any] | None
|
|
276
|
+
""""""
|
|
277
|
+
datetime: str | None
|
|
278
|
+
""""""
|
|
279
|
+
id: str | None
|
|
280
|
+
""""""
|
|
281
|
+
links: dict[str, Any] | None
|
|
282
|
+
""""""
|
|
283
|
+
relationships: dict[str, Any] | None
|
|
284
|
+
""""""
|
|
285
|
+
type: str | None
|
|
286
|
+
""""""
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
class EventsInFilter(TypedDict, total=False):
|
|
290
|
+
"""Available fields for 'in' condition (values are lists)."""
|
|
291
|
+
attributes: list[dict[str, Any]]
|
|
292
|
+
""""""
|
|
293
|
+
datetime: list[str]
|
|
294
|
+
""""""
|
|
295
|
+
id: list[str]
|
|
296
|
+
""""""
|
|
297
|
+
links: list[dict[str, Any]]
|
|
298
|
+
""""""
|
|
299
|
+
relationships: list[dict[str, Any]]
|
|
300
|
+
""""""
|
|
301
|
+
type: list[str]
|
|
302
|
+
""""""
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
class EventsAnyValueFilter(TypedDict, total=False):
|
|
306
|
+
"""Available fields with Any value type. Used for 'contains' and 'any' conditions."""
|
|
307
|
+
attributes: Any
|
|
308
|
+
""""""
|
|
309
|
+
datetime: Any
|
|
310
|
+
""""""
|
|
311
|
+
id: Any
|
|
312
|
+
""""""
|
|
313
|
+
links: Any
|
|
314
|
+
""""""
|
|
315
|
+
relationships: Any
|
|
316
|
+
""""""
|
|
317
|
+
type: Any
|
|
318
|
+
""""""
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
class EventsStringFilter(TypedDict, total=False):
|
|
322
|
+
"""String fields for text search conditions (like, fuzzy, keyword)."""
|
|
323
|
+
attributes: str
|
|
324
|
+
""""""
|
|
325
|
+
datetime: str
|
|
326
|
+
""""""
|
|
327
|
+
id: str
|
|
328
|
+
""""""
|
|
329
|
+
links: str
|
|
330
|
+
""""""
|
|
331
|
+
relationships: str
|
|
332
|
+
""""""
|
|
333
|
+
type: str
|
|
334
|
+
""""""
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
class EventsSortFilter(TypedDict, total=False):
|
|
338
|
+
"""Available fields for sorting events search results."""
|
|
339
|
+
attributes: AirbyteSortOrder
|
|
340
|
+
""""""
|
|
341
|
+
datetime: AirbyteSortOrder
|
|
342
|
+
""""""
|
|
343
|
+
id: AirbyteSortOrder
|
|
344
|
+
""""""
|
|
345
|
+
links: AirbyteSortOrder
|
|
346
|
+
""""""
|
|
347
|
+
relationships: AirbyteSortOrder
|
|
348
|
+
""""""
|
|
349
|
+
type: AirbyteSortOrder
|
|
350
|
+
""""""
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
# Entity-specific condition types for events
|
|
354
|
+
class EventsEqCondition(TypedDict, total=False):
|
|
355
|
+
"""Equal to: field equals value."""
|
|
356
|
+
eq: EventsSearchFilter
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
class EventsNeqCondition(TypedDict, total=False):
|
|
360
|
+
"""Not equal to: field does not equal value."""
|
|
361
|
+
neq: EventsSearchFilter
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
class EventsGtCondition(TypedDict, total=False):
|
|
365
|
+
"""Greater than: field > value."""
|
|
366
|
+
gt: EventsSearchFilter
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
class EventsGteCondition(TypedDict, total=False):
|
|
370
|
+
"""Greater than or equal: field >= value."""
|
|
371
|
+
gte: EventsSearchFilter
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
class EventsLtCondition(TypedDict, total=False):
|
|
375
|
+
"""Less than: field < value."""
|
|
376
|
+
lt: EventsSearchFilter
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
class EventsLteCondition(TypedDict, total=False):
|
|
380
|
+
"""Less than or equal: field <= value."""
|
|
381
|
+
lte: EventsSearchFilter
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
class EventsLikeCondition(TypedDict, total=False):
|
|
385
|
+
"""Partial string match with % wildcards."""
|
|
386
|
+
like: EventsStringFilter
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
class EventsFuzzyCondition(TypedDict, total=False):
|
|
390
|
+
"""Ordered word text match (case-insensitive)."""
|
|
391
|
+
fuzzy: EventsStringFilter
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
class EventsKeywordCondition(TypedDict, total=False):
|
|
395
|
+
"""Keyword text match (any word present)."""
|
|
396
|
+
keyword: EventsStringFilter
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
class EventsContainsCondition(TypedDict, total=False):
|
|
400
|
+
"""Check if value exists in array field. Example: {"contains": {"tags": "premium"}}"""
|
|
401
|
+
contains: EventsAnyValueFilter
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
# Reserved keyword conditions using functional TypedDict syntax
|
|
405
|
+
EventsInCondition = TypedDict("EventsInCondition", {"in": EventsInFilter}, total=False)
|
|
406
|
+
"""In list: field value is in list. Example: {"in": {"status": ["active", "pending"]}}"""
|
|
407
|
+
|
|
408
|
+
EventsNotCondition = TypedDict("EventsNotCondition", {"not": "EventsCondition"}, total=False)
|
|
409
|
+
"""Negates the nested condition."""
|
|
410
|
+
|
|
411
|
+
EventsAndCondition = TypedDict("EventsAndCondition", {"and": "list[EventsCondition]"}, total=False)
|
|
412
|
+
"""True if all nested conditions are true."""
|
|
413
|
+
|
|
414
|
+
EventsOrCondition = TypedDict("EventsOrCondition", {"or": "list[EventsCondition]"}, total=False)
|
|
415
|
+
"""True if any nested condition is true."""
|
|
416
|
+
|
|
417
|
+
EventsAnyCondition = TypedDict("EventsAnyCondition", {"any": EventsAnyValueFilter}, total=False)
|
|
418
|
+
"""Match if ANY element in array field matches nested condition. Example: {"any": {"addresses": {"eq": {"state": "CA"}}}}"""
|
|
419
|
+
|
|
420
|
+
# Union of all events condition types
|
|
421
|
+
EventsCondition = (
|
|
422
|
+
EventsEqCondition
|
|
423
|
+
| EventsNeqCondition
|
|
424
|
+
| EventsGtCondition
|
|
425
|
+
| EventsGteCondition
|
|
426
|
+
| EventsLtCondition
|
|
427
|
+
| EventsLteCondition
|
|
428
|
+
| EventsInCondition
|
|
429
|
+
| EventsLikeCondition
|
|
430
|
+
| EventsFuzzyCondition
|
|
431
|
+
| EventsKeywordCondition
|
|
432
|
+
| EventsContainsCondition
|
|
433
|
+
| EventsNotCondition
|
|
434
|
+
| EventsAndCondition
|
|
435
|
+
| EventsOrCondition
|
|
436
|
+
| EventsAnyCondition
|
|
437
|
+
)
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
class EventsSearchQuery(TypedDict, total=False):
|
|
441
|
+
"""Search query for events entity."""
|
|
442
|
+
filter: EventsCondition
|
|
443
|
+
sort: list[EventsSortFilter]
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
# ===== EMAIL_TEMPLATES SEARCH TYPES =====
|
|
447
|
+
|
|
448
|
+
class EmailTemplatesSearchFilter(TypedDict, total=False):
|
|
449
|
+
"""Available fields for filtering email_templates search queries."""
|
|
450
|
+
attributes: dict[str, Any] | None
|
|
451
|
+
""""""
|
|
452
|
+
id: str | None
|
|
453
|
+
""""""
|
|
454
|
+
links: dict[str, Any] | None
|
|
455
|
+
""""""
|
|
456
|
+
type: str | None
|
|
457
|
+
""""""
|
|
458
|
+
updated: str | None
|
|
459
|
+
""""""
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
class EmailTemplatesInFilter(TypedDict, total=False):
|
|
463
|
+
"""Available fields for 'in' condition (values are lists)."""
|
|
464
|
+
attributes: list[dict[str, Any]]
|
|
465
|
+
""""""
|
|
466
|
+
id: list[str]
|
|
467
|
+
""""""
|
|
468
|
+
links: list[dict[str, Any]]
|
|
469
|
+
""""""
|
|
470
|
+
type: list[str]
|
|
471
|
+
""""""
|
|
472
|
+
updated: list[str]
|
|
473
|
+
""""""
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
class EmailTemplatesAnyValueFilter(TypedDict, total=False):
|
|
477
|
+
"""Available fields with Any value type. Used for 'contains' and 'any' conditions."""
|
|
478
|
+
attributes: Any
|
|
479
|
+
""""""
|
|
480
|
+
id: Any
|
|
481
|
+
""""""
|
|
482
|
+
links: Any
|
|
483
|
+
""""""
|
|
484
|
+
type: Any
|
|
485
|
+
""""""
|
|
486
|
+
updated: Any
|
|
487
|
+
""""""
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
class EmailTemplatesStringFilter(TypedDict, total=False):
|
|
491
|
+
"""String fields for text search conditions (like, fuzzy, keyword)."""
|
|
492
|
+
attributes: str
|
|
493
|
+
""""""
|
|
494
|
+
id: str
|
|
495
|
+
""""""
|
|
496
|
+
links: str
|
|
497
|
+
""""""
|
|
498
|
+
type: str
|
|
499
|
+
""""""
|
|
500
|
+
updated: str
|
|
501
|
+
""""""
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
class EmailTemplatesSortFilter(TypedDict, total=False):
|
|
505
|
+
"""Available fields for sorting email_templates search results."""
|
|
506
|
+
attributes: AirbyteSortOrder
|
|
507
|
+
""""""
|
|
508
|
+
id: AirbyteSortOrder
|
|
509
|
+
""""""
|
|
510
|
+
links: AirbyteSortOrder
|
|
511
|
+
""""""
|
|
512
|
+
type: AirbyteSortOrder
|
|
513
|
+
""""""
|
|
514
|
+
updated: AirbyteSortOrder
|
|
515
|
+
""""""
|
|
516
|
+
|
|
517
|
+
|
|
518
|
+
# Entity-specific condition types for email_templates
|
|
519
|
+
class EmailTemplatesEqCondition(TypedDict, total=False):
|
|
520
|
+
"""Equal to: field equals value."""
|
|
521
|
+
eq: EmailTemplatesSearchFilter
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
class EmailTemplatesNeqCondition(TypedDict, total=False):
|
|
525
|
+
"""Not equal to: field does not equal value."""
|
|
526
|
+
neq: EmailTemplatesSearchFilter
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
class EmailTemplatesGtCondition(TypedDict, total=False):
|
|
530
|
+
"""Greater than: field > value."""
|
|
531
|
+
gt: EmailTemplatesSearchFilter
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
class EmailTemplatesGteCondition(TypedDict, total=False):
|
|
535
|
+
"""Greater than or equal: field >= value."""
|
|
536
|
+
gte: EmailTemplatesSearchFilter
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
class EmailTemplatesLtCondition(TypedDict, total=False):
|
|
540
|
+
"""Less than: field < value."""
|
|
541
|
+
lt: EmailTemplatesSearchFilter
|
|
542
|
+
|
|
543
|
+
|
|
544
|
+
class EmailTemplatesLteCondition(TypedDict, total=False):
|
|
545
|
+
"""Less than or equal: field <= value."""
|
|
546
|
+
lte: EmailTemplatesSearchFilter
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
class EmailTemplatesLikeCondition(TypedDict, total=False):
|
|
550
|
+
"""Partial string match with % wildcards."""
|
|
551
|
+
like: EmailTemplatesStringFilter
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
class EmailTemplatesFuzzyCondition(TypedDict, total=False):
|
|
555
|
+
"""Ordered word text match (case-insensitive)."""
|
|
556
|
+
fuzzy: EmailTemplatesStringFilter
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
class EmailTemplatesKeywordCondition(TypedDict, total=False):
|
|
560
|
+
"""Keyword text match (any word present)."""
|
|
561
|
+
keyword: EmailTemplatesStringFilter
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
class EmailTemplatesContainsCondition(TypedDict, total=False):
|
|
565
|
+
"""Check if value exists in array field. Example: {"contains": {"tags": "premium"}}"""
|
|
566
|
+
contains: EmailTemplatesAnyValueFilter
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
# Reserved keyword conditions using functional TypedDict syntax
|
|
570
|
+
EmailTemplatesInCondition = TypedDict("EmailTemplatesInCondition", {"in": EmailTemplatesInFilter}, total=False)
|
|
571
|
+
"""In list: field value is in list. Example: {"in": {"status": ["active", "pending"]}}"""
|
|
572
|
+
|
|
573
|
+
EmailTemplatesNotCondition = TypedDict("EmailTemplatesNotCondition", {"not": "EmailTemplatesCondition"}, total=False)
|
|
574
|
+
"""Negates the nested condition."""
|
|
575
|
+
|
|
576
|
+
EmailTemplatesAndCondition = TypedDict("EmailTemplatesAndCondition", {"and": "list[EmailTemplatesCondition]"}, total=False)
|
|
577
|
+
"""True if all nested conditions are true."""
|
|
578
|
+
|
|
579
|
+
EmailTemplatesOrCondition = TypedDict("EmailTemplatesOrCondition", {"or": "list[EmailTemplatesCondition]"}, total=False)
|
|
580
|
+
"""True if any nested condition is true."""
|
|
581
|
+
|
|
582
|
+
EmailTemplatesAnyCondition = TypedDict("EmailTemplatesAnyCondition", {"any": EmailTemplatesAnyValueFilter}, total=False)
|
|
583
|
+
"""Match if ANY element in array field matches nested condition. Example: {"any": {"addresses": {"eq": {"state": "CA"}}}}"""
|
|
584
|
+
|
|
585
|
+
# Union of all email_templates condition types
|
|
586
|
+
EmailTemplatesCondition = (
|
|
587
|
+
EmailTemplatesEqCondition
|
|
588
|
+
| EmailTemplatesNeqCondition
|
|
589
|
+
| EmailTemplatesGtCondition
|
|
590
|
+
| EmailTemplatesGteCondition
|
|
591
|
+
| EmailTemplatesLtCondition
|
|
592
|
+
| EmailTemplatesLteCondition
|
|
593
|
+
| EmailTemplatesInCondition
|
|
594
|
+
| EmailTemplatesLikeCondition
|
|
595
|
+
| EmailTemplatesFuzzyCondition
|
|
596
|
+
| EmailTemplatesKeywordCondition
|
|
597
|
+
| EmailTemplatesContainsCondition
|
|
598
|
+
| EmailTemplatesNotCondition
|
|
599
|
+
| EmailTemplatesAndCondition
|
|
600
|
+
| EmailTemplatesOrCondition
|
|
601
|
+
| EmailTemplatesAnyCondition
|
|
602
|
+
)
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
class EmailTemplatesSearchQuery(TypedDict, total=False):
|
|
606
|
+
"""Search query for email_templates entity."""
|
|
607
|
+
filter: EmailTemplatesCondition
|
|
608
|
+
sort: list[EmailTemplatesSortFilter]
|
|
609
|
+
|
|
610
|
+
|
|
611
|
+
# ===== CAMPAIGNS SEARCH TYPES =====
|
|
612
|
+
|
|
613
|
+
class CampaignsSearchFilter(TypedDict, total=False):
|
|
614
|
+
"""Available fields for filtering campaigns search queries."""
|
|
615
|
+
attributes: dict[str, Any] | None
|
|
616
|
+
""""""
|
|
617
|
+
id: str | None
|
|
618
|
+
""""""
|
|
619
|
+
links: dict[str, Any] | None
|
|
620
|
+
""""""
|
|
621
|
+
relationships: dict[str, Any] | None
|
|
622
|
+
""""""
|
|
623
|
+
type: str | None
|
|
624
|
+
""""""
|
|
625
|
+
updated_at: str | None
|
|
626
|
+
""""""
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
class CampaignsInFilter(TypedDict, total=False):
|
|
630
|
+
"""Available fields for 'in' condition (values are lists)."""
|
|
631
|
+
attributes: list[dict[str, Any]]
|
|
632
|
+
""""""
|
|
633
|
+
id: list[str]
|
|
634
|
+
""""""
|
|
635
|
+
links: list[dict[str, Any]]
|
|
636
|
+
""""""
|
|
637
|
+
relationships: list[dict[str, Any]]
|
|
638
|
+
""""""
|
|
639
|
+
type: list[str]
|
|
640
|
+
""""""
|
|
641
|
+
updated_at: list[str]
|
|
642
|
+
""""""
|
|
643
|
+
|
|
644
|
+
|
|
645
|
+
class CampaignsAnyValueFilter(TypedDict, total=False):
|
|
646
|
+
"""Available fields with Any value type. Used for 'contains' and 'any' conditions."""
|
|
647
|
+
attributes: Any
|
|
648
|
+
""""""
|
|
649
|
+
id: Any
|
|
650
|
+
""""""
|
|
651
|
+
links: Any
|
|
652
|
+
""""""
|
|
653
|
+
relationships: Any
|
|
654
|
+
""""""
|
|
655
|
+
type: Any
|
|
656
|
+
""""""
|
|
657
|
+
updated_at: Any
|
|
658
|
+
""""""
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
class CampaignsStringFilter(TypedDict, total=False):
|
|
662
|
+
"""String fields for text search conditions (like, fuzzy, keyword)."""
|
|
663
|
+
attributes: str
|
|
664
|
+
""""""
|
|
665
|
+
id: str
|
|
666
|
+
""""""
|
|
667
|
+
links: str
|
|
668
|
+
""""""
|
|
669
|
+
relationships: str
|
|
670
|
+
""""""
|
|
671
|
+
type: str
|
|
672
|
+
""""""
|
|
673
|
+
updated_at: str
|
|
674
|
+
""""""
|
|
675
|
+
|
|
676
|
+
|
|
677
|
+
class CampaignsSortFilter(TypedDict, total=False):
|
|
678
|
+
"""Available fields for sorting campaigns search results."""
|
|
679
|
+
attributes: AirbyteSortOrder
|
|
680
|
+
""""""
|
|
681
|
+
id: AirbyteSortOrder
|
|
682
|
+
""""""
|
|
683
|
+
links: AirbyteSortOrder
|
|
684
|
+
""""""
|
|
685
|
+
relationships: AirbyteSortOrder
|
|
686
|
+
""""""
|
|
687
|
+
type: AirbyteSortOrder
|
|
688
|
+
""""""
|
|
689
|
+
updated_at: AirbyteSortOrder
|
|
690
|
+
""""""
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
# Entity-specific condition types for campaigns
|
|
694
|
+
class CampaignsEqCondition(TypedDict, total=False):
|
|
695
|
+
"""Equal to: field equals value."""
|
|
696
|
+
eq: CampaignsSearchFilter
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
class CampaignsNeqCondition(TypedDict, total=False):
|
|
700
|
+
"""Not equal to: field does not equal value."""
|
|
701
|
+
neq: CampaignsSearchFilter
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
class CampaignsGtCondition(TypedDict, total=False):
|
|
705
|
+
"""Greater than: field > value."""
|
|
706
|
+
gt: CampaignsSearchFilter
|
|
707
|
+
|
|
708
|
+
|
|
709
|
+
class CampaignsGteCondition(TypedDict, total=False):
|
|
710
|
+
"""Greater than or equal: field >= value."""
|
|
711
|
+
gte: CampaignsSearchFilter
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
class CampaignsLtCondition(TypedDict, total=False):
|
|
715
|
+
"""Less than: field < value."""
|
|
716
|
+
lt: CampaignsSearchFilter
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
class CampaignsLteCondition(TypedDict, total=False):
|
|
720
|
+
"""Less than or equal: field <= value."""
|
|
721
|
+
lte: CampaignsSearchFilter
|
|
722
|
+
|
|
723
|
+
|
|
724
|
+
class CampaignsLikeCondition(TypedDict, total=False):
|
|
725
|
+
"""Partial string match with % wildcards."""
|
|
726
|
+
like: CampaignsStringFilter
|
|
727
|
+
|
|
728
|
+
|
|
729
|
+
class CampaignsFuzzyCondition(TypedDict, total=False):
|
|
730
|
+
"""Ordered word text match (case-insensitive)."""
|
|
731
|
+
fuzzy: CampaignsStringFilter
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
class CampaignsKeywordCondition(TypedDict, total=False):
|
|
735
|
+
"""Keyword text match (any word present)."""
|
|
736
|
+
keyword: CampaignsStringFilter
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
class CampaignsContainsCondition(TypedDict, total=False):
|
|
740
|
+
"""Check if value exists in array field. Example: {"contains": {"tags": "premium"}}"""
|
|
741
|
+
contains: CampaignsAnyValueFilter
|
|
742
|
+
|
|
743
|
+
|
|
744
|
+
# Reserved keyword conditions using functional TypedDict syntax
|
|
745
|
+
CampaignsInCondition = TypedDict("CampaignsInCondition", {"in": CampaignsInFilter}, total=False)
|
|
746
|
+
"""In list: field value is in list. Example: {"in": {"status": ["active", "pending"]}}"""
|
|
747
|
+
|
|
748
|
+
CampaignsNotCondition = TypedDict("CampaignsNotCondition", {"not": "CampaignsCondition"}, total=False)
|
|
749
|
+
"""Negates the nested condition."""
|
|
750
|
+
|
|
751
|
+
CampaignsAndCondition = TypedDict("CampaignsAndCondition", {"and": "list[CampaignsCondition]"}, total=False)
|
|
752
|
+
"""True if all nested conditions are true."""
|
|
753
|
+
|
|
754
|
+
CampaignsOrCondition = TypedDict("CampaignsOrCondition", {"or": "list[CampaignsCondition]"}, total=False)
|
|
755
|
+
"""True if any nested condition is true."""
|
|
756
|
+
|
|
757
|
+
CampaignsAnyCondition = TypedDict("CampaignsAnyCondition", {"any": CampaignsAnyValueFilter}, total=False)
|
|
758
|
+
"""Match if ANY element in array field matches nested condition. Example: {"any": {"addresses": {"eq": {"state": "CA"}}}}"""
|
|
759
|
+
|
|
760
|
+
# Union of all campaigns condition types
|
|
761
|
+
CampaignsCondition = (
|
|
762
|
+
CampaignsEqCondition
|
|
763
|
+
| CampaignsNeqCondition
|
|
764
|
+
| CampaignsGtCondition
|
|
765
|
+
| CampaignsGteCondition
|
|
766
|
+
| CampaignsLtCondition
|
|
767
|
+
| CampaignsLteCondition
|
|
768
|
+
| CampaignsInCondition
|
|
769
|
+
| CampaignsLikeCondition
|
|
770
|
+
| CampaignsFuzzyCondition
|
|
771
|
+
| CampaignsKeywordCondition
|
|
772
|
+
| CampaignsContainsCondition
|
|
773
|
+
| CampaignsNotCondition
|
|
774
|
+
| CampaignsAndCondition
|
|
775
|
+
| CampaignsOrCondition
|
|
776
|
+
| CampaignsAnyCondition
|
|
777
|
+
)
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
class CampaignsSearchQuery(TypedDict, total=False):
|
|
781
|
+
"""Search query for campaigns entity."""
|
|
782
|
+
filter: CampaignsCondition
|
|
783
|
+
sort: list[CampaignsSortFilter]
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
# ===== FLOWS SEARCH TYPES =====
|
|
787
|
+
|
|
788
|
+
class FlowsSearchFilter(TypedDict, total=False):
|
|
789
|
+
"""Available fields for filtering flows search queries."""
|
|
790
|
+
attributes: dict[str, Any] | None
|
|
791
|
+
""""""
|
|
792
|
+
id: str | None
|
|
793
|
+
""""""
|
|
794
|
+
links: dict[str, Any] | None
|
|
795
|
+
""""""
|
|
796
|
+
relationships: dict[str, Any] | None
|
|
797
|
+
""""""
|
|
798
|
+
type: str | None
|
|
799
|
+
""""""
|
|
800
|
+
updated: str | None
|
|
801
|
+
""""""
|
|
802
|
+
|
|
803
|
+
|
|
804
|
+
class FlowsInFilter(TypedDict, total=False):
|
|
805
|
+
"""Available fields for 'in' condition (values are lists)."""
|
|
806
|
+
attributes: list[dict[str, Any]]
|
|
807
|
+
""""""
|
|
808
|
+
id: list[str]
|
|
809
|
+
""""""
|
|
810
|
+
links: list[dict[str, Any]]
|
|
811
|
+
""""""
|
|
812
|
+
relationships: list[dict[str, Any]]
|
|
813
|
+
""""""
|
|
814
|
+
type: list[str]
|
|
815
|
+
""""""
|
|
816
|
+
updated: list[str]
|
|
817
|
+
""""""
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
class FlowsAnyValueFilter(TypedDict, total=False):
|
|
821
|
+
"""Available fields with Any value type. Used for 'contains' and 'any' conditions."""
|
|
822
|
+
attributes: Any
|
|
823
|
+
""""""
|
|
824
|
+
id: Any
|
|
825
|
+
""""""
|
|
826
|
+
links: Any
|
|
827
|
+
""""""
|
|
828
|
+
relationships: Any
|
|
829
|
+
""""""
|
|
830
|
+
type: Any
|
|
831
|
+
""""""
|
|
832
|
+
updated: Any
|
|
833
|
+
""""""
|
|
834
|
+
|
|
835
|
+
|
|
836
|
+
class FlowsStringFilter(TypedDict, total=False):
|
|
837
|
+
"""String fields for text search conditions (like, fuzzy, keyword)."""
|
|
838
|
+
attributes: str
|
|
839
|
+
""""""
|
|
840
|
+
id: str
|
|
841
|
+
""""""
|
|
842
|
+
links: str
|
|
843
|
+
""""""
|
|
844
|
+
relationships: str
|
|
845
|
+
""""""
|
|
846
|
+
type: str
|
|
847
|
+
""""""
|
|
848
|
+
updated: str
|
|
849
|
+
""""""
|
|
850
|
+
|
|
851
|
+
|
|
852
|
+
class FlowsSortFilter(TypedDict, total=False):
|
|
853
|
+
"""Available fields for sorting flows search results."""
|
|
854
|
+
attributes: AirbyteSortOrder
|
|
855
|
+
""""""
|
|
856
|
+
id: AirbyteSortOrder
|
|
857
|
+
""""""
|
|
858
|
+
links: AirbyteSortOrder
|
|
859
|
+
""""""
|
|
860
|
+
relationships: AirbyteSortOrder
|
|
861
|
+
""""""
|
|
862
|
+
type: AirbyteSortOrder
|
|
863
|
+
""""""
|
|
864
|
+
updated: AirbyteSortOrder
|
|
865
|
+
""""""
|
|
866
|
+
|
|
867
|
+
|
|
868
|
+
# Entity-specific condition types for flows
|
|
869
|
+
class FlowsEqCondition(TypedDict, total=False):
|
|
870
|
+
"""Equal to: field equals value."""
|
|
871
|
+
eq: FlowsSearchFilter
|
|
872
|
+
|
|
873
|
+
|
|
874
|
+
class FlowsNeqCondition(TypedDict, total=False):
|
|
875
|
+
"""Not equal to: field does not equal value."""
|
|
876
|
+
neq: FlowsSearchFilter
|
|
877
|
+
|
|
878
|
+
|
|
879
|
+
class FlowsGtCondition(TypedDict, total=False):
|
|
880
|
+
"""Greater than: field > value."""
|
|
881
|
+
gt: FlowsSearchFilter
|
|
882
|
+
|
|
883
|
+
|
|
884
|
+
class FlowsGteCondition(TypedDict, total=False):
|
|
885
|
+
"""Greater than or equal: field >= value."""
|
|
886
|
+
gte: FlowsSearchFilter
|
|
887
|
+
|
|
888
|
+
|
|
889
|
+
class FlowsLtCondition(TypedDict, total=False):
|
|
890
|
+
"""Less than: field < value."""
|
|
891
|
+
lt: FlowsSearchFilter
|
|
892
|
+
|
|
893
|
+
|
|
894
|
+
class FlowsLteCondition(TypedDict, total=False):
|
|
895
|
+
"""Less than or equal: field <= value."""
|
|
896
|
+
lte: FlowsSearchFilter
|
|
897
|
+
|
|
898
|
+
|
|
899
|
+
class FlowsLikeCondition(TypedDict, total=False):
|
|
900
|
+
"""Partial string match with % wildcards."""
|
|
901
|
+
like: FlowsStringFilter
|
|
902
|
+
|
|
903
|
+
|
|
904
|
+
class FlowsFuzzyCondition(TypedDict, total=False):
|
|
905
|
+
"""Ordered word text match (case-insensitive)."""
|
|
906
|
+
fuzzy: FlowsStringFilter
|
|
907
|
+
|
|
908
|
+
|
|
909
|
+
class FlowsKeywordCondition(TypedDict, total=False):
|
|
910
|
+
"""Keyword text match (any word present)."""
|
|
911
|
+
keyword: FlowsStringFilter
|
|
912
|
+
|
|
913
|
+
|
|
914
|
+
class FlowsContainsCondition(TypedDict, total=False):
|
|
915
|
+
"""Check if value exists in array field. Example: {"contains": {"tags": "premium"}}"""
|
|
916
|
+
contains: FlowsAnyValueFilter
|
|
917
|
+
|
|
918
|
+
|
|
919
|
+
# Reserved keyword conditions using functional TypedDict syntax
|
|
920
|
+
FlowsInCondition = TypedDict("FlowsInCondition", {"in": FlowsInFilter}, total=False)
|
|
921
|
+
"""In list: field value is in list. Example: {"in": {"status": ["active", "pending"]}}"""
|
|
922
|
+
|
|
923
|
+
FlowsNotCondition = TypedDict("FlowsNotCondition", {"not": "FlowsCondition"}, total=False)
|
|
924
|
+
"""Negates the nested condition."""
|
|
925
|
+
|
|
926
|
+
FlowsAndCondition = TypedDict("FlowsAndCondition", {"and": "list[FlowsCondition]"}, total=False)
|
|
927
|
+
"""True if all nested conditions are true."""
|
|
928
|
+
|
|
929
|
+
FlowsOrCondition = TypedDict("FlowsOrCondition", {"or": "list[FlowsCondition]"}, total=False)
|
|
930
|
+
"""True if any nested condition is true."""
|
|
931
|
+
|
|
932
|
+
FlowsAnyCondition = TypedDict("FlowsAnyCondition", {"any": FlowsAnyValueFilter}, total=False)
|
|
933
|
+
"""Match if ANY element in array field matches nested condition. Example: {"any": {"addresses": {"eq": {"state": "CA"}}}}"""
|
|
934
|
+
|
|
935
|
+
# Union of all flows condition types
|
|
936
|
+
FlowsCondition = (
|
|
937
|
+
FlowsEqCondition
|
|
938
|
+
| FlowsNeqCondition
|
|
939
|
+
| FlowsGtCondition
|
|
940
|
+
| FlowsGteCondition
|
|
941
|
+
| FlowsLtCondition
|
|
942
|
+
| FlowsLteCondition
|
|
943
|
+
| FlowsInCondition
|
|
944
|
+
| FlowsLikeCondition
|
|
945
|
+
| FlowsFuzzyCondition
|
|
946
|
+
| FlowsKeywordCondition
|
|
947
|
+
| FlowsContainsCondition
|
|
948
|
+
| FlowsNotCondition
|
|
949
|
+
| FlowsAndCondition
|
|
950
|
+
| FlowsOrCondition
|
|
951
|
+
| FlowsAnyCondition
|
|
952
|
+
)
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
class FlowsSearchQuery(TypedDict, total=False):
|
|
956
|
+
"""Search query for flows entity."""
|
|
957
|
+
filter: FlowsCondition
|
|
958
|
+
sort: list[FlowsSortFilter]
|
|
959
|
+
|
|
960
|
+
|
|
961
|
+
# ===== METRICS SEARCH TYPES =====
|
|
962
|
+
|
|
963
|
+
class MetricsSearchFilter(TypedDict, total=False):
|
|
964
|
+
"""Available fields for filtering metrics search queries."""
|
|
965
|
+
attributes: dict[str, Any] | None
|
|
966
|
+
""""""
|
|
967
|
+
id: str | None
|
|
968
|
+
""""""
|
|
969
|
+
links: dict[str, Any] | None
|
|
970
|
+
""""""
|
|
971
|
+
relationships: dict[str, Any] | None
|
|
972
|
+
""""""
|
|
973
|
+
type: str | None
|
|
974
|
+
""""""
|
|
975
|
+
updated: str | None
|
|
976
|
+
""""""
|
|
977
|
+
|
|
978
|
+
|
|
979
|
+
class MetricsInFilter(TypedDict, total=False):
|
|
980
|
+
"""Available fields for 'in' condition (values are lists)."""
|
|
981
|
+
attributes: list[dict[str, Any]]
|
|
982
|
+
""""""
|
|
983
|
+
id: list[str]
|
|
984
|
+
""""""
|
|
985
|
+
links: list[dict[str, Any]]
|
|
986
|
+
""""""
|
|
987
|
+
relationships: list[dict[str, Any]]
|
|
988
|
+
""""""
|
|
989
|
+
type: list[str]
|
|
990
|
+
""""""
|
|
991
|
+
updated: list[str]
|
|
992
|
+
""""""
|
|
993
|
+
|
|
994
|
+
|
|
995
|
+
class MetricsAnyValueFilter(TypedDict, total=False):
|
|
996
|
+
"""Available fields with Any value type. Used for 'contains' and 'any' conditions."""
|
|
997
|
+
attributes: Any
|
|
998
|
+
""""""
|
|
999
|
+
id: Any
|
|
1000
|
+
""""""
|
|
1001
|
+
links: Any
|
|
1002
|
+
""""""
|
|
1003
|
+
relationships: Any
|
|
1004
|
+
""""""
|
|
1005
|
+
type: Any
|
|
1006
|
+
""""""
|
|
1007
|
+
updated: Any
|
|
1008
|
+
""""""
|
|
1009
|
+
|
|
1010
|
+
|
|
1011
|
+
class MetricsStringFilter(TypedDict, total=False):
|
|
1012
|
+
"""String fields for text search conditions (like, fuzzy, keyword)."""
|
|
1013
|
+
attributes: str
|
|
1014
|
+
""""""
|
|
1015
|
+
id: str
|
|
1016
|
+
""""""
|
|
1017
|
+
links: str
|
|
1018
|
+
""""""
|
|
1019
|
+
relationships: str
|
|
1020
|
+
""""""
|
|
1021
|
+
type: str
|
|
1022
|
+
""""""
|
|
1023
|
+
updated: str
|
|
1024
|
+
""""""
|
|
1025
|
+
|
|
1026
|
+
|
|
1027
|
+
class MetricsSortFilter(TypedDict, total=False):
|
|
1028
|
+
"""Available fields for sorting metrics search results."""
|
|
1029
|
+
attributes: AirbyteSortOrder
|
|
1030
|
+
""""""
|
|
1031
|
+
id: AirbyteSortOrder
|
|
1032
|
+
""""""
|
|
1033
|
+
links: AirbyteSortOrder
|
|
1034
|
+
""""""
|
|
1035
|
+
relationships: AirbyteSortOrder
|
|
1036
|
+
""""""
|
|
1037
|
+
type: AirbyteSortOrder
|
|
1038
|
+
""""""
|
|
1039
|
+
updated: AirbyteSortOrder
|
|
1040
|
+
""""""
|
|
1041
|
+
|
|
1042
|
+
|
|
1043
|
+
# Entity-specific condition types for metrics
|
|
1044
|
+
class MetricsEqCondition(TypedDict, total=False):
|
|
1045
|
+
"""Equal to: field equals value."""
|
|
1046
|
+
eq: MetricsSearchFilter
|
|
1047
|
+
|
|
1048
|
+
|
|
1049
|
+
class MetricsNeqCondition(TypedDict, total=False):
|
|
1050
|
+
"""Not equal to: field does not equal value."""
|
|
1051
|
+
neq: MetricsSearchFilter
|
|
1052
|
+
|
|
1053
|
+
|
|
1054
|
+
class MetricsGtCondition(TypedDict, total=False):
|
|
1055
|
+
"""Greater than: field > value."""
|
|
1056
|
+
gt: MetricsSearchFilter
|
|
1057
|
+
|
|
1058
|
+
|
|
1059
|
+
class MetricsGteCondition(TypedDict, total=False):
|
|
1060
|
+
"""Greater than or equal: field >= value."""
|
|
1061
|
+
gte: MetricsSearchFilter
|
|
1062
|
+
|
|
1063
|
+
|
|
1064
|
+
class MetricsLtCondition(TypedDict, total=False):
|
|
1065
|
+
"""Less than: field < value."""
|
|
1066
|
+
lt: MetricsSearchFilter
|
|
1067
|
+
|
|
1068
|
+
|
|
1069
|
+
class MetricsLteCondition(TypedDict, total=False):
|
|
1070
|
+
"""Less than or equal: field <= value."""
|
|
1071
|
+
lte: MetricsSearchFilter
|
|
1072
|
+
|
|
1073
|
+
|
|
1074
|
+
class MetricsLikeCondition(TypedDict, total=False):
|
|
1075
|
+
"""Partial string match with % wildcards."""
|
|
1076
|
+
like: MetricsStringFilter
|
|
1077
|
+
|
|
1078
|
+
|
|
1079
|
+
class MetricsFuzzyCondition(TypedDict, total=False):
|
|
1080
|
+
"""Ordered word text match (case-insensitive)."""
|
|
1081
|
+
fuzzy: MetricsStringFilter
|
|
1082
|
+
|
|
1083
|
+
|
|
1084
|
+
class MetricsKeywordCondition(TypedDict, total=False):
|
|
1085
|
+
"""Keyword text match (any word present)."""
|
|
1086
|
+
keyword: MetricsStringFilter
|
|
1087
|
+
|
|
1088
|
+
|
|
1089
|
+
class MetricsContainsCondition(TypedDict, total=False):
|
|
1090
|
+
"""Check if value exists in array field. Example: {"contains": {"tags": "premium"}}"""
|
|
1091
|
+
contains: MetricsAnyValueFilter
|
|
1092
|
+
|
|
1093
|
+
|
|
1094
|
+
# Reserved keyword conditions using functional TypedDict syntax
|
|
1095
|
+
MetricsInCondition = TypedDict("MetricsInCondition", {"in": MetricsInFilter}, total=False)
|
|
1096
|
+
"""In list: field value is in list. Example: {"in": {"status": ["active", "pending"]}}"""
|
|
1097
|
+
|
|
1098
|
+
MetricsNotCondition = TypedDict("MetricsNotCondition", {"not": "MetricsCondition"}, total=False)
|
|
1099
|
+
"""Negates the nested condition."""
|
|
1100
|
+
|
|
1101
|
+
MetricsAndCondition = TypedDict("MetricsAndCondition", {"and": "list[MetricsCondition]"}, total=False)
|
|
1102
|
+
"""True if all nested conditions are true."""
|
|
1103
|
+
|
|
1104
|
+
MetricsOrCondition = TypedDict("MetricsOrCondition", {"or": "list[MetricsCondition]"}, total=False)
|
|
1105
|
+
"""True if any nested condition is true."""
|
|
1106
|
+
|
|
1107
|
+
MetricsAnyCondition = TypedDict("MetricsAnyCondition", {"any": MetricsAnyValueFilter}, total=False)
|
|
1108
|
+
"""Match if ANY element in array field matches nested condition. Example: {"any": {"addresses": {"eq": {"state": "CA"}}}}"""
|
|
1109
|
+
|
|
1110
|
+
# Union of all metrics condition types
|
|
1111
|
+
MetricsCondition = (
|
|
1112
|
+
MetricsEqCondition
|
|
1113
|
+
| MetricsNeqCondition
|
|
1114
|
+
| MetricsGtCondition
|
|
1115
|
+
| MetricsGteCondition
|
|
1116
|
+
| MetricsLtCondition
|
|
1117
|
+
| MetricsLteCondition
|
|
1118
|
+
| MetricsInCondition
|
|
1119
|
+
| MetricsLikeCondition
|
|
1120
|
+
| MetricsFuzzyCondition
|
|
1121
|
+
| MetricsKeywordCondition
|
|
1122
|
+
| MetricsContainsCondition
|
|
1123
|
+
| MetricsNotCondition
|
|
1124
|
+
| MetricsAndCondition
|
|
1125
|
+
| MetricsOrCondition
|
|
1126
|
+
| MetricsAnyCondition
|
|
1127
|
+
)
|
|
1128
|
+
|
|
1129
|
+
|
|
1130
|
+
class MetricsSearchQuery(TypedDict, total=False):
|
|
1131
|
+
"""Search query for metrics entity."""
|
|
1132
|
+
filter: MetricsCondition
|
|
1133
|
+
sort: list[MetricsSortFilter]
|
|
1134
|
+
|
|
1135
|
+
|
|
1136
|
+
# ===== LISTS SEARCH TYPES =====
|
|
1137
|
+
|
|
1138
|
+
class ListsSearchFilter(TypedDict, total=False):
|
|
1139
|
+
"""Available fields for filtering lists search queries."""
|
|
1140
|
+
attributes: dict[str, Any] | None
|
|
1141
|
+
""""""
|
|
1142
|
+
id: str | None
|
|
1143
|
+
""""""
|
|
1144
|
+
links: dict[str, Any] | None
|
|
1145
|
+
""""""
|
|
1146
|
+
relationships: dict[str, Any] | None
|
|
1147
|
+
""""""
|
|
1148
|
+
type: str | None
|
|
1149
|
+
""""""
|
|
1150
|
+
updated: str | None
|
|
1151
|
+
""""""
|
|
1152
|
+
|
|
1153
|
+
|
|
1154
|
+
class ListsInFilter(TypedDict, total=False):
|
|
1155
|
+
"""Available fields for 'in' condition (values are lists)."""
|
|
1156
|
+
attributes: list[dict[str, Any]]
|
|
1157
|
+
""""""
|
|
1158
|
+
id: list[str]
|
|
1159
|
+
""""""
|
|
1160
|
+
links: list[dict[str, Any]]
|
|
1161
|
+
""""""
|
|
1162
|
+
relationships: list[dict[str, Any]]
|
|
1163
|
+
""""""
|
|
1164
|
+
type: list[str]
|
|
1165
|
+
""""""
|
|
1166
|
+
updated: list[str]
|
|
1167
|
+
""""""
|
|
1168
|
+
|
|
1169
|
+
|
|
1170
|
+
class ListsAnyValueFilter(TypedDict, total=False):
|
|
1171
|
+
"""Available fields with Any value type. Used for 'contains' and 'any' conditions."""
|
|
1172
|
+
attributes: Any
|
|
1173
|
+
""""""
|
|
1174
|
+
id: Any
|
|
1175
|
+
""""""
|
|
1176
|
+
links: Any
|
|
1177
|
+
""""""
|
|
1178
|
+
relationships: Any
|
|
1179
|
+
""""""
|
|
1180
|
+
type: Any
|
|
1181
|
+
""""""
|
|
1182
|
+
updated: Any
|
|
1183
|
+
""""""
|
|
1184
|
+
|
|
1185
|
+
|
|
1186
|
+
class ListsStringFilter(TypedDict, total=False):
|
|
1187
|
+
"""String fields for text search conditions (like, fuzzy, keyword)."""
|
|
1188
|
+
attributes: str
|
|
1189
|
+
""""""
|
|
1190
|
+
id: str
|
|
1191
|
+
""""""
|
|
1192
|
+
links: str
|
|
1193
|
+
""""""
|
|
1194
|
+
relationships: str
|
|
1195
|
+
""""""
|
|
1196
|
+
type: str
|
|
1197
|
+
""""""
|
|
1198
|
+
updated: str
|
|
1199
|
+
""""""
|
|
1200
|
+
|
|
1201
|
+
|
|
1202
|
+
class ListsSortFilter(TypedDict, total=False):
|
|
1203
|
+
"""Available fields for sorting lists search results."""
|
|
1204
|
+
attributes: AirbyteSortOrder
|
|
1205
|
+
""""""
|
|
1206
|
+
id: AirbyteSortOrder
|
|
1207
|
+
""""""
|
|
1208
|
+
links: AirbyteSortOrder
|
|
1209
|
+
""""""
|
|
1210
|
+
relationships: AirbyteSortOrder
|
|
1211
|
+
""""""
|
|
1212
|
+
type: AirbyteSortOrder
|
|
1213
|
+
""""""
|
|
1214
|
+
updated: AirbyteSortOrder
|
|
1215
|
+
""""""
|
|
1216
|
+
|
|
1217
|
+
|
|
1218
|
+
# Entity-specific condition types for lists
|
|
1219
|
+
class ListsEqCondition(TypedDict, total=False):
|
|
1220
|
+
"""Equal to: field equals value."""
|
|
1221
|
+
eq: ListsSearchFilter
|
|
1222
|
+
|
|
1223
|
+
|
|
1224
|
+
class ListsNeqCondition(TypedDict, total=False):
|
|
1225
|
+
"""Not equal to: field does not equal value."""
|
|
1226
|
+
neq: ListsSearchFilter
|
|
1227
|
+
|
|
1228
|
+
|
|
1229
|
+
class ListsGtCondition(TypedDict, total=False):
|
|
1230
|
+
"""Greater than: field > value."""
|
|
1231
|
+
gt: ListsSearchFilter
|
|
1232
|
+
|
|
1233
|
+
|
|
1234
|
+
class ListsGteCondition(TypedDict, total=False):
|
|
1235
|
+
"""Greater than or equal: field >= value."""
|
|
1236
|
+
gte: ListsSearchFilter
|
|
1237
|
+
|
|
1238
|
+
|
|
1239
|
+
class ListsLtCondition(TypedDict, total=False):
|
|
1240
|
+
"""Less than: field < value."""
|
|
1241
|
+
lt: ListsSearchFilter
|
|
1242
|
+
|
|
1243
|
+
|
|
1244
|
+
class ListsLteCondition(TypedDict, total=False):
|
|
1245
|
+
"""Less than or equal: field <= value."""
|
|
1246
|
+
lte: ListsSearchFilter
|
|
1247
|
+
|
|
1248
|
+
|
|
1249
|
+
class ListsLikeCondition(TypedDict, total=False):
|
|
1250
|
+
"""Partial string match with % wildcards."""
|
|
1251
|
+
like: ListsStringFilter
|
|
1252
|
+
|
|
1253
|
+
|
|
1254
|
+
class ListsFuzzyCondition(TypedDict, total=False):
|
|
1255
|
+
"""Ordered word text match (case-insensitive)."""
|
|
1256
|
+
fuzzy: ListsStringFilter
|
|
1257
|
+
|
|
1258
|
+
|
|
1259
|
+
class ListsKeywordCondition(TypedDict, total=False):
|
|
1260
|
+
"""Keyword text match (any word present)."""
|
|
1261
|
+
keyword: ListsStringFilter
|
|
1262
|
+
|
|
1263
|
+
|
|
1264
|
+
class ListsContainsCondition(TypedDict, total=False):
|
|
1265
|
+
"""Check if value exists in array field. Example: {"contains": {"tags": "premium"}}"""
|
|
1266
|
+
contains: ListsAnyValueFilter
|
|
1267
|
+
|
|
1268
|
+
|
|
1269
|
+
# Reserved keyword conditions using functional TypedDict syntax
|
|
1270
|
+
ListsInCondition = TypedDict("ListsInCondition", {"in": ListsInFilter}, total=False)
|
|
1271
|
+
"""In list: field value is in list. Example: {"in": {"status": ["active", "pending"]}}"""
|
|
1272
|
+
|
|
1273
|
+
ListsNotCondition = TypedDict("ListsNotCondition", {"not": "ListsCondition"}, total=False)
|
|
1274
|
+
"""Negates the nested condition."""
|
|
1275
|
+
|
|
1276
|
+
ListsAndCondition = TypedDict("ListsAndCondition", {"and": "list[ListsCondition]"}, total=False)
|
|
1277
|
+
"""True if all nested conditions are true."""
|
|
1278
|
+
|
|
1279
|
+
ListsOrCondition = TypedDict("ListsOrCondition", {"or": "list[ListsCondition]"}, total=False)
|
|
1280
|
+
"""True if any nested condition is true."""
|
|
1281
|
+
|
|
1282
|
+
ListsAnyCondition = TypedDict("ListsAnyCondition", {"any": ListsAnyValueFilter}, total=False)
|
|
1283
|
+
"""Match if ANY element in array field matches nested condition. Example: {"any": {"addresses": {"eq": {"state": "CA"}}}}"""
|
|
1284
|
+
|
|
1285
|
+
# Union of all lists condition types
|
|
1286
|
+
ListsCondition = (
|
|
1287
|
+
ListsEqCondition
|
|
1288
|
+
| ListsNeqCondition
|
|
1289
|
+
| ListsGtCondition
|
|
1290
|
+
| ListsGteCondition
|
|
1291
|
+
| ListsLtCondition
|
|
1292
|
+
| ListsLteCondition
|
|
1293
|
+
| ListsInCondition
|
|
1294
|
+
| ListsLikeCondition
|
|
1295
|
+
| ListsFuzzyCondition
|
|
1296
|
+
| ListsKeywordCondition
|
|
1297
|
+
| ListsContainsCondition
|
|
1298
|
+
| ListsNotCondition
|
|
1299
|
+
| ListsAndCondition
|
|
1300
|
+
| ListsOrCondition
|
|
1301
|
+
| ListsAnyCondition
|
|
1302
|
+
)
|
|
1303
|
+
|
|
1304
|
+
|
|
1305
|
+
class ListsSearchQuery(TypedDict, total=False):
|
|
1306
|
+
"""Search query for lists entity."""
|
|
1307
|
+
filter: ListsCondition
|
|
1308
|
+
sort: list[ListsSortFilter]
|
|
1309
|
+
|
|
1310
|
+
|
|
1311
|
+
|
|
1312
|
+
# ===== SEARCH PARAMS =====
|
|
1313
|
+
|
|
1314
|
+
class AirbyteSearchParams(TypedDict, total=False):
|
|
1315
|
+
"""Parameters for Airbyte cache search operations (generic, use entity-specific query types for better type hints)."""
|
|
1316
|
+
query: dict[str, Any]
|
|
1317
|
+
limit: int
|
|
1318
|
+
cursor: str
|
|
1319
|
+
fields: list[list[str]]
|