airbyte-agent-slack 0.1.14__tar.gz → 0.1.20__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 (61) hide show
  1. airbyte_agent_slack-0.1.20/AUTH.md +120 -0
  2. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/CHANGELOG.md +30 -0
  3. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/PKG-INFO +10 -6
  4. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/README.md +9 -5
  5. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/REFERENCE.md +113 -77
  6. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/auth_strategies.py +1 -3
  7. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/executor/local_executor.py +1 -3
  8. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/schema/base.py +34 -2
  9. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/schema/extensions.py +71 -0
  10. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/connector.py +2 -2
  11. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/connector_model.py +6 -6
  12. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/models.py +1 -1
  13. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/pyproject.toml +1 -1
  14. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/.gitignore +0 -0
  15. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/__init__.py +0 -0
  16. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/__init__.py +0 -0
  17. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/__init__.py +0 -0
  18. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/auth_template.py +0 -0
  19. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/cloud_utils/__init__.py +0 -0
  20. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/cloud_utils/client.py +0 -0
  21. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/connector_model_loader.py +0 -0
  22. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/constants.py +0 -0
  23. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/exceptions.py +0 -0
  24. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/executor/__init__.py +0 -0
  25. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/executor/hosted_executor.py +0 -0
  26. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/executor/models.py +0 -0
  27. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/extensions.py +0 -0
  28. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/http/__init__.py +0 -0
  29. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/http/adapters/__init__.py +0 -0
  30. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/http/adapters/httpx_adapter.py +0 -0
  31. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/http/config.py +0 -0
  32. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/http/exceptions.py +0 -0
  33. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/http/protocols.py +0 -0
  34. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/http/response.py +0 -0
  35. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/http_client.py +0 -0
  36. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/introspection.py +0 -0
  37. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/logging/__init__.py +0 -0
  38. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/logging/logger.py +0 -0
  39. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/logging/types.py +0 -0
  40. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/observability/__init__.py +0 -0
  41. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/observability/config.py +0 -0
  42. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/observability/models.py +0 -0
  43. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/observability/redactor.py +0 -0
  44. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/observability/session.py +0 -0
  45. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/performance/__init__.py +0 -0
  46. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/performance/instrumentation.py +0 -0
  47. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/performance/metrics.py +0 -0
  48. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/schema/__init__.py +0 -0
  49. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/schema/components.py +0 -0
  50. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/schema/connector.py +0 -0
  51. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/schema/operations.py +0 -0
  52. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/schema/security.py +0 -0
  53. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/secrets.py +0 -0
  54. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/telemetry/__init__.py +0 -0
  55. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/telemetry/config.py +0 -0
  56. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/telemetry/events.py +0 -0
  57. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/telemetry/tracker.py +0 -0
  58. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/types.py +0 -0
  59. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/utils.py +0 -0
  60. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/_vendored/connector_sdk/validation.py +0 -0
  61. {airbyte_agent_slack-0.1.14 → airbyte_agent_slack-0.1.20}/airbyte_agent_slack/types.py +0 -0
@@ -0,0 +1,120 @@
1
+ # Slack authentication and configuration
2
+
3
+ This page documents the authentication and configuration options for the Slack agent connector.
4
+
5
+ ## Authentication
6
+
7
+ ### Open source execution
8
+
9
+ In open source mode, you provide API credentials directly to the connector.
10
+
11
+ #### OAuth
12
+
13
+ | Field Name | Type | Required | Description |
14
+ |------------|------|----------|-------------|
15
+ | `client_id` | `str` | Yes | Your Slack App's Client ID |
16
+ | `client_secret` | `str` | Yes | Your Slack App's Client Secret |
17
+ | `access_token` | `str` | Yes | OAuth access token (bot token from oauth.v2.access response) |
18
+
19
+ ```python
20
+ from airbyte_agent_slack import SlackConnector
21
+ from airbyte_agent_slack.models import SlackOauth20AuthenticationAuthConfig
22
+
23
+ connector = SlackConnector(
24
+ auth_config=SlackOauth20AuthenticationAuthConfig(
25
+ client_id="<Your Slack App's Client ID>",
26
+ client_secret="<Your Slack App's Client Secret>",
27
+ access_token="<OAuth access token (bot token from oauth.v2.access response)>"
28
+ )
29
+ )
30
+ ```
31
+
32
+ #### Token
33
+
34
+ | Field Name | Type | Required | Description |
35
+ |------------|------|----------|-------------|
36
+ | `api_token` | `str` | Yes | Your Slack Bot Token (xoxb-) or User Token (xoxp-) |
37
+
38
+ ```python
39
+ from airbyte_agent_slack import SlackConnector
40
+ from airbyte_agent_slack.models import SlackTokenAuthenticationAuthConfig
41
+
42
+ connector = SlackConnector(
43
+ auth_config=SlackTokenAuthenticationAuthConfig(
44
+ api_token="<Your Slack Bot Token (xoxb-) or User Token (xoxp-)>"
45
+ )
46
+ )
47
+ ```
48
+
49
+ ### Hosted execution
50
+
51
+ In hosted mode, you first create a connector via the Airbyte API (providing your OAuth or Token credentials), then execute operations using either the Python SDK or API. If you need a step-by-step guide, see the [hosted execution tutorial](https://docs.airbyte.com/ai-agents/quickstarts/tutorial-hosted).
52
+
53
+ #### OAuth
54
+
55
+ Create a connector with OAuth credentials:
56
+
57
+ ```bash
58
+ curl -X POST 'https://api.airbyte.ai/v1/integrations/connectors' \
59
+ -H 'Authorization: Bearer <SCOPED_TOKEN>' \
60
+ -H 'Content-Type: application/json' \
61
+ -d '{
62
+ "external_user_id": "<EXTERNAL_USER_ID>",
63
+ "connector_type": "Slack",
64
+ "name": "My Slack Connector",
65
+ "credentials": {
66
+ "client_id": "<Your Slack App's Client ID>",
67
+ "client_secret": "<Your Slack App's Client Secret>",
68
+ "access_token": "<OAuth access token (bot token from oauth.v2.access response)>"
69
+ }
70
+ }'
71
+ ```
72
+
73
+ #### Token
74
+
75
+ Create a connector with Token credentials:
76
+
77
+ ```bash
78
+ curl -X POST 'https://api.airbyte.ai/v1/integrations/connectors' \
79
+ -H 'Authorization: Bearer <SCOPED_TOKEN>' \
80
+ -H 'Content-Type: application/json' \
81
+ -d '{
82
+ "external_user_id": "<EXTERNAL_USER_ID>",
83
+ "connector_type": "Slack",
84
+ "credentials": {
85
+ "api_token": "<Your Slack Bot Token (xoxb-) or User Token (xoxp-)>"
86
+ }
87
+ }'
88
+ ```
89
+
90
+ #### Execution
91
+
92
+ After creating the connector, execute operations using either the Python SDK or API.
93
+
94
+ **Python SDK**
95
+
96
+ ```python
97
+ from airbyte_agent_slack import SlackConnector
98
+
99
+ connector = SlackConnector(
100
+ external_user_id="<your-scoped-token>",
101
+ airbyte_client_id="<your-client-id>",
102
+ airbyte_client_secret="<your-client-secret>"
103
+ )
104
+
105
+ @agent.tool_plain # assumes you're using Pydantic AI
106
+ @SlackConnector.describe
107
+ async def slack_execute(entity: str, action: str, params: dict | None = None):
108
+ return await connector.execute(entity, action, params or {})
109
+ ```
110
+
111
+ **API**
112
+
113
+ ```bash
114
+ curl -X POST 'https://api.airbyte.ai/api/v1/connectors/sources/<connector_id>/execute' \
115
+ -H 'Authorization: Bearer <SCOPED_TOKEN>' \
116
+ -H 'Content-Type: application/json' \
117
+ -d '{"entity": "<entity>", "action": "<action>", "params": {}}'
118
+ ```
119
+
120
+
@@ -1,5 +1,35 @@
1
1
  # Slack changelog
2
2
 
3
+ ## [0.1.20] - 2026-01-23
4
+ - Updated connector definition (YAML version 0.1.7)
5
+ - Source commit: 049f6ad5
6
+ - SDK version: 0.1.0
7
+
8
+ ## [0.1.19] - 2026-01-23
9
+ - Updated connector definition (YAML version 0.1.6)
10
+ - Source commit: a035ad48
11
+ - SDK version: 0.1.0
12
+
13
+ ## [0.1.18] - 2026-01-23
14
+ - Updated connector definition (YAML version 0.1.5)
15
+ - Source commit: 416466da
16
+ - SDK version: 0.1.0
17
+
18
+ ## [0.1.17] - 2026-01-23
19
+ - Updated connector definition (YAML version 0.1.5)
20
+ - Source commit: f17cdd8c
21
+ - SDK version: 0.1.0
22
+
23
+ ## [0.1.16] - 2026-01-22
24
+ - Updated connector definition (YAML version 0.1.5)
25
+ - Source commit: 49e6dfe9
26
+ - SDK version: 0.1.0
27
+
28
+ ## [0.1.15] - 2026-01-22
29
+ - Updated connector definition (YAML version 0.1.5)
30
+ - Source commit: b27328e2
31
+ - SDK version: 0.1.0
32
+
3
33
  ## [0.1.14] - 2026-01-22
4
34
  - Updated connector definition (YAML version 0.1.5)
5
35
  - Source commit: 1da193dd
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airbyte-agent-slack
3
- Version: 0.1.14
3
+ Version: 0.1.20
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/
@@ -99,7 +99,7 @@ from airbyte_agent_slack.models import SlackTokenAuthenticationAuthConfig
99
99
 
100
100
  connector = SlackConnector(
101
101
  auth_config=SlackTokenAuthenticationAuthConfig(
102
- access_token="<Your Slack Bot Token (xoxb-) or User Token (xoxp-)>"
102
+ api_token="<Your Slack Bot Token (xoxb-) or User Token (xoxp-)>"
103
103
  )
104
104
  )
105
105
 
@@ -113,7 +113,7 @@ async def slack_execute(entity: str, action: str, params: dict | None = None):
113
113
 
114
114
  In hosted mode, API credentials are stored securely in Airbyte Cloud. You provide your Airbyte credentials instead.
115
115
 
116
- This example assumes you've already authenticated your connector with Airbyte. See [Authentication](AUTH.md) to learn more about authenticating. If you need a step-by-step guide, see the [hosted execution tutorial](https://docs.airbyte.com/ai-agents/hosted-execution).
116
+ This example assumes you've already authenticated your connector with Airbyte. See [Authentication](AUTH.md) to learn more about authenticating. If you need a step-by-step guide, see the [hosted execution tutorial](https://docs.airbyte.com/ai-agents/quickstarts/tutorial-hosted).
117
117
 
118
118
  ```python
119
119
  from airbyte_agent_slack import SlackConnector
@@ -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.14
158
- - **Connector version:** 0.1.5
159
- - **Generated with Connector SDK commit SHA:** 1da193dd2b3d4b2e2147ba74bd9a4062a62c4186
161
+ - **Package version:** 0.1.20
162
+ - **Connector version:** 0.1.7
163
+ - **Generated with Connector SDK commit SHA:** 049f6ad546186bde8303b77e0e1001a831a58654
@@ -66,7 +66,7 @@ from airbyte_agent_slack.models import SlackTokenAuthenticationAuthConfig
66
66
 
67
67
  connector = SlackConnector(
68
68
  auth_config=SlackTokenAuthenticationAuthConfig(
69
- access_token="<Your Slack Bot Token (xoxb-) or User Token (xoxp-)>"
69
+ api_token="<Your Slack Bot Token (xoxb-) or User Token (xoxp-)>"
70
70
  )
71
71
  )
72
72
 
@@ -80,7 +80,7 @@ async def slack_execute(entity: str, action: str, params: dict | None = None):
80
80
 
81
81
  In hosted mode, API credentials are stored securely in Airbyte Cloud. You provide your Airbyte credentials instead.
82
82
 
83
- This example assumes you've already authenticated your connector with Airbyte. See [Authentication](AUTH.md) to learn more about authenticating. If you need a step-by-step guide, see the [hosted execution tutorial](https://docs.airbyte.com/ai-agents/hosted-execution).
83
+ This example assumes you've already authenticated your connector with Airbyte. See [Authentication](AUTH.md) to learn more about authenticating. If you need a step-by-step guide, see the [hosted execution tutorial](https://docs.airbyte.com/ai-agents/quickstarts/tutorial-hosted).
84
84
 
85
85
  ```python
86
86
  from airbyte_agent_slack import SlackConnector
@@ -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.14
125
- - **Connector version:** 0.1.5
126
- - **Generated with Connector SDK commit SHA:** 1da193dd2b3d4b2e2147ba74bd9a4062a62c4186
128
+ - **Package version:** 0.1.20
129
+ - **Connector version:** 0.1.7
130
+ - **Generated with Connector SDK commit SHA:** 049f6ad546186bde8303b77e0e1001a831a58654
@@ -17,19 +17,19 @@ The Slack connector supports the following entities and actions.
17
17
  | Channel Purposes | [Create](#channel-purposes-create) |
18
18
  | Reactions | [Create](#reactions-create) |
19
19
 
20
- ### Users
20
+ ## Users
21
21
 
22
- #### Users List
22
+ ### Users List
23
23
 
24
24
  Returns a list of all users in the Slack workspace
25
25
 
26
- **Python SDK**
26
+ #### Python SDK
27
27
 
28
28
  ```python
29
29
  await slack.users.list()
30
30
  ```
31
31
 
32
- **API**
32
+ #### API
33
33
 
34
34
  ```bash
35
35
  curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
@@ -42,7 +42,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
42
42
  ```
43
43
 
44
44
 
45
- **Parameters**
45
+ #### Parameters
46
46
 
47
47
  | Parameter Name | Type | Required | Description |
48
48
  |----------------|------|----------|-------------|
@@ -53,7 +53,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
53
53
  <details>
54
54
  <summary><b>Response Schema</b></summary>
55
55
 
56
- **Records**
56
+ #### Records
57
57
 
58
58
  | Field Name | Type | Description |
59
59
  |------------|------|-------------|
@@ -79,7 +79,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
79
79
  | `who_can_share_contact_card` | `string \| null` | |
80
80
 
81
81
 
82
- **Meta**
82
+ #### Meta
83
83
 
84
84
  | Field Name | Type | Description |
85
85
  |------------|------|-------------|
@@ -87,11 +87,11 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
87
87
 
88
88
  </details>
89
89
 
90
- #### Users Get
90
+ ### Users Get
91
91
 
92
92
  Get information about a single user by ID
93
93
 
94
- **Python SDK**
94
+ #### Python SDK
95
95
 
96
96
  ```python
97
97
  await slack.users.get(
@@ -99,7 +99,7 @@ await slack.users.get(
99
99
  )
100
100
  ```
101
101
 
102
- **API**
102
+ #### API
103
103
 
104
104
  ```bash
105
105
  curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
@@ -115,7 +115,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
115
115
  ```
116
116
 
117
117
 
118
- **Parameters**
118
+ #### Parameters
119
119
 
120
120
  | Parameter Name | Type | Required | Description |
121
121
  |----------------|------|----------|-------------|
@@ -125,7 +125,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
125
125
  <details>
126
126
  <summary><b>Response Schema</b></summary>
127
127
 
128
- **Records**
128
+ #### Records
129
129
 
130
130
  | Field Name | Type | Description |
131
131
  |------------|------|-------------|
@@ -153,19 +153,19 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
153
153
 
154
154
  </details>
155
155
 
156
- ### Channels
156
+ ## Channels
157
157
 
158
- #### Channels List
158
+ ### Channels List
159
159
 
160
160
  Returns a list of all channels in the Slack workspace
161
161
 
162
- **Python SDK**
162
+ #### Python SDK
163
163
 
164
164
  ```python
165
165
  await slack.channels.list()
166
166
  ```
167
167
 
168
- **API**
168
+ #### API
169
169
 
170
170
  ```bash
171
171
  curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
@@ -178,7 +178,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
178
178
  ```
179
179
 
180
180
 
181
- **Parameters**
181
+ #### Parameters
182
182
 
183
183
  | Parameter Name | Type | Required | Description |
184
184
  |----------------|------|----------|-------------|
@@ -191,7 +191,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
191
191
  <details>
192
192
  <summary><b>Response Schema</b></summary>
193
193
 
194
- **Records**
194
+ #### Records
195
195
 
196
196
  | Field Name | Type | Description |
197
197
  |------------|------|-------------|
@@ -228,7 +228,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
228
228
  | `is_read_only` | `boolean \| null` | |
229
229
 
230
230
 
231
- **Meta**
231
+ #### Meta
232
232
 
233
233
  | Field Name | Type | Description |
234
234
  |------------|------|-------------|
@@ -236,11 +236,11 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
236
236
 
237
237
  </details>
238
238
 
239
- #### Channels Get
239
+ ### Channels Get
240
240
 
241
241
  Get information about a single channel by ID
242
242
 
243
- **Python SDK**
243
+ #### Python SDK
244
244
 
245
245
  ```python
246
246
  await slack.channels.get(
@@ -248,7 +248,7 @@ await slack.channels.get(
248
248
  )
249
249
  ```
250
250
 
251
- **API**
251
+ #### API
252
252
 
253
253
  ```bash
254
254
  curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
@@ -264,7 +264,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
264
264
  ```
265
265
 
266
266
 
267
- **Parameters**
267
+ #### Parameters
268
268
 
269
269
  | Parameter Name | Type | Required | Description |
270
270
  |----------------|------|----------|-------------|
@@ -274,7 +274,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
274
274
  <details>
275
275
  <summary><b>Response Schema</b></summary>
276
276
 
277
- **Records**
277
+ #### Records
278
278
 
279
279
  | Field Name | Type | Description |
280
280
  |------------|------|-------------|
@@ -313,11 +313,11 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
313
313
 
314
314
  </details>
315
315
 
316
- #### Channels Create
316
+ ### Channels Create
317
317
 
318
318
  Creates a new public or private channel
319
319
 
320
- **Python SDK**
320
+ #### Python SDK
321
321
 
322
322
  ```python
323
323
  await slack.channels.create(
@@ -326,7 +326,7 @@ await slack.channels.create(
326
326
  )
327
327
  ```
328
328
 
329
- **API**
329
+ #### API
330
330
 
331
331
  ```bash
332
332
  curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
@@ -343,7 +343,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
343
343
  ```
344
344
 
345
345
 
346
- **Parameters**
346
+ #### Parameters
347
347
 
348
348
  | Parameter Name | Type | Required | Description |
349
349
  |----------------|------|----------|-------------|
@@ -354,7 +354,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
354
354
  <details>
355
355
  <summary><b>Response Schema</b></summary>
356
356
 
357
- **Records**
357
+ #### Records
358
358
 
359
359
  | Field Name | Type | Description |
360
360
  |------------|------|-------------|
@@ -393,11 +393,11 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
393
393
 
394
394
  </details>
395
395
 
396
- #### Channels Update
396
+ ### Channels Update
397
397
 
398
398
  Renames an existing channel
399
399
 
400
- **Python SDK**
400
+ #### Python SDK
401
401
 
402
402
  ```python
403
403
  await slack.channels.update(
@@ -406,7 +406,7 @@ await slack.channels.update(
406
406
  )
407
407
  ```
408
408
 
409
- **API**
409
+ #### API
410
410
 
411
411
  ```bash
412
412
  curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
@@ -423,7 +423,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
423
423
  ```
424
424
 
425
425
 
426
- **Parameters**
426
+ #### Parameters
427
427
 
428
428
  | Parameter Name | Type | Required | Description |
429
429
  |----------------|------|----------|-------------|
@@ -434,7 +434,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
434
434
  <details>
435
435
  <summary><b>Response Schema</b></summary>
436
436
 
437
- **Records**
437
+ #### Records
438
438
 
439
439
  | Field Name | Type | Description |
440
440
  |------------|------|-------------|
@@ -473,13 +473,13 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
473
473
 
474
474
  </details>
475
475
 
476
- ### Channel Messages
476
+ ## Channel Messages
477
477
 
478
- #### Channel Messages List
478
+ ### Channel Messages List
479
479
 
480
480
  Returns messages from a channel
481
481
 
482
- **Python SDK**
482
+ #### Python SDK
483
483
 
484
484
  ```python
485
485
  await slack.channel_messages.list(
@@ -487,7 +487,7 @@ await slack.channel_messages.list(
487
487
  )
488
488
  ```
489
489
 
490
- **API**
490
+ #### API
491
491
 
492
492
  ```bash
493
493
  curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
@@ -503,7 +503,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
503
503
  ```
504
504
 
505
505
 
506
- **Parameters**
506
+ #### Parameters
507
507
 
508
508
  | Parameter Name | Type | Required | Description |
509
509
  |----------------|------|----------|-------------|
@@ -518,7 +518,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
518
518
  <details>
519
519
  <summary><b>Response Schema</b></summary>
520
520
 
521
- **Records**
521
+ #### Records
522
522
 
523
523
  | Field Name | Type | Description |
524
524
  |------------|------|-------------|
@@ -583,7 +583,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
583
583
  | `team` | `string \| null` | |
584
584
 
585
585
 
586
- **Meta**
586
+ #### Meta
587
587
 
588
588
  | Field Name | Type | Description |
589
589
  |------------|------|-------------|
@@ -592,13 +592,13 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
592
592
 
593
593
  </details>
594
594
 
595
- ### Threads
595
+ ## Threads
596
596
 
597
- #### Threads List
597
+ ### Threads List
598
598
 
599
599
  Returns messages in a thread (thread replies from conversations.replies endpoint)
600
600
 
601
- **Python SDK**
601
+ #### Python SDK
602
602
 
603
603
  ```python
604
604
  await slack.threads.list(
@@ -606,7 +606,7 @@ await slack.threads.list(
606
606
  )
607
607
  ```
608
608
 
609
- **API**
609
+ #### API
610
610
 
611
611
  ```bash
612
612
  curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
@@ -622,7 +622,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
622
622
  ```
623
623
 
624
624
 
625
- **Parameters**
625
+ #### Parameters
626
626
 
627
627
  | Parameter Name | Type | Required | Description |
628
628
  |----------------|------|----------|-------------|
@@ -638,7 +638,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
638
638
  <details>
639
639
  <summary><b>Response Schema</b></summary>
640
640
 
641
- **Records**
641
+ #### Records
642
642
 
643
643
  | Field Name | Type | Description |
644
644
  |------------|------|-------------|
@@ -704,7 +704,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
704
704
  | `team` | `string \| null` | |
705
705
 
706
706
 
707
- **Meta**
707
+ #### Meta
708
708
 
709
709
  | Field Name | Type | Description |
710
710
  |------------|------|-------------|
@@ -713,13 +713,13 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
713
713
 
714
714
  </details>
715
715
 
716
- ### Messages
716
+ ## Messages
717
717
 
718
- #### Messages Create
718
+ ### Messages Create
719
719
 
720
720
  Posts a message to a public channel, private channel, or direct message conversation
721
721
 
722
- **Python SDK**
722
+ #### Python SDK
723
723
 
724
724
  ```python
725
725
  await slack.messages.create(
@@ -732,7 +732,7 @@ await slack.messages.create(
732
732
  )
733
733
  ```
734
734
 
735
- **API**
735
+ #### API
736
736
 
737
737
  ```bash
738
738
  curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
@@ -753,7 +753,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
753
753
  ```
754
754
 
755
755
 
756
- **Parameters**
756
+ #### Parameters
757
757
 
758
758
  | Parameter Name | Type | Required | Description |
759
759
  |----------------|------|----------|-------------|
@@ -768,7 +768,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
768
768
  <details>
769
769
  <summary><b>Response Schema</b></summary>
770
770
 
771
- **Records**
771
+ #### Records
772
772
 
773
773
  | Field Name | Type | Description |
774
774
  |------------|------|-------------|
@@ -785,11 +785,11 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
785
785
 
786
786
  </details>
787
787
 
788
- #### Messages Update
788
+ ### Messages Update
789
789
 
790
790
  Updates an existing message in a channel
791
791
 
792
- **Python SDK**
792
+ #### Python SDK
793
793
 
794
794
  ```python
795
795
  await slack.messages.update(
@@ -799,7 +799,7 @@ await slack.messages.update(
799
799
  )
800
800
  ```
801
801
 
802
- **API**
802
+ #### API
803
803
 
804
804
  ```bash
805
805
  curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
@@ -817,7 +817,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
817
817
  ```
818
818
 
819
819
 
820
- **Parameters**
820
+ #### Parameters
821
821
 
822
822
  | Parameter Name | Type | Required | Description |
823
823
  |----------------|------|----------|-------------|
@@ -829,7 +829,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
829
829
  <details>
830
830
  <summary><b>Response Schema</b></summary>
831
831
 
832
- **Records**
832
+ #### Records
833
833
 
834
834
  | Field Name | Type | Description |
835
835
  |------------|------|-------------|
@@ -846,13 +846,13 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
846
846
 
847
847
  </details>
848
848
 
849
- ### Channel Topics
849
+ ## Channel Topics
850
850
 
851
- #### Channel Topics Create
851
+ ### Channel Topics Create
852
852
 
853
853
  Sets the topic for a channel
854
854
 
855
- **Python SDK**
855
+ #### Python SDK
856
856
 
857
857
  ```python
858
858
  await slack.channel_topics.create(
@@ -861,7 +861,7 @@ await slack.channel_topics.create(
861
861
  )
862
862
  ```
863
863
 
864
- **API**
864
+ #### API
865
865
 
866
866
  ```bash
867
867
  curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
@@ -878,7 +878,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
878
878
  ```
879
879
 
880
880
 
881
- **Parameters**
881
+ #### Parameters
882
882
 
883
883
  | Parameter Name | Type | Required | Description |
884
884
  |----------------|------|----------|-------------|
@@ -889,7 +889,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
889
889
  <details>
890
890
  <summary><b>Response Schema</b></summary>
891
891
 
892
- **Records**
892
+ #### Records
893
893
 
894
894
  | Field Name | Type | Description |
895
895
  |------------|------|-------------|
@@ -928,13 +928,13 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
928
928
 
929
929
  </details>
930
930
 
931
- ### Channel Purposes
931
+ ## Channel Purposes
932
932
 
933
- #### Channel Purposes Create
933
+ ### Channel Purposes Create
934
934
 
935
935
  Sets the purpose for a channel
936
936
 
937
- **Python SDK**
937
+ #### Python SDK
938
938
 
939
939
  ```python
940
940
  await slack.channel_purposes.create(
@@ -943,7 +943,7 @@ await slack.channel_purposes.create(
943
943
  )
944
944
  ```
945
945
 
946
- **API**
946
+ #### API
947
947
 
948
948
  ```bash
949
949
  curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
@@ -960,7 +960,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
960
960
  ```
961
961
 
962
962
 
963
- **Parameters**
963
+ #### Parameters
964
964
 
965
965
  | Parameter Name | Type | Required | Description |
966
966
  |----------------|------|----------|-------------|
@@ -971,7 +971,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
971
971
  <details>
972
972
  <summary><b>Response Schema</b></summary>
973
973
 
974
- **Records**
974
+ #### Records
975
975
 
976
976
  | Field Name | Type | Description |
977
977
  |------------|------|-------------|
@@ -1010,13 +1010,13 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
1010
1010
 
1011
1011
  </details>
1012
1012
 
1013
- ### Reactions
1013
+ ## Reactions
1014
1014
 
1015
- #### Reactions Create
1015
+ ### Reactions Create
1016
1016
 
1017
1017
  Adds a reaction (emoji) to a message
1018
1018
 
1019
- **Python SDK**
1019
+ #### Python SDK
1020
1020
 
1021
1021
  ```python
1022
1022
  await slack.reactions.create(
@@ -1026,7 +1026,7 @@ await slack.reactions.create(
1026
1026
  )
1027
1027
  ```
1028
1028
 
1029
- **API**
1029
+ #### API
1030
1030
 
1031
1031
  ```bash
1032
1032
  curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
@@ -1044,7 +1044,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
1044
1044
  ```
1045
1045
 
1046
1046
 
1047
- **Parameters**
1047
+ #### Parameters
1048
1048
 
1049
1049
  | Parameter Name | Type | Required | Description |
1050
1050
  |----------------|------|----------|-------------|
@@ -1056,7 +1056,7 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
1056
1056
  <details>
1057
1057
  <summary><b>Response Schema</b></summary>
1058
1058
 
1059
- **Records**
1059
+ #### Records
1060
1060
 
1061
1061
  | Field Name | Type | Description |
1062
1062
  |------------|------|-------------|
@@ -1065,3 +1065,39 @@ curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_i
1065
1065
 
1066
1066
  </details>
1067
1067
 
1068
+
1069
+
1070
+ ## Replication Configuration
1071
+
1072
+ Settings for data replication from Slack
1073
+
1074
+ These settings control how data is replicated from the source. Pass them via the `replication_config` parameter when creating a source.
1075
+
1076
+ | Field Name | Type | Required | Description |
1077
+ |------------|------|----------|-------------|
1078
+ | `start_date` | `str (date-time)` | Yes | UTC date and time in the format YYYY-MM-DDTHH:mm:ssZ from which to start replicating data. |
1079
+ | `lookback_window` | `int` | Yes | Number of days to look back when syncing data (0-365). |
1080
+ | `join_channels` | `bool` | Yes | Whether to automatically join public channels to sync messages. |
1081
+
1082
+ ### Example
1083
+
1084
+ **API**
1085
+
1086
+ ```bash
1087
+ curl --location 'https://api.airbyte.ai/integrations/connectors' \
1088
+ --header 'Content-Type: application/json' \
1089
+ --header 'Authorization: Bearer {your_auth_token}' \
1090
+ --data '{
1091
+ "external_user_id": "{your_external_user_id}",
1092
+ "connector_type": "slack",
1093
+ "credentials": {
1094
+ ...
1095
+ },
1096
+ "replication_config": {
1097
+ "start_date": "<UTC date and time in the format YYYY-MM-DDTHH:mm:ssZ from which to start replicating data.>",
1098
+ "lookback_window": "<Number of days to look back when syncing data (0-365).>",
1099
+ "join_channels": "<Whether to automatically join public channels to sync messages.>"
1100
+ },
1101
+ "name": "My Slack Connector"
1102
+ }'
1103
+ ```
@@ -634,9 +634,7 @@ class OAuth2AuthStrategy(AuthStrategy):
634
634
  Headers dict with additional headers added
635
635
  """
636
636
  # Build template context with extracted secret values
637
- template_context = {
638
- key: extract_secret_value(value) for key, value in secrets.items()
639
- }
637
+ template_context = {key: extract_secret_value(value) for key, value in secrets.items()}
640
638
 
641
639
  for header_name, value_template in additional_headers.items():
642
640
  # Use Jinja2 templating for variable substitution
@@ -694,9 +694,7 @@ class LocalExecutor:
694
694
  """
695
695
  return {key: value for key, value in params.items() if key in allowed_fields and value is not None}
696
696
 
697
- def _extract_header_params(
698
- self, endpoint: EndpointDefinition, params: dict[str, Any], body: dict[str, Any] | None = None
699
- ) -> dict[str, str]:
697
+ def _extract_header_params(self, endpoint: EndpointDefinition, params: dict[str, Any], body: dict[str, Any] | None = None) -> dict[str, str]:
700
698
  """Extract header parameters from params and schema defaults.
701
699
 
702
700
  Also adds Content-Type header when there's a request body (unless already specified
@@ -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):
@@ -140,6 +142,33 @@ class ServerVariable(BaseModel):
140
142
  description: str | None = None
141
143
 
142
144
 
145
+ class EnvironmentMappingTransform(BaseModel):
146
+ """
147
+ Structured transform for environment mapping values.
148
+
149
+ Allows transforming environment values before storing in source_config.
150
+
151
+ Example:
152
+ source: subdomain
153
+ format: "{value}.atlassian.net"
154
+
155
+ The format string uses {value} as a placeholder for the source value.
156
+ """
157
+
158
+ model_config = ConfigDict(populate_by_name=True, extra="forbid")
159
+
160
+ source: str = Field(description="The environment config key to read the value from")
161
+ format: str | None = Field(
162
+ default=None,
163
+ description="Optional format string to transform the value. Use {value} as placeholder.",
164
+ )
165
+
166
+
167
+ # Type alias for environment mapping values: either a simple string (config key)
168
+ # or a structured transform with source and optional transform template
169
+ EnvironmentMappingValue = str | EnvironmentMappingTransform
170
+
171
+
143
172
  class Server(BaseModel):
144
173
  """
145
174
  Server URL and variable definitions.
@@ -152,7 +181,10 @@ class Server(BaseModel):
152
181
  url: str
153
182
  description: str | None = None
154
183
  variables: Dict[str, ServerVariable] = Field(default_factory=dict)
155
- x_airbyte_replication_environment_mapping: Dict[str, str] | None = Field(default=None, alias="x-airbyte-replication-environment-mapping")
184
+ x_airbyte_replication_environment_mapping: Dict[str, EnvironmentMappingValue] | None = Field(
185
+ default=None,
186
+ alias="x-airbyte-replication-environment-mapping",
187
+ )
156
188
  x_airbyte_replication_environment_constants: Dict[str, Any] | None = Field(
157
189
  default=None,
158
190
  alias="x-airbyte-replication-environment-constants",
@@ -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).
@@ -61,7 +61,7 @@ class SlackConnector:
61
61
  """
62
62
 
63
63
  connector_name = "slack"
64
- connector_version = "0.1.5"
64
+ connector_version = "0.1.7"
65
65
  vendored_sdk_version = "0.1.0" # Version of vendored connector-sdk
66
66
 
67
67
  # Map of (entity, action) -> needs_envelope for envelope wrapping decision
@@ -123,7 +123,7 @@ class SlackConnector:
123
123
  Example: lambda tokens: save_to_database(tokens)
124
124
  Examples:
125
125
  # Local mode (direct API calls)
126
- connector = SlackConnector(auth_config=SlackAuthConfig(access_token="..."))
126
+ connector = SlackConnector(auth_config=SlackAuthConfig(api_token="..."))
127
127
  # Hosted mode (executed on Airbyte cloud)
128
128
  connector = SlackConnector(
129
129
  external_user_id="user-123",
@@ -27,7 +27,7 @@ from uuid import (
27
27
  SlackConnectorModel: ConnectorModel = ConnectorModel(
28
28
  id=UUID('c2281cee-86f9-4a86-bb48-d23286b4c7bd'),
29
29
  name='slack',
30
- version='0.1.5',
30
+ version='0.1.7',
31
31
  base_url='https://slack.com/api',
32
32
  auth=AuthConfig(
33
33
  options=[
@@ -38,16 +38,16 @@ SlackConnectorModel: ConnectorModel = ConnectorModel(
38
38
  user_config_spec=AirbyteAuthConfig(
39
39
  title='Token Authentication',
40
40
  type='object',
41
- required=['access_token'],
41
+ required=['api_token'],
42
42
  properties={
43
- 'access_token': AuthConfigFieldSpec(
44
- title='Access Token',
43
+ 'api_token': AuthConfigFieldSpec(
44
+ title='API Token',
45
45
  description='Your Slack Bot Token (xoxb-) or User Token (xoxp-)',
46
46
  airbyte_secret=True,
47
47
  ),
48
48
  },
49
- auth_mapping={'token': '${access_token}'},
50
- replication_auth_key_mapping={'credentials.api_token': 'access_token'},
49
+ auth_mapping={'token': '${api_token}'},
50
+ replication_auth_key_mapping={'credentials.api_token': 'api_token'},
51
51
  replication_auth_key_constants={'credentials.option_title': 'API Token Credentials'},
52
52
  ),
53
53
  ),
@@ -17,7 +17,7 @@ class SlackTokenAuthenticationAuthConfig(BaseModel):
17
17
 
18
18
  model_config = ConfigDict(extra="forbid")
19
19
 
20
- access_token: str
20
+ api_token: str
21
21
  """Your Slack Bot Token (xoxb-) or User Token (xoxp-)"""
22
22
 
23
23
  class SlackOauth20AuthenticationAuthConfig(BaseModel):
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "airbyte-agent-slack"
3
- version = "0.1.14"
3
+ version = "0.1.20"
4
4
  description = "Airbyte Slack Connector for AI platforms"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"