airbyte-agent-slack 0.1.19__tar.gz → 0.1.21__tar.gz

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 (62) hide show
  1. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/CHANGELOG.md +10 -0
  2. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/PKG-INFO +8 -4
  3. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/README.md +7 -3
  4. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/REFERENCE.md +260 -2
  5. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/__init__.py +32 -4
  6. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/executor/local_executor.py +3 -1
  7. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/schema/base.py +3 -1
  8. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/schema/components.py +5 -0
  9. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/schema/extensions.py +71 -0
  10. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/connector.py +172 -1
  11. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/connector_model.py +1 -1
  12. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/models.py +168 -8
  13. airbyte_agent_slack-0.1.21/airbyte_agent_slack/types.py +883 -0
  14. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/pyproject.toml +1 -1
  15. airbyte_agent_slack-0.1.19/airbyte_agent_slack/types.py +0 -98
  16. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/.gitignore +0 -0
  17. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/AUTH.md +0 -0
  18. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/__init__.py +0 -0
  19. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/__init__.py +0 -0
  20. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/auth_strategies.py +0 -0
  21. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/auth_template.py +0 -0
  22. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/cloud_utils/__init__.py +0 -0
  23. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/cloud_utils/client.py +0 -0
  24. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/connector_model_loader.py +0 -0
  25. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/constants.py +0 -0
  26. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/exceptions.py +0 -0
  27. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/executor/__init__.py +0 -0
  28. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/executor/hosted_executor.py +0 -0
  29. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/executor/models.py +0 -0
  30. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/extensions.py +0 -0
  31. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/http/__init__.py +0 -0
  32. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/http/adapters/__init__.py +0 -0
  33. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/http/adapters/httpx_adapter.py +0 -0
  34. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/http/config.py +0 -0
  35. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/http/exceptions.py +0 -0
  36. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/http/protocols.py +0 -0
  37. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/http/response.py +0 -0
  38. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/http_client.py +0 -0
  39. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/introspection.py +0 -0
  40. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/logging/__init__.py +0 -0
  41. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/logging/logger.py +0 -0
  42. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/logging/types.py +0 -0
  43. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/observability/__init__.py +0 -0
  44. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/observability/config.py +0 -0
  45. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/observability/models.py +0 -0
  46. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/observability/redactor.py +0 -0
  47. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/observability/session.py +0 -0
  48. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/performance/__init__.py +0 -0
  49. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/performance/instrumentation.py +0 -0
  50. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/performance/metrics.py +0 -0
  51. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/schema/__init__.py +0 -0
  52. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/schema/connector.py +0 -0
  53. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/schema/operations.py +0 -0
  54. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/schema/security.py +0 -0
  55. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/secrets.py +0 -0
  56. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/telemetry/__init__.py +0 -0
  57. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/telemetry/config.py +0 -0
  58. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/telemetry/events.py +0 -0
  59. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/telemetry/tracker.py +0 -0
  60. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/types.py +0 -0
  61. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/utils.py +0 -0
  62. {airbyte_agent_slack-0.1.19 → airbyte_agent_slack-0.1.21}/airbyte_agent_slack/_vendored/connector_sdk/validation.py +0 -0
@@ -1,5 +1,15 @@
1
1
  # Slack changelog
2
2
 
3
+ ## [0.1.21] - 2026-01-23
4
+ - Updated connector definition (YAML version 0.1.8)
5
+ - Source commit: 32c5ef46
6
+ - SDK version: 0.1.0
7
+
8
+ ## [0.1.20] - 2026-01-23
9
+ - Updated connector definition (YAML version 0.1.7)
10
+ - Source commit: 049f6ad5
11
+ - SDK version: 0.1.0
12
+
3
13
  ## [0.1.19] - 2026-01-23
4
14
  - Updated connector definition (YAML version 0.1.6)
5
15
  - Source commit: a035ad48
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airbyte-agent-slack
3
- Version: 0.1.19
3
+ Version: 0.1.21
4
4
  Summary: Airbyte Slack Connector for AI platforms
5
5
  Project-URL: Homepage, https://github.com/airbytehq/airbyte-agent-connectors
6
6
  Project-URL: Documentation, https://docs.airbyte.com/ai-agents/
@@ -130,6 +130,10 @@ async def slack_execute(entity: str, action: str, params: dict | None = None):
130
130
  return await connector.execute(entity, action, params or {})
131
131
  ```
132
132
 
133
+ ## Replication Configuration
134
+
135
+ This connector supports replication configuration for MULTI mode sources. See the [full reference documentation](./REFERENCE.md#replication-configuration) for details on available options like `start_date`.
136
+
133
137
  ## Full documentation
134
138
 
135
139
  This connector supports the following entities and actions.
@@ -154,6 +158,6 @@ For the service's official API docs, see the [Slack API reference](https://api.s
154
158
 
155
159
  ## Version information
156
160
 
157
- - **Package version:** 0.1.19
158
- - **Connector version:** 0.1.6
159
- - **Generated with Connector SDK commit SHA:** a035ad482faa8ceae3c296a0651e914e1dae140e
161
+ - **Package version:** 0.1.21
162
+ - **Connector version:** 0.1.8
163
+ - **Generated with Connector SDK commit SHA:** 32c5ef4692be2243558faa20132b3ece7d573aed
@@ -97,6 +97,10 @@ async def slack_execute(entity: str, action: str, params: dict | None = None):
97
97
  return await connector.execute(entity, action, params or {})
98
98
  ```
99
99
 
100
+ ## Replication Configuration
101
+
102
+ This connector supports replication configuration for MULTI mode sources. See the [full reference documentation](./REFERENCE.md#replication-configuration) for details on available options like `start_date`.
103
+
100
104
  ## Full documentation
101
105
 
102
106
  This connector supports the following entities and actions.
@@ -121,6 +125,6 @@ For the service's official API docs, see the [Slack API reference](https://api.s
121
125
 
122
126
  ## Version information
123
127
 
124
- - **Package version:** 0.1.19
125
- - **Connector version:** 0.1.6
126
- - **Generated with Connector SDK commit SHA:** a035ad482faa8ceae3c296a0651e914e1dae140e
128
+ - **Package version:** 0.1.21
129
+ - **Connector version:** 0.1.8
130
+ - **Generated with Connector SDK commit SHA:** 32c5ef4692be2243558faa20132b3ece7d573aed
@@ -8,8 +8,8 @@ The Slack connector supports the following entities and actions.
8
8
 
9
9
  | Entity | Actions |
10
10
  |--------|---------|
11
- | Users | [List](#users-list), [Get](#users-get) |
12
- | Channels | [List](#channels-list), [Get](#channels-get), [Create](#channels-create), [Update](#channels-update) |
11
+ | Users | [List](#users-list), [Get](#users-get), [Search](#users-search) |
12
+ | Channels | [List](#channels-list), [Get](#channels-get), [Create](#channels-create), [Update](#channels-update), [Search](#channels-search) |
13
13
  | Channel Messages | [List](#channel-messages-list) |
14
14
  | Threads | [List](#threads-list) |
15
15
  | Messages | [Create](#messages-create), [Update](#messages-update) |
@@ -151,6 +151,109 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
151
151
  | `who_can_share_contact_card` | `string \| null` | |
152
152
 
153
153
 
154
+ </details>
155
+
156
+ ### Users Search
157
+
158
+ Search and filter users records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
159
+
160
+ #### Python SDK
161
+
162
+ ```python
163
+ await slack.users.search(
164
+ query={"filter": {"eq": {"color": "<str>"}}}
165
+ )
166
+ ```
167
+
168
+ #### API
169
+
170
+ ```bash
171
+ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
172
+ --header 'Content-Type: application/json' \
173
+ --header 'Authorization: Bearer {your_auth_token}' \
174
+ --data '{
175
+ "entity": "users",
176
+ "action": "search",
177
+ "params": {
178
+ "query": {"filter": {"eq": {"color": "<str>"}}}
179
+ }
180
+ }'
181
+ ```
182
+
183
+ #### Parameters
184
+
185
+ | Parameter Name | Type | Required | Description |
186
+ |----------------|------|----------|-------------|
187
+ | `query` | `object` | Yes | Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or |
188
+ | `query.filter` | `object` | No | Filter conditions |
189
+ | `query.sort` | `array` | No | Sort conditions |
190
+ | `limit` | `integer` | No | Maximum results to return (default 1000) |
191
+ | `cursor` | `string` | No | Pagination cursor from previous response's next_cursor |
192
+ | `fields` | `array` | No | Field paths to include in results |
193
+
194
+ #### Searchable Fields
195
+
196
+ | Field Name | Type | Description |
197
+ |------------|------|-------------|
198
+ | `color` | `string` | The color assigned to the user for visual purposes. |
199
+ | `deleted` | `boolean` | Indicates if the user is deleted or not. |
200
+ | `has_2fa` | `boolean` | Flag indicating if the user has two-factor authentication enabled. |
201
+ | `id` | `string` | Unique identifier for the user. |
202
+ | `is_admin` | `boolean` | Flag specifying if the user is an admin or not. |
203
+ | `is_app_user` | `boolean` | Specifies if the user is an app user. |
204
+ | `is_bot` | `boolean` | Indicates if the user is a bot account. |
205
+ | `is_email_confirmed` | `boolean` | Flag indicating if the user's email is confirmed. |
206
+ | `is_forgotten` | `boolean` | Specifies if the user is marked as forgotten. |
207
+ | `is_invited_user` | `boolean` | Indicates if the user is invited or not. |
208
+ | `is_owner` | `boolean` | Flag indicating if the user is an owner. |
209
+ | `is_primary_owner` | `boolean` | Specifies if the user is the primary owner. |
210
+ | `is_restricted` | `boolean` | Flag specifying if the user is restricted. |
211
+ | `is_ultra_restricted` | `boolean` | Indicates if the user has ultra-restricted access. |
212
+ | `name` | `string` | The username of the user. |
213
+ | `profile` | `object` | User's profile information containing detailed details. |
214
+ | `real_name` | `string` | The real name of the user. |
215
+ | `team_id` | `string` | Unique identifier for the team the user belongs to. |
216
+ | `tz` | `string` | Timezone of the user. |
217
+ | `tz_label` | `string` | Label representing the timezone of the user. |
218
+ | `tz_offset` | `integer` | Offset of the user's timezone. |
219
+ | `updated` | `integer` | Timestamp of when the user's information was last updated. |
220
+ | `who_can_share_contact_card` | `string` | Specifies who can share the user's contact card. |
221
+
222
+ <details>
223
+ <summary><b>Response Schema</b></summary>
224
+
225
+ | Field Name | Type | Description |
226
+ |------------|------|-------------|
227
+ | `hits` | `array` | List of matching records |
228
+ | `hits[].id` | `string` | Record identifier |
229
+ | `hits[].score` | `number` | Relevance score |
230
+ | `hits[].data` | `object` | Record data containing the searchable fields listed above |
231
+ | `hits[].data.color` | `string` | The color assigned to the user for visual purposes. |
232
+ | `hits[].data.deleted` | `boolean` | Indicates if the user is deleted or not. |
233
+ | `hits[].data.has_2fa` | `boolean` | Flag indicating if the user has two-factor authentication enabled. |
234
+ | `hits[].data.id` | `string` | Unique identifier for the user. |
235
+ | `hits[].data.is_admin` | `boolean` | Flag specifying if the user is an admin or not. |
236
+ | `hits[].data.is_app_user` | `boolean` | Specifies if the user is an app user. |
237
+ | `hits[].data.is_bot` | `boolean` | Indicates if the user is a bot account. |
238
+ | `hits[].data.is_email_confirmed` | `boolean` | Flag indicating if the user's email is confirmed. |
239
+ | `hits[].data.is_forgotten` | `boolean` | Specifies if the user is marked as forgotten. |
240
+ | `hits[].data.is_invited_user` | `boolean` | Indicates if the user is invited or not. |
241
+ | `hits[].data.is_owner` | `boolean` | Flag indicating if the user is an owner. |
242
+ | `hits[].data.is_primary_owner` | `boolean` | Specifies if the user is the primary owner. |
243
+ | `hits[].data.is_restricted` | `boolean` | Flag specifying if the user is restricted. |
244
+ | `hits[].data.is_ultra_restricted` | `boolean` | Indicates if the user has ultra-restricted access. |
245
+ | `hits[].data.name` | `string` | The username of the user. |
246
+ | `hits[].data.profile` | `object` | User's profile information containing detailed details. |
247
+ | `hits[].data.real_name` | `string` | The real name of the user. |
248
+ | `hits[].data.team_id` | `string` | Unique identifier for the team the user belongs to. |
249
+ | `hits[].data.tz` | `string` | Timezone of the user. |
250
+ | `hits[].data.tz_label` | `string` | Label representing the timezone of the user. |
251
+ | `hits[].data.tz_offset` | `integer` | Offset of the user's timezone. |
252
+ | `hits[].data.updated` | `integer` | Timestamp of when the user's information was last updated. |
253
+ | `hits[].data.who_can_share_contact_card` | `string` | Specifies who can share the user's contact card. |
254
+ | `next_cursor` | `string \| null` | Cursor for next page of results |
255
+ | `took_ms` | `number` | Query execution time in milliseconds |
256
+
154
257
  </details>
155
258
 
156
259
  ## Channels
@@ -471,6 +574,125 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
471
574
  | `is_read_only` | `boolean \| null` | |
472
575
 
473
576
 
577
+ </details>
578
+
579
+ ### Channels Search
580
+
581
+ Search and filter channels records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
582
+
583
+ #### Python SDK
584
+
585
+ ```python
586
+ await slack.channels.search(
587
+ query={"filter": {"eq": {"context_team_id": "<str>"}}}
588
+ )
589
+ ```
590
+
591
+ #### API
592
+
593
+ ```bash
594
+ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
595
+ --header 'Content-Type: application/json' \
596
+ --header 'Authorization: Bearer {your_auth_token}' \
597
+ --data '{
598
+ "entity": "channels",
599
+ "action": "search",
600
+ "params": {
601
+ "query": {"filter": {"eq": {"context_team_id": "<str>"}}}
602
+ }
603
+ }'
604
+ ```
605
+
606
+ #### Parameters
607
+
608
+ | Parameter Name | Type | Required | Description |
609
+ |----------------|------|----------|-------------|
610
+ | `query` | `object` | Yes | Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or |
611
+ | `query.filter` | `object` | No | Filter conditions |
612
+ | `query.sort` | `array` | No | Sort conditions |
613
+ | `limit` | `integer` | No | Maximum results to return (default 1000) |
614
+ | `cursor` | `string` | No | Pagination cursor from previous response's next_cursor |
615
+ | `fields` | `array` | No | Field paths to include in results |
616
+
617
+ #### Searchable Fields
618
+
619
+ | Field Name | Type | Description |
620
+ |------------|------|-------------|
621
+ | `context_team_id` | `string` | The unique identifier of the team context in which the channel exists. |
622
+ | `created` | `integer` | The timestamp when the channel was created. |
623
+ | `creator` | `string` | The ID of the user who created the channel. |
624
+ | `id` | `string` | The unique identifier of the channel. |
625
+ | `is_archived` | `boolean` | Indicates if the channel is archived. |
626
+ | `is_channel` | `boolean` | Indicates if the entity is a channel. |
627
+ | `is_ext_shared` | `boolean` | Indicates if the channel is externally shared. |
628
+ | `is_general` | `boolean` | Indicates if the channel is a general channel in the workspace. |
629
+ | `is_group` | `boolean` | Indicates if the channel is a group (private channel) rather than a regular channel. |
630
+ | `is_im` | `boolean` | Indicates if the entity is a direct message (IM) channel. |
631
+ | `is_member` | `boolean` | Indicates if the calling user is a member of the channel. |
632
+ | `is_mpim` | `boolean` | Indicates if the entity is a multiple person direct message (MPIM) channel. |
633
+ | `is_org_shared` | `boolean` | Indicates if the channel is organization-wide shared. |
634
+ | `is_pending_ext_shared` | `boolean` | Indicates if the channel is pending external shared. |
635
+ | `is_private` | `boolean` | Indicates if the channel is a private channel. |
636
+ | `is_read_only` | `boolean` | Indicates if the channel is read-only. |
637
+ | `is_shared` | `boolean` | Indicates if the channel is shared. |
638
+ | `last_read` | `string` | The timestamp of the user's last read message in the channel. |
639
+ | `locale` | `string` | The locale of the channel. |
640
+ | `name` | `string` | The name of the channel. |
641
+ | `name_normalized` | `string` | The normalized name of the channel. |
642
+ | `num_members` | `integer` | The number of members in the channel. |
643
+ | `parent_conversation` | `string` | The parent conversation of the channel. |
644
+ | `pending_connected_team_ids` | `array` | The IDs of teams that are pending to be connected to the channel. |
645
+ | `pending_shared` | `array` | The list of pending shared items of the channel. |
646
+ | `previous_names` | `array` | The previous names of the channel. |
647
+ | `purpose` | `object` | The purpose of the channel. |
648
+ | `shared_team_ids` | `array` | The IDs of teams with which the channel is shared. |
649
+ | `topic` | `object` | The topic of the channel. |
650
+ | `unlinked` | `integer` | Indicates if the channel is unlinked. |
651
+ | `updated` | `integer` | The timestamp when the channel was last updated. |
652
+
653
+ <details>
654
+ <summary><b>Response Schema</b></summary>
655
+
656
+ | Field Name | Type | Description |
657
+ |------------|------|-------------|
658
+ | `hits` | `array` | List of matching records |
659
+ | `hits[].id` | `string` | Record identifier |
660
+ | `hits[].score` | `number` | Relevance score |
661
+ | `hits[].data` | `object` | Record data containing the searchable fields listed above |
662
+ | `hits[].data.context_team_id` | `string` | The unique identifier of the team context in which the channel exists. |
663
+ | `hits[].data.created` | `integer` | The timestamp when the channel was created. |
664
+ | `hits[].data.creator` | `string` | The ID of the user who created the channel. |
665
+ | `hits[].data.id` | `string` | The unique identifier of the channel. |
666
+ | `hits[].data.is_archived` | `boolean` | Indicates if the channel is archived. |
667
+ | `hits[].data.is_channel` | `boolean` | Indicates if the entity is a channel. |
668
+ | `hits[].data.is_ext_shared` | `boolean` | Indicates if the channel is externally shared. |
669
+ | `hits[].data.is_general` | `boolean` | Indicates if the channel is a general channel in the workspace. |
670
+ | `hits[].data.is_group` | `boolean` | Indicates if the channel is a group (private channel) rather than a regular channel. |
671
+ | `hits[].data.is_im` | `boolean` | Indicates if the entity is a direct message (IM) channel. |
672
+ | `hits[].data.is_member` | `boolean` | Indicates if the calling user is a member of the channel. |
673
+ | `hits[].data.is_mpim` | `boolean` | Indicates if the entity is a multiple person direct message (MPIM) channel. |
674
+ | `hits[].data.is_org_shared` | `boolean` | Indicates if the channel is organization-wide shared. |
675
+ | `hits[].data.is_pending_ext_shared` | `boolean` | Indicates if the channel is pending external shared. |
676
+ | `hits[].data.is_private` | `boolean` | Indicates if the channel is a private channel. |
677
+ | `hits[].data.is_read_only` | `boolean` | Indicates if the channel is read-only. |
678
+ | `hits[].data.is_shared` | `boolean` | Indicates if the channel is shared. |
679
+ | `hits[].data.last_read` | `string` | The timestamp of the user's last read message in the channel. |
680
+ | `hits[].data.locale` | `string` | The locale of the channel. |
681
+ | `hits[].data.name` | `string` | The name of the channel. |
682
+ | `hits[].data.name_normalized` | `string` | The normalized name of the channel. |
683
+ | `hits[].data.num_members` | `integer` | The number of members in the channel. |
684
+ | `hits[].data.parent_conversation` | `string` | The parent conversation of the channel. |
685
+ | `hits[].data.pending_connected_team_ids` | `array` | The IDs of teams that are pending to be connected to the channel. |
686
+ | `hits[].data.pending_shared` | `array` | The list of pending shared items of the channel. |
687
+ | `hits[].data.previous_names` | `array` | The previous names of the channel. |
688
+ | `hits[].data.purpose` | `object` | The purpose of the channel. |
689
+ | `hits[].data.shared_team_ids` | `array` | The IDs of teams with which the channel is shared. |
690
+ | `hits[].data.topic` | `object` | The topic of the channel. |
691
+ | `hits[].data.unlinked` | `integer` | Indicates if the channel is unlinked. |
692
+ | `hits[].data.updated` | `integer` | The timestamp when the channel was last updated. |
693
+ | `next_cursor` | `string \| null` | Cursor for next page of results |
694
+ | `took_ms` | `number` | Query execution time in milliseconds |
695
+
474
696
  </details>
475
697
 
476
698
  ## Channel Messages
@@ -1065,3 +1287,39 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
1065
1287
 
1066
1288
  </details>
1067
1289
 
1290
+
1291
+
1292
+ ## Replication Configuration
1293
+
1294
+ Settings for data replication from Slack
1295
+
1296
+ These settings control how data is replicated from the source. Pass them via the `replication_config` parameter when creating a source.
1297
+
1298
+ | Field Name | Type | Required | Description |
1299
+ |------------|------|----------|-------------|
1300
+ | `start_date` | `str (date-time)` | Yes | UTC date and time in the format YYYY-MM-DDTHH:mm:ssZ from which to start replicating data. |
1301
+ | `lookback_window` | `int` | Yes | Number of days to look back when syncing data (0-365). |
1302
+ | `join_channels` | `bool` | Yes | Whether to automatically join public channels to sync messages. |
1303
+
1304
+ ### Example
1305
+
1306
+ **API**
1307
+
1308
+ ```bash
1309
+ curl --location 'https://api.airbyte.ai/integrations/connectors' \
1310
+ --header 'Content-Type: application/json' \
1311
+ --header 'Authorization: Bearer {your_auth_token}' \
1312
+ --data '{
1313
+ "external_user_id": "{your_external_user_id}",
1314
+ "connector_type": "slack",
1315
+ "credentials": {
1316
+ ...
1317
+ },
1318
+ "replication_config": {
1319
+ "start_date": "<UTC date and time in the format YYYY-MM-DDTHH:mm:ssZ from which to start replicating data.>",
1320
+ "lookback_window": "<Number of days to look back when syncing data (0-365).>",
1321
+ "join_channels": "<Whether to automatically join public channels to sync messages.>"
1322
+ },
1323
+ "name": "My Slack Connector"
1324
+ }'
1325
+ ```
@@ -17,8 +17,8 @@ from .models import (
17
17
  ChannelPurpose,
18
18
  ChannelsListResponse,
19
19
  ChannelResponse,
20
- File,
21
20
  Reaction,
21
+ File,
22
22
  Attachment,
23
23
  Message,
24
24
  Thread,
@@ -50,7 +50,13 @@ from .models import (
50
50
  UsersListResult,
51
51
  ChannelsListResult,
52
52
  ChannelMessagesListResult,
53
- ThreadsListResult
53
+ ThreadsListResult,
54
+ AirbyteSearchHit,
55
+ AirbyteSearchResult,
56
+ ChannelsSearchData,
57
+ ChannelsSearchResult,
58
+ UsersSearchData,
59
+ UsersSearchResult
54
60
  )
55
61
  from .types import (
56
62
  UsersListParams,
@@ -65,7 +71,15 @@ from .types import (
65
71
  ChannelsUpdateParams,
66
72
  ChannelTopicsCreateParams,
67
73
  ChannelPurposesCreateParams,
68
- ReactionsCreateParams
74
+ ReactionsCreateParams,
75
+ AirbyteSearchParams,
76
+ AirbyteSortOrder,
77
+ ChannelsSearchFilter,
78
+ ChannelsSearchQuery,
79
+ ChannelsCondition,
80
+ UsersSearchFilter,
81
+ UsersSearchQuery,
82
+ UsersCondition
69
83
  )
70
84
 
71
85
  __all__ = [
@@ -81,8 +95,8 @@ __all__ = [
81
95
  "ChannelPurpose",
82
96
  "ChannelsListResponse",
83
97
  "ChannelResponse",
84
- "File",
85
98
  "Reaction",
99
+ "File",
86
100
  "Attachment",
87
101
  "Message",
88
102
  "Thread",
@@ -115,6 +129,12 @@ __all__ = [
115
129
  "ChannelsListResult",
116
130
  "ChannelMessagesListResult",
117
131
  "ThreadsListResult",
132
+ "AirbyteSearchHit",
133
+ "AirbyteSearchResult",
134
+ "ChannelsSearchData",
135
+ "ChannelsSearchResult",
136
+ "UsersSearchData",
137
+ "UsersSearchResult",
118
138
  "UsersListParams",
119
139
  "UsersGetParams",
120
140
  "ChannelsListParams",
@@ -128,4 +148,12 @@ __all__ = [
128
148
  "ChannelTopicsCreateParams",
129
149
  "ChannelPurposesCreateParams",
130
150
  "ReactionsCreateParams",
151
+ "AirbyteSearchParams",
152
+ "AirbyteSortOrder",
153
+ "ChannelsSearchFilter",
154
+ "ChannelsSearchQuery",
155
+ "ChannelsCondition",
156
+ "UsersSearchFilter",
157
+ "UsersSearchQuery",
158
+ "UsersCondition",
131
159
  ]
@@ -1032,7 +1032,9 @@ class LocalExecutor:
1032
1032
  if "variables" in graphql_config and graphql_config["variables"]:
1033
1033
  variables = self._interpolate_variables(graphql_config["variables"], params, param_defaults)
1034
1034
  # Filter out None values (optional fields not provided) - matches REST _extract_body() behavior
1035
- body["variables"] = {k: v for k, v in variables.items() if v is not None}
1035
+ # But preserve None for variables explicitly marked as nullable (e.g., to unassign a user)
1036
+ nullable_vars = set(graphql_config.get("x-airbyte-nullable-variables") or [])
1037
+ body["variables"] = {k: v for k, v in variables.items() if v is not None or k in nullable_vars}
1036
1038
 
1037
1039
  # Add operation name if specified
1038
1040
  if "operationName" in graphql_config:
@@ -13,7 +13,7 @@ from uuid import UUID
13
13
  from pydantic import BaseModel, ConfigDict, Field, field_validator
14
14
  from pydantic_core import Url
15
15
 
16
- from .extensions import CacheConfig, RetryConfig
16
+ from .extensions import CacheConfig, ReplicationConfig, RetryConfig
17
17
 
18
18
 
19
19
  class ExampleQuestions(BaseModel):
@@ -106,6 +106,7 @@ class Info(BaseModel):
106
106
  - x-airbyte-retry-config: Retry configuration for transient errors (Airbyte extension)
107
107
  - x-airbyte-example-questions: Example questions for AI connector README (Airbyte extension)
108
108
  - x-airbyte-cache: Cache configuration for field mapping between API and cache schemas (Airbyte extension)
109
+ - x-airbyte-replication-config: Replication configuration for MULTI mode connectors (Airbyte extension)
109
110
  """
110
111
 
111
112
  model_config = ConfigDict(populate_by_name=True, extra="forbid")
@@ -124,6 +125,7 @@ class Info(BaseModel):
124
125
  x_airbyte_retry_config: RetryConfig | None = Field(None, alias="x-airbyte-retry-config")
125
126
  x_airbyte_example_questions: ExampleQuestions | None = Field(None, alias="x-airbyte-example-questions")
126
127
  x_airbyte_cache: CacheConfig | None = Field(None, alias="x-airbyte-cache")
128
+ x_airbyte_replication_config: ReplicationConfig | None = Field(None, alias="x-airbyte-replication-config")
127
129
 
128
130
 
129
131
  class ServerVariable(BaseModel):
@@ -134,6 +134,11 @@ class GraphQLBodyConfig(BaseModel):
134
134
  None,
135
135
  description="Default fields to select if not provided in request parameters. Can be a string or array of field names.",
136
136
  )
137
+ nullable_variables: List[str] | None = Field(
138
+ default=None,
139
+ alias="x-airbyte-nullable-variables",
140
+ description="Variable names that can be explicitly set to null (e.g., to unassign a user)",
141
+ )
137
142
 
138
143
 
139
144
  # Union type for all body type configs (extensible for future types like XML, SOAP, etc.)
@@ -182,6 +182,77 @@ class CacheEntityConfig(BaseModel):
182
182
  return self.x_airbyte_name or self.entity
183
183
 
184
184
 
185
+ class ReplicationConfigProperty(BaseModel):
186
+ """
187
+ Property definition for replication configuration fields.
188
+
189
+ Defines a single field in the replication configuration with its type,
190
+ description, and optional default value.
191
+
192
+ Example YAML usage:
193
+ x-airbyte-replication-config:
194
+ properties:
195
+ start_date:
196
+ type: string
197
+ title: Start Date
198
+ description: UTC date and time from which to replicate data
199
+ format: date-time
200
+ """
201
+
202
+ model_config = ConfigDict(populate_by_name=True, extra="forbid")
203
+
204
+ type: str
205
+ title: str | None = None
206
+ description: str | None = None
207
+ format: str | None = None
208
+ default: str | int | float | bool | None = None
209
+ enum: list[str] | None = None
210
+
211
+
212
+ class ReplicationConfig(BaseModel):
213
+ """
214
+ Replication configuration extension (x-airbyte-replication-config).
215
+
216
+ Defines replication-specific settings for MULTI mode connectors that need
217
+ to configure the underlying replication connector. This allows users who
218
+ use the direct-style API (credentials + environment) to also specify
219
+ replication settings like start_date, lookback_window, etc.
220
+
221
+ This extension is added to the Info model and provides field definitions
222
+ for replication configuration that gets merged into the source config
223
+ when creating sources.
224
+
225
+ Example YAML usage:
226
+ info:
227
+ title: HubSpot API
228
+ x-airbyte-replication-config:
229
+ title: Replication Configuration
230
+ description: Settings for data replication
231
+ properties:
232
+ start_date:
233
+ type: string
234
+ title: Start Date
235
+ description: UTC date and time from which to replicate data
236
+ format: date-time
237
+ required:
238
+ - start_date
239
+ replication_config_key_mapping:
240
+ start_date: start_date
241
+ """
242
+
243
+ model_config = ConfigDict(populate_by_name=True, extra="forbid")
244
+
245
+ title: str | None = None
246
+ description: str | None = None
247
+ properties: dict[str, ReplicationConfigProperty] = Field(default_factory=dict)
248
+ required: list[str] = Field(default_factory=list)
249
+ replication_config_key_mapping: dict[str, str] = Field(
250
+ default_factory=dict,
251
+ alias="replication_config_key_mapping",
252
+ description="Mapping from replication_config field names to source_config field names",
253
+ )
254
+
255
+
185
256
  class CacheConfig(BaseModel):
186
257
  """
187
258
  Cache configuration extension (x-airbyte-cache).