airbyte-agent-zendesk-chat 0.1.1__py3-none-any.whl → 0.1.4__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.
@@ -15,9 +15,9 @@ from .models import (
15
15
  AgentTimeline,
16
16
  Ban,
17
17
  ChatHistoryItem,
18
+ ChatEngagement,
18
19
  ChatConversion,
19
20
  WebpathItem,
20
- ChatEngagement,
21
21
  Chat,
22
22
  Visitor,
23
23
  ChatSession,
@@ -110,9 +110,9 @@ __all__ = [
110
110
  "AgentTimeline",
111
111
  "Ban",
112
112
  "ChatHistoryItem",
113
+ "ChatEngagement",
113
114
  "ChatConversion",
114
115
  "WebpathItem",
115
- "ChatEngagement",
116
116
  "Chat",
117
117
  "Visitor",
118
118
  "ChatSession",
@@ -152,6 +152,11 @@ class OAuth2AuthConfig(TypedDict, total=False):
152
152
  Note: Any config key can be used as a template variable in refresh_url.
153
153
  Common patterns: subdomain (Zendesk), shop (Shopify), region (AWS-style APIs).
154
154
 
155
+ additional_headers: Extra headers to inject alongside the OAuth2 Bearer token.
156
+ Useful for APIs that require both OAuth and an API key/client ID header.
157
+ Values support Jinja2 {{ variable }} template syntax to reference secrets.
158
+ Example: {"Amazon-Advertising-API-ClientId": "{{ client_id }}"}
159
+
155
160
  Examples:
156
161
  GitHub (simple):
157
162
  {"header": "Authorization", "prefix": "Bearer"}
@@ -169,6 +174,14 @@ class OAuth2AuthConfig(TypedDict, total=False):
169
174
  "auth_style": "basic",
170
175
  "body_format": "json"
171
176
  }
177
+
178
+ Amazon Ads (OAuth + additional client ID header):
179
+ {
180
+ "refresh_url": "https://api.amazon.com/auth/o2/token",
181
+ "additional_headers": {
182
+ "Amazon-Advertising-API-ClientId": "{{ client_id }}"
183
+ }
184
+ }
172
185
  """
173
186
 
174
187
  header: str
@@ -177,6 +190,7 @@ class OAuth2AuthConfig(TypedDict, total=False):
177
190
  auth_style: AuthStyle
178
191
  body_format: BodyFormat
179
192
  subdomain: str
193
+ additional_headers: dict[str, str]
180
194
 
181
195
 
182
196
  class OAuth2AuthSecrets(TypedDict):
@@ -552,9 +566,10 @@ class OAuth2AuthStrategy(AuthStrategy):
552
566
  config: OAuth2AuthConfig,
553
567
  secrets: OAuth2AuthSecrets,
554
568
  ) -> dict[str, str]:
555
- """Inject OAuth2 access token into headers.
569
+ """Inject OAuth2 access token and additional headers.
556
570
 
557
- Creates a copy of the headers dict with the OAuth2 token added.
571
+ Creates a copy of the headers dict with the OAuth2 token added,
572
+ plus any additional headers configured via additional_headers.
558
573
  The original headers dict is not modified.
559
574
 
560
575
  Args:
@@ -563,7 +578,7 @@ class OAuth2AuthStrategy(AuthStrategy):
563
578
  secrets: OAuth2 credentials including access_token
564
579
 
565
580
  Returns:
566
- New headers dict with OAuth2 token authentication injected
581
+ New headers dict with OAuth2 token and additional headers injected
567
582
 
568
583
  Raises:
569
584
  AuthenticationError: If access_token is missing
@@ -589,8 +604,46 @@ class OAuth2AuthStrategy(AuthStrategy):
589
604
  # Extract secret value (handle both SecretStr and plain str)
590
605
  token_value = extract_secret_value(access_token)
591
606
 
592
- # Inject into headers
607
+ # Inject OAuth2 Bearer token
593
608
  headers[header_name] = f"{prefix} {token_value}"
609
+
610
+ # Inject additional headers if configured
611
+ additional_headers = config.get("additional_headers")
612
+ if additional_headers:
613
+ headers = self._inject_additional_headers(headers, additional_headers, secrets)
614
+
615
+ return headers
616
+
617
+ def _inject_additional_headers(
618
+ self,
619
+ headers: dict[str, str],
620
+ additional_headers: dict[str, str],
621
+ secrets: dict[str, Any],
622
+ ) -> dict[str, str]:
623
+ """Inject additional headers with Jinja2 template variable substitution.
624
+
625
+ Processes additional_headers config, substituting {{ variable }} patterns
626
+ with values from secrets using Jinja2 templating.
627
+
628
+ Args:
629
+ headers: Headers dict to add to (modified in place)
630
+ additional_headers: Header name -> value template mapping
631
+ secrets: Secrets dict for variable substitution
632
+
633
+ Returns:
634
+ Headers dict with additional headers added
635
+ """
636
+ # Build template context with extracted secret values
637
+ template_context = {
638
+ key: extract_secret_value(value) for key, value in secrets.items()
639
+ }
640
+
641
+ for header_name, value_template in additional_headers.items():
642
+ # Use Jinja2 templating for variable substitution
643
+ template = Template(value_template)
644
+ header_value = template.render(**template_context)
645
+ headers[header_name] = header_value
646
+
594
647
  return headers
595
648
 
596
649
  def validate_credentials(self, secrets: OAuth2AuthSecrets) -> None: # type: ignore[override]
@@ -188,7 +188,7 @@ def parse_openapi_spec(raw_config: dict) -> OpenAPIConnector:
188
188
 
189
189
  def _extract_request_body_config(
190
190
  request_body: RequestBody | None, spec_dict: dict[str, Any]
191
- ) -> tuple[list[str], dict[str, Any] | None, dict[str, Any] | None]:
191
+ ) -> tuple[list[str], dict[str, Any] | None, dict[str, Any] | None, dict[str, Any]]:
192
192
  """Extract request body configuration (GraphQL or standard).
193
193
 
194
194
  Args:
@@ -196,17 +196,19 @@ def _extract_request_body_config(
196
196
  spec_dict: Full OpenAPI spec dict for $ref resolution
197
197
 
198
198
  Returns:
199
- Tuple of (body_fields, request_schema, graphql_body)
199
+ Tuple of (body_fields, request_schema, graphql_body, request_body_defaults)
200
200
  - body_fields: List of field names for standard JSON/form bodies
201
201
  - request_schema: Resolved request schema dict (for standard bodies)
202
202
  - graphql_body: GraphQL body configuration dict (for GraphQL bodies)
203
+ - request_body_defaults: Default values for request body fields
203
204
  """
204
205
  body_fields: list[str] = []
205
206
  request_schema: dict[str, Any] | None = None
206
207
  graphql_body: dict[str, Any] | None = None
208
+ request_body_defaults: dict[str, Any] = {}
207
209
 
208
210
  if not request_body:
209
- return body_fields, request_schema, graphql_body
211
+ return body_fields, request_schema, graphql_body, request_body_defaults
210
212
 
211
213
  # Check for GraphQL extension and extract GraphQL body configuration
212
214
  if request_body.x_airbyte_body_type:
@@ -216,7 +218,7 @@ def _extract_request_body_config(
216
218
  if isinstance(body_type_config, GraphQLBodyConfig):
217
219
  # Convert Pydantic model to dict, excluding None values
218
220
  graphql_body = body_type_config.model_dump(exclude_none=True, by_alias=False)
219
- return body_fields, request_schema, graphql_body
221
+ return body_fields, request_schema, graphql_body, request_body_defaults
220
222
 
221
223
  # Parse standard request body
222
224
  for content_type_key, media_type in request_body.content.items():
@@ -226,11 +228,15 @@ def _extract_request_body_config(
226
228
  # Resolve all $refs in the schema using jsonref
227
229
  request_schema = resolve_schema_refs(schema, spec_dict)
228
230
 
229
- # Extract body field names from resolved schema
231
+ # Extract body field names and defaults from resolved schema
230
232
  if isinstance(request_schema, dict) and "properties" in request_schema:
231
233
  body_fields = list(request_schema["properties"].keys())
234
+ # Extract default values for each property
235
+ for field_name, field_schema in request_schema["properties"].items():
236
+ if isinstance(field_schema, dict) and "default" in field_schema:
237
+ request_body_defaults[field_name] = field_schema["default"]
232
238
 
233
- return body_fields, request_schema, graphql_body
239
+ return body_fields, request_schema, graphql_body, request_body_defaults
234
240
 
235
241
 
236
242
  def convert_openapi_to_connector_model(spec: OpenAPIConnector) -> ConnectorModel:
@@ -315,6 +321,8 @@ def convert_openapi_to_connector_model(spec: OpenAPIConnector) -> ConnectorModel
315
321
  query_params: list[str] = []
316
322
  query_params_schema: dict[str, dict[str, Any]] = {}
317
323
  deep_object_params: list[str] = []
324
+ header_params: list[str] = []
325
+ header_params_schema: dict[str, dict[str, Any]] = {}
318
326
 
319
327
  if operation.parameters:
320
328
  for param in operation.parameters:
@@ -336,9 +344,12 @@ def convert_openapi_to_connector_model(spec: OpenAPIConnector) -> ConnectorModel
336
344
  # Check if this is a deepObject style parameter
337
345
  if hasattr(param, "style") and param.style == "deepObject":
338
346
  deep_object_params.append(param.name)
347
+ elif param.in_ == "header":
348
+ header_params.append(param.name)
349
+ header_params_schema[param.name] = schema_info
339
350
 
340
- # Extract body fields from request schema
341
- body_fields, request_schema, graphql_body = _extract_request_body_config(operation.request_body, spec_dict)
351
+ # Extract body fields and defaults from request schema
352
+ body_fields, request_schema, graphql_body, request_body_defaults = _extract_request_body_config(operation.request_body, spec_dict)
342
353
 
343
354
  # Extract response schema
344
355
  response_schema = None
@@ -372,6 +383,9 @@ def convert_openapi_to_connector_model(spec: OpenAPIConnector) -> ConnectorModel
372
383
  deep_object_params=deep_object_params,
373
384
  path_params=path_params,
374
385
  path_params_schema=path_params_schema,
386
+ header_params=header_params,
387
+ header_params_schema=header_params_schema,
388
+ request_body_defaults=request_body_defaults,
375
389
  content_type=content_type,
376
390
  request_schema=request_schema,
377
391
  response_schema=response_schema,
@@ -535,6 +549,13 @@ def _parse_oauth2_config(scheme: Any) -> dict[str, str]:
535
549
  if x_token_extract:
536
550
  config["token_extract"] = x_token_extract
537
551
 
552
+ # Extract additional_headers from x-airbyte-auth-config extension
553
+ x_auth_config = getattr(scheme, "x_airbyte_auth_config", None)
554
+ if x_auth_config:
555
+ additional_headers = getattr(x_auth_config, "additional_headers", None)
556
+ if additional_headers:
557
+ config["additional_headers"] = additional_headers
558
+
538
559
  return config
539
560
 
540
561
 
@@ -64,6 +64,7 @@ class _OperationContext:
64
64
  self.build_path = executor._build_path
65
65
  self.extract_query_params = executor._extract_query_params
66
66
  self.extract_body = executor._extract_body
67
+ self.extract_header_params = executor._extract_header_params
67
68
  self.build_request_body = executor._build_request_body
68
69
  self.determine_request_format = executor._determine_request_format
69
70
  self.validate_required_body_fields = executor._validate_required_body_fields
@@ -693,6 +694,42 @@ class LocalExecutor:
693
694
  """
694
695
  return {key: value for key, value in params.items() if key in allowed_fields and value is not None}
695
696
 
697
+ def _extract_header_params(
698
+ self, endpoint: EndpointDefinition, params: dict[str, Any], body: dict[str, Any] | None = None
699
+ ) -> dict[str, str]:
700
+ """Extract header parameters from params and schema defaults.
701
+
702
+ Also adds Content-Type header when there's a request body (unless already specified
703
+ as a header parameter in the OpenAPI spec).
704
+
705
+ Args:
706
+ endpoint: Endpoint definition with header_params and header_params_schema
707
+ params: All parameters
708
+ body: Request body (if any) - used to determine if Content-Type should be added
709
+
710
+ Returns:
711
+ Dictionary of header name -> value
712
+ """
713
+ headers: dict[str, str] = {}
714
+
715
+ for header_name in endpoint.header_params:
716
+ # Check if value is provided in params
717
+ if header_name in params and params[header_name] is not None:
718
+ headers[header_name] = str(params[header_name])
719
+ # Otherwise, use default from schema if available
720
+ elif header_name in endpoint.header_params_schema:
721
+ default_value = endpoint.header_params_schema[header_name].get("default")
722
+ if default_value is not None:
723
+ headers[header_name] = str(default_value)
724
+
725
+ # Add Content-Type header when there's a request body, but only if not already
726
+ # specified as a header parameter (which allows custom content types like
727
+ # application/vnd.spCampaign.v3+json)
728
+ if body is not None and endpoint.content_type and "Content-Type" not in headers:
729
+ headers["Content-Type"] = endpoint.content_type.value
730
+
731
+ return headers
732
+
696
733
  def _serialize_deep_object_params(self, params: dict[str, Any], deep_object_param_names: list[str]) -> dict[str, Any]:
697
734
  """Serialize deepObject parameters to bracket notation format.
698
735
 
@@ -848,7 +885,15 @@ class LocalExecutor:
848
885
  param_defaults = {name: schema.get("default") for name, schema in endpoint.query_params_schema.items() if "default" in schema}
849
886
  return self._build_graphql_body(endpoint.graphql_body, params, param_defaults)
850
887
  elif endpoint.body_fields:
851
- return self._extract_body(endpoint.body_fields, params)
888
+ # Start with defaults from request body schema
889
+ body = dict(endpoint.request_body_defaults)
890
+ # Override with user-provided params (filtering out None values)
891
+ user_body = self._extract_body(endpoint.body_fields, params)
892
+ body.update(user_body)
893
+ return body if body else None
894
+ elif endpoint.request_body_defaults:
895
+ # If no body_fields but we have defaults, return the defaults
896
+ return dict(endpoint.request_body_defaults)
852
897
  return None
853
898
 
854
899
  def _flatten_form_data(self, data: dict[str, Any], parent_key: str = "") -> dict[str, Any]:
@@ -1484,6 +1529,9 @@ class _StandardOperationHandler:
1484
1529
  # Determine request format (json/data parameters)
1485
1530
  request_kwargs = self.ctx.determine_request_format(endpoint, body)
1486
1531
 
1532
+ # Extract header parameters from OpenAPI operation (pass body to add Content-Type)
1533
+ header_params = self.ctx.extract_header_params(endpoint, params, body)
1534
+
1487
1535
  # Execute async HTTP request
1488
1536
  response_data, response_headers = await self.ctx.http_client.request(
1489
1537
  method=endpoint.method,
@@ -1491,6 +1539,7 @@ class _StandardOperationHandler:
1491
1539
  params=query_params if query_params else None,
1492
1540
  json=request_kwargs.get("json"),
1493
1541
  data=request_kwargs.get("data"),
1542
+ headers=header_params if header_params else None,
1494
1543
  )
1495
1544
 
1496
1545
  # Extract metadata from original response (before record extraction)
@@ -7,7 +7,7 @@ References:
7
7
  """
8
8
 
9
9
  from enum import StrEnum
10
- from typing import Dict
10
+ from typing import Any, Dict
11
11
  from uuid import UUID
12
12
 
13
13
  from pydantic import BaseModel, ConfigDict, Field, field_validator
@@ -152,7 +152,12 @@ class Server(BaseModel):
152
152
  url: str
153
153
  description: str | None = None
154
154
  variables: Dict[str, ServerVariable] = Field(default_factory=dict)
155
- x_airbyte_replication_user_config_mapping: Dict[str, str] | None = Field(default=None, alias="x-airbyte-replication-user-config-mapping")
155
+ x_airbyte_replication_environment_mapping: Dict[str, str] | None = Field(default=None, alias="x-airbyte-replication-environment-mapping")
156
+ x_airbyte_replication_environment_constants: Dict[str, Any] | None = Field(
157
+ default=None,
158
+ alias="x-airbyte-replication-environment-constants",
159
+ description="Constant values to always inject at environment config paths (e.g., 'region': 'us-east-1')",
160
+ )
156
161
 
157
162
  @field_validator("url")
158
163
  @classmethod
@@ -109,6 +109,20 @@ class AirbyteAuthConfig(BaseModel):
109
109
  description="Mapping from source config paths (e.g., 'credentials.api_key') to auth config keys for direct connectors",
110
110
  )
111
111
 
112
+ # Additional headers to inject alongside OAuth2 Bearer token
113
+ additional_headers: Dict[str, str] | None = Field(
114
+ None,
115
+ description=(
116
+ "Extra headers to inject with auth. Values support Jinja2 {{ variable }} template syntax "
117
+ "to reference secrets. Example: {'Amazon-Advertising-API-ClientId': '{{ client_id }}'}"
118
+ ),
119
+ )
120
+
121
+ # Replication connector auth constants
122
+ replication_auth_key_constants: Dict[str, Any] | None = Field(
123
+ None,
124
+ description="Constant values to always inject at source config paths (e.g., 'credentials.auth_type': 'OAuth2.0')",
125
+ )
112
126
  # Multiple options (oneOf)
113
127
  one_of: List[AuthConfigOption] | None = Field(None, alias="oneOf")
114
128
 
@@ -180,6 +180,15 @@ class EndpointDefinition(BaseModel):
180
180
  default_factory=dict,
181
181
  description="Schema for path params including defaults: {name: {type, default, required}}",
182
182
  )
183
+ header_params: list[str] = Field(default_factory=list) # Header parameters from OpenAPI
184
+ header_params_schema: dict[str, dict[str, Any]] = Field(
185
+ default_factory=dict,
186
+ description="Schema for header params including defaults: {name: {type, default, required}}",
187
+ )
188
+ request_body_defaults: dict[str, Any] = Field(
189
+ default_factory=dict,
190
+ description="Default values for request body fields from OpenAPI schema",
191
+ )
183
192
  content_type: ContentType = ContentType.JSON
184
193
  request_schema: dict[str, Any] | None = None
185
194
  response_schema: dict[str, Any] | None = None
@@ -101,7 +101,7 @@ class ZendeskChatConnector:
101
101
  """
102
102
 
103
103
  connector_name = "zendesk-chat"
104
- connector_version = "0.1.2"
104
+ connector_version = "0.1.3"
105
105
  vendored_sdk_version = "0.1.0" # Version of vendored connector-sdk
106
106
 
107
107
  # Map of (entity, action) -> needs_envelope for envelope wrapping decision
@@ -26,7 +26,7 @@ from uuid import (
26
26
  ZendeskChatConnectorModel: ConnectorModel = ConnectorModel(
27
27
  id=UUID('40d24d0f-b8f9-4fe0-9e6c-b06c0f3f45e4'),
28
28
  name='zendesk-chat',
29
- version='0.1.2',
29
+ version='0.1.3',
30
30
  base_url='https://{subdomain}.zendesk.com/api/v2/chat',
31
31
  auth=AuthConfig(
32
32
  type=AuthType.BEARER,
@@ -151,23 +151,6 @@ class ChatHistoryItem(BaseModel):
151
151
  new_tags: Union[list[str] | None, Any] = Field(default=None)
152
152
  options: Union[str | None, Any] = Field(default=None)
153
153
 
154
- class ChatConversion(BaseModel):
155
- """ChatConversion type definition"""
156
- model_config = ConfigDict(extra="allow", populate_by_name=True)
157
-
158
- id: Union[str | None, Any] = Field(default=None)
159
- goal_id: Union[int | None, Any] = Field(default=None)
160
- goal_name: Union[str | None, Any] = Field(default=None)
161
- timestamp: Union[str | None, Any] = Field(default=None)
162
- attribution: Union[Any, Any] = Field(default=None)
163
-
164
- class WebpathItem(BaseModel):
165
- """WebpathItem type definition"""
166
- model_config = ConfigDict(extra="allow", populate_by_name=True)
167
-
168
- from_: Union[str | None, Any] = Field(default=None, alias="from")
169
- timestamp: Union[str | None, Any] = Field(default=None)
170
-
171
154
  class ChatEngagement(BaseModel):
172
155
  """ChatEngagement type definition"""
173
156
  model_config = ConfigDict(extra="allow", populate_by_name=True)
@@ -189,6 +172,23 @@ class ChatEngagement(BaseModel):
189
172
  skills_requested: Union[list[int] | None, Any] = Field(default=None)
190
173
  skills_fulfilled: Union[bool | None, Any] = Field(default=None)
191
174
 
175
+ class ChatConversion(BaseModel):
176
+ """ChatConversion type definition"""
177
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
178
+
179
+ id: Union[str | None, Any] = Field(default=None)
180
+ goal_id: Union[int | None, Any] = Field(default=None)
181
+ goal_name: Union[str | None, Any] = Field(default=None)
182
+ timestamp: Union[str | None, Any] = Field(default=None)
183
+ attribution: Union[Any, Any] = Field(default=None)
184
+
185
+ class WebpathItem(BaseModel):
186
+ """WebpathItem type definition"""
187
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
188
+
189
+ from_: Union[str | None, Any] = Field(default=None, alias="from")
190
+ timestamp: Union[str | None, Any] = Field(default=None)
191
+
192
192
  class Chat(BaseModel):
193
193
  """Chat conversation transcript"""
194
194
  model_config = ConfigDict(extra="allow", populate_by_name=True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airbyte-agent-zendesk-chat
3
- Version: 0.1.1
3
+ Version: 0.1.4
4
4
  Summary: Airbyte Zendesk-Chat 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/
@@ -125,6 +125,6 @@ For the service's official API docs, see the [Zendesk-Chat API reference](https:
125
125
 
126
126
  ## Version information
127
127
 
128
- - **Package version:** 0.1.1
129
- - **Connector version:** 0.1.2
130
- - **Generated with Connector SDK commit SHA:** d6d3159205e21eefdcc8ade281c9a9839218ca5c
128
+ - **Package version:** 0.1.4
129
+ - **Connector version:** 0.1.3
130
+ - **Generated with Connector SDK commit SHA:** c713ec4833c2b52dc89926ec68caa343423884cd
@@ -1,27 +1,27 @@
1
- airbyte_agent_zendesk_chat/__init__.py,sha256=3fqFS3RFDIWFLZEjErHmC_Y9H5G1YP8kk8zsr4mIG4A,4292
2
- airbyte_agent_zendesk_chat/connector.py,sha256=74z-nO6UWgpCi27bpQWa1sugbfy14QulXLKwRWqRMcY,43092
3
- airbyte_agent_zendesk_chat/connector_model.py,sha256=n8iTMJMl9SkJzGceK7C1tKn1dzUyZohVcgzI_j1fh4s,121081
4
- airbyte_agent_zendesk_chat/models.py,sha256=Jnz-wqSjgazK8IfC_2HzBvyY4U_Q2uuqruK5yWTBmfM,23905
1
+ airbyte_agent_zendesk_chat/__init__.py,sha256=9j8dwvCgWylg210rlYlCcgmZoAUL8Fh_-FyMxXqYkzE,4292
2
+ airbyte_agent_zendesk_chat/connector.py,sha256=a_xt5L6rMOcW2DjUCNvsjCCSDrHPAfxhd7pLp_znsPo,43092
3
+ airbyte_agent_zendesk_chat/connector_model.py,sha256=Z0Q2nmk8jl3rJH5FWkUlDbuL00ACnxQWBGN7DaPdUM4,121081
4
+ airbyte_agent_zendesk_chat/models.py,sha256=Bt_x6PyWx6RzFX6NhkjfT0gSuaed-j1Gt75IDpPWs6A,23905
5
5
  airbyte_agent_zendesk_chat/types.py,sha256=C5laH7V__abYm0F1Jck49Az6SCJQdnXLgtahxponDgM,28925
6
6
  airbyte_agent_zendesk_chat/_vendored/__init__.py,sha256=ILl7AHXMui__swyrjxrh9yRa4dLiwBvV6axPWFWty80,38
7
7
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/__init__.py,sha256=T5o7roU6NSpH-lCAGZ338sE5dlh4ZU6i6IkeG1zpems,1949
8
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/auth_strategies.py,sha256=BdjAzFRTwXCmLFqYWqZ4Dx9RsqtI7pAkw-8NynSK4sQ,39914
8
+ airbyte_agent_zendesk_chat/_vendored/connector_sdk/auth_strategies.py,sha256=Ve7ObJc_A0N99b8ouuicQzVauDunOvFNG1SRKDfV4ag,42110
9
9
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/auth_template.py,sha256=nju4jqlFC_KI82ILNumNIyiUtRJcy7J94INIZ0QraI4,4454
10
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/connector_model_loader.py,sha256=b88aoMynHxtG2dhzclkWrLiJbefTiKMzReyj3lOiwJI,34940
10
+ airbyte_agent_zendesk_chat/_vendored/connector_sdk/connector_model_loader.py,sha256=SY_Juqw-cap156MsdgrMfe5MAuFdX0vUcSbH5LUYNK0,36295
11
11
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/constants.py,sha256=AtzOvhDMWbRJgpsQNWl5tkogHD6mWgEY668PgRmgtOY,2737
12
12
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/exceptions.py,sha256=ss5MGv9eVPmsbLcLWetuu3sDmvturwfo6Pw3M37Oq5k,481
13
13
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/extensions.py,sha256=XWRRoJOOrwUHSKbuQt5DU7CCu8ePzhd_HuP7c_uD77w,21376
14
14
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/http_client.py,sha256=yucwu3OvJh5wLQa1mk-gTKjtqjKKucMw5ltmlE7mk1c,28000
15
15
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/introspection.py,sha256=2CyKXZHT74-1Id97uw1RLeyOi6TV24_hoNbQ6-6y7uI,10335
16
16
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/secrets.py,sha256=J9ezMu4xNnLW11xY5RCre6DHP7YMKZCqwGJfk7ufHAM,6855
17
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/types.py,sha256=CStkOsLtmZZdXylkdCsbYORDzughxygt1-Ucma0j-qE,8287
17
+ airbyte_agent_zendesk_chat/_vendored/connector_sdk/types.py,sha256=d8PidSD5nzhSSgFwUeYtRKw8pTm0Gft_IHsGeELifuk,8748
18
18
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/utils.py,sha256=G4LUXOC2HzPoND2v4tQW68R9uuPX9NQyCjaGxb7Kpl0,1958
19
19
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/validation.py,sha256=4MPrxYmQh8TbCU0KdvvRKe35Lg1YYLEBd0u4aKySl_E,32122
20
20
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/cloud_utils/__init__.py,sha256=4799Hv9f2zxDVj1aLyQ8JpTEuFTp_oOZMRz-NZCdBJg,134
21
21
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/cloud_utils/client.py,sha256=YxdRpQr9XjDzih6csSseBVGn9kfMtaqbOCXP0TPuzFY,7189
22
22
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/executor/__init__.py,sha256=EmG9YQNAjSuYCVB4D5VoLm4qpD1KfeiiOf7bpALj8p8,702
23
23
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/executor/hosted_executor.py,sha256=ydHcG-biRS1ITT5ELwPShdJW-KYpvK--Fos1ipNgHho,6995
24
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/executor/local_executor.py,sha256=oJDliuS7zU8GILJUjn7T_WNIu25sy5serJHxhnBKyB8,71411
24
+ airbyte_agent_zendesk_chat/_vendored/connector_sdk/executor/local_executor.py,sha256=AgBQBlYIra7kyWcZtRRWSJLqrPbuDq38j13hoVoWJJA,73863
25
25
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/executor/models.py,sha256=lYVT_bNcw-PoIks4WHNyl2VY-lJVf2FntzINSOBIheE,5845
26
26
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/http/__init__.py,sha256=y8fbzZn-3yV9OxtYz8Dy6FFGI5v6TOqADd1G3xHH3Hw,911
27
27
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/http/config.py,sha256=6J7YIIwHC6sRu9i-yKa5XvArwK2KU60rlnmxzDZq3lw,3283
@@ -42,16 +42,16 @@ airbyte_agent_zendesk_chat/_vendored/connector_sdk/performance/__init__.py,sha25
42
42
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/performance/instrumentation.py,sha256=_dXvNiqdndIBwDjeDKNViWzn_M5FkSUsMmJtFldrmsM,1504
43
43
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/performance/metrics.py,sha256=FRff7dKt4iwt_A7pxV5n9kAGBR756PC7q8-weWygPSM,2817
44
44
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/schema/__init__.py,sha256=Uymu-QuzGJuMxexBagIvUxpVAigIuIhz3KeBl_Vu4Ko,1638
45
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/schema/base.py,sha256=4RYTkCWgyS5Z75z9TKj9vXySfO00HJ03QDtbdVYeHYM,5086
45
+ airbyte_agent_zendesk_chat/_vendored/connector_sdk/schema/base.py,sha256=zBW5svQohGCdn46Snc8DG4PsqfmZDovp693vRgugDFE,5374
46
46
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/schema/components.py,sha256=x3YCM1p2n_xHi50fMeOX0mXUiPqjGlLHs3Go8jXokb0,7895
47
47
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/schema/connector.py,sha256=mSZk1wr2YSdRj9tTRsPAuIlCzd_xZLw-Bzl1sMwE0rE,3731
48
48
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/schema/extensions.py,sha256=f7VhHrcIYxaPOJHMc4g0lpy04pZTbx5nlroNzAu5B9Q,7135
49
49
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/schema/operations.py,sha256=RpzGtAI4yvAtMHAfMUMcUwgHv_qJojnKlNb75_agUF8,5729
50
- airbyte_agent_zendesk_chat/_vendored/connector_sdk/schema/security.py,sha256=zQ9RRuF3LBgLQi_4cItmjXbG_5WKlmCNM3nCil30H90,8470
50
+ airbyte_agent_zendesk_chat/_vendored/connector_sdk/schema/security.py,sha256=6ljzf_JHs4amnQX9AhePcEsT8P3ZnTSC4xeg7-cvsNQ,9100
51
51
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/telemetry/__init__.py,sha256=RaLgkBU4dfxn1LC5Y0Q9rr2PJbrwjxvPgBLmq8_WafE,211
52
52
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/telemetry/config.py,sha256=tLmQwAFD0kP1WyBGWBS3ysaudN9H3e-3EopKZi6cGKg,885
53
53
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/telemetry/events.py,sha256=8Y1NbXiwISX-V_wRofY7PqcwEXD0dLMnntKkY6XFU2s,1328
54
54
  airbyte_agent_zendesk_chat/_vendored/connector_sdk/telemetry/tracker.py,sha256=Ftrk0_ddfM7dZG8hF9xBuPwhbc9D6JZ7Q9qs5o3LEyA,5579
55
- airbyte_agent_zendesk_chat-0.1.1.dist-info/METADATA,sha256=vfYpRdBs95iHvNzRjF5FDWVomP2shlzQ6XtG0THNuws,4942
56
- airbyte_agent_zendesk_chat-0.1.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
57
- airbyte_agent_zendesk_chat-0.1.1.dist-info/RECORD,,
55
+ airbyte_agent_zendesk_chat-0.1.4.dist-info/METADATA,sha256=lmfeZpEmZXYO427bwkkHhayQJNEuomqF6p74O10WJ-E,4942
56
+ airbyte_agent_zendesk_chat-0.1.4.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
57
+ airbyte_agent_zendesk_chat-0.1.4.dist-info/RECORD,,