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.
Files changed (57) hide show
  1. airbyte_agent_klaviyo/__init__.py +225 -0
  2. airbyte_agent_klaviyo/_vendored/__init__.py +1 -0
  3. airbyte_agent_klaviyo/_vendored/connector_sdk/__init__.py +82 -0
  4. airbyte_agent_klaviyo/_vendored/connector_sdk/auth_strategies.py +1171 -0
  5. airbyte_agent_klaviyo/_vendored/connector_sdk/auth_template.py +135 -0
  6. airbyte_agent_klaviyo/_vendored/connector_sdk/cloud_utils/__init__.py +5 -0
  7. airbyte_agent_klaviyo/_vendored/connector_sdk/cloud_utils/client.py +213 -0
  8. airbyte_agent_klaviyo/_vendored/connector_sdk/connector_model_loader.py +1120 -0
  9. airbyte_agent_klaviyo/_vendored/connector_sdk/constants.py +78 -0
  10. airbyte_agent_klaviyo/_vendored/connector_sdk/exceptions.py +23 -0
  11. airbyte_agent_klaviyo/_vendored/connector_sdk/executor/__init__.py +31 -0
  12. airbyte_agent_klaviyo/_vendored/connector_sdk/executor/hosted_executor.py +201 -0
  13. airbyte_agent_klaviyo/_vendored/connector_sdk/executor/local_executor.py +1854 -0
  14. airbyte_agent_klaviyo/_vendored/connector_sdk/executor/models.py +202 -0
  15. airbyte_agent_klaviyo/_vendored/connector_sdk/extensions.py +693 -0
  16. airbyte_agent_klaviyo/_vendored/connector_sdk/http/__init__.py +37 -0
  17. airbyte_agent_klaviyo/_vendored/connector_sdk/http/adapters/__init__.py +9 -0
  18. airbyte_agent_klaviyo/_vendored/connector_sdk/http/adapters/httpx_adapter.py +251 -0
  19. airbyte_agent_klaviyo/_vendored/connector_sdk/http/config.py +98 -0
  20. airbyte_agent_klaviyo/_vendored/connector_sdk/http/exceptions.py +119 -0
  21. airbyte_agent_klaviyo/_vendored/connector_sdk/http/protocols.py +114 -0
  22. airbyte_agent_klaviyo/_vendored/connector_sdk/http/response.py +104 -0
  23. airbyte_agent_klaviyo/_vendored/connector_sdk/http_client.py +693 -0
  24. airbyte_agent_klaviyo/_vendored/connector_sdk/introspection.py +481 -0
  25. airbyte_agent_klaviyo/_vendored/connector_sdk/logging/__init__.py +11 -0
  26. airbyte_agent_klaviyo/_vendored/connector_sdk/logging/logger.py +273 -0
  27. airbyte_agent_klaviyo/_vendored/connector_sdk/logging/types.py +93 -0
  28. airbyte_agent_klaviyo/_vendored/connector_sdk/observability/__init__.py +11 -0
  29. airbyte_agent_klaviyo/_vendored/connector_sdk/observability/config.py +179 -0
  30. airbyte_agent_klaviyo/_vendored/connector_sdk/observability/models.py +19 -0
  31. airbyte_agent_klaviyo/_vendored/connector_sdk/observability/redactor.py +81 -0
  32. airbyte_agent_klaviyo/_vendored/connector_sdk/observability/session.py +103 -0
  33. airbyte_agent_klaviyo/_vendored/connector_sdk/performance/__init__.py +6 -0
  34. airbyte_agent_klaviyo/_vendored/connector_sdk/performance/instrumentation.py +57 -0
  35. airbyte_agent_klaviyo/_vendored/connector_sdk/performance/metrics.py +93 -0
  36. airbyte_agent_klaviyo/_vendored/connector_sdk/schema/__init__.py +75 -0
  37. airbyte_agent_klaviyo/_vendored/connector_sdk/schema/base.py +201 -0
  38. airbyte_agent_klaviyo/_vendored/connector_sdk/schema/components.py +244 -0
  39. airbyte_agent_klaviyo/_vendored/connector_sdk/schema/connector.py +120 -0
  40. airbyte_agent_klaviyo/_vendored/connector_sdk/schema/extensions.py +301 -0
  41. airbyte_agent_klaviyo/_vendored/connector_sdk/schema/operations.py +156 -0
  42. airbyte_agent_klaviyo/_vendored/connector_sdk/schema/security.py +236 -0
  43. airbyte_agent_klaviyo/_vendored/connector_sdk/secrets.py +182 -0
  44. airbyte_agent_klaviyo/_vendored/connector_sdk/telemetry/__init__.py +10 -0
  45. airbyte_agent_klaviyo/_vendored/connector_sdk/telemetry/config.py +32 -0
  46. airbyte_agent_klaviyo/_vendored/connector_sdk/telemetry/events.py +59 -0
  47. airbyte_agent_klaviyo/_vendored/connector_sdk/telemetry/tracker.py +155 -0
  48. airbyte_agent_klaviyo/_vendored/connector_sdk/types.py +270 -0
  49. airbyte_agent_klaviyo/_vendored/connector_sdk/utils.py +60 -0
  50. airbyte_agent_klaviyo/_vendored/connector_sdk/validation.py +848 -0
  51. airbyte_agent_klaviyo/connector.py +1431 -0
  52. airbyte_agent_klaviyo/connector_model.py +2230 -0
  53. airbyte_agent_klaviyo/models.py +676 -0
  54. airbyte_agent_klaviyo/types.py +1319 -0
  55. airbyte_agent_klaviyo-0.1.0.dist-info/METADATA +151 -0
  56. airbyte_agent_klaviyo-0.1.0.dist-info/RECORD +57 -0
  57. 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]]