airbyte-agent-slack 0.1.22__py3-none-any.whl → 0.1.23__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.
@@ -17,9 +17,9 @@ from .models import (
17
17
  ChannelPurpose,
18
18
  ChannelsListResponse,
19
19
  ChannelResponse,
20
- Reaction,
21
- File,
22
20
  Attachment,
21
+ File,
22
+ Reaction,
23
23
  Message,
24
24
  Thread,
25
25
  EditedInfo,
@@ -95,9 +95,9 @@ __all__ = [
95
95
  "ChannelPurpose",
96
96
  "ChannelsListResponse",
97
97
  "ChannelResponse",
98
- "Reaction",
99
- "File",
100
98
  "Attachment",
99
+ "File",
100
+ "Reaction",
101
101
  "Message",
102
102
  "Thread",
103
103
  "EditedInfo",
@@ -62,6 +62,53 @@ class TokenExtractValidationError(ConnectorModelLoaderError):
62
62
  pass
63
63
 
64
64
 
65
+ # Expected auth_mapping keys for each auth type.
66
+ # These are the auth parameters that each security scheme expects, NOT the user's credential field names.
67
+ EXPECTED_AUTH_MAPPING_KEYS: dict[AuthType, set[str]] = {
68
+ AuthType.BEARER: {"token"},
69
+ AuthType.BASIC: {"username", "password"},
70
+ AuthType.API_KEY: {"api_key"},
71
+ AuthType.OAUTH2: {"access_token", "refresh_token", "client_id", "client_secret"},
72
+ }
73
+
74
+
75
+ def _validate_auth_mapping_keys(
76
+ auth_type: AuthType,
77
+ auth_config: AirbyteAuthConfig | None,
78
+ scheme_name: str = "default",
79
+ ) -> None:
80
+ """Validate that auth_mapping keys match expected parameters for the auth type.
81
+
82
+ The auth_mapping keys must be the parameters expected by the security scheme
83
+ (e.g., "token" for bearer), not the user's credential field names.
84
+
85
+ Args:
86
+ auth_type: The authentication type
87
+ auth_config: The x-airbyte-auth-config containing auth_mapping
88
+ scheme_name: Name of the security scheme for error messages
89
+
90
+ Raises:
91
+ InvalidOpenAPIError: If auth_mapping keys don't match expected parameters
92
+ """
93
+ if auth_config is None or auth_config.auth_mapping is None:
94
+ return # No explicit auth_mapping, will use defaults
95
+
96
+ expected_keys = EXPECTED_AUTH_MAPPING_KEYS.get(auth_type)
97
+ if expected_keys is None:
98
+ return # Unknown auth type, skip validation
99
+
100
+ actual_keys = set(auth_config.auth_mapping.keys())
101
+ invalid_keys = actual_keys - expected_keys
102
+
103
+ if invalid_keys:
104
+ raise InvalidOpenAPIError(
105
+ f"Invalid auth_mapping keys for {auth_type.value} auth in scheme '{scheme_name}': {invalid_keys}. "
106
+ f"Expected keys for {auth_type.value}: {sorted(expected_keys)}. "
107
+ f"Note: auth_mapping keys must be the auth parameters (e.g., 'token' for bearer), "
108
+ f'not your credential field names. Use template syntax to map: token: "${{your_field}}"'
109
+ )
110
+
111
+
65
112
  def extract_path_params(path: str) -> list[str]:
66
113
  """Extract parameter names from path template.
67
114
 
@@ -924,6 +971,9 @@ def _parse_single_security_scheme(scheme: Any) -> AuthConfig:
924
971
  oauth2_config = _parse_oauth2_config(scheme)
925
972
  # Use explicit x-airbyte-auth-config if present, otherwise generate default
926
973
  auth_config_obj = scheme.x_airbyte_auth_config or _generate_default_auth_config(AuthType.OAUTH2)
974
+ # Validate auth_mapping keys if explicitly provided
975
+ if scheme.x_airbyte_auth_config:
976
+ _validate_auth_mapping_keys(AuthType.OAUTH2, scheme.x_airbyte_auth_config)
927
977
  return AuthConfig(
928
978
  type=AuthType.OAUTH2,
929
979
  config=oauth2_config,
@@ -934,6 +984,10 @@ def _parse_single_security_scheme(scheme: Any) -> AuthConfig:
934
984
  # Use explicit x-airbyte-auth-config if present, otherwise generate default
935
985
  auth_config_obj = scheme.x_airbyte_auth_config or _generate_default_auth_config(auth_type)
936
986
 
987
+ # Validate auth_mapping keys if explicitly provided
988
+ if scheme.x_airbyte_auth_config:
989
+ _validate_auth_mapping_keys(auth_type, scheme.x_airbyte_auth_config)
990
+
937
991
  return AuthConfig(
938
992
  type=auth_type,
939
993
  config=auth_config,
@@ -176,13 +176,26 @@ class ChannelResponse(BaseModel):
176
176
  ok: Union[bool, Any] = Field(default=None)
177
177
  channel: Union[Channel, Any] = Field(default=None)
178
178
 
179
- class Reaction(BaseModel):
180
- """Message reaction"""
179
+ class Attachment(BaseModel):
180
+ """Message attachment"""
181
181
  model_config = ConfigDict(extra="allow", populate_by_name=True)
182
182
 
183
- name: Union[str | None, Any] = Field(default=None)
184
- users: Union[list[str] | None, Any] = Field(default=None)
185
- count: Union[int | None, Any] = Field(default=None)
183
+ id: Union[int | None, Any] = Field(default=None)
184
+ fallback: Union[str | None, Any] = Field(default=None)
185
+ color: Union[str | None, Any] = Field(default=None)
186
+ pretext: Union[str | None, Any] = Field(default=None)
187
+ author_name: Union[str | None, Any] = Field(default=None)
188
+ author_link: Union[str | None, Any] = Field(default=None)
189
+ author_icon: Union[str | None, Any] = Field(default=None)
190
+ title: Union[str | None, Any] = Field(default=None)
191
+ title_link: Union[str | None, Any] = Field(default=None)
192
+ text: Union[str | None, Any] = Field(default=None)
193
+ fields: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
194
+ image_url: Union[str | None, Any] = Field(default=None)
195
+ thumb_url: Union[str | None, Any] = Field(default=None)
196
+ footer: Union[str | None, Any] = Field(default=None)
197
+ footer_icon: Union[str | None, Any] = Field(default=None)
198
+ ts: Union[Any, Any] = Field(default=None)
186
199
 
187
200
  class File(BaseModel):
188
201
  """File object"""
@@ -208,26 +221,13 @@ class File(BaseModel):
208
221
  created: Union[int | None, Any] = Field(default=None)
209
222
  timestamp: Union[int | None, Any] = Field(default=None)
210
223
 
211
- class Attachment(BaseModel):
212
- """Message attachment"""
224
+ class Reaction(BaseModel):
225
+ """Message reaction"""
213
226
  model_config = ConfigDict(extra="allow", populate_by_name=True)
214
227
 
215
- id: Union[int | None, Any] = Field(default=None)
216
- fallback: Union[str | None, Any] = Field(default=None)
217
- color: Union[str | None, Any] = Field(default=None)
218
- pretext: Union[str | None, Any] = Field(default=None)
219
- author_name: Union[str | None, Any] = Field(default=None)
220
- author_link: Union[str | None, Any] = Field(default=None)
221
- author_icon: Union[str | None, Any] = Field(default=None)
222
- title: Union[str | None, Any] = Field(default=None)
223
- title_link: Union[str | None, Any] = Field(default=None)
224
- text: Union[str | None, Any] = Field(default=None)
225
- fields: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
226
- image_url: Union[str | None, Any] = Field(default=None)
227
- thumb_url: Union[str | None, Any] = Field(default=None)
228
- footer: Union[str | None, Any] = Field(default=None)
229
- footer_icon: Union[str | None, Any] = Field(default=None)
230
- ts: Union[Any, Any] = Field(default=None)
228
+ name: Union[str | None, Any] = Field(default=None)
229
+ users: Union[list[str] | None, Any] = Field(default=None)
230
+ count: Union[int | None, Any] = Field(default=None)
231
231
 
232
232
  class Message(BaseModel):
233
233
  """Slack message object"""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airbyte-agent-slack
3
- Version: 0.1.22
3
+ Version: 0.1.23
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/
@@ -158,6 +158,6 @@ For the service's official API docs, see the [Slack API reference](https://api.s
158
158
 
159
159
  ## Version information
160
160
 
161
- - **Package version:** 0.1.22
161
+ - **Package version:** 0.1.23
162
162
  - **Connector version:** 0.1.8
163
- - **Generated with Connector SDK commit SHA:** 609c1d86c76b36ff699b57123a5a8c2050d958c3
163
+ - **Generated with Connector SDK commit SHA:** b73c71e077aea8d316f7161dbd5014d4fb9f3098
@@ -1,13 +1,13 @@
1
- airbyte_agent_slack/__init__.py,sha256=XDgvYC21cFMW_s-Ecy3C5fhGMXRpRTRQR752GyzCTco,3703
1
+ airbyte_agent_slack/__init__.py,sha256=SZXGHb2zbTrvZjBZyLMuI8QaYxy193jlmrds7pQZ2GQ,3703
2
2
  airbyte_agent_slack/connector.py,sha256=Z_HClKPXQQuYboYlUQYJ4WOqru8uwJYLNA5vPn_0UlQ,39588
3
3
  airbyte_agent_slack/connector_model.py,sha256=gEtUk1vNnmnHHhNfZg34lLGzIx9YKQ1HwGKGWmqVG_k,194646
4
- airbyte_agent_slack/models.py,sha256=iuc7i6iuN6r6-ocKhB8-2hvPz6Qg2sJlcWfVlGTK3IA,28916
4
+ airbyte_agent_slack/models.py,sha256=fyZxg7RF6HmR6xwk2x20De-Ql0uqLPoZY73LSxbC3Fo,28916
5
5
  airbyte_agent_slack/types.py,sha256=QDLOYuH23w4H_5fxVjTcBBz6BMYm2PWbuM1K_EOcD4o,32154
6
6
  airbyte_agent_slack/_vendored/__init__.py,sha256=ILl7AHXMui__swyrjxrh9yRa4dLiwBvV6axPWFWty80,38
7
7
  airbyte_agent_slack/_vendored/connector_sdk/__init__.py,sha256=T5o7roU6NSpH-lCAGZ338sE5dlh4ZU6i6IkeG1zpems,1949
8
8
  airbyte_agent_slack/_vendored/connector_sdk/auth_strategies.py,sha256=5Sb9moUp623o67Q2wMa8iZldJH08y4gQdoutoO_75Iw,42088
9
9
  airbyte_agent_slack/_vendored/connector_sdk/auth_template.py,sha256=nju4jqlFC_KI82ILNumNIyiUtRJcy7J94INIZ0QraI4,4454
10
- airbyte_agent_slack/_vendored/connector_sdk/connector_model_loader.py,sha256=nCu6oym6LoKrS94NTivU1vyQE_qnU-rhx8ExpuOX_LU,39544
10
+ airbyte_agent_slack/_vendored/connector_sdk/connector_model_loader.py,sha256=VPNu4KKQPDmF9YIDH0qVvvpZ-BACDZ6joNgFQEZbjo8,41828
11
11
  airbyte_agent_slack/_vendored/connector_sdk/constants.py,sha256=AtzOvhDMWbRJgpsQNWl5tkogHD6mWgEY668PgRmgtOY,2737
12
12
  airbyte_agent_slack/_vendored/connector_sdk/exceptions.py,sha256=ss5MGv9eVPmsbLcLWetuu3sDmvturwfo6Pw3M37Oq5k,481
13
13
  airbyte_agent_slack/_vendored/connector_sdk/extensions.py,sha256=XWRRoJOOrwUHSKbuQt5DU7CCu8ePzhd_HuP7c_uD77w,21376
@@ -52,6 +52,6 @@ airbyte_agent_slack/_vendored/connector_sdk/telemetry/__init__.py,sha256=RaLgkBU
52
52
  airbyte_agent_slack/_vendored/connector_sdk/telemetry/config.py,sha256=tLmQwAFD0kP1WyBGWBS3ysaudN9H3e-3EopKZi6cGKg,885
53
53
  airbyte_agent_slack/_vendored/connector_sdk/telemetry/events.py,sha256=8Y1NbXiwISX-V_wRofY7PqcwEXD0dLMnntKkY6XFU2s,1328
54
54
  airbyte_agent_slack/_vendored/connector_sdk/telemetry/tracker.py,sha256=Ftrk0_ddfM7dZG8hF9xBuPwhbc9D6JZ7Q9qs5o3LEyA,5579
55
- airbyte_agent_slack-0.1.22.dist-info/METADATA,sha256=-9OHYI5E5whwISpCqzRxW8B3N4acr58WSOhRFioaVas,6676
56
- airbyte_agent_slack-0.1.22.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
57
- airbyte_agent_slack-0.1.22.dist-info/RECORD,,
55
+ airbyte_agent_slack-0.1.23.dist-info/METADATA,sha256=4oISL2-Jp_Qidz6vBiY-V7N9snwVOfc6BXidI52SARk,6676
56
+ airbyte_agent_slack-0.1.23.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
57
+ airbyte_agent_slack-0.1.23.dist-info/RECORD,,