airbyte-agent-slack 0.1.0__py3-none-any.whl → 0.1.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,9 +17,9 @@ from .models import (
17
17
  ChannelPurpose,
18
18
  ChannelsListResponse,
19
19
  ChannelResponse,
20
+ Reaction,
20
21
  File,
21
22
  Attachment,
22
- Reaction,
23
23
  Message,
24
24
  Thread,
25
25
  EditedInfo,
@@ -59,9 +59,9 @@ __all__ = [
59
59
  "ChannelPurpose",
60
60
  "ChannelsListResponse",
61
61
  "ChannelResponse",
62
+ "Reaction",
62
63
  "File",
63
64
  "Attachment",
64
- "Reaction",
65
65
  "Message",
66
66
  "Thread",
67
67
  "EditedInfo",
@@ -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 RetryConfig
16
+ from .extensions import CacheConfig, RetryConfig
17
17
 
18
18
 
19
19
  class ExampleQuestions(BaseModel):
@@ -105,6 +105,7 @@ class Info(BaseModel):
105
105
  - x-airbyte-external-documentation-urls: List of external documentation URLs (Airbyte extension)
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
+ - x-airbyte-cache: Cache configuration for field mapping between API and cache schemas (Airbyte extension)
108
109
  """
109
110
 
110
111
  model_config = ConfigDict(populate_by_name=True, extra="forbid")
@@ -122,6 +123,7 @@ class Info(BaseModel):
122
123
  x_airbyte_external_documentation_urls: list[DocUrl] = Field(..., alias="x-airbyte-external-documentation-urls")
123
124
  x_airbyte_retry_config: RetryConfig | None = Field(None, alias="x-airbyte-retry-config")
124
125
  x_airbyte_example_questions: ExampleQuestions | None = Field(None, alias="x-airbyte-example-questions")
126
+ x_airbyte_cache: CacheConfig | None = Field(None, alias="x-airbyte-cache")
125
127
 
126
128
 
127
129
  class ServerVariable(BaseModel):
@@ -14,7 +14,7 @@ are implemented.
14
14
 
15
15
  from typing import Literal
16
16
 
17
- from pydantic import BaseModel, ConfigDict
17
+ from pydantic import BaseModel, ConfigDict, Field
18
18
 
19
19
 
20
20
  class PaginationConfig(BaseModel):
@@ -107,3 +107,96 @@ class RetryConfig(BaseModel):
107
107
  # Header-based delay extraction
108
108
  retry_after_header: str = "Retry-After"
109
109
  retry_after_format: Literal["seconds", "milliseconds", "unix_timestamp"] = "seconds"
110
+
111
+
112
+ class CacheFieldConfig(BaseModel):
113
+ """
114
+ Field configuration for cache mapping.
115
+
116
+ Defines a single field in a cache entity, with optional name aliasing
117
+ to map between user-facing field names and cache storage names.
118
+
119
+ Used in x-airbyte-cache extension for api_search operations.
120
+ """
121
+
122
+ model_config = ConfigDict(populate_by_name=True, extra="forbid")
123
+
124
+ name: str
125
+ x_airbyte_name: str | None = Field(default=None, alias="x-airbyte-name")
126
+ type: str | list[str]
127
+ description: str
128
+
129
+ @property
130
+ def cache_name(self) -> str:
131
+ """Return cache name, falling back to name if alias not specified."""
132
+ return self.x_airbyte_name or self.name
133
+
134
+
135
+ class CacheEntityConfig(BaseModel):
136
+ """
137
+ Entity configuration for cache mapping.
138
+
139
+ Defines a cache-enabled entity with its fields and optional name aliasing
140
+ to map between user-facing entity names and cache storage names.
141
+
142
+ Used in x-airbyte-cache extension for api_search operations.
143
+ """
144
+
145
+ model_config = ConfigDict(populate_by_name=True, extra="forbid")
146
+
147
+ entity: str
148
+ x_airbyte_name: str | None = Field(default=None, alias="x-airbyte-name")
149
+ fields: list[CacheFieldConfig]
150
+
151
+ @property
152
+ def cache_name(self) -> str:
153
+ """Return cache entity name, falling back to entity if alias not specified."""
154
+ return self.x_airbyte_name or self.entity
155
+
156
+
157
+ class CacheConfig(BaseModel):
158
+ """
159
+ Cache configuration extension (x-airbyte-cache).
160
+
161
+ Defines cache-enabled entities and their field mappings for api_search operations.
162
+ Supports optional name aliasing via x-airbyte-name for both entities and fields,
163
+ enabling bidirectional mapping between user-facing names and cache storage names.
164
+
165
+ This extension is added to the Info model and provides field-level mapping for
166
+ search operations that use cached data.
167
+
168
+ Example YAML usage:
169
+ info:
170
+ title: Stripe API
171
+ x-airbyte-cache:
172
+ entities:
173
+ - entity: customers
174
+ stream: customers
175
+ fields:
176
+ - name: email
177
+ type: ["null", "string"]
178
+ description: "Customer email address"
179
+ - name: customer_name
180
+ x-airbyte-name: name
181
+ type: ["null", "string"]
182
+ description: "Customer full name"
183
+ """
184
+
185
+ model_config = ConfigDict(populate_by_name=True, extra="forbid")
186
+
187
+ entities: list[CacheEntityConfig]
188
+
189
+ def get_entity_mapping(self, user_entity: str) -> CacheEntityConfig | None:
190
+ """
191
+ Get entity config by user-facing name.
192
+
193
+ Args:
194
+ user_entity: User-facing entity name to look up
195
+
196
+ Returns:
197
+ CacheEntityConfig if found, None otherwise
198
+ """
199
+ for entity in self.entities:
200
+ if entity.entity == user_entity:
201
+ return entity
202
+ return None
@@ -176,6 +176,14 @@ 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"""
181
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
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)
186
+
179
187
  class File(BaseModel):
180
188
  """File object"""
181
189
  model_config = ConfigDict(extra="allow", populate_by_name=True)
@@ -221,14 +229,6 @@ class Attachment(BaseModel):
221
229
  footer_icon: Union[str | None, Any] = Field(default=None)
222
230
  ts: Union[Any, Any] = Field(default=None)
223
231
 
224
- class Reaction(BaseModel):
225
- """Message reaction"""
226
- model_config = ConfigDict(extra="allow", populate_by_name=True)
227
-
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
-
232
232
  class Message(BaseModel):
233
233
  """Slack message object"""
234
234
  model_config = ConfigDict(extra="allow", populate_by_name=True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airbyte-agent-slack
3
- Version: 0.1.0
3
+ Version: 0.1.1
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/
@@ -123,6 +123,6 @@ For the service's official API docs, see the [Slack API reference](https://api.s
123
123
 
124
124
  ## Version information
125
125
 
126
- - **Package version:** 0.1.0
126
+ - **Package version:** 0.1.1
127
127
  - **Connector version:** 0.1.1
128
- - **Generated with Connector SDK commit SHA:** 8b64ece519289f4e06c6df90ed5a254b81df1ddd
128
+ - **Generated with Connector SDK commit SHA:** 3521119342fc2a44fcae909505ffb1e7b75557eb
@@ -1,7 +1,7 @@
1
- airbyte_agent_slack/__init__.py,sha256=GUkjWNJU2sOBN_WD_3YrMFtXAv6rABFyFnu-xa0dU4w,1827
1
+ airbyte_agent_slack/__init__.py,sha256=8GPXkTAiah-N_W7LUw8lX7pP6CntIgjwVizrL4VfqiE,1827
2
2
  airbyte_agent_slack/connector.py,sha256=5U0F8qNoT7UDS6MZ0_BidNt7p1wI73YKNqUxMlZZ-Po,20012
3
3
  airbyte_agent_slack/connector_model.py,sha256=4s3vSwHde2emQI_kkIhL8JMkQoJlFqUbFKDU6dGUqD8,126566
4
- airbyte_agent_slack/models.py,sha256=HVzFVaQjGtOsUikQQdoS3_DyT2dbgAPjtucV2-J9BiQ,17688
4
+ airbyte_agent_slack/models.py,sha256=Fx1Apb4TVuba_lo_CjpgnVikq3efWrWbGBfZmak9Esk,17688
5
5
  airbyte_agent_slack/types.py,sha256=0B5u0udAnf6wxK8nUpzgk1opmO8dkIaOupJBltqXsVs,1550
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
@@ -42,16 +42,16 @@ airbyte_agent_slack/_vendored/connector_sdk/performance/__init__.py,sha256=Sp5fS
42
42
  airbyte_agent_slack/_vendored/connector_sdk/performance/instrumentation.py,sha256=_dXvNiqdndIBwDjeDKNViWzn_M5FkSUsMmJtFldrmsM,1504
43
43
  airbyte_agent_slack/_vendored/connector_sdk/performance/metrics.py,sha256=FRff7dKt4iwt_A7pxV5n9kAGBR756PC7q8-weWygPSM,2817
44
44
  airbyte_agent_slack/_vendored/connector_sdk/schema/__init__.py,sha256=Uymu-QuzGJuMxexBagIvUxpVAigIuIhz3KeBl_Vu4Ko,1638
45
- airbyte_agent_slack/_vendored/connector_sdk/schema/base.py,sha256=swe27f6sWuuGmG54VAW9K8P5USuhmncpIqAliFcB-OU,4741
45
+ airbyte_agent_slack/_vendored/connector_sdk/schema/base.py,sha256=RcsVLrO0L57g4kWfpDWjfc9gelvecplmoy43Zi-7GEY,4944
46
46
  airbyte_agent_slack/_vendored/connector_sdk/schema/components.py,sha256=x3YCM1p2n_xHi50fMeOX0mXUiPqjGlLHs3Go8jXokb0,7895
47
47
  airbyte_agent_slack/_vendored/connector_sdk/schema/connector.py,sha256=mSZk1wr2YSdRj9tTRsPAuIlCzd_xZLw-Bzl1sMwE0rE,3731
48
- airbyte_agent_slack/_vendored/connector_sdk/schema/extensions.py,sha256=0SKtv1WaW2sHaSZF-gi5dI3p0heGbegphjU2PAyIe-M,3277
48
+ airbyte_agent_slack/_vendored/connector_sdk/schema/extensions.py,sha256=U2sOTEXVi3DV6bIvbZPA0WUl5_vLuS_IzaDXQAJ4O14,6220
49
49
  airbyte_agent_slack/_vendored/connector_sdk/schema/operations.py,sha256=RpzGtAI4yvAtMHAfMUMcUwgHv_qJojnKlNb75_agUF8,5729
50
50
  airbyte_agent_slack/_vendored/connector_sdk/schema/security.py,sha256=zQ9RRuF3LBgLQi_4cItmjXbG_5WKlmCNM3nCil30H90,8470
51
51
  airbyte_agent_slack/_vendored/connector_sdk/telemetry/__init__.py,sha256=RaLgkBU4dfxn1LC5Y0Q9rr2PJbrwjxvPgBLmq8_WafE,211
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.0.dist-info/METADATA,sha256=Yw5pSHWGdYu58RJSJyIRbM8AqKVrsn8FEWrEqG4dA3U,4158
56
- airbyte_agent_slack-0.1.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
57
- airbyte_agent_slack-0.1.0.dist-info/RECORD,,
55
+ airbyte_agent_slack-0.1.1.dist-info/METADATA,sha256=cZs7WDnRry6SS5DB_xwtCQNRw5sSGYbzr16GA8OnLJ4,4158
56
+ airbyte_agent_slack-0.1.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
57
+ airbyte_agent_slack-0.1.1.dist-info/RECORD,,