airbyte-agent-zendesk-chat 0.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of airbyte-agent-zendesk-chat might be problematic. Click here for more details.
- airbyte_agent_zendesk_chat/__init__.py +193 -0
- airbyte_agent_zendesk_chat/_vendored/__init__.py +1 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/__init__.py +82 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/auth_strategies.py +1120 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/auth_template.py +135 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/cloud_utils/__init__.py +5 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/cloud_utils/client.py +213 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/connector_model_loader.py +965 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/constants.py +78 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/exceptions.py +23 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/executor/__init__.py +31 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/executor/hosted_executor.py +196 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/executor/local_executor.py +1724 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/executor/models.py +190 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/extensions.py +693 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/http/__init__.py +37 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/http/adapters/__init__.py +9 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/http/adapters/httpx_adapter.py +251 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/http/config.py +98 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/http/exceptions.py +119 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/http/protocols.py +114 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/http/response.py +104 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/http_client.py +693 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/introspection.py +262 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/logging/__init__.py +11 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/logging/logger.py +273 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/logging/types.py +93 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/observability/__init__.py +11 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/observability/config.py +179 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/observability/models.py +19 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/observability/redactor.py +81 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/observability/session.py +103 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/performance/__init__.py +6 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/performance/instrumentation.py +57 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/performance/metrics.py +93 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/schema/__init__.py +75 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/schema/base.py +164 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/schema/components.py +239 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/schema/connector.py +120 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/schema/extensions.py +230 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/schema/operations.py +146 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/schema/security.py +223 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/secrets.py +182 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/telemetry/__init__.py +10 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/telemetry/config.py +32 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/telemetry/events.py +59 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/telemetry/tracker.py +155 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/types.py +245 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/utils.py +60 -0
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/validation.py +828 -0
- airbyte_agent_zendesk_chat/connector.py +1465 -0
- airbyte_agent_zendesk_chat/connector_model.py +2424 -0
- airbyte_agent_zendesk_chat/models.py +582 -0
- airbyte_agent_zendesk_chat/types.py +984 -0
- airbyte_agent_zendesk_chat-0.1.1.dist-info/METADATA +130 -0
- airbyte_agent_zendesk_chat-0.1.1.dist-info/RECORD +57 -0
- airbyte_agent_zendesk_chat-0.1.1.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,984 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Type definitions for zendesk-chat 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 AccountsGetParams(TypedDict):
|
|
21
|
+
"""Parameters for accounts.get operation"""
|
|
22
|
+
pass
|
|
23
|
+
|
|
24
|
+
class AgentsListParams(TypedDict):
|
|
25
|
+
"""Parameters for agents.list operation"""
|
|
26
|
+
limit: NotRequired[int]
|
|
27
|
+
since_id: NotRequired[int]
|
|
28
|
+
|
|
29
|
+
class AgentsGetParams(TypedDict):
|
|
30
|
+
"""Parameters for agents.get operation"""
|
|
31
|
+
agent_id: str
|
|
32
|
+
|
|
33
|
+
class AgentTimelineListParams(TypedDict):
|
|
34
|
+
"""Parameters for agent_timeline.list operation"""
|
|
35
|
+
start_time: NotRequired[int]
|
|
36
|
+
limit: NotRequired[int]
|
|
37
|
+
fields: NotRequired[str]
|
|
38
|
+
|
|
39
|
+
class BansListParams(TypedDict):
|
|
40
|
+
"""Parameters for bans.list operation"""
|
|
41
|
+
limit: NotRequired[int]
|
|
42
|
+
since_id: NotRequired[int]
|
|
43
|
+
|
|
44
|
+
class BansGetParams(TypedDict):
|
|
45
|
+
"""Parameters for bans.get operation"""
|
|
46
|
+
ban_id: str
|
|
47
|
+
|
|
48
|
+
class ChatsListParams(TypedDict):
|
|
49
|
+
"""Parameters for chats.list operation"""
|
|
50
|
+
start_time: NotRequired[int]
|
|
51
|
+
limit: NotRequired[int]
|
|
52
|
+
fields: NotRequired[str]
|
|
53
|
+
|
|
54
|
+
class ChatsGetParams(TypedDict):
|
|
55
|
+
"""Parameters for chats.get operation"""
|
|
56
|
+
chat_id: str
|
|
57
|
+
|
|
58
|
+
class DepartmentsListParams(TypedDict):
|
|
59
|
+
"""Parameters for departments.list operation"""
|
|
60
|
+
pass
|
|
61
|
+
|
|
62
|
+
class DepartmentsGetParams(TypedDict):
|
|
63
|
+
"""Parameters for departments.get operation"""
|
|
64
|
+
department_id: str
|
|
65
|
+
|
|
66
|
+
class GoalsListParams(TypedDict):
|
|
67
|
+
"""Parameters for goals.list operation"""
|
|
68
|
+
pass
|
|
69
|
+
|
|
70
|
+
class GoalsGetParams(TypedDict):
|
|
71
|
+
"""Parameters for goals.get operation"""
|
|
72
|
+
goal_id: str
|
|
73
|
+
|
|
74
|
+
class RolesListParams(TypedDict):
|
|
75
|
+
"""Parameters for roles.list operation"""
|
|
76
|
+
pass
|
|
77
|
+
|
|
78
|
+
class RolesGetParams(TypedDict):
|
|
79
|
+
"""Parameters for roles.get operation"""
|
|
80
|
+
role_id: str
|
|
81
|
+
|
|
82
|
+
class RoutingSettingsGetParams(TypedDict):
|
|
83
|
+
"""Parameters for routing_settings.get operation"""
|
|
84
|
+
pass
|
|
85
|
+
|
|
86
|
+
class ShortcutsListParams(TypedDict):
|
|
87
|
+
"""Parameters for shortcuts.list operation"""
|
|
88
|
+
pass
|
|
89
|
+
|
|
90
|
+
class ShortcutsGetParams(TypedDict):
|
|
91
|
+
"""Parameters for shortcuts.get operation"""
|
|
92
|
+
shortcut_id: str
|
|
93
|
+
|
|
94
|
+
class SkillsListParams(TypedDict):
|
|
95
|
+
"""Parameters for skills.list operation"""
|
|
96
|
+
pass
|
|
97
|
+
|
|
98
|
+
class SkillsGetParams(TypedDict):
|
|
99
|
+
"""Parameters for skills.get operation"""
|
|
100
|
+
skill_id: str
|
|
101
|
+
|
|
102
|
+
class TriggersListParams(TypedDict):
|
|
103
|
+
"""Parameters for triggers.list operation"""
|
|
104
|
+
pass
|
|
105
|
+
|
|
106
|
+
# ===== SEARCH TYPES =====
|
|
107
|
+
|
|
108
|
+
# Sort specification
|
|
109
|
+
AirbyteSortOrder = Literal["asc", "desc"]
|
|
110
|
+
|
|
111
|
+
# ===== AGENTS SEARCH TYPES =====
|
|
112
|
+
|
|
113
|
+
class AgentsSearchFilter(TypedDict, total=False):
|
|
114
|
+
"""Available fields for filtering agents search queries."""
|
|
115
|
+
id: int
|
|
116
|
+
"""Unique agent identifier"""
|
|
117
|
+
email: str | None
|
|
118
|
+
"""Agent email address"""
|
|
119
|
+
display_name: str | None
|
|
120
|
+
"""Agent display name"""
|
|
121
|
+
first_name: str | None
|
|
122
|
+
"""Agent first name"""
|
|
123
|
+
last_name: str | None
|
|
124
|
+
"""Agent last name"""
|
|
125
|
+
enabled: bool | None
|
|
126
|
+
"""Whether agent is enabled"""
|
|
127
|
+
role_id: int | None
|
|
128
|
+
"""Agent role ID"""
|
|
129
|
+
departments: list[Any] | None
|
|
130
|
+
"""Department IDs agent belongs to"""
|
|
131
|
+
create_date: str | None
|
|
132
|
+
"""When agent was created"""
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
class AgentsInFilter(TypedDict, total=False):
|
|
136
|
+
"""Available fields for 'in' condition (values are lists)."""
|
|
137
|
+
id: list[int]
|
|
138
|
+
"""Unique agent identifier"""
|
|
139
|
+
email: list[str]
|
|
140
|
+
"""Agent email address"""
|
|
141
|
+
display_name: list[str]
|
|
142
|
+
"""Agent display name"""
|
|
143
|
+
first_name: list[str]
|
|
144
|
+
"""Agent first name"""
|
|
145
|
+
last_name: list[str]
|
|
146
|
+
"""Agent last name"""
|
|
147
|
+
enabled: list[bool]
|
|
148
|
+
"""Whether agent is enabled"""
|
|
149
|
+
role_id: list[int]
|
|
150
|
+
"""Agent role ID"""
|
|
151
|
+
departments: list[list[Any]]
|
|
152
|
+
"""Department IDs agent belongs to"""
|
|
153
|
+
create_date: list[str]
|
|
154
|
+
"""When agent was created"""
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
class AgentsAnyValueFilter(TypedDict, total=False):
|
|
158
|
+
"""Available fields with Any value type. Used for 'contains' and 'any' conditions."""
|
|
159
|
+
id: Any
|
|
160
|
+
"""Unique agent identifier"""
|
|
161
|
+
email: Any
|
|
162
|
+
"""Agent email address"""
|
|
163
|
+
display_name: Any
|
|
164
|
+
"""Agent display name"""
|
|
165
|
+
first_name: Any
|
|
166
|
+
"""Agent first name"""
|
|
167
|
+
last_name: Any
|
|
168
|
+
"""Agent last name"""
|
|
169
|
+
enabled: Any
|
|
170
|
+
"""Whether agent is enabled"""
|
|
171
|
+
role_id: Any
|
|
172
|
+
"""Agent role ID"""
|
|
173
|
+
departments: Any
|
|
174
|
+
"""Department IDs agent belongs to"""
|
|
175
|
+
create_date: Any
|
|
176
|
+
"""When agent was created"""
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
class AgentsStringFilter(TypedDict, total=False):
|
|
180
|
+
"""String fields for text search conditions (like, fuzzy, keyword)."""
|
|
181
|
+
id: str
|
|
182
|
+
"""Unique agent identifier"""
|
|
183
|
+
email: str
|
|
184
|
+
"""Agent email address"""
|
|
185
|
+
display_name: str
|
|
186
|
+
"""Agent display name"""
|
|
187
|
+
first_name: str
|
|
188
|
+
"""Agent first name"""
|
|
189
|
+
last_name: str
|
|
190
|
+
"""Agent last name"""
|
|
191
|
+
enabled: str
|
|
192
|
+
"""Whether agent is enabled"""
|
|
193
|
+
role_id: str
|
|
194
|
+
"""Agent role ID"""
|
|
195
|
+
departments: str
|
|
196
|
+
"""Department IDs agent belongs to"""
|
|
197
|
+
create_date: str
|
|
198
|
+
"""When agent was created"""
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
class AgentsSortFilter(TypedDict, total=False):
|
|
202
|
+
"""Available fields for sorting agents search results."""
|
|
203
|
+
id: AirbyteSortOrder
|
|
204
|
+
"""Unique agent identifier"""
|
|
205
|
+
email: AirbyteSortOrder
|
|
206
|
+
"""Agent email address"""
|
|
207
|
+
display_name: AirbyteSortOrder
|
|
208
|
+
"""Agent display name"""
|
|
209
|
+
first_name: AirbyteSortOrder
|
|
210
|
+
"""Agent first name"""
|
|
211
|
+
last_name: AirbyteSortOrder
|
|
212
|
+
"""Agent last name"""
|
|
213
|
+
enabled: AirbyteSortOrder
|
|
214
|
+
"""Whether agent is enabled"""
|
|
215
|
+
role_id: AirbyteSortOrder
|
|
216
|
+
"""Agent role ID"""
|
|
217
|
+
departments: AirbyteSortOrder
|
|
218
|
+
"""Department IDs agent belongs to"""
|
|
219
|
+
create_date: AirbyteSortOrder
|
|
220
|
+
"""When agent was created"""
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
# Entity-specific condition types for agents
|
|
224
|
+
class AgentsEqCondition(TypedDict, total=False):
|
|
225
|
+
"""Equal to: field equals value."""
|
|
226
|
+
eq: AgentsSearchFilter
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
class AgentsNeqCondition(TypedDict, total=False):
|
|
230
|
+
"""Not equal to: field does not equal value."""
|
|
231
|
+
neq: AgentsSearchFilter
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
class AgentsGtCondition(TypedDict, total=False):
|
|
235
|
+
"""Greater than: field > value."""
|
|
236
|
+
gt: AgentsSearchFilter
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
class AgentsGteCondition(TypedDict, total=False):
|
|
240
|
+
"""Greater than or equal: field >= value."""
|
|
241
|
+
gte: AgentsSearchFilter
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
class AgentsLtCondition(TypedDict, total=False):
|
|
245
|
+
"""Less than: field < value."""
|
|
246
|
+
lt: AgentsSearchFilter
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
class AgentsLteCondition(TypedDict, total=False):
|
|
250
|
+
"""Less than or equal: field <= value."""
|
|
251
|
+
lte: AgentsSearchFilter
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
class AgentsLikeCondition(TypedDict, total=False):
|
|
255
|
+
"""Partial string match with % wildcards."""
|
|
256
|
+
like: AgentsStringFilter
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
class AgentsFuzzyCondition(TypedDict, total=False):
|
|
260
|
+
"""Ordered word text match (case-insensitive)."""
|
|
261
|
+
fuzzy: AgentsStringFilter
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
class AgentsKeywordCondition(TypedDict, total=False):
|
|
265
|
+
"""Keyword text match (any word present)."""
|
|
266
|
+
keyword: AgentsStringFilter
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
class AgentsContainsCondition(TypedDict, total=False):
|
|
270
|
+
"""Check if value exists in array field. Example: {"contains": {"tags": "premium"}}"""
|
|
271
|
+
contains: AgentsAnyValueFilter
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
# Reserved keyword conditions using functional TypedDict syntax
|
|
275
|
+
AgentsInCondition = TypedDict("AgentsInCondition", {"in": AgentsInFilter}, total=False)
|
|
276
|
+
"""In list: field value is in list. Example: {"in": {"status": ["active", "pending"]}}"""
|
|
277
|
+
|
|
278
|
+
AgentsNotCondition = TypedDict("AgentsNotCondition", {"not": "AgentsCondition"}, total=False)
|
|
279
|
+
"""Negates the nested condition."""
|
|
280
|
+
|
|
281
|
+
AgentsAndCondition = TypedDict("AgentsAndCondition", {"and": "list[AgentsCondition]"}, total=False)
|
|
282
|
+
"""True if all nested conditions are true."""
|
|
283
|
+
|
|
284
|
+
AgentsOrCondition = TypedDict("AgentsOrCondition", {"or": "list[AgentsCondition]"}, total=False)
|
|
285
|
+
"""True if any nested condition is true."""
|
|
286
|
+
|
|
287
|
+
AgentsAnyCondition = TypedDict("AgentsAnyCondition", {"any": AgentsAnyValueFilter}, total=False)
|
|
288
|
+
"""Match if ANY element in array field matches nested condition. Example: {"any": {"addresses": {"eq": {"state": "CA"}}}}"""
|
|
289
|
+
|
|
290
|
+
# Union of all agents condition types
|
|
291
|
+
AgentsCondition = (
|
|
292
|
+
AgentsEqCondition
|
|
293
|
+
| AgentsNeqCondition
|
|
294
|
+
| AgentsGtCondition
|
|
295
|
+
| AgentsGteCondition
|
|
296
|
+
| AgentsLtCondition
|
|
297
|
+
| AgentsLteCondition
|
|
298
|
+
| AgentsInCondition
|
|
299
|
+
| AgentsLikeCondition
|
|
300
|
+
| AgentsFuzzyCondition
|
|
301
|
+
| AgentsKeywordCondition
|
|
302
|
+
| AgentsContainsCondition
|
|
303
|
+
| AgentsNotCondition
|
|
304
|
+
| AgentsAndCondition
|
|
305
|
+
| AgentsOrCondition
|
|
306
|
+
| AgentsAnyCondition
|
|
307
|
+
)
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
class AgentsSearchQuery(TypedDict, total=False):
|
|
311
|
+
"""Search query for agents entity."""
|
|
312
|
+
filter: AgentsCondition
|
|
313
|
+
sort: list[AgentsSortFilter]
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
# ===== CHATS SEARCH TYPES =====
|
|
317
|
+
|
|
318
|
+
class ChatsSearchFilter(TypedDict, total=False):
|
|
319
|
+
"""Available fields for filtering chats search queries."""
|
|
320
|
+
id: str
|
|
321
|
+
"""Unique chat identifier"""
|
|
322
|
+
timestamp: str | None
|
|
323
|
+
"""Chat start timestamp"""
|
|
324
|
+
update_timestamp: str | None
|
|
325
|
+
"""Last update timestamp"""
|
|
326
|
+
department_id: int | None
|
|
327
|
+
"""Department ID"""
|
|
328
|
+
department_name: str | None
|
|
329
|
+
"""Department name"""
|
|
330
|
+
duration: int | None
|
|
331
|
+
"""Chat duration in seconds"""
|
|
332
|
+
rating: str | None
|
|
333
|
+
"""Satisfaction rating"""
|
|
334
|
+
missed: bool | None
|
|
335
|
+
"""Whether chat was missed"""
|
|
336
|
+
agent_ids: list[Any] | None
|
|
337
|
+
"""IDs of agents in chat"""
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
class ChatsInFilter(TypedDict, total=False):
|
|
341
|
+
"""Available fields for 'in' condition (values are lists)."""
|
|
342
|
+
id: list[str]
|
|
343
|
+
"""Unique chat identifier"""
|
|
344
|
+
timestamp: list[str]
|
|
345
|
+
"""Chat start timestamp"""
|
|
346
|
+
update_timestamp: list[str]
|
|
347
|
+
"""Last update timestamp"""
|
|
348
|
+
department_id: list[int]
|
|
349
|
+
"""Department ID"""
|
|
350
|
+
department_name: list[str]
|
|
351
|
+
"""Department name"""
|
|
352
|
+
duration: list[int]
|
|
353
|
+
"""Chat duration in seconds"""
|
|
354
|
+
rating: list[str]
|
|
355
|
+
"""Satisfaction rating"""
|
|
356
|
+
missed: list[bool]
|
|
357
|
+
"""Whether chat was missed"""
|
|
358
|
+
agent_ids: list[list[Any]]
|
|
359
|
+
"""IDs of agents in chat"""
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
class ChatsAnyValueFilter(TypedDict, total=False):
|
|
363
|
+
"""Available fields with Any value type. Used for 'contains' and 'any' conditions."""
|
|
364
|
+
id: Any
|
|
365
|
+
"""Unique chat identifier"""
|
|
366
|
+
timestamp: Any
|
|
367
|
+
"""Chat start timestamp"""
|
|
368
|
+
update_timestamp: Any
|
|
369
|
+
"""Last update timestamp"""
|
|
370
|
+
department_id: Any
|
|
371
|
+
"""Department ID"""
|
|
372
|
+
department_name: Any
|
|
373
|
+
"""Department name"""
|
|
374
|
+
duration: Any
|
|
375
|
+
"""Chat duration in seconds"""
|
|
376
|
+
rating: Any
|
|
377
|
+
"""Satisfaction rating"""
|
|
378
|
+
missed: Any
|
|
379
|
+
"""Whether chat was missed"""
|
|
380
|
+
agent_ids: Any
|
|
381
|
+
"""IDs of agents in chat"""
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
class ChatsStringFilter(TypedDict, total=False):
|
|
385
|
+
"""String fields for text search conditions (like, fuzzy, keyword)."""
|
|
386
|
+
id: str
|
|
387
|
+
"""Unique chat identifier"""
|
|
388
|
+
timestamp: str
|
|
389
|
+
"""Chat start timestamp"""
|
|
390
|
+
update_timestamp: str
|
|
391
|
+
"""Last update timestamp"""
|
|
392
|
+
department_id: str
|
|
393
|
+
"""Department ID"""
|
|
394
|
+
department_name: str
|
|
395
|
+
"""Department name"""
|
|
396
|
+
duration: str
|
|
397
|
+
"""Chat duration in seconds"""
|
|
398
|
+
rating: str
|
|
399
|
+
"""Satisfaction rating"""
|
|
400
|
+
missed: str
|
|
401
|
+
"""Whether chat was missed"""
|
|
402
|
+
agent_ids: str
|
|
403
|
+
"""IDs of agents in chat"""
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
class ChatsSortFilter(TypedDict, total=False):
|
|
407
|
+
"""Available fields for sorting chats search results."""
|
|
408
|
+
id: AirbyteSortOrder
|
|
409
|
+
"""Unique chat identifier"""
|
|
410
|
+
timestamp: AirbyteSortOrder
|
|
411
|
+
"""Chat start timestamp"""
|
|
412
|
+
update_timestamp: AirbyteSortOrder
|
|
413
|
+
"""Last update timestamp"""
|
|
414
|
+
department_id: AirbyteSortOrder
|
|
415
|
+
"""Department ID"""
|
|
416
|
+
department_name: AirbyteSortOrder
|
|
417
|
+
"""Department name"""
|
|
418
|
+
duration: AirbyteSortOrder
|
|
419
|
+
"""Chat duration in seconds"""
|
|
420
|
+
rating: AirbyteSortOrder
|
|
421
|
+
"""Satisfaction rating"""
|
|
422
|
+
missed: AirbyteSortOrder
|
|
423
|
+
"""Whether chat was missed"""
|
|
424
|
+
agent_ids: AirbyteSortOrder
|
|
425
|
+
"""IDs of agents in chat"""
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
# Entity-specific condition types for chats
|
|
429
|
+
class ChatsEqCondition(TypedDict, total=False):
|
|
430
|
+
"""Equal to: field equals value."""
|
|
431
|
+
eq: ChatsSearchFilter
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
class ChatsNeqCondition(TypedDict, total=False):
|
|
435
|
+
"""Not equal to: field does not equal value."""
|
|
436
|
+
neq: ChatsSearchFilter
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
class ChatsGtCondition(TypedDict, total=False):
|
|
440
|
+
"""Greater than: field > value."""
|
|
441
|
+
gt: ChatsSearchFilter
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
class ChatsGteCondition(TypedDict, total=False):
|
|
445
|
+
"""Greater than or equal: field >= value."""
|
|
446
|
+
gte: ChatsSearchFilter
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
class ChatsLtCondition(TypedDict, total=False):
|
|
450
|
+
"""Less than: field < value."""
|
|
451
|
+
lt: ChatsSearchFilter
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
class ChatsLteCondition(TypedDict, total=False):
|
|
455
|
+
"""Less than or equal: field <= value."""
|
|
456
|
+
lte: ChatsSearchFilter
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
class ChatsLikeCondition(TypedDict, total=False):
|
|
460
|
+
"""Partial string match with % wildcards."""
|
|
461
|
+
like: ChatsStringFilter
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
class ChatsFuzzyCondition(TypedDict, total=False):
|
|
465
|
+
"""Ordered word text match (case-insensitive)."""
|
|
466
|
+
fuzzy: ChatsStringFilter
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
class ChatsKeywordCondition(TypedDict, total=False):
|
|
470
|
+
"""Keyword text match (any word present)."""
|
|
471
|
+
keyword: ChatsStringFilter
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
class ChatsContainsCondition(TypedDict, total=False):
|
|
475
|
+
"""Check if value exists in array field. Example: {"contains": {"tags": "premium"}}"""
|
|
476
|
+
contains: ChatsAnyValueFilter
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
# Reserved keyword conditions using functional TypedDict syntax
|
|
480
|
+
ChatsInCondition = TypedDict("ChatsInCondition", {"in": ChatsInFilter}, total=False)
|
|
481
|
+
"""In list: field value is in list. Example: {"in": {"status": ["active", "pending"]}}"""
|
|
482
|
+
|
|
483
|
+
ChatsNotCondition = TypedDict("ChatsNotCondition", {"not": "ChatsCondition"}, total=False)
|
|
484
|
+
"""Negates the nested condition."""
|
|
485
|
+
|
|
486
|
+
ChatsAndCondition = TypedDict("ChatsAndCondition", {"and": "list[ChatsCondition]"}, total=False)
|
|
487
|
+
"""True if all nested conditions are true."""
|
|
488
|
+
|
|
489
|
+
ChatsOrCondition = TypedDict("ChatsOrCondition", {"or": "list[ChatsCondition]"}, total=False)
|
|
490
|
+
"""True if any nested condition is true."""
|
|
491
|
+
|
|
492
|
+
ChatsAnyCondition = TypedDict("ChatsAnyCondition", {"any": ChatsAnyValueFilter}, total=False)
|
|
493
|
+
"""Match if ANY element in array field matches nested condition. Example: {"any": {"addresses": {"eq": {"state": "CA"}}}}"""
|
|
494
|
+
|
|
495
|
+
# Union of all chats condition types
|
|
496
|
+
ChatsCondition = (
|
|
497
|
+
ChatsEqCondition
|
|
498
|
+
| ChatsNeqCondition
|
|
499
|
+
| ChatsGtCondition
|
|
500
|
+
| ChatsGteCondition
|
|
501
|
+
| ChatsLtCondition
|
|
502
|
+
| ChatsLteCondition
|
|
503
|
+
| ChatsInCondition
|
|
504
|
+
| ChatsLikeCondition
|
|
505
|
+
| ChatsFuzzyCondition
|
|
506
|
+
| ChatsKeywordCondition
|
|
507
|
+
| ChatsContainsCondition
|
|
508
|
+
| ChatsNotCondition
|
|
509
|
+
| ChatsAndCondition
|
|
510
|
+
| ChatsOrCondition
|
|
511
|
+
| ChatsAnyCondition
|
|
512
|
+
)
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
class ChatsSearchQuery(TypedDict, total=False):
|
|
516
|
+
"""Search query for chats entity."""
|
|
517
|
+
filter: ChatsCondition
|
|
518
|
+
sort: list[ChatsSortFilter]
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
# ===== DEPARTMENTS SEARCH TYPES =====
|
|
522
|
+
|
|
523
|
+
class DepartmentsSearchFilter(TypedDict, total=False):
|
|
524
|
+
"""Available fields for filtering departments search queries."""
|
|
525
|
+
id: int
|
|
526
|
+
"""Department ID"""
|
|
527
|
+
name: str | None
|
|
528
|
+
"""Department name"""
|
|
529
|
+
enabled: bool | None
|
|
530
|
+
"""Whether department is enabled"""
|
|
531
|
+
members: list[Any] | None
|
|
532
|
+
"""Agent IDs in department"""
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
class DepartmentsInFilter(TypedDict, total=False):
|
|
536
|
+
"""Available fields for 'in' condition (values are lists)."""
|
|
537
|
+
id: list[int]
|
|
538
|
+
"""Department ID"""
|
|
539
|
+
name: list[str]
|
|
540
|
+
"""Department name"""
|
|
541
|
+
enabled: list[bool]
|
|
542
|
+
"""Whether department is enabled"""
|
|
543
|
+
members: list[list[Any]]
|
|
544
|
+
"""Agent IDs in department"""
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
class DepartmentsAnyValueFilter(TypedDict, total=False):
|
|
548
|
+
"""Available fields with Any value type. Used for 'contains' and 'any' conditions."""
|
|
549
|
+
id: Any
|
|
550
|
+
"""Department ID"""
|
|
551
|
+
name: Any
|
|
552
|
+
"""Department name"""
|
|
553
|
+
enabled: Any
|
|
554
|
+
"""Whether department is enabled"""
|
|
555
|
+
members: Any
|
|
556
|
+
"""Agent IDs in department"""
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
class DepartmentsStringFilter(TypedDict, total=False):
|
|
560
|
+
"""String fields for text search conditions (like, fuzzy, keyword)."""
|
|
561
|
+
id: str
|
|
562
|
+
"""Department ID"""
|
|
563
|
+
name: str
|
|
564
|
+
"""Department name"""
|
|
565
|
+
enabled: str
|
|
566
|
+
"""Whether department is enabled"""
|
|
567
|
+
members: str
|
|
568
|
+
"""Agent IDs in department"""
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
class DepartmentsSortFilter(TypedDict, total=False):
|
|
572
|
+
"""Available fields for sorting departments search results."""
|
|
573
|
+
id: AirbyteSortOrder
|
|
574
|
+
"""Department ID"""
|
|
575
|
+
name: AirbyteSortOrder
|
|
576
|
+
"""Department name"""
|
|
577
|
+
enabled: AirbyteSortOrder
|
|
578
|
+
"""Whether department is enabled"""
|
|
579
|
+
members: AirbyteSortOrder
|
|
580
|
+
"""Agent IDs in department"""
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
# Entity-specific condition types for departments
|
|
584
|
+
class DepartmentsEqCondition(TypedDict, total=False):
|
|
585
|
+
"""Equal to: field equals value."""
|
|
586
|
+
eq: DepartmentsSearchFilter
|
|
587
|
+
|
|
588
|
+
|
|
589
|
+
class DepartmentsNeqCondition(TypedDict, total=False):
|
|
590
|
+
"""Not equal to: field does not equal value."""
|
|
591
|
+
neq: DepartmentsSearchFilter
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
class DepartmentsGtCondition(TypedDict, total=False):
|
|
595
|
+
"""Greater than: field > value."""
|
|
596
|
+
gt: DepartmentsSearchFilter
|
|
597
|
+
|
|
598
|
+
|
|
599
|
+
class DepartmentsGteCondition(TypedDict, total=False):
|
|
600
|
+
"""Greater than or equal: field >= value."""
|
|
601
|
+
gte: DepartmentsSearchFilter
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
class DepartmentsLtCondition(TypedDict, total=False):
|
|
605
|
+
"""Less than: field < value."""
|
|
606
|
+
lt: DepartmentsSearchFilter
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
class DepartmentsLteCondition(TypedDict, total=False):
|
|
610
|
+
"""Less than or equal: field <= value."""
|
|
611
|
+
lte: DepartmentsSearchFilter
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
class DepartmentsLikeCondition(TypedDict, total=False):
|
|
615
|
+
"""Partial string match with % wildcards."""
|
|
616
|
+
like: DepartmentsStringFilter
|
|
617
|
+
|
|
618
|
+
|
|
619
|
+
class DepartmentsFuzzyCondition(TypedDict, total=False):
|
|
620
|
+
"""Ordered word text match (case-insensitive)."""
|
|
621
|
+
fuzzy: DepartmentsStringFilter
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
class DepartmentsKeywordCondition(TypedDict, total=False):
|
|
625
|
+
"""Keyword text match (any word present)."""
|
|
626
|
+
keyword: DepartmentsStringFilter
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
class DepartmentsContainsCondition(TypedDict, total=False):
|
|
630
|
+
"""Check if value exists in array field. Example: {"contains": {"tags": "premium"}}"""
|
|
631
|
+
contains: DepartmentsAnyValueFilter
|
|
632
|
+
|
|
633
|
+
|
|
634
|
+
# Reserved keyword conditions using functional TypedDict syntax
|
|
635
|
+
DepartmentsInCondition = TypedDict("DepartmentsInCondition", {"in": DepartmentsInFilter}, total=False)
|
|
636
|
+
"""In list: field value is in list. Example: {"in": {"status": ["active", "pending"]}}"""
|
|
637
|
+
|
|
638
|
+
DepartmentsNotCondition = TypedDict("DepartmentsNotCondition", {"not": "DepartmentsCondition"}, total=False)
|
|
639
|
+
"""Negates the nested condition."""
|
|
640
|
+
|
|
641
|
+
DepartmentsAndCondition = TypedDict("DepartmentsAndCondition", {"and": "list[DepartmentsCondition]"}, total=False)
|
|
642
|
+
"""True if all nested conditions are true."""
|
|
643
|
+
|
|
644
|
+
DepartmentsOrCondition = TypedDict("DepartmentsOrCondition", {"or": "list[DepartmentsCondition]"}, total=False)
|
|
645
|
+
"""True if any nested condition is true."""
|
|
646
|
+
|
|
647
|
+
DepartmentsAnyCondition = TypedDict("DepartmentsAnyCondition", {"any": DepartmentsAnyValueFilter}, total=False)
|
|
648
|
+
"""Match if ANY element in array field matches nested condition. Example: {"any": {"addresses": {"eq": {"state": "CA"}}}}"""
|
|
649
|
+
|
|
650
|
+
# Union of all departments condition types
|
|
651
|
+
DepartmentsCondition = (
|
|
652
|
+
DepartmentsEqCondition
|
|
653
|
+
| DepartmentsNeqCondition
|
|
654
|
+
| DepartmentsGtCondition
|
|
655
|
+
| DepartmentsGteCondition
|
|
656
|
+
| DepartmentsLtCondition
|
|
657
|
+
| DepartmentsLteCondition
|
|
658
|
+
| DepartmentsInCondition
|
|
659
|
+
| DepartmentsLikeCondition
|
|
660
|
+
| DepartmentsFuzzyCondition
|
|
661
|
+
| DepartmentsKeywordCondition
|
|
662
|
+
| DepartmentsContainsCondition
|
|
663
|
+
| DepartmentsNotCondition
|
|
664
|
+
| DepartmentsAndCondition
|
|
665
|
+
| DepartmentsOrCondition
|
|
666
|
+
| DepartmentsAnyCondition
|
|
667
|
+
)
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
class DepartmentsSearchQuery(TypedDict, total=False):
|
|
671
|
+
"""Search query for departments entity."""
|
|
672
|
+
filter: DepartmentsCondition
|
|
673
|
+
sort: list[DepartmentsSortFilter]
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
# ===== SHORTCUTS SEARCH TYPES =====
|
|
677
|
+
|
|
678
|
+
class ShortcutsSearchFilter(TypedDict, total=False):
|
|
679
|
+
"""Available fields for filtering shortcuts search queries."""
|
|
680
|
+
id: int
|
|
681
|
+
"""Shortcut ID"""
|
|
682
|
+
name: str | None
|
|
683
|
+
"""Shortcut name/trigger"""
|
|
684
|
+
message: str | None
|
|
685
|
+
"""Shortcut message content"""
|
|
686
|
+
tags: list[Any] | None
|
|
687
|
+
"""Tags applied when shortcut is used"""
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
class ShortcutsInFilter(TypedDict, total=False):
|
|
691
|
+
"""Available fields for 'in' condition (values are lists)."""
|
|
692
|
+
id: list[int]
|
|
693
|
+
"""Shortcut ID"""
|
|
694
|
+
name: list[str]
|
|
695
|
+
"""Shortcut name/trigger"""
|
|
696
|
+
message: list[str]
|
|
697
|
+
"""Shortcut message content"""
|
|
698
|
+
tags: list[list[Any]]
|
|
699
|
+
"""Tags applied when shortcut is used"""
|
|
700
|
+
|
|
701
|
+
|
|
702
|
+
class ShortcutsAnyValueFilter(TypedDict, total=False):
|
|
703
|
+
"""Available fields with Any value type. Used for 'contains' and 'any' conditions."""
|
|
704
|
+
id: Any
|
|
705
|
+
"""Shortcut ID"""
|
|
706
|
+
name: Any
|
|
707
|
+
"""Shortcut name/trigger"""
|
|
708
|
+
message: Any
|
|
709
|
+
"""Shortcut message content"""
|
|
710
|
+
tags: Any
|
|
711
|
+
"""Tags applied when shortcut is used"""
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
class ShortcutsStringFilter(TypedDict, total=False):
|
|
715
|
+
"""String fields for text search conditions (like, fuzzy, keyword)."""
|
|
716
|
+
id: str
|
|
717
|
+
"""Shortcut ID"""
|
|
718
|
+
name: str
|
|
719
|
+
"""Shortcut name/trigger"""
|
|
720
|
+
message: str
|
|
721
|
+
"""Shortcut message content"""
|
|
722
|
+
tags: str
|
|
723
|
+
"""Tags applied when shortcut is used"""
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
class ShortcutsSortFilter(TypedDict, total=False):
|
|
727
|
+
"""Available fields for sorting shortcuts search results."""
|
|
728
|
+
id: AirbyteSortOrder
|
|
729
|
+
"""Shortcut ID"""
|
|
730
|
+
name: AirbyteSortOrder
|
|
731
|
+
"""Shortcut name/trigger"""
|
|
732
|
+
message: AirbyteSortOrder
|
|
733
|
+
"""Shortcut message content"""
|
|
734
|
+
tags: AirbyteSortOrder
|
|
735
|
+
"""Tags applied when shortcut is used"""
|
|
736
|
+
|
|
737
|
+
|
|
738
|
+
# Entity-specific condition types for shortcuts
|
|
739
|
+
class ShortcutsEqCondition(TypedDict, total=False):
|
|
740
|
+
"""Equal to: field equals value."""
|
|
741
|
+
eq: ShortcutsSearchFilter
|
|
742
|
+
|
|
743
|
+
|
|
744
|
+
class ShortcutsNeqCondition(TypedDict, total=False):
|
|
745
|
+
"""Not equal to: field does not equal value."""
|
|
746
|
+
neq: ShortcutsSearchFilter
|
|
747
|
+
|
|
748
|
+
|
|
749
|
+
class ShortcutsGtCondition(TypedDict, total=False):
|
|
750
|
+
"""Greater than: field > value."""
|
|
751
|
+
gt: ShortcutsSearchFilter
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
class ShortcutsGteCondition(TypedDict, total=False):
|
|
755
|
+
"""Greater than or equal: field >= value."""
|
|
756
|
+
gte: ShortcutsSearchFilter
|
|
757
|
+
|
|
758
|
+
|
|
759
|
+
class ShortcutsLtCondition(TypedDict, total=False):
|
|
760
|
+
"""Less than: field < value."""
|
|
761
|
+
lt: ShortcutsSearchFilter
|
|
762
|
+
|
|
763
|
+
|
|
764
|
+
class ShortcutsLteCondition(TypedDict, total=False):
|
|
765
|
+
"""Less than or equal: field <= value."""
|
|
766
|
+
lte: ShortcutsSearchFilter
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
class ShortcutsLikeCondition(TypedDict, total=False):
|
|
770
|
+
"""Partial string match with % wildcards."""
|
|
771
|
+
like: ShortcutsStringFilter
|
|
772
|
+
|
|
773
|
+
|
|
774
|
+
class ShortcutsFuzzyCondition(TypedDict, total=False):
|
|
775
|
+
"""Ordered word text match (case-insensitive)."""
|
|
776
|
+
fuzzy: ShortcutsStringFilter
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
class ShortcutsKeywordCondition(TypedDict, total=False):
|
|
780
|
+
"""Keyword text match (any word present)."""
|
|
781
|
+
keyword: ShortcutsStringFilter
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
class ShortcutsContainsCondition(TypedDict, total=False):
|
|
785
|
+
"""Check if value exists in array field. Example: {"contains": {"tags": "premium"}}"""
|
|
786
|
+
contains: ShortcutsAnyValueFilter
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
# Reserved keyword conditions using functional TypedDict syntax
|
|
790
|
+
ShortcutsInCondition = TypedDict("ShortcutsInCondition", {"in": ShortcutsInFilter}, total=False)
|
|
791
|
+
"""In list: field value is in list. Example: {"in": {"status": ["active", "pending"]}}"""
|
|
792
|
+
|
|
793
|
+
ShortcutsNotCondition = TypedDict("ShortcutsNotCondition", {"not": "ShortcutsCondition"}, total=False)
|
|
794
|
+
"""Negates the nested condition."""
|
|
795
|
+
|
|
796
|
+
ShortcutsAndCondition = TypedDict("ShortcutsAndCondition", {"and": "list[ShortcutsCondition]"}, total=False)
|
|
797
|
+
"""True if all nested conditions are true."""
|
|
798
|
+
|
|
799
|
+
ShortcutsOrCondition = TypedDict("ShortcutsOrCondition", {"or": "list[ShortcutsCondition]"}, total=False)
|
|
800
|
+
"""True if any nested condition is true."""
|
|
801
|
+
|
|
802
|
+
ShortcutsAnyCondition = TypedDict("ShortcutsAnyCondition", {"any": ShortcutsAnyValueFilter}, total=False)
|
|
803
|
+
"""Match if ANY element in array field matches nested condition. Example: {"any": {"addresses": {"eq": {"state": "CA"}}}}"""
|
|
804
|
+
|
|
805
|
+
# Union of all shortcuts condition types
|
|
806
|
+
ShortcutsCondition = (
|
|
807
|
+
ShortcutsEqCondition
|
|
808
|
+
| ShortcutsNeqCondition
|
|
809
|
+
| ShortcutsGtCondition
|
|
810
|
+
| ShortcutsGteCondition
|
|
811
|
+
| ShortcutsLtCondition
|
|
812
|
+
| ShortcutsLteCondition
|
|
813
|
+
| ShortcutsInCondition
|
|
814
|
+
| ShortcutsLikeCondition
|
|
815
|
+
| ShortcutsFuzzyCondition
|
|
816
|
+
| ShortcutsKeywordCondition
|
|
817
|
+
| ShortcutsContainsCondition
|
|
818
|
+
| ShortcutsNotCondition
|
|
819
|
+
| ShortcutsAndCondition
|
|
820
|
+
| ShortcutsOrCondition
|
|
821
|
+
| ShortcutsAnyCondition
|
|
822
|
+
)
|
|
823
|
+
|
|
824
|
+
|
|
825
|
+
class ShortcutsSearchQuery(TypedDict, total=False):
|
|
826
|
+
"""Search query for shortcuts entity."""
|
|
827
|
+
filter: ShortcutsCondition
|
|
828
|
+
sort: list[ShortcutsSortFilter]
|
|
829
|
+
|
|
830
|
+
|
|
831
|
+
# ===== TRIGGERS SEARCH TYPES =====
|
|
832
|
+
|
|
833
|
+
class TriggersSearchFilter(TypedDict, total=False):
|
|
834
|
+
"""Available fields for filtering triggers search queries."""
|
|
835
|
+
id: int
|
|
836
|
+
"""Trigger ID"""
|
|
837
|
+
name: str | None
|
|
838
|
+
"""Trigger name"""
|
|
839
|
+
enabled: bool | None
|
|
840
|
+
"""Whether trigger is enabled"""
|
|
841
|
+
|
|
842
|
+
|
|
843
|
+
class TriggersInFilter(TypedDict, total=False):
|
|
844
|
+
"""Available fields for 'in' condition (values are lists)."""
|
|
845
|
+
id: list[int]
|
|
846
|
+
"""Trigger ID"""
|
|
847
|
+
name: list[str]
|
|
848
|
+
"""Trigger name"""
|
|
849
|
+
enabled: list[bool]
|
|
850
|
+
"""Whether trigger is enabled"""
|
|
851
|
+
|
|
852
|
+
|
|
853
|
+
class TriggersAnyValueFilter(TypedDict, total=False):
|
|
854
|
+
"""Available fields with Any value type. Used for 'contains' and 'any' conditions."""
|
|
855
|
+
id: Any
|
|
856
|
+
"""Trigger ID"""
|
|
857
|
+
name: Any
|
|
858
|
+
"""Trigger name"""
|
|
859
|
+
enabled: Any
|
|
860
|
+
"""Whether trigger is enabled"""
|
|
861
|
+
|
|
862
|
+
|
|
863
|
+
class TriggersStringFilter(TypedDict, total=False):
|
|
864
|
+
"""String fields for text search conditions (like, fuzzy, keyword)."""
|
|
865
|
+
id: str
|
|
866
|
+
"""Trigger ID"""
|
|
867
|
+
name: str
|
|
868
|
+
"""Trigger name"""
|
|
869
|
+
enabled: str
|
|
870
|
+
"""Whether trigger is enabled"""
|
|
871
|
+
|
|
872
|
+
|
|
873
|
+
class TriggersSortFilter(TypedDict, total=False):
|
|
874
|
+
"""Available fields for sorting triggers search results."""
|
|
875
|
+
id: AirbyteSortOrder
|
|
876
|
+
"""Trigger ID"""
|
|
877
|
+
name: AirbyteSortOrder
|
|
878
|
+
"""Trigger name"""
|
|
879
|
+
enabled: AirbyteSortOrder
|
|
880
|
+
"""Whether trigger is enabled"""
|
|
881
|
+
|
|
882
|
+
|
|
883
|
+
# Entity-specific condition types for triggers
|
|
884
|
+
class TriggersEqCondition(TypedDict, total=False):
|
|
885
|
+
"""Equal to: field equals value."""
|
|
886
|
+
eq: TriggersSearchFilter
|
|
887
|
+
|
|
888
|
+
|
|
889
|
+
class TriggersNeqCondition(TypedDict, total=False):
|
|
890
|
+
"""Not equal to: field does not equal value."""
|
|
891
|
+
neq: TriggersSearchFilter
|
|
892
|
+
|
|
893
|
+
|
|
894
|
+
class TriggersGtCondition(TypedDict, total=False):
|
|
895
|
+
"""Greater than: field > value."""
|
|
896
|
+
gt: TriggersSearchFilter
|
|
897
|
+
|
|
898
|
+
|
|
899
|
+
class TriggersGteCondition(TypedDict, total=False):
|
|
900
|
+
"""Greater than or equal: field >= value."""
|
|
901
|
+
gte: TriggersSearchFilter
|
|
902
|
+
|
|
903
|
+
|
|
904
|
+
class TriggersLtCondition(TypedDict, total=False):
|
|
905
|
+
"""Less than: field < value."""
|
|
906
|
+
lt: TriggersSearchFilter
|
|
907
|
+
|
|
908
|
+
|
|
909
|
+
class TriggersLteCondition(TypedDict, total=False):
|
|
910
|
+
"""Less than or equal: field <= value."""
|
|
911
|
+
lte: TriggersSearchFilter
|
|
912
|
+
|
|
913
|
+
|
|
914
|
+
class TriggersLikeCondition(TypedDict, total=False):
|
|
915
|
+
"""Partial string match with % wildcards."""
|
|
916
|
+
like: TriggersStringFilter
|
|
917
|
+
|
|
918
|
+
|
|
919
|
+
class TriggersFuzzyCondition(TypedDict, total=False):
|
|
920
|
+
"""Ordered word text match (case-insensitive)."""
|
|
921
|
+
fuzzy: TriggersStringFilter
|
|
922
|
+
|
|
923
|
+
|
|
924
|
+
class TriggersKeywordCondition(TypedDict, total=False):
|
|
925
|
+
"""Keyword text match (any word present)."""
|
|
926
|
+
keyword: TriggersStringFilter
|
|
927
|
+
|
|
928
|
+
|
|
929
|
+
class TriggersContainsCondition(TypedDict, total=False):
|
|
930
|
+
"""Check if value exists in array field. Example: {"contains": {"tags": "premium"}}"""
|
|
931
|
+
contains: TriggersAnyValueFilter
|
|
932
|
+
|
|
933
|
+
|
|
934
|
+
# Reserved keyword conditions using functional TypedDict syntax
|
|
935
|
+
TriggersInCondition = TypedDict("TriggersInCondition", {"in": TriggersInFilter}, total=False)
|
|
936
|
+
"""In list: field value is in list. Example: {"in": {"status": ["active", "pending"]}}"""
|
|
937
|
+
|
|
938
|
+
TriggersNotCondition = TypedDict("TriggersNotCondition", {"not": "TriggersCondition"}, total=False)
|
|
939
|
+
"""Negates the nested condition."""
|
|
940
|
+
|
|
941
|
+
TriggersAndCondition = TypedDict("TriggersAndCondition", {"and": "list[TriggersCondition]"}, total=False)
|
|
942
|
+
"""True if all nested conditions are true."""
|
|
943
|
+
|
|
944
|
+
TriggersOrCondition = TypedDict("TriggersOrCondition", {"or": "list[TriggersCondition]"}, total=False)
|
|
945
|
+
"""True if any nested condition is true."""
|
|
946
|
+
|
|
947
|
+
TriggersAnyCondition = TypedDict("TriggersAnyCondition", {"any": TriggersAnyValueFilter}, total=False)
|
|
948
|
+
"""Match if ANY element in array field matches nested condition. Example: {"any": {"addresses": {"eq": {"state": "CA"}}}}"""
|
|
949
|
+
|
|
950
|
+
# Union of all triggers condition types
|
|
951
|
+
TriggersCondition = (
|
|
952
|
+
TriggersEqCondition
|
|
953
|
+
| TriggersNeqCondition
|
|
954
|
+
| TriggersGtCondition
|
|
955
|
+
| TriggersGteCondition
|
|
956
|
+
| TriggersLtCondition
|
|
957
|
+
| TriggersLteCondition
|
|
958
|
+
| TriggersInCondition
|
|
959
|
+
| TriggersLikeCondition
|
|
960
|
+
| TriggersFuzzyCondition
|
|
961
|
+
| TriggersKeywordCondition
|
|
962
|
+
| TriggersContainsCondition
|
|
963
|
+
| TriggersNotCondition
|
|
964
|
+
| TriggersAndCondition
|
|
965
|
+
| TriggersOrCondition
|
|
966
|
+
| TriggersAnyCondition
|
|
967
|
+
)
|
|
968
|
+
|
|
969
|
+
|
|
970
|
+
class TriggersSearchQuery(TypedDict, total=False):
|
|
971
|
+
"""Search query for triggers entity."""
|
|
972
|
+
filter: TriggersCondition
|
|
973
|
+
sort: list[TriggersSortFilter]
|
|
974
|
+
|
|
975
|
+
|
|
976
|
+
|
|
977
|
+
# ===== SEARCH PARAMS =====
|
|
978
|
+
|
|
979
|
+
class AirbyteSearchParams(TypedDict, total=False):
|
|
980
|
+
"""Parameters for Airbyte cache search operations (generic, use entity-specific query types for better type hints)."""
|
|
981
|
+
query: dict[str, Any]
|
|
982
|
+
limit: int
|
|
983
|
+
cursor: str
|
|
984
|
+
fields: list[list[str]]
|