Skip to content

Commit 8c7ad34

Browse files
Merge pull request #3212 from airbytehq/publish/sendgrid-v0.1.23
chore(sendgrid): bump to 0.1.23
2 parents 7347ed4 + 75c260b commit 8c7ad34

File tree

6 files changed

+54
-19
lines changed

6 files changed

+54
-19
lines changed

connectors/sendgrid/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Sendgrid changelog
22

3+
## [0.1.23] - 2026-04-09
4+
- Updated connector definition (YAML version 1.0.3)
5+
- Source commit: c5258deb
6+
- SDK version: 0.1.0
7+
38
## [0.1.22] - 2026-04-09
49
- Updated connector definition (YAML version 1.0.3)
510
- Source commit: 6bf360a5

connectors/sendgrid/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ See the official [Sendgrid API reference](https://docs.sendgrid.com/api-referenc
121121

122122
## Version information
123123

124-
- **Package version:** 0.1.22
124+
- **Package version:** 0.1.23
125125
- **Connector version:** 1.0.3
126-
- **Generated with Connector SDK commit SHA:** 6bf360a546d577c9f76e8a6b8abf9ffc4dbfcf3a
126+
- **Generated with Connector SDK commit SHA:** c5258debd165ab701252c1436d4acfb475bf92b9
127127
- **Changelog:** [View changelog](https://github.com/airbytehq/airbyte-agent-connectors/blob/main/connectors/sendgrid/CHANGELOG.md)

connectors/sendgrid/airbyte_agent_sendgrid/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
Campaign,
2121
CampaignsListMetadata,
2222
CampaignsList,
23-
SingleSendEmailConfig,
2423
SingleSendSendTo,
24+
SingleSendEmailConfig,
2525
SingleSend,
2626
SingleSendsListMetadata,
2727
SingleSendsList,
@@ -170,8 +170,8 @@
170170
"Campaign",
171171
"CampaignsListMetadata",
172172
"CampaignsList",
173-
"SingleSendEmailConfig",
174173
"SingleSendSendTo",
174+
"SingleSendEmailConfig",
175175
"SingleSend",
176176
"SingleSendsListMetadata",
177177
"SingleSendsList",

connectors/sendgrid/airbyte_agent_sendgrid/_vendored/connector_sdk/executor/local_executor.py

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,36 @@
6262

6363

6464
class ParamResolutionError(Exception):
65-
"""Raised when a path parameter cannot be resolved for entity probing."""
65+
"""Raised when a path parameter cannot be resolved for entity probing.
66+
67+
Covers structural resolution failures (unresolvable param, self-reference,
68+
parent with no LIST op, parent returning no records, missing parent key,
69+
max recursion depth). ``_probe_entity`` converts these into UNHEALTHY
70+
results so the backend controller classifies them as INCONCLUSIVE. SKIPPED
71+
is reserved exclusively for "this entity has no list/get action at all".
72+
73+
Execution failures from probing a parent entity use ParentProbeError
74+
instead, so the child can inherit the parent's ``status_code`` for
75+
401/403 -> FAILED classification.
76+
"""
77+
78+
79+
class ParentProbeError(Exception):
80+
"""Raised when a parent entity's LIST probe fails during param resolution.
81+
82+
Wraps the original exception's message with parent-entity context for
83+
debuggability, while preserving the parent's ``status_code`` so the child
84+
can be classified the same way the parent would be (401/403 -> FAILED,
85+
everything else -> INCONCLUSIVE at the backend controller layer).
86+
87+
Distinct from ``ParamResolutionError`` so the ``status_code`` survives --
88+
both route through ``_probe_entity``'s UNHEALTHY branch, but only
89+
ParentProbeError carries the parent's HTTP status.
90+
"""
91+
92+
def __init__(self, message: str, status_code: int | None = None) -> None:
93+
super().__init__(message)
94+
self.status_code = status_code
6695

6796

6897
class _OperationContext:
@@ -727,9 +756,7 @@ async def _probe_entity(
727756
# Also resolve query params that have a matching scoping or config
728757
# key, so explicit config values take precedence over defaults.
729758
for qp in endpoint.query_params:
730-
if qp not in params_needing_resolution and (
731-
qp in self._scoping_index or qp in self.config_values
732-
):
759+
if qp not in params_needing_resolution and (qp in self._scoping_index or qp in self.config_values):
733760
params_needing_resolution.append(qp)
734761
if params_needing_resolution:
735762
try:
@@ -744,7 +771,7 @@ async def _probe_entity(
744771
except ParamResolutionError as exc:
745772
return {
746773
"entity": entity_name,
747-
"status": CHECK_STATUS_SKIPPED,
774+
"status": CHECK_STATUS_UNHEALTHY,
748775
"error": str(exc),
749776
"status_code": None,
750777
"checked_action": action.value,
@@ -846,7 +873,10 @@ async def _resolve_path_params(
846873
parent_params,
847874
)
848875
except Exception as exc:
849-
raise ParamResolutionError(f"Parent entity '{parent_entity_name}' probe failed: {exc}") from exc
876+
raise ParentProbeError(
877+
f"Parent entity '{parent_entity_name}' probe failed: {exc}",
878+
status_code=getattr(exc, "status_code", None),
879+
) from exc
850880
records = result.data if isinstance(result.data, list) else []
851881
if not records:
852882
raise ParamResolutionError(f"Parent entity '{parent_entity_name}' returned no records")

connectors/sendgrid/airbyte_agent_sendgrid/models.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,14 @@ class CampaignsList(BaseModel):
145145
result: Union[list[Campaign], Any] = Field(default=None)
146146
metadata: Union[CampaignsListMetadata, Any] = Field(default=None, alias="_metadata")
147147

148+
class SingleSendSendTo(BaseModel):
149+
"""Recipients configuration"""
150+
model_config = ConfigDict(extra="allow", populate_by_name=True)
151+
152+
list_ids: Union[list[str] | None, Any] = Field(default=None)
153+
segment_ids: Union[list[str] | None, Any] = Field(default=None)
154+
all: Union[bool, Any] = Field(default=None)
155+
148156
class SingleSendEmailConfig(BaseModel):
149157
"""Email configuration details"""
150158
model_config = ConfigDict(extra="allow", populate_by_name=True)
@@ -160,14 +168,6 @@ class SingleSendEmailConfig(BaseModel):
160168
sender_id: Union[int | None, Any] = Field(default=None)
161169
ip_pool: Union[str | None, Any] = Field(default=None)
162170

163-
class SingleSendSendTo(BaseModel):
164-
"""Recipients configuration"""
165-
model_config = ConfigDict(extra="allow", populate_by_name=True)
166-
167-
list_ids: Union[list[str] | None, Any] = Field(default=None)
168-
segment_ids: Union[list[str] | None, Any] = Field(default=None)
169-
all: Union[bool, Any] = Field(default=None)
170-
171171
class SingleSend(BaseModel):
172172
"""A SendGrid single send"""
173173
model_config = ConfigDict(extra="allow", populate_by_name=True)

connectors/sendgrid/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "airbyte-agent-sendgrid"
3-
version = "0.1.22"
3+
version = "0.1.23"
44
description = "Airbyte Sendgrid Connector for AI platforms"
55
readme = "README.md"
66
requires-python = ">=3.13"

0 commit comments

Comments
 (0)