airbyte-agent-zendesk-support 0.18.30__tar.gz → 0.18.32__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 (59) hide show
  1. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/CHANGELOG.md +10 -0
  2. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/PKG-INFO +3 -3
  3. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/README.md +2 -2
  4. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/connector_model_loader.py +10 -2
  5. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/executor/local_executor.py +51 -1
  6. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/extensions.py +39 -0
  7. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/components.py +2 -1
  8. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/security.py +10 -0
  9. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/types.py +4 -0
  10. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/pyproject.toml +1 -1
  11. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/.gitignore +0 -0
  12. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/REFERENCE.md +0 -0
  13. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/__init__.py +0 -0
  14. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/__init__.py +0 -0
  15. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/__init__.py +0 -0
  16. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/auth_strategies.py +0 -0
  17. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/auth_template.py +0 -0
  18. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/cloud_utils/__init__.py +0 -0
  19. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/cloud_utils/client.py +0 -0
  20. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/constants.py +0 -0
  21. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/exceptions.py +0 -0
  22. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/executor/__init__.py +0 -0
  23. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/executor/hosted_executor.py +0 -0
  24. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/executor/models.py +0 -0
  25. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/__init__.py +0 -0
  26. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/adapters/__init__.py +0 -0
  27. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/adapters/httpx_adapter.py +0 -0
  28. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/config.py +0 -0
  29. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/exceptions.py +0 -0
  30. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/protocols.py +0 -0
  31. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/response.py +0 -0
  32. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http_client.py +0 -0
  33. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/introspection.py +0 -0
  34. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/logging/__init__.py +0 -0
  35. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/logging/logger.py +0 -0
  36. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/logging/types.py +0 -0
  37. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/observability/__init__.py +0 -0
  38. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/observability/models.py +0 -0
  39. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/observability/redactor.py +0 -0
  40. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/observability/session.py +0 -0
  41. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/performance/__init__.py +0 -0
  42. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/performance/instrumentation.py +0 -0
  43. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/performance/metrics.py +0 -0
  44. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/__init__.py +0 -0
  45. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/base.py +0 -0
  46. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/connector.py +0 -0
  47. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/extensions.py +0 -0
  48. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/operations.py +0 -0
  49. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/secrets.py +0 -0
  50. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/telemetry/__init__.py +0 -0
  51. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/telemetry/config.py +0 -0
  52. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/telemetry/events.py +0 -0
  53. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/telemetry/tracker.py +0 -0
  54. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/utils.py +0 -0
  55. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/_vendored/connector_sdk/validation.py +0 -0
  56. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/connector.py +0 -0
  57. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/connector_model.py +0 -0
  58. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/models.py +0 -0
  59. {airbyte_agent_zendesk_support-0.18.30 → airbyte_agent_zendesk_support-0.18.32}/airbyte_agent_zendesk_support/types.py +0 -0
@@ -1,5 +1,15 @@
1
1
  # Zendesk Support changelog
2
2
 
3
+ ## [0.18.32] - 2026-01-09
4
+ - Updated connector definition (YAML version 0.1.4)
5
+ - Source commit: 3c7bfdfd
6
+ - SDK version: 0.1.0
7
+
8
+ ## [0.18.31] - 2026-01-09
9
+ - Updated connector definition (YAML version 0.1.4)
10
+ - Source commit: 3bcb33e8
11
+ - SDK version: 0.1.0
12
+
3
13
  ## [0.18.30] - 2026-01-09
4
14
  - Updated connector definition (YAML version 0.1.4)
5
15
  - Source commit: da9b741b
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airbyte-agent-zendesk-support
3
- Version: 0.18.30
3
+ Version: 0.18.32
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
@@ -141,6 +141,6 @@ For the service's official API docs, see the [Zendesk-Support API reference](htt
141
141
 
142
142
  ## Version information
143
143
 
144
- - **Package version:** 0.18.30
144
+ - **Package version:** 0.18.32
145
145
  - **Connector version:** 0.1.4
146
- - **Generated with Connector SDK commit SHA:** da9b741b7b9d8091113af16ba8ec5d5e5d13b749
146
+ - **Generated with Connector SDK commit SHA:** 3c7bfdfd1100dd20420a61cec56549b65820ea0f
@@ -107,6 +107,6 @@ For the service's official API docs, see the [Zendesk-Support API reference](htt
107
107
 
108
108
  ## Version information
109
109
 
110
- - **Package version:** 0.18.30
110
+ - **Package version:** 0.18.32
111
111
  - **Connector version:** 0.1.4
112
- - **Generated with Connector SDK commit SHA:** da9b741b7b9d8091113af16ba8ec5d5e5d13b749
112
+ - **Generated with Connector SDK commit SHA:** 3c7bfdfd1100dd20420a61cec56549b65820ea0f
@@ -393,16 +393,24 @@ def convert_openapi_to_connector_model(spec: OpenAPIConnector) -> ConnectorModel
393
393
  for entity_name, endpoints_dict in entities_map.items():
394
394
  actions = list(endpoints_dict.keys())
395
395
 
396
- # Get schema from components if available
396
+ # Get schema and stream_name from components if available
397
397
  schema = None
398
+ entity_stream_name = None
398
399
  if spec.components:
399
400
  # Look for a schema matching the entity name
400
401
  for schema_name, schema_def in spec.components.schemas.items():
401
402
  if schema_def.x_airbyte_entity_name == entity_name or schema_name.lower() == entity_name.lower():
402
403
  schema = schema_def.model_dump(by_alias=True)
404
+ entity_stream_name = schema_def.x_airbyte_stream_name
403
405
  break
404
406
 
405
- entity = EntityDefinition(name=entity_name, actions=actions, endpoints=endpoints_dict, schema=schema)
407
+ entity = EntityDefinition(
408
+ name=entity_name,
409
+ stream_name=entity_stream_name,
410
+ actions=actions,
411
+ endpoints=endpoints_dict,
412
+ schema=schema,
413
+ )
406
414
  entities.append(entity)
407
415
 
408
416
  # Extract retry config from x-airbyte-retry-config extension
@@ -844,10 +844,58 @@ class LocalExecutor:
844
844
  return self._extract_body(endpoint.body_fields, params)
845
845
  return None
846
846
 
847
+ def _flatten_form_data(self, data: dict[str, Any], parent_key: str = "") -> dict[str, Any]:
848
+ """Flatten nested dict/list structures into bracket notation for form encoding.
849
+
850
+ Stripe and similar APIs require nested arrays/objects to be encoded using bracket
851
+ notation when using application/x-www-form-urlencoded content type.
852
+
853
+ Args:
854
+ data: Nested dict with arrays/objects to flatten
855
+ parent_key: Parent key for nested structures (used in recursion)
856
+
857
+ Returns:
858
+ Flattened dict with bracket notation keys
859
+
860
+ Examples:
861
+ >>> _flatten_form_data({"items": [{"price": "p1", "qty": 1}]})
862
+ {"items[0][price]": "p1", "items[0][qty]": 1}
863
+
864
+ >>> _flatten_form_data({"customer": "cus_123", "metadata": {"key": "value"}})
865
+ {"customer": "cus_123", "metadata[key]": "value"}
866
+ """
867
+ flattened = {}
868
+
869
+ for key, value in data.items():
870
+ new_key = f"{parent_key}[{key}]" if parent_key else key
871
+
872
+ if isinstance(value, dict):
873
+ # Recursively flatten nested dicts
874
+ flattened.update(self._flatten_form_data(value, new_key))
875
+ elif isinstance(value, list):
876
+ # Flatten arrays with indexed bracket notation
877
+ for i, item in enumerate(value):
878
+ indexed_key = f"{new_key}[{i}]"
879
+ if isinstance(item, dict):
880
+ # Nested dict in array - recurse
881
+ flattened.update(self._flatten_form_data(item, indexed_key))
882
+ elif isinstance(item, list):
883
+ # Nested list in array - recurse
884
+ flattened.update(self._flatten_form_data({str(i): item}, new_key))
885
+ else:
886
+ # Primitive value in array
887
+ flattened[indexed_key] = item
888
+ else:
889
+ # Primitive value - add directly
890
+ flattened[new_key] = value
891
+
892
+ return flattened
893
+
847
894
  def _determine_request_format(self, endpoint: EndpointDefinition, body: dict[str, Any] | None) -> dict[str, Any]:
848
895
  """Determine json/data parameters for HTTP request.
849
896
 
850
897
  GraphQL always uses JSON, regardless of content_type setting.
898
+ For form-encoded requests, nested structures are flattened into bracket notation.
851
899
 
852
900
  Args:
853
901
  endpoint: Endpoint definition
@@ -864,7 +912,9 @@ class LocalExecutor:
864
912
  if is_graphql or endpoint.content_type.value == "application/json":
865
913
  return {"json": body}
866
914
  elif endpoint.content_type.value == "application/x-www-form-urlencoded":
867
- return {"data": body}
915
+ # Flatten nested structures for form encoding
916
+ flattened_body = self._flatten_form_data(body)
917
+ return {"data": flattened_body}
868
918
 
869
919
  return {}
870
920
 
@@ -159,6 +159,38 @@ Example:
159
159
  ```
160
160
  """
161
161
 
162
+ AIRBYTE_STREAM_NAME = "x-airbyte-stream-name"
163
+ """
164
+ Extension: x-airbyte-stream-name
165
+ Location: Schema object (in components.schemas)
166
+ Type: string
167
+ Required: No
168
+
169
+ Description:
170
+ Specifies the Airbyte stream name for cache lookup purposes. This maps the entity
171
+ to the corresponding Airbyte stream, enabling cache-based data retrieval. When
172
+ specified, the EntityDefinition.stream_name field will be populated with this value.
173
+
174
+ This extension is placed on Schema objects alongside x-airbyte-entity-name, following
175
+ the same pattern. The stream name is an entity-level property (not operation-level)
176
+ since an entity maps to exactly one Airbyte stream.
177
+
178
+ Example:
179
+ ```yaml
180
+ components:
181
+ schemas:
182
+ Customer:
183
+ type: object
184
+ x-airbyte-entity-name: customers
185
+ x-airbyte-stream-name: customers
186
+ properties:
187
+ id:
188
+ type: string
189
+ name:
190
+ type: string
191
+ ```
192
+ """
193
+
162
194
  AIRBYTE_TOKEN_PATH = "x-airbyte-token-path"
163
195
  """
164
196
  Extension: x-airbyte-token-path
@@ -548,6 +580,7 @@ def get_all_extension_names() -> list[str]:
548
580
  AIRBYTE_ENTITY,
549
581
  AIRBYTE_ACTION,
550
582
  AIRBYTE_ENTITY_NAME,
583
+ AIRBYTE_STREAM_NAME,
551
584
  AIRBYTE_TOKEN_PATH,
552
585
  AIRBYTE_BODY_TYPE,
553
586
  AIRBYTE_PATH_OVERRIDE,
@@ -594,6 +627,12 @@ EXTENSION_REGISTRY = {
594
627
  "required": False,
595
628
  "description": "Links schema to an entity/stream",
596
629
  },
630
+ AIRBYTE_STREAM_NAME: {
631
+ "location": "schema",
632
+ "type": "string",
633
+ "required": False,
634
+ "description": "Maps entity to Airbyte stream for cache lookup",
635
+ },
597
636
  AIRBYTE_TOKEN_PATH: {
598
637
  "location": "securityScheme",
599
638
  "type": "string",
@@ -65,8 +65,9 @@ class Schema(BaseModel):
65
65
  write_only: Optional[bool] = Field(None, alias="writeOnly")
66
66
  deprecated: Optional[bool] = None
67
67
 
68
- # Airbyte extension
68
+ # Airbyte extensions
69
69
  x_airbyte_entity_name: Optional[str] = Field(None, alias="x-airbyte-entity-name")
70
+ x_airbyte_stream_name: Optional[str] = Field(None, alias="x-airbyte-stream-name")
70
71
 
71
72
 
72
73
  class Parameter(BaseModel):
@@ -77,6 +77,10 @@ class AuthConfigOption(BaseModel):
77
77
  default_factory=dict,
78
78
  description="Mapping from auth parameters (e.g., 'username', 'password', 'token') to template strings using ${field} syntax",
79
79
  )
80
+ replication_auth_key_mapping: Optional[Dict[str, str]] = Field(
81
+ None,
82
+ description="Mapping from source config paths (e.g., 'credentials.api_key') to auth config keys for direct connectors",
83
+ )
80
84
 
81
85
 
82
86
  class AirbyteAuthConfig(BaseModel):
@@ -99,6 +103,12 @@ class AirbyteAuthConfig(BaseModel):
99
103
  properties: Optional[Dict[str, AuthConfigFieldSpec]] = None
100
104
  auth_mapping: Optional[Dict[str, str]] = None
101
105
 
106
+ # Replication connector auth mapping
107
+ replication_auth_key_mapping: Optional[Dict[str, str]] = Field(
108
+ None,
109
+ description="Mapping from source config paths (e.g., 'credentials.api_key') to auth config keys for direct connectors",
110
+ )
111
+
102
112
  # Multiple options (oneOf)
103
113
  one_of: Optional[List[AuthConfigOption]] = Field(None, alias="oneOf")
104
114
 
@@ -221,6 +221,10 @@ class EntityDefinition(BaseModel):
221
221
  model_config = {"populate_by_name": True}
222
222
 
223
223
  name: str
224
+ stream_name: str | None = Field(
225
+ default=None,
226
+ description="Airbyte stream name for cache lookup (from x-airbyte-stream-name schema extension)",
227
+ )
224
228
  actions: list[Action]
225
229
  endpoints: dict[Action, EndpointDefinition]
226
230
  entity_schema: dict[str, Any] | None = Field(default=None, alias="schema")
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "airbyte-agent-zendesk-support"
3
- version = "0.18.30"
3
+ version = "0.18.32"
4
4
  description = "Airbyte Zendesk-Support Connector for AI platforms"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.9"