airbyte-agent-amazon-ads 0.1.24__py3-none-any.whl → 0.1.26__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.
@@ -161,24 +161,80 @@ class AirbyteCloudClient:
161
161
  connector_id = connectors[0]["id"]
162
162
  return connector_id
163
163
 
164
+ async def initiate_oauth(
165
+ self,
166
+ definition_id: str,
167
+ external_user_id: str,
168
+ redirect_url: str,
169
+ ) -> str:
170
+ """Initiate a server-side OAuth flow.
171
+
172
+ Starts the OAuth flow for a connector. Returns a consent URL where the
173
+ end user should be redirected to grant access. After completing consent,
174
+ they'll be redirected to your redirect_url with a `server_side_oauth_secret_id`
175
+ query parameter that can be used with `create_source()`.
176
+
177
+ Args:
178
+ definition_id: Connector definition UUID
179
+ external_user_id: Workspace identifier
180
+ redirect_url: URL where users will be redirected after OAuth consent
181
+
182
+ Returns:
183
+ The OAuth consent URL
184
+
185
+ Raises:
186
+ httpx.HTTPStatusError: If the request fails
187
+
188
+ Example:
189
+ consent_url = await client.initiate_oauth(
190
+ definition_id="d8313939-3782-41b0-be29-b3ca20d8dd3a",
191
+ external_user_id="my-workspace",
192
+ redirect_url="https://myapp.com/oauth/callback",
193
+ )
194
+ # Redirect user to: consent_url
195
+ # After consent: https://myapp.com/oauth/callback?server_side_oauth_secret_id=...
196
+ """
197
+ token = await self.get_bearer_token()
198
+ url = f"{self.API_BASE_URL}/api/v1/integrations/connectors/oauth/initiate"
199
+ headers = {"Authorization": f"Bearer {token}"}
200
+ request_body = {
201
+ "external_user_id": external_user_id,
202
+ "definition_id": definition_id,
203
+ "redirect_url": redirect_url,
204
+ }
205
+
206
+ response = await self._http_client.post(url, json=request_body, headers=headers)
207
+ response.raise_for_status()
208
+ return response.json()["consent_url"]
209
+
164
210
  async def create_source(
165
211
  self,
166
212
  name: str,
167
213
  connector_definition_id: str,
168
214
  external_user_id: str,
169
- credentials: dict[str, Any],
215
+ credentials: dict[str, Any] | None = None,
170
216
  replication_config: dict[str, Any] | None = None,
217
+ server_side_oauth_secret_id: str | None = None,
218
+ source_template_id: str | None = None,
171
219
  ) -> str:
172
- """Create a new source on Airbyte Agent Platform.
220
+ """Create a new source on Airbyte Cloud.
221
+
222
+ Supports two authentication modes:
223
+ 1. Direct credentials: Provide `credentials` dict
224
+ 2. Server-side OAuth: Provide `server_side_oauth_secret_id` from OAuth flow
173
225
 
174
226
  Args:
175
227
  name: Source name
176
228
  connector_definition_id: UUID of the connector definition
177
229
  external_user_id: User identifier
178
- credentials: Connector auth config dict
230
+ credentials: Connector auth config dict. Required unless using OAuth.
179
231
  replication_config: Optional replication settings (e.g., start_date for
180
232
  connectors with x-airbyte-replication-config). Required for REPLICATION
181
233
  mode sources like Intercom.
234
+ server_side_oauth_secret_id: OAuth secret ID from initiate_oauth redirect.
235
+ When provided, credentials are not required.
236
+ source_template_id: Source template ID. Required when organization has
237
+ multiple source templates for this connector type.
182
238
 
183
239
  Returns:
184
240
  The created source ID (UUID string)
@@ -187,19 +243,21 @@ class AirbyteCloudClient:
187
243
  httpx.HTTPStatusError: If creation fails
188
244
 
189
245
  Example:
246
+ # With direct credentials:
190
247
  source_id = await client.create_source(
191
- name="My Gong Source",
192
- connector_definition_id="32382e40-3b49-4b99-9c5c-4076501914e7",
248
+ name="My Intercom Source",
249
+ connector_definition_id="d8313939-3782-41b0-be29-b3ca20d8dd3a",
193
250
  external_user_id="my-workspace",
194
- credentials={"access_key": "...", "access_key_secret": "..."}
251
+ credentials={"access_token": "..."},
252
+ replication_config={"start_date": "2024-01-01T00:00:00Z"}
195
253
  )
196
254
 
197
- # For REPLICATION mode sources (e.g., Intercom):
255
+ # With server-side OAuth:
198
256
  source_id = await client.create_source(
199
257
  name="My Intercom Source",
200
258
  connector_definition_id="d8313939-3782-41b0-be29-b3ca20d8dd3a",
201
259
  external_user_id="my-workspace",
202
- credentials={"access_token": "..."},
260
+ server_side_oauth_secret_id="airbyte_oauth_..._secret_...",
203
261
  replication_config={"start_date": "2024-01-01T00:00:00Z"}
204
262
  )
205
263
  """
@@ -211,11 +269,16 @@ class AirbyteCloudClient:
211
269
  "name": name,
212
270
  "definition_id": connector_definition_id,
213
271
  "external_user_id": external_user_id,
214
- "credentials": credentials,
215
272
  }
216
273
 
274
+ if credentials is not None:
275
+ request_body["credentials"] = credentials
217
276
  if replication_config is not None:
218
277
  request_body["replication_config"] = replication_config
278
+ if server_side_oauth_secret_id is not None:
279
+ request_body["server_side_oauth_secret_id"] = server_side_oauth_secret_id
280
+ if source_template_id is not None:
281
+ request_body["source_template_id"] = source_template_id
219
282
 
220
283
  response = await self._http_client.post(url, json=request_body, headers=headers)
221
284
  response.raise_for_status()
@@ -10,7 +10,7 @@ from enum import StrEnum
10
10
  from typing import Any, Dict
11
11
  from uuid import UUID
12
12
 
13
- from pydantic import BaseModel, ConfigDict, Field, field_validator
13
+ from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
14
14
  from pydantic_core import Url
15
15
 
16
16
  from .extensions import CacheConfig, ReplicationConfig, RetryConfig
@@ -210,3 +210,34 @@ class Server(BaseModel):
210
210
  raise ValueError("Server URL cannot be empty")
211
211
  # Allow both absolute URLs and relative paths
212
212
  return v
213
+
214
+ @model_validator(mode="after")
215
+ def validate_replication_environment_mapping(self) -> "Server":
216
+ """Validate that x-airbyte-replication-environment-mapping sources exist in variables.
217
+
218
+ For simple mappings like {"subdomain": "subdomain"}, the key is the source variable.
219
+ For transform mappings like {"domain": {"source": "subdomain", "format": "..."}},
220
+ the "source" field is the source variable.
221
+ """
222
+ env_mapping = self.x_airbyte_replication_environment_mapping
223
+ if not env_mapping or not self.variables:
224
+ return self
225
+
226
+ variable_names = set(self.variables.keys())
227
+
228
+ for env_key, mapping_value in env_mapping.items():
229
+ if isinstance(mapping_value, str):
230
+ source_var = env_key
231
+ elif isinstance(mapping_value, EnvironmentMappingTransform):
232
+ source_var = mapping_value.source
233
+ else:
234
+ continue
235
+
236
+ if source_var not in variable_names:
237
+ available = ", ".join(sorted(variable_names)) if variable_names else "(none)"
238
+ raise ValueError(
239
+ f"x-airbyte-replication-environment-mapping: source variable '{source_var}' "
240
+ f"not found in server variables. Available: {available}"
241
+ )
242
+
243
+ return self
@@ -14,7 +14,7 @@ are implemented.
14
14
 
15
15
  from typing import Literal
16
16
 
17
- from pydantic import BaseModel, ConfigDict, Field
17
+ from pydantic import BaseModel, ConfigDict, Field, model_validator
18
18
 
19
19
 
20
20
  class PaginationConfig(BaseModel):
@@ -252,6 +252,24 @@ class ReplicationConfig(BaseModel):
252
252
  description="Mapping from replication_config field names to source_config field names",
253
253
  )
254
254
 
255
+ @model_validator(mode="after")
256
+ def validate_replication_config_key_mapping(self) -> "ReplicationConfig":
257
+ """Validate that replication_config_key_mapping keys exist in properties.
258
+
259
+ The mapping is: {local_key: airbyte_path}
260
+ We validate that local_key exists in our properties.
261
+ """
262
+ if self.replication_config_key_mapping and self.properties:
263
+ property_names = set(self.properties.keys())
264
+ for local_key, airbyte_path in self.replication_config_key_mapping.items():
265
+ if local_key not in property_names:
266
+ available = ", ".join(sorted(property_names)) if property_names else "(none)"
267
+ raise ValueError(
268
+ f"replication_config_key_mapping: local key '{local_key}' "
269
+ f"(mapped to '{airbyte_path}') not found in properties. Available: {available}"
270
+ )
271
+ return self
272
+
255
273
 
256
274
  class CacheConfig(BaseModel):
257
275
  """
@@ -81,6 +81,21 @@ class AuthConfigOption(BaseModel):
81
81
  description="Mapping from source config paths (e.g., 'credentials.api_key') to auth config keys for direct connectors",
82
82
  )
83
83
 
84
+ @model_validator(mode="after")
85
+ def validate_replication_auth_key_mapping(self) -> "AuthConfigOption":
86
+ """Validate that replication_auth_key_mapping target keys exist in properties."""
87
+ if self.replication_auth_key_mapping and self.properties:
88
+ property_names = set(self.properties.keys())
89
+ for airbyte_path, our_key in self.replication_auth_key_mapping.items():
90
+ if our_key not in property_names:
91
+ option_context = f"oneOf option '{self.title}'" if self.title else "oneOf option"
92
+ available = ", ".join(sorted(property_names)) if property_names else "(none)"
93
+ raise ValueError(
94
+ f"replication_auth_key_mapping in {option_context}: target key '{our_key}' "
95
+ f"(mapped from '{airbyte_path}') not found in properties. Available: {available}"
96
+ )
97
+ return self
98
+
84
99
 
85
100
  class AirbyteAuthConfig(BaseModel):
86
101
  """
@@ -146,8 +161,30 @@ class AirbyteAuthConfig(BaseModel):
146
161
  if not self.auth_mapping:
147
162
  raise ValueError("Single auth option must have auth_mapping")
148
163
 
164
+ # Validate replication_auth_key_mapping targets exist in properties
165
+ if self.replication_auth_key_mapping and self.properties:
166
+ self._validate_replication_auth_key_mapping(self.replication_auth_key_mapping, self.properties, context="x-airbyte-auth-config")
167
+
149
168
  return self
150
169
 
170
+ @staticmethod
171
+ def _validate_replication_auth_key_mapping(mapping: Dict[str, str], properties: Dict[str, AuthConfigFieldSpec], context: str) -> None:
172
+ """Validate that replication_auth_key_mapping target keys exist in properties.
173
+
174
+ Args:
175
+ mapping: The replication_auth_key_mapping dict (airbyte_path -> our_key)
176
+ properties: The properties dict from x-airbyte-auth-config
177
+ context: Context string for error messages
178
+ """
179
+ property_names = set(properties.keys())
180
+ for airbyte_path, our_key in mapping.items():
181
+ if our_key not in property_names:
182
+ available = ", ".join(sorted(property_names)) if property_names else "(none)"
183
+ raise ValueError(
184
+ f"replication_auth_key_mapping in {context}: target key '{our_key}' "
185
+ f"(mapped from '{airbyte_path}') not found in properties. Available: {available}"
186
+ )
187
+
151
188
 
152
189
  class SecurityScheme(BaseModel):
153
190
  """
@@ -508,6 +508,59 @@ class AmazonAdsConnector:
508
508
 
509
509
  # ===== HOSTED MODE FACTORY =====
510
510
 
511
+ @classmethod
512
+ async def initiate_oauth(
513
+ cls,
514
+ *,
515
+ external_user_id: str,
516
+ redirect_url: str,
517
+ airbyte_client_id: str,
518
+ airbyte_client_secret: str,
519
+ ) -> str:
520
+ """
521
+ Initiate server-side OAuth flow for this connector.
522
+
523
+ Returns a consent URL where the end user should be redirected to grant access.
524
+ After completing consent, they'll be redirected to your redirect_url with a
525
+ `server_side_oauth_secret_id` query parameter that can be used with `create_hosted()`.
526
+
527
+ Args:
528
+ external_user_id: Workspace identifier in Airbyte Cloud
529
+ redirect_url: URL where users will be redirected after OAuth consent
530
+ airbyte_client_id: Airbyte OAuth client ID
531
+ airbyte_client_secret: Airbyte OAuth client secret
532
+
533
+ Returns:
534
+ The OAuth consent URL
535
+
536
+ Example:
537
+ consent_url = await AmazonAdsConnector.initiate_oauth(
538
+ external_user_id="my-workspace",
539
+ redirect_url="https://myapp.com/oauth/callback",
540
+ airbyte_client_id="client_abc",
541
+ airbyte_client_secret="secret_xyz",
542
+ )
543
+ # Redirect user to: consent_url
544
+ # After consent, user arrives at: https://myapp.com/oauth/callback?server_side_oauth_secret_id=...
545
+ """
546
+ from ._vendored.connector_sdk.cloud_utils import AirbyteCloudClient
547
+
548
+ client = AirbyteCloudClient(
549
+ client_id=airbyte_client_id,
550
+ client_secret=airbyte_client_secret,
551
+ )
552
+
553
+ try:
554
+ consent_url = await client.initiate_oauth(
555
+ definition_id=str(AmazonAdsConnectorModel.id),
556
+ external_user_id=external_user_id,
557
+ redirect_url=redirect_url,
558
+ )
559
+ finally:
560
+ await client.close()
561
+
562
+ return consent_url
563
+
511
564
  @classmethod
512
565
  async def create_hosted(
513
566
  cls,
@@ -515,9 +568,11 @@ class AmazonAdsConnector:
515
568
  external_user_id: str,
516
569
  airbyte_client_id: str,
517
570
  airbyte_client_secret: str,
518
- auth_config: "AmazonAdsAuthConfig",
571
+ auth_config: "AmazonAdsAuthConfig" | None = None,
572
+ server_side_oauth_secret_id: str | None = None,
519
573
  name: str | None = None,
520
574
  replication_config: dict[str, Any] | None = None,
575
+ source_template_id: str | None = None,
521
576
  ) -> "AmazonAdsConnector":
522
577
  """
523
578
  Create a new hosted connector on Airbyte Cloud.
@@ -526,18 +581,29 @@ class AmazonAdsConnector:
526
581
  1. Creates a source on Airbyte Cloud with the provided credentials
527
582
  2. Returns a connector configured with the new connector_id
528
583
 
584
+ Supports two authentication modes:
585
+ 1. Direct credentials: Provide `auth_config` with typed credentials
586
+ 2. Server-side OAuth: Provide `server_side_oauth_secret_id` from OAuth flow
587
+
529
588
  Args:
530
589
  external_user_id: Workspace identifier in Airbyte Cloud
531
590
  airbyte_client_id: Airbyte OAuth client ID
532
591
  airbyte_client_secret: Airbyte OAuth client secret
533
- auth_config: Typed auth config (same as local mode)
592
+ auth_config: Typed auth config. Required unless using server_side_oauth_secret_id.
593
+ server_side_oauth_secret_id: OAuth secret ID from initiate_oauth redirect.
594
+ When provided, auth_config is not required.
534
595
  name: Optional source name (defaults to connector name + external_user_id)
535
596
  replication_config: Optional replication settings dict.
536
597
  Required for connectors with x-airbyte-replication-config (REPLICATION mode sources).
598
+ source_template_id: Source template ID. Required when organization has
599
+ multiple source templates for this connector type.
537
600
 
538
601
  Returns:
539
602
  A AmazonAdsConnector instance configured in hosted mode
540
603
 
604
+ Raises:
605
+ ValueError: If neither or both auth_config and server_side_oauth_secret_id provided
606
+
541
607
  Example:
542
608
  # Create a new hosted connector with API key auth
543
609
  connector = await AmazonAdsConnector.create_hosted(
@@ -547,9 +613,27 @@ class AmazonAdsConnector:
547
613
  auth_config=AmazonAdsAuthConfig(client_id="...", client_secret="...", refresh_token="..."),
548
614
  )
549
615
 
616
+ # With server-side OAuth:
617
+ connector = await AmazonAdsConnector.create_hosted(
618
+ external_user_id="my-workspace",
619
+ airbyte_client_id="client_abc",
620
+ airbyte_client_secret="secret_xyz",
621
+ server_side_oauth_secret_id="airbyte_oauth_..._secret_...",
622
+ )
623
+
550
624
  # Use the connector
551
625
  result = await connector.execute("entity", "list", {})
552
626
  """
627
+ # Validate: exactly one of auth_config or server_side_oauth_secret_id required
628
+ if auth_config is None and server_side_oauth_secret_id is None:
629
+ raise ValueError(
630
+ "Either auth_config or server_side_oauth_secret_id must be provided"
631
+ )
632
+ if auth_config is not None and server_side_oauth_secret_id is not None:
633
+ raise ValueError(
634
+ "Cannot provide both auth_config and server_side_oauth_secret_id"
635
+ )
636
+
553
637
  from ._vendored.connector_sdk.cloud_utils import AirbyteCloudClient
554
638
 
555
639
  client = AirbyteCloudClient(
@@ -558,8 +642,8 @@ class AmazonAdsConnector:
558
642
  )
559
643
 
560
644
  try:
561
- # Build credentials from auth_config
562
- credentials = auth_config.model_dump(exclude_none=True)
645
+ # Build credentials from auth_config (if provided)
646
+ credentials = auth_config.model_dump(exclude_none=True) if auth_config else None
563
647
  replication_config_dict = replication_config.model_dump(exclude_none=True) if replication_config else None
564
648
 
565
649
  # Create source on Airbyte Cloud
@@ -570,6 +654,8 @@ class AmazonAdsConnector:
570
654
  external_user_id=external_user_id,
571
655
  credentials=credentials,
572
656
  replication_config=replication_config_dict,
657
+ server_side_oauth_secret_id=server_side_oauth_secret_id,
658
+ source_template_id=source_template_id,
573
659
  )
574
660
  finally:
575
661
  await client.close()
@@ -583,6 +669,7 @@ class AmazonAdsConnector:
583
669
 
584
670
 
585
671
 
672
+
586
673
  class ProfilesQuery:
587
674
  """
588
675
  Query class for Profiles entity operations.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airbyte-agent-amazon-ads
3
- Version: 0.1.24
3
+ Version: 0.1.26
4
4
  Summary: Airbyte Amazon-Ads 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/
@@ -135,7 +135,7 @@ See the official [Amazon-Ads API reference](https://advertising.amazon.com/API/d
135
135
 
136
136
  ## Version information
137
137
 
138
- - **Package version:** 0.1.24
138
+ - **Package version:** 0.1.26
139
139
  - **Connector version:** 1.0.5
140
- - **Generated with Connector SDK commit SHA:** b184da3e22ef8521d2eeebf3c96a0fe8da2424f5
140
+ - **Generated with Connector SDK commit SHA:** 940246757c7476ed4edd7d16b873ebe54ea2b456
141
141
  - **Changelog:** [View changelog](https://github.com/airbytehq/airbyte-agent-connectors/blob/main/connectors/amazon-ads/CHANGELOG.md)
@@ -1,5 +1,5 @@
1
1
  airbyte_agent_amazon_ads/__init__.py,sha256=MICR9abWiXLcSQ0jd4W7S6xyo2KgwRjOPIZTeHpz67I,1950
2
- airbyte_agent_amazon_ads/connector.py,sha256=emUP1S6OIO0WowecjbiUtCnUB2vopT7S68AIppHb8ls,29494
2
+ airbyte_agent_amazon_ads/connector.py,sha256=9r5mxeos61jzP-tTNJf4UB2h6XCXoMs5T5E7r2xhqFg,33158
3
3
  airbyte_agent_amazon_ads/connector_model.py,sha256=QAxt_l2-RjUBxg2izmclOPTqVrjF9CL70fOkkYcwpTk,98041
4
4
  airbyte_agent_amazon_ads/models.py,sha256=KmYWz46e-8HuQdnuz6FQT99uDKwpcToEc9Xda2M7FL4,9781
5
5
  airbyte_agent_amazon_ads/types.py,sha256=EW-jvOmXyJQqe2ESiDCs7nCIIsFreDCIZBlA6aplxpA,6728
@@ -19,7 +19,7 @@ airbyte_agent_amazon_ads/_vendored/connector_sdk/utils.py,sha256=UYwYuSLhsDD-4C0
19
19
  airbyte_agent_amazon_ads/_vendored/connector_sdk/validation.py,sha256=w5WGnmILkdBslpXhAXhKhE-c8ANBc_OZQxr_fUeAgtc,39666
20
20
  airbyte_agent_amazon_ads/_vendored/connector_sdk/validation_replication.py,sha256=v7F5YWd5m4diIF7_4m4nOkC9crg97vqRUUkt9ka9HZ4,36043
21
21
  airbyte_agent_amazon_ads/_vendored/connector_sdk/cloud_utils/__init__.py,sha256=4799Hv9f2zxDVj1aLyQ8JpTEuFTp_oOZMRz-NZCdBJg,134
22
- airbyte_agent_amazon_ads/_vendored/connector_sdk/cloud_utils/client.py,sha256=-_ibaHVa7KBBw8SnMuxpWz6XkrSgNTFdMgDfTChtywg,9505
22
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/cloud_utils/client.py,sha256=e0VLNCmesGGfo2uD0GiICgXsXTeTkh0GYiVgx_e4VEc,12296
23
23
  airbyte_agent_amazon_ads/_vendored/connector_sdk/executor/__init__.py,sha256=EmG9YQNAjSuYCVB4D5VoLm4qpD1KfeiiOf7bpALj8p8,702
24
24
  airbyte_agent_amazon_ads/_vendored/connector_sdk/executor/hosted_executor.py,sha256=tv0njAdy-gdHBg4izgcxhEWYbrNiBifEYEca9AWzaL0,8693
25
25
  airbyte_agent_amazon_ads/_vendored/connector_sdk/executor/local_executor.py,sha256=RtdTXFzfoJz5Coz9nwQi81Df1402BRgO1Mgd3ZzTkfw,76581
@@ -43,16 +43,16 @@ airbyte_agent_amazon_ads/_vendored/connector_sdk/performance/__init__.py,sha256=
43
43
  airbyte_agent_amazon_ads/_vendored/connector_sdk/performance/instrumentation.py,sha256=_dXvNiqdndIBwDjeDKNViWzn_M5FkSUsMmJtFldrmsM,1504
44
44
  airbyte_agent_amazon_ads/_vendored/connector_sdk/performance/metrics.py,sha256=FRff7dKt4iwt_A7pxV5n9kAGBR756PC7q8-weWygPSM,2817
45
45
  airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/__init__.py,sha256=Uymu-QuzGJuMxexBagIvUxpVAigIuIhz3KeBl_Vu4Ko,1638
46
- airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/base.py,sha256=mOO5eZSK-FB7S-ZXpt5HFG5YBg8x-oM6RZRLPOEGxZM,7115
46
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/base.py,sha256=0R0aR4HjcJpu3vN0jZ4nPBEwVZ_7J9_XLQgWaQGT3Fs,8476
47
47
  airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/components.py,sha256=nJIPieavwX3o3ODvdtLHPk84d_V229xmg6LDfwEHjzc,8119
48
48
  airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/connector.py,sha256=mSZk1wr2YSdRj9tTRsPAuIlCzd_xZLw-Bzl1sMwE0rE,3731
49
- airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/extensions.py,sha256=5hgpFHK7fzpzegCkJk882DeIP79bCx_qairKJhvPMZ8,9590
49
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/extensions.py,sha256=DqWCvyWKLnPxAbJirq6uITf-MBeJRVCcsEjySF4fuhQ,10558
50
50
  airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/operations.py,sha256=St-A75m6sZUZlsoM6WcoPaShYu_X1K19pdyPvJbabOE,6214
51
- airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/security.py,sha256=R-21DLnp-ANIRO1Dzqo53TYFJL6lCp0aO8GSuxa_bDI,9225
51
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/security.py,sha256=5UeaN63InuInS_XHNZSm5yDXrMLm5lhz298l-3GSc_4,11435
52
52
  airbyte_agent_amazon_ads/_vendored/connector_sdk/telemetry/__init__.py,sha256=RaLgkBU4dfxn1LC5Y0Q9rr2PJbrwjxvPgBLmq8_WafE,211
53
53
  airbyte_agent_amazon_ads/_vendored/connector_sdk/telemetry/config.py,sha256=tLmQwAFD0kP1WyBGWBS3ysaudN9H3e-3EopKZi6cGKg,885
54
54
  airbyte_agent_amazon_ads/_vendored/connector_sdk/telemetry/events.py,sha256=8Y1NbXiwISX-V_wRofY7PqcwEXD0dLMnntKkY6XFU2s,1328
55
55
  airbyte_agent_amazon_ads/_vendored/connector_sdk/telemetry/tracker.py,sha256=SginFQbHqVUVYG82NnNzG34O-tAQ_wZYjGDcuo0q4Kk,5584
56
- airbyte_agent_amazon_ads-0.1.24.dist-info/METADATA,sha256=izTt3eLQjsnHCbUprS1Dgo2oUgynI7l425iKamEW6Sc,5326
57
- airbyte_agent_amazon_ads-0.1.24.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
58
- airbyte_agent_amazon_ads-0.1.24.dist-info/RECORD,,
56
+ airbyte_agent_amazon_ads-0.1.26.dist-info/METADATA,sha256=yP4go_wEAqj0MVRddzr7LIGuZGUwnUJEgQvMp4veuHU,5326
57
+ airbyte_agent_amazon_ads-0.1.26.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
58
+ airbyte_agent_amazon_ads-0.1.26.dist-info/RECORD,,