airbyte-agent-zendesk-support 0.18.20__tar.gz → 0.18.22__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 (58) hide show
  1. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/CHANGELOG.md +10 -0
  2. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/PKG-INFO +26 -5
  3. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/README.md +25 -4
  4. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http_client.py +50 -43
  5. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/pyproject.toml +1 -1
  6. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/.gitignore +0 -0
  7. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/REFERENCE.md +0 -0
  8. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/__init__.py +0 -0
  9. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/__init__.py +0 -0
  10. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/__init__.py +0 -0
  11. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/auth_strategies.py +0 -0
  12. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/auth_template.py +0 -0
  13. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/cloud_utils/__init__.py +0 -0
  14. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/cloud_utils/client.py +0 -0
  15. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/connector_model_loader.py +0 -0
  16. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/constants.py +0 -0
  17. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/exceptions.py +0 -0
  18. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/executor/__init__.py +0 -0
  19. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/executor/hosted_executor.py +0 -0
  20. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/executor/local_executor.py +0 -0
  21. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/executor/models.py +0 -0
  22. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/extensions.py +0 -0
  23. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/__init__.py +0 -0
  24. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/adapters/__init__.py +0 -0
  25. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/adapters/httpx_adapter.py +0 -0
  26. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/config.py +0 -0
  27. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/exceptions.py +0 -0
  28. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/protocols.py +0 -0
  29. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/response.py +0 -0
  30. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/logging/__init__.py +0 -0
  31. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/logging/logger.py +0 -0
  32. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/logging/types.py +0 -0
  33. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/observability/__init__.py +0 -0
  34. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/observability/models.py +0 -0
  35. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/observability/redactor.py +0 -0
  36. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/observability/session.py +0 -0
  37. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/performance/__init__.py +0 -0
  38. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/performance/instrumentation.py +0 -0
  39. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/performance/metrics.py +0 -0
  40. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/__init__.py +0 -0
  41. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/base.py +0 -0
  42. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/components.py +0 -0
  43. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/connector.py +0 -0
  44. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/extensions.py +0 -0
  45. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/operations.py +0 -0
  46. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/security.py +0 -0
  47. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/secrets.py +0 -0
  48. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/telemetry/__init__.py +0 -0
  49. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/telemetry/config.py +0 -0
  50. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/telemetry/events.py +0 -0
  51. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/telemetry/tracker.py +0 -0
  52. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/types.py +0 -0
  53. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/utils.py +0 -0
  54. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/_vendored/connector_sdk/validation.py +0 -0
  55. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/connector.py +0 -0
  56. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/connector_model.py +0 -0
  57. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/models.py +0 -0
  58. {airbyte_agent_zendesk_support-0.18.20 → airbyte_agent_zendesk_support-0.18.22}/airbyte_agent_zendesk_support/types.py +0 -0
@@ -1,5 +1,15 @@
1
1
  # Zendesk Support changelog
2
2
 
3
+ ## [0.18.22] - 2025-12-19
4
+ - Updated connector definition (YAML version 0.1.3)
5
+ - Source commit: e996e848
6
+ - SDK version: 0.1.0
7
+
8
+ ## [0.18.21] - 2025-12-18
9
+ - Updated connector definition (YAML version 0.1.3)
10
+ - Source commit: f7c55d3e
11
+ - SDK version: 0.1.0
12
+
3
13
  ## [0.18.20] - 2025-12-17
4
14
  - Updated connector definition (YAML version 0.1.3)
5
15
  - Source commit: af456521
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airbyte-agent-zendesk-support
3
- Version: 0.18.20
3
+ Version: 0.18.22
4
4
  Summary: Airbyte Zendesk-Support Connector for AI platforms
5
5
  Project-URL: Homepage, https://github.com/airbytehq/airbyte-embedded
6
6
  Project-URL: Documentation, https://github.com/airbytehq/airbyte-embedded/tree/main/integrations
@@ -68,11 +68,16 @@ uv pip install airbyte-agent-zendesk-support
68
68
 
69
69
  ## Usage
70
70
 
71
+ This connector supports multiple authentication methods:
72
+
73
+ ### OAuth 2.0
74
+
71
75
  ```python
72
- from airbyte_agent_zendesk_support import ZendeskSupportConnector, ZendeskSupportAuthConfig
76
+ from airbyte_agent_zendesk_support import ZendeskSupportConnector
77
+ from airbyte_agent_zendesk_support.models import ZendeskSupportOauth20AuthConfig
73
78
 
74
79
  connector = ZendeskSupportConnector(
75
- auth_config=ZendeskSupportAuthConfig(
80
+ auth_config=ZendeskSupportOauth20AuthConfig(
76
81
  access_token="...",
77
82
  refresh_token="..."
78
83
  )
@@ -80,6 +85,22 @@ connector = ZendeskSupportConnector(
80
85
  result = await connector.tickets.list()
81
86
  ```
82
87
 
88
+ ### API Token
89
+
90
+ ```python
91
+ from airbyte_agent_zendesk_support import ZendeskSupportConnector
92
+ from airbyte_agent_zendesk_support.models import ZendeskSupportApiTokenAuthConfig
93
+
94
+ connector = ZendeskSupportConnector(
95
+ auth_config=ZendeskSupportApiTokenAuthConfig(
96
+ email="...",
97
+ api_token="..."
98
+ )
99
+ )
100
+ result = await connector.tickets.list()
101
+ ```
102
+
103
+
83
104
  ## Full documentation
84
105
 
85
106
  This connector supports the following entities and actions.
@@ -116,6 +137,6 @@ For the service's official API docs, see the [Zendesk-Support API reference](htt
116
137
 
117
138
  ## Version information
118
139
 
119
- - **Package version:** 0.18.20
140
+ - **Package version:** 0.18.22
120
141
  - **Connector version:** 0.1.3
121
- - **Generated with Connector SDK commit SHA:** af45652142962c8574c427e5e2e6eb2db22445eb
142
+ - **Generated with Connector SDK commit SHA:** e996e848c6d55a9640a0cfa24ab5b34a275f9ceb
@@ -34,11 +34,16 @@ uv pip install airbyte-agent-zendesk-support
34
34
 
35
35
  ## Usage
36
36
 
37
+ This connector supports multiple authentication methods:
38
+
39
+ ### OAuth 2.0
40
+
37
41
  ```python
38
- from airbyte_agent_zendesk_support import ZendeskSupportConnector, ZendeskSupportAuthConfig
42
+ from airbyte_agent_zendesk_support import ZendeskSupportConnector
43
+ from airbyte_agent_zendesk_support.models import ZendeskSupportOauth20AuthConfig
39
44
 
40
45
  connector = ZendeskSupportConnector(
41
- auth_config=ZendeskSupportAuthConfig(
46
+ auth_config=ZendeskSupportOauth20AuthConfig(
42
47
  access_token="...",
43
48
  refresh_token="..."
44
49
  )
@@ -46,6 +51,22 @@ connector = ZendeskSupportConnector(
46
51
  result = await connector.tickets.list()
47
52
  ```
48
53
 
54
+ ### API Token
55
+
56
+ ```python
57
+ from airbyte_agent_zendesk_support import ZendeskSupportConnector
58
+ from airbyte_agent_zendesk_support.models import ZendeskSupportApiTokenAuthConfig
59
+
60
+ connector = ZendeskSupportConnector(
61
+ auth_config=ZendeskSupportApiTokenAuthConfig(
62
+ email="...",
63
+ api_token="..."
64
+ )
65
+ )
66
+ result = await connector.tickets.list()
67
+ ```
68
+
69
+
49
70
  ## Full documentation
50
71
 
51
72
  This connector supports the following entities and actions.
@@ -82,6 +103,6 @@ For the service's official API docs, see the [Zendesk-Support API reference](htt
82
103
 
83
104
  ## Version information
84
105
 
85
- - **Package version:** 0.18.20
106
+ - **Package version:** 0.18.22
86
107
  - **Connector version:** 0.1.3
87
- - **Generated with Connector SDK commit SHA:** af45652142962c8574c427e5e2e6eb2db22445eb
108
+ - **Generated with Connector SDK commit SHA:** e996e848c6d55a9640a0cfa24ab5b34a275f9ceb
@@ -147,6 +147,9 @@ class HTTPClient:
147
147
  self.base_url = self.base_url.replace(f"{{{var_name}}}", var_value)
148
148
 
149
149
  self.auth_config = auth_config
150
+ assert (
151
+ self.auth_config.type is not None
152
+ ), "auth_config.type cannot be None" # Should never be None when instantiated via the local executor flow
150
153
  self.secrets = secrets
151
154
  self.logger = logger or NullLogger()
152
155
  self.metrics = HTTPMetrics()
@@ -296,12 +299,12 @@ class HTTPClient:
296
299
 
297
300
  # Support both sync and async callbacks
298
301
  callback_result = self.on_token_refresh(callback_data)
299
- if hasattr(callback_result, "__await__"):
302
+ if callback_result is not None and hasattr(callback_result, "__await__"):
300
303
  await callback_result
301
304
  except Exception as callback_error:
302
305
  self.logger.log_error(
303
306
  request_id=None,
304
- error=("Token refresh callback failed during initialization: " f"{callback_error!s}"),
307
+ error=(f"Token refresh callback failed during initialization: {callback_error!s}"),
305
308
  status_code=None,
306
309
  )
307
310
 
@@ -485,7 +488,7 @@ class HTTPClient:
485
488
  elif "application/json" in content_type or not content_type:
486
489
  response_data = await response.json()
487
490
  else:
488
- error_msg = f"Expected JSON response for {method.upper()} {url}, " f"got content-type: {content_type}"
491
+ error_msg = f"Expected JSON response for {method.upper()} {url}, got content-type: {content_type}"
489
492
  raise HTTPClientError(error_msg)
490
493
 
491
494
  except ValueError as e:
@@ -556,6 +559,7 @@ class HTTPClient:
556
559
  current_token = self.secrets.get("access_token")
557
560
  strategy = AuthStrategyFactory.get_strategy(self.auth_config.type)
558
561
 
562
+ # Try to refresh credentials
559
563
  try:
560
564
  result = await strategy.handle_auth_error(
561
565
  status_code=status_code,
@@ -564,53 +568,56 @@ class HTTPClient:
564
568
  config_values=self.config_values,
565
569
  http_client=None, # Let strategy create its own client
566
570
  )
567
-
568
- if result:
569
- # Notify callback if provided (for persistence)
570
- # Include both tokens AND extracted values for full persistence
571
- if self.on_token_refresh is not None:
572
- try:
573
- # Build callback data with both tokens and extracted values
574
- callback_data = dict(result.tokens)
575
- if result.extracted_values:
576
- callback_data.update(result.extracted_values)
577
-
578
- # Support both sync and async callbacks
579
- callback_result = self.on_token_refresh(callback_data)
580
- if hasattr(callback_result, "__await__"):
581
- await callback_result
582
- except Exception as callback_error:
583
- self.logger.log_error(
584
- request_id=request_id,
585
- error=f"Token refresh callback failed: {str(callback_error)}",
586
- status_code=status_code,
587
- )
588
-
589
- # Update secrets with new tokens (in-memory)
590
- self.secrets.update(result.tokens)
591
-
592
- # Update config_values and re-render base_url with extracted values
593
- if result.extracted_values:
594
- self._apply_token_extract(result.extracted_values)
595
-
596
- if self.secrets.get("access_token") != current_token:
597
- # Retry with new token - this will go through full retry logic
598
- return await self.request(
599
- method=method,
600
- path=path,
601
- params=params,
602
- json=json,
603
- data=data,
604
- headers=headers,
605
- )
606
-
607
571
  except Exception as refresh_error:
608
572
  self.logger.log_error(
609
573
  request_id=request_id,
610
574
  error=f"Credential refresh failed: {str(refresh_error)}",
611
575
  status_code=status_code,
612
576
  )
577
+ result = None
578
+
579
+ # If refresh succeeded, update tokens and retry
580
+ if result:
581
+ # Notify callback if provided (for persistence)
582
+ # Include both tokens AND extracted values for full persistence
583
+ if self.on_token_refresh is not None:
584
+ try:
585
+ # Build callback data with both tokens and extracted values
586
+ callback_data = dict(result.tokens)
587
+ if result.extracted_values:
588
+ callback_data.update(result.extracted_values)
589
+
590
+ # Support both sync and async callbacks
591
+ callback_result = self.on_token_refresh(callback_data)
592
+ if callback_result is not None and hasattr(callback_result, "__await__"):
593
+ await callback_result
594
+ except Exception as callback_error:
595
+ self.logger.log_error(
596
+ request_id=request_id,
597
+ error=f"Token refresh callback failed: {str(callback_error)}",
598
+ status_code=status_code,
599
+ )
600
+
601
+ # Update secrets with new tokens (in-memory)
602
+ self.secrets.update(result.tokens)
603
+
604
+ # Update config_values and re-render base_url with extracted values
605
+ if result.extracted_values:
606
+ self._apply_token_extract(result.extracted_values)
613
607
 
608
+ if self.secrets.get("access_token") != current_token:
609
+ # Retry with new token - this will go through full retry logic
610
+ # Any errors from this retry will propagate to the caller
611
+ return await self.request(
612
+ method=method,
613
+ path=path,
614
+ params=params,
615
+ json=json,
616
+ data=data,
617
+ headers=headers,
618
+ )
619
+
620
+ # Refresh failed or token didn't change, log and let original error propagate
614
621
  self.logger.log_error(request_id=request_id, error=str(error), status_code=status_code)
615
622
 
616
623
  async def request(
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "airbyte-agent-zendesk-support"
3
- version = "0.18.20"
3
+ version = "0.18.22"
4
4
  description = "Airbyte Zendesk-Support Connector for AI platforms"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.9"