airbyte-agent-amazon-ads 0.1.6__py3-none-any.whl → 0.1.7__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.
@@ -19,7 +19,11 @@ from .models import (
19
19
  AmazonAdsExecuteResultWithMeta,
20
20
  ProfilesListResult,
21
21
  PortfoliosListResult,
22
- SponsoredProductCampaignsListResult
22
+ SponsoredProductCampaignsListResult,
23
+ AirbyteSearchHit,
24
+ AirbyteSearchResult,
25
+ ProfilesSearchData,
26
+ ProfilesSearchResult
23
27
  )
24
28
  from .types import (
25
29
  SponsoredProductCampaignsListParamsStatefilter,
@@ -28,7 +32,12 @@ from .types import (
28
32
  PortfoliosListParams,
29
33
  PortfoliosGetParams,
30
34
  SponsoredProductCampaignsListParams,
31
- SponsoredProductCampaignsGetParams
35
+ SponsoredProductCampaignsGetParams,
36
+ AirbyteSearchParams,
37
+ AirbyteSortOrder,
38
+ ProfilesSearchFilter,
39
+ ProfilesSearchQuery,
40
+ ProfilesCondition
32
41
  )
33
42
 
34
43
  __all__ = [
@@ -47,6 +56,10 @@ __all__ = [
47
56
  "ProfilesListResult",
48
57
  "PortfoliosListResult",
49
58
  "SponsoredProductCampaignsListResult",
59
+ "AirbyteSearchHit",
60
+ "AirbyteSearchResult",
61
+ "ProfilesSearchData",
62
+ "ProfilesSearchResult",
50
63
  "SponsoredProductCampaignsListParamsStatefilter",
51
64
  "ProfilesListParams",
52
65
  "ProfilesGetParams",
@@ -54,4 +67,9 @@ __all__ = [
54
67
  "PortfoliosGetParams",
55
68
  "SponsoredProductCampaignsListParams",
56
69
  "SponsoredProductCampaignsGetParams",
70
+ "AirbyteSearchParams",
71
+ "AirbyteSortOrder",
72
+ "ProfilesSearchFilter",
73
+ "ProfilesSearchQuery",
74
+ "ProfilesCondition",
57
75
  ]
@@ -1032,7 +1032,9 @@ class LocalExecutor:
1032
1032
  if "variables" in graphql_config and graphql_config["variables"]:
1033
1033
  variables = self._interpolate_variables(graphql_config["variables"], params, param_defaults)
1034
1034
  # Filter out None values (optional fields not provided) - matches REST _extract_body() behavior
1035
- body["variables"] = {k: v for k, v in variables.items() if v is not None}
1035
+ # But preserve None for variables explicitly marked as nullable (e.g., to unassign a user)
1036
+ nullable_vars = set(graphql_config.get("x-airbyte-nullable-variables") or [])
1037
+ body["variables"] = {k: v for k, v in variables.items() if v is not None or k in nullable_vars}
1036
1038
 
1037
1039
  # Add operation name if specified
1038
1040
  if "operationName" in graphql_config:
@@ -13,7 +13,7 @@ from uuid import UUID
13
13
  from pydantic import BaseModel, ConfigDict, Field, field_validator
14
14
  from pydantic_core import Url
15
15
 
16
- from .extensions import CacheConfig, RetryConfig
16
+ from .extensions import CacheConfig, ReplicationConfig, RetryConfig
17
17
 
18
18
 
19
19
  class ExampleQuestions(BaseModel):
@@ -106,6 +106,7 @@ class Info(BaseModel):
106
106
  - x-airbyte-retry-config: Retry configuration for transient errors (Airbyte extension)
107
107
  - x-airbyte-example-questions: Example questions for AI connector README (Airbyte extension)
108
108
  - x-airbyte-cache: Cache configuration for field mapping between API and cache schemas (Airbyte extension)
109
+ - x-airbyte-replication-config: Replication configuration for MULTI mode connectors (Airbyte extension)
109
110
  """
110
111
 
111
112
  model_config = ConfigDict(populate_by_name=True, extra="forbid")
@@ -124,6 +125,7 @@ class Info(BaseModel):
124
125
  x_airbyte_retry_config: RetryConfig | None = Field(None, alias="x-airbyte-retry-config")
125
126
  x_airbyte_example_questions: ExampleQuestions | None = Field(None, alias="x-airbyte-example-questions")
126
127
  x_airbyte_cache: CacheConfig | None = Field(None, alias="x-airbyte-cache")
128
+ x_airbyte_replication_config: ReplicationConfig | None = Field(None, alias="x-airbyte-replication-config")
127
129
 
128
130
 
129
131
  class ServerVariable(BaseModel):
@@ -134,6 +134,11 @@ class GraphQLBodyConfig(BaseModel):
134
134
  None,
135
135
  description="Default fields to select if not provided in request parameters. Can be a string or array of field names.",
136
136
  )
137
+ nullable_variables: List[str] | None = Field(
138
+ default=None,
139
+ alias="x-airbyte-nullable-variables",
140
+ description="Variable names that can be explicitly set to null (e.g., to unassign a user)",
141
+ )
137
142
 
138
143
 
139
144
  # Union type for all body type configs (extensible for future types like XML, SOAP, etc.)
@@ -182,6 +182,77 @@ class CacheEntityConfig(BaseModel):
182
182
  return self.x_airbyte_name or self.entity
183
183
 
184
184
 
185
+ class ReplicationConfigProperty(BaseModel):
186
+ """
187
+ Property definition for replication configuration fields.
188
+
189
+ Defines a single field in the replication configuration with its type,
190
+ description, and optional default value.
191
+
192
+ Example YAML usage:
193
+ x-airbyte-replication-config:
194
+ properties:
195
+ start_date:
196
+ type: string
197
+ title: Start Date
198
+ description: UTC date and time from which to replicate data
199
+ format: date-time
200
+ """
201
+
202
+ model_config = ConfigDict(populate_by_name=True, extra="forbid")
203
+
204
+ type: str
205
+ title: str | None = None
206
+ description: str | None = None
207
+ format: str | None = None
208
+ default: str | int | float | bool | None = None
209
+ enum: list[str] | None = None
210
+
211
+
212
+ class ReplicationConfig(BaseModel):
213
+ """
214
+ Replication configuration extension (x-airbyte-replication-config).
215
+
216
+ Defines replication-specific settings for MULTI mode connectors that need
217
+ to configure the underlying replication connector. This allows users who
218
+ use the direct-style API (credentials + environment) to also specify
219
+ replication settings like start_date, lookback_window, etc.
220
+
221
+ This extension is added to the Info model and provides field definitions
222
+ for replication configuration that gets merged into the source config
223
+ when creating sources.
224
+
225
+ Example YAML usage:
226
+ info:
227
+ title: HubSpot API
228
+ x-airbyte-replication-config:
229
+ title: Replication Configuration
230
+ description: Settings for data replication
231
+ properties:
232
+ start_date:
233
+ type: string
234
+ title: Start Date
235
+ description: UTC date and time from which to replicate data
236
+ format: date-time
237
+ required:
238
+ - start_date
239
+ replication_config_key_mapping:
240
+ start_date: start_date
241
+ """
242
+
243
+ model_config = ConfigDict(populate_by_name=True, extra="forbid")
244
+
245
+ title: str | None = None
246
+ description: str | None = None
247
+ properties: dict[str, ReplicationConfigProperty] = Field(default_factory=dict)
248
+ required: list[str] = Field(default_factory=list)
249
+ replication_config_key_mapping: dict[str, str] = Field(
250
+ default_factory=dict,
251
+ alias="replication_config_key_mapping",
252
+ description="Mapping from replication_config field names to source_config field names",
253
+ )
254
+
255
+
185
256
  class CacheConfig(BaseModel):
186
257
  """
187
258
  Cache configuration extension (x-airbyte-cache).
@@ -21,6 +21,9 @@ from .types import (
21
21
  SponsoredProductCampaignsGetParams,
22
22
  SponsoredProductCampaignsListParams,
23
23
  SponsoredProductCampaignsListParamsStatefilter,
24
+ AirbyteSearchParams,
25
+ ProfilesSearchFilter,
26
+ ProfilesSearchQuery,
24
27
  )
25
28
  if TYPE_CHECKING:
26
29
  from .models import AmazonAdsAuthConfig
@@ -34,6 +37,10 @@ from .models import (
34
37
  Portfolio,
35
38
  Profile,
36
39
  SponsoredProductCampaign,
40
+ AirbyteSearchHit,
41
+ AirbyteSearchResult,
42
+ ProfilesSearchData,
43
+ ProfilesSearchResult,
37
44
  )
38
45
 
39
46
  # TypeVar for decorator type preservation
@@ -49,7 +56,7 @@ class AmazonAdsConnector:
49
56
  """
50
57
 
51
58
  connector_name = "amazon-ads"
52
- connector_version = "1.0.1"
59
+ connector_version = "1.0.2"
53
60
  vendored_sdk_version = "0.1.0" # Version of vendored connector-sdk
54
61
 
55
62
  # Map of (entity, action) -> needs_envelope for envelope wrapping decision
@@ -441,6 +448,65 @@ information about the advertiser's account in a specific marketplace.
441
448
 
442
449
 
443
450
 
451
+ async def search(
452
+ self,
453
+ query: ProfilesSearchQuery,
454
+ limit: int | None = None,
455
+ cursor: str | None = None,
456
+ fields: list[list[str]] | None = None,
457
+ ) -> ProfilesSearchResult:
458
+ """
459
+ Search profiles records from Airbyte cache.
460
+
461
+ This operation searches cached data from Airbyte syncs.
462
+ Only available in hosted execution mode.
463
+
464
+ Available filter fields (ProfilesSearchFilter):
465
+ - account_info:
466
+ - country_code:
467
+ - currency_code:
468
+ - daily_budget:
469
+ - profile_id:
470
+ - timezone:
471
+
472
+ Args:
473
+ query: Filter and sort conditions. Supports operators like eq, neq, gt, gte, lt, lte,
474
+ in, like, fuzzy, keyword, not, and, or. Example: {"filter": {"eq": {"status": "active"}}}
475
+ limit: Maximum results to return (default 1000)
476
+ cursor: Pagination cursor from previous response's next_cursor
477
+ fields: Field paths to include in results. Each path is a list of keys for nested access.
478
+ Example: [["id"], ["user", "name"]] returns id and user.name fields.
479
+
480
+ Returns:
481
+ ProfilesSearchResult with hits (list of AirbyteSearchHit[ProfilesSearchData]) and pagination info
482
+
483
+ Raises:
484
+ NotImplementedError: If called in local execution mode
485
+ """
486
+ params: dict[str, Any] = {"query": query}
487
+ if limit is not None:
488
+ params["limit"] = limit
489
+ if cursor is not None:
490
+ params["cursor"] = cursor
491
+ if fields is not None:
492
+ params["fields"] = fields
493
+
494
+ result = await self._connector.execute("profiles", "search", params)
495
+
496
+ # Parse response into typed result
497
+ return ProfilesSearchResult(
498
+ hits=[
499
+ AirbyteSearchHit[ProfilesSearchData](
500
+ id=hit.get("id"),
501
+ score=hit.get("score"),
502
+ data=ProfilesSearchData(**hit.get("data", {}))
503
+ )
504
+ for hit in result.get("hits", [])
505
+ ],
506
+ next_cursor=result.get("next_cursor"),
507
+ took_ms=result.get("took_ms")
508
+ )
509
+
444
510
  class PortfoliosQuery:
445
511
  """
446
512
  Query class for Portfolios entity operations.
@@ -26,7 +26,7 @@ from uuid import (
26
26
  AmazonAdsConnectorModel: ConnectorModel = ConnectorModel(
27
27
  id=UUID('c6b0a29e-1da9-4512-9002-7bfd0cba2246'),
28
28
  name='amazon-ads',
29
- version='1.0.1',
29
+ version='1.0.2',
30
30
  base_url='{region_url}',
31
31
  auth=AuthConfig(
32
32
  type=AuthType.OAUTH2,
@@ -152,6 +152,61 @@ class AmazonAdsExecuteResultWithMeta(AmazonAdsExecuteResult[T], Generic[T, S]):
152
152
  meta: S
153
153
  """Metadata about the response (e.g., pagination cursors, record counts)."""
154
154
 
155
+ # ===== SEARCH DATA MODELS =====
156
+ # Entity-specific Pydantic models for search result data
157
+
158
+ # Type variable for search data generic
159
+ D = TypeVar('D')
160
+
161
+ class ProfilesSearchData(BaseModel):
162
+ """Search result data for profiles entity."""
163
+ model_config = ConfigDict(extra="allow")
164
+
165
+ account_info: dict[str, Any] | None = None
166
+ """"""
167
+ country_code: str | None = None
168
+ """"""
169
+ currency_code: str | None = None
170
+ """"""
171
+ daily_budget: float | None = None
172
+ """"""
173
+ profile_id: int | None = None
174
+ """"""
175
+ timezone: str | None = None
176
+ """"""
177
+
178
+
179
+ # ===== GENERIC SEARCH RESULT TYPES =====
180
+
181
+ class AirbyteSearchHit(BaseModel, Generic[D]):
182
+ """A single search result with typed data."""
183
+ model_config = ConfigDict(extra="allow")
184
+
185
+ id: str | None = None
186
+ """Unique identifier for the record."""
187
+ score: float | None = None
188
+ """Relevance score for the match."""
189
+ data: D
190
+ """The matched record data."""
191
+
192
+
193
+ class AirbyteSearchResult(BaseModel, Generic[D]):
194
+ """Result from Airbyte cache search operations with typed hits."""
195
+ model_config = ConfigDict(extra="allow")
196
+
197
+ hits: list[AirbyteSearchHit[D]] = Field(default_factory=list)
198
+ """List of matching records."""
199
+ next_cursor: str | None = None
200
+ """Cursor for fetching the next page of results."""
201
+ took_ms: int | None = None
202
+ """Time taken to execute the search in milliseconds."""
203
+
204
+
205
+ # ===== ENTITY-SPECIFIC SEARCH RESULT TYPE ALIASES =====
206
+
207
+ ProfilesSearchResult = AirbyteSearchResult[ProfilesSearchData]
208
+ """Search result type for profiles entity."""
209
+
155
210
 
156
211
 
157
212
  # ===== OPERATION RESULT TYPE ALIASES =====
@@ -9,6 +9,7 @@ try:
9
9
  except ImportError:
10
10
  from typing import TypedDict, NotRequired # type: ignore[attr-defined]
11
11
 
12
+ from typing import Any, Literal
12
13
 
13
14
 
14
15
  # ===== NESTED PARAM TYPE DEFINITIONS =====
@@ -46,3 +47,192 @@ class SponsoredProductCampaignsGetParams(TypedDict):
46
47
  """Parameters for sponsored_product_campaigns.get operation"""
47
48
  campaign_id: str
48
49
 
50
+ # ===== SEARCH TYPES =====
51
+
52
+ # Sort specification
53
+ AirbyteSortOrder = Literal["asc", "desc"]
54
+
55
+ # ===== PROFILES SEARCH TYPES =====
56
+
57
+ class ProfilesSearchFilter(TypedDict, total=False):
58
+ """Available fields for filtering profiles search queries."""
59
+ account_info: dict[str, Any] | None
60
+ """"""
61
+ country_code: str | None
62
+ """"""
63
+ currency_code: str | None
64
+ """"""
65
+ daily_budget: float | None
66
+ """"""
67
+ profile_id: int | None
68
+ """"""
69
+ timezone: str | None
70
+ """"""
71
+
72
+
73
+ class ProfilesInFilter(TypedDict, total=False):
74
+ """Available fields for 'in' condition (values are lists)."""
75
+ account_info: list[dict[str, Any]]
76
+ """"""
77
+ country_code: list[str]
78
+ """"""
79
+ currency_code: list[str]
80
+ """"""
81
+ daily_budget: list[float]
82
+ """"""
83
+ profile_id: list[int]
84
+ """"""
85
+ timezone: list[str]
86
+ """"""
87
+
88
+
89
+ class ProfilesAnyValueFilter(TypedDict, total=False):
90
+ """Available fields with Any value type. Used for 'contains' and 'any' conditions."""
91
+ account_info: Any
92
+ """"""
93
+ country_code: Any
94
+ """"""
95
+ currency_code: Any
96
+ """"""
97
+ daily_budget: Any
98
+ """"""
99
+ profile_id: Any
100
+ """"""
101
+ timezone: Any
102
+ """"""
103
+
104
+
105
+ class ProfilesStringFilter(TypedDict, total=False):
106
+ """String fields for text search conditions (like, fuzzy, keyword)."""
107
+ account_info: str
108
+ """"""
109
+ country_code: str
110
+ """"""
111
+ currency_code: str
112
+ """"""
113
+ daily_budget: str
114
+ """"""
115
+ profile_id: str
116
+ """"""
117
+ timezone: str
118
+ """"""
119
+
120
+
121
+ class ProfilesSortFilter(TypedDict, total=False):
122
+ """Available fields for sorting profiles search results."""
123
+ account_info: AirbyteSortOrder
124
+ """"""
125
+ country_code: AirbyteSortOrder
126
+ """"""
127
+ currency_code: AirbyteSortOrder
128
+ """"""
129
+ daily_budget: AirbyteSortOrder
130
+ """"""
131
+ profile_id: AirbyteSortOrder
132
+ """"""
133
+ timezone: AirbyteSortOrder
134
+ """"""
135
+
136
+
137
+ # Entity-specific condition types for profiles
138
+ class ProfilesEqCondition(TypedDict, total=False):
139
+ """Equal to: field equals value."""
140
+ eq: ProfilesSearchFilter
141
+
142
+
143
+ class ProfilesNeqCondition(TypedDict, total=False):
144
+ """Not equal to: field does not equal value."""
145
+ neq: ProfilesSearchFilter
146
+
147
+
148
+ class ProfilesGtCondition(TypedDict, total=False):
149
+ """Greater than: field > value."""
150
+ gt: ProfilesSearchFilter
151
+
152
+
153
+ class ProfilesGteCondition(TypedDict, total=False):
154
+ """Greater than or equal: field >= value."""
155
+ gte: ProfilesSearchFilter
156
+
157
+
158
+ class ProfilesLtCondition(TypedDict, total=False):
159
+ """Less than: field < value."""
160
+ lt: ProfilesSearchFilter
161
+
162
+
163
+ class ProfilesLteCondition(TypedDict, total=False):
164
+ """Less than or equal: field <= value."""
165
+ lte: ProfilesSearchFilter
166
+
167
+
168
+ class ProfilesLikeCondition(TypedDict, total=False):
169
+ """Partial string match with % wildcards."""
170
+ like: ProfilesStringFilter
171
+
172
+
173
+ class ProfilesFuzzyCondition(TypedDict, total=False):
174
+ """Ordered word text match (case-insensitive)."""
175
+ fuzzy: ProfilesStringFilter
176
+
177
+
178
+ class ProfilesKeywordCondition(TypedDict, total=False):
179
+ """Keyword text match (any word present)."""
180
+ keyword: ProfilesStringFilter
181
+
182
+
183
+ class ProfilesContainsCondition(TypedDict, total=False):
184
+ """Check if value exists in array field. Example: {"contains": {"tags": "premium"}}"""
185
+ contains: ProfilesAnyValueFilter
186
+
187
+
188
+ # Reserved keyword conditions using functional TypedDict syntax
189
+ ProfilesInCondition = TypedDict("ProfilesInCondition", {"in": ProfilesInFilter}, total=False)
190
+ """In list: field value is in list. Example: {"in": {"status": ["active", "pending"]}}"""
191
+
192
+ ProfilesNotCondition = TypedDict("ProfilesNotCondition", {"not": "ProfilesCondition"}, total=False)
193
+ """Negates the nested condition."""
194
+
195
+ ProfilesAndCondition = TypedDict("ProfilesAndCondition", {"and": "list[ProfilesCondition]"}, total=False)
196
+ """True if all nested conditions are true."""
197
+
198
+ ProfilesOrCondition = TypedDict("ProfilesOrCondition", {"or": "list[ProfilesCondition]"}, total=False)
199
+ """True if any nested condition is true."""
200
+
201
+ ProfilesAnyCondition = TypedDict("ProfilesAnyCondition", {"any": ProfilesAnyValueFilter}, total=False)
202
+ """Match if ANY element in array field matches nested condition. Example: {"any": {"addresses": {"eq": {"state": "CA"}}}}"""
203
+
204
+ # Union of all profiles condition types
205
+ ProfilesCondition = (
206
+ ProfilesEqCondition
207
+ | ProfilesNeqCondition
208
+ | ProfilesGtCondition
209
+ | ProfilesGteCondition
210
+ | ProfilesLtCondition
211
+ | ProfilesLteCondition
212
+ | ProfilesInCondition
213
+ | ProfilesLikeCondition
214
+ | ProfilesFuzzyCondition
215
+ | ProfilesKeywordCondition
216
+ | ProfilesContainsCondition
217
+ | ProfilesNotCondition
218
+ | ProfilesAndCondition
219
+ | ProfilesOrCondition
220
+ | ProfilesAnyCondition
221
+ )
222
+
223
+
224
+ class ProfilesSearchQuery(TypedDict, total=False):
225
+ """Search query for profiles entity."""
226
+ filter: ProfilesCondition
227
+ sort: list[ProfilesSortFilter]
228
+
229
+
230
+
231
+ # ===== SEARCH PARAMS =====
232
+
233
+ class AirbyteSearchParams(TypedDict, total=False):
234
+ """Parameters for Airbyte cache search operations (generic, use entity-specific query types for better type hints)."""
235
+ query: dict[str, Any]
236
+ limit: int
237
+ cursor: str
238
+ fields: list[list[str]]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airbyte-agent-amazon-ads
3
- Version: 0.1.6
3
+ Version: 0.1.7
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/
@@ -112,6 +112,7 @@ async def amazon-ads_execute(entity: str, action: str, params: dict | None = Non
112
112
  return await connector.execute(entity, action, params or {})
113
113
  ```
114
114
 
115
+
115
116
  ## Full documentation
116
117
 
117
118
  This connector supports the following entities and actions.
@@ -131,6 +132,6 @@ For the service's official API docs, see the [Amazon-Ads API reference](https://
131
132
 
132
133
  ## Version information
133
134
 
134
- - **Package version:** 0.1.6
135
- - **Connector version:** 1.0.1
136
- - **Generated with Connector SDK commit SHA:** 416466da4970ae5fd6c7f2c658a68e047e51efd9
135
+ - **Package version:** 0.1.7
136
+ - **Connector version:** 1.0.2
137
+ - **Generated with Connector SDK commit SHA:** 32c5ef4692be2243558faa20132b3ece7d573aed
@@ -1,8 +1,8 @@
1
- airbyte_agent_amazon_ads/__init__.py,sha256=q1HEHSqUrBKHSJDrjl6DpmKQ7BLgfV8-Ct_07h9yWoU,1442
2
- airbyte_agent_amazon_ads/connector.py,sha256=_xaQg0CzkAHAZLoWoP7zIwYN4Uvge-jYlQyP5A2hrF0,19290
3
- airbyte_agent_amazon_ads/connector_model.py,sha256=JaflXe0x3R1neowZ8dQ4kTX-6lmQMmAJO9xP1nRFNoc,61939
4
- airbyte_agent_amazon_ads/models.py,sha256=373Eq2tb4mroZNrkWCpt-oFY1bZgOZd2sDfaNVDZ0rc,7610
5
- airbyte_agent_amazon_ads/types.py,sha256=qe9zmgsEV06BQKQ68In9fwZji2tDqCB2JJXU_6dNwxA,1538
1
+ airbyte_agent_amazon_ads/__init__.py,sha256=f883U_4eSRjMLgjqpi5rGcKZ0U44ME_Z0IY-XZhwlPc,1896
2
+ airbyte_agent_amazon_ads/connector.py,sha256=3s-jCgSD-_z4JoxItyG2RzxFO6CHMnM4V6s_SpyRhYs,21656
3
+ airbyte_agent_amazon_ads/connector_model.py,sha256=hHTCq1Cg8fP3isO2b4_026hL7EnGxVx0vQNon6xVajk,61939
4
+ airbyte_agent_amazon_ads/models.py,sha256=TOHCY0p3cE0rWVv3YfYvyvL-lmdYBcoGRTXtFNNBztc,9182
5
+ airbyte_agent_amazon_ads/types.py,sha256=EW-jvOmXyJQqe2ESiDCs7nCIIsFreDCIZBlA6aplxpA,6728
6
6
  airbyte_agent_amazon_ads/_vendored/__init__.py,sha256=ILl7AHXMui__swyrjxrh9yRa4dLiwBvV6axPWFWty80,38
7
7
  airbyte_agent_amazon_ads/_vendored/connector_sdk/__init__.py,sha256=T5o7roU6NSpH-lCAGZ338sE5dlh4ZU6i6IkeG1zpems,1949
8
8
  airbyte_agent_amazon_ads/_vendored/connector_sdk/auth_strategies.py,sha256=5Sb9moUp623o67Q2wMa8iZldJH08y4gQdoutoO_75Iw,42088
@@ -21,7 +21,7 @@ airbyte_agent_amazon_ads/_vendored/connector_sdk/cloud_utils/__init__.py,sha256=
21
21
  airbyte_agent_amazon_ads/_vendored/connector_sdk/cloud_utils/client.py,sha256=YxdRpQr9XjDzih6csSseBVGn9kfMtaqbOCXP0TPuzFY,7189
22
22
  airbyte_agent_amazon_ads/_vendored/connector_sdk/executor/__init__.py,sha256=EmG9YQNAjSuYCVB4D5VoLm4qpD1KfeiiOf7bpALj8p8,702
23
23
  airbyte_agent_amazon_ads/_vendored/connector_sdk/executor/hosted_executor.py,sha256=ydHcG-biRS1ITT5ELwPShdJW-KYpvK--Fos1ipNgHho,6995
24
- airbyte_agent_amazon_ads/_vendored/connector_sdk/executor/local_executor.py,sha256=Vg4rPk0sbgXEdYLx2n2Spgj9XrDUWykD2E2o7sWloRM,73849
24
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/executor/local_executor.py,sha256=tVbfstxOrm5qJt1NawTwjhIIpDgPCC4wSrKM5eALPSQ,74064
25
25
  airbyte_agent_amazon_ads/_vendored/connector_sdk/executor/models.py,sha256=lYVT_bNcw-PoIks4WHNyl2VY-lJVf2FntzINSOBIheE,5845
26
26
  airbyte_agent_amazon_ads/_vendored/connector_sdk/http/__init__.py,sha256=y8fbzZn-3yV9OxtYz8Dy6FFGI5v6TOqADd1G3xHH3Hw,911
27
27
  airbyte_agent_amazon_ads/_vendored/connector_sdk/http/config.py,sha256=6J7YIIwHC6sRu9i-yKa5XvArwK2KU60rlnmxzDZq3lw,3283
@@ -42,16 +42,16 @@ airbyte_agent_amazon_ads/_vendored/connector_sdk/performance/__init__.py,sha256=
42
42
  airbyte_agent_amazon_ads/_vendored/connector_sdk/performance/instrumentation.py,sha256=_dXvNiqdndIBwDjeDKNViWzn_M5FkSUsMmJtFldrmsM,1504
43
43
  airbyte_agent_amazon_ads/_vendored/connector_sdk/performance/metrics.py,sha256=FRff7dKt4iwt_A7pxV5n9kAGBR756PC7q8-weWygPSM,2817
44
44
  airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/__init__.py,sha256=Uymu-QuzGJuMxexBagIvUxpVAigIuIhz3KeBl_Vu4Ko,1638
45
- airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/base.py,sha256=KX3OUSnWu_M6yq-IMTH4dI420x-VRSvKc7uery6gFUU,6303
46
- airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/components.py,sha256=x3YCM1p2n_xHi50fMeOX0mXUiPqjGlLHs3Go8jXokb0,7895
45
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/base.py,sha256=IoAucZQ0j0xTdm4VWotB636R4jsrkYnppMQhXE0uoyU,6541
46
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/components.py,sha256=nJIPieavwX3o3ODvdtLHPk84d_V229xmg6LDfwEHjzc,8119
47
47
  airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/connector.py,sha256=mSZk1wr2YSdRj9tTRsPAuIlCzd_xZLw-Bzl1sMwE0rE,3731
48
- airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/extensions.py,sha256=f7VhHrcIYxaPOJHMc4g0lpy04pZTbx5nlroNzAu5B9Q,7135
48
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/extensions.py,sha256=5hgpFHK7fzpzegCkJk882DeIP79bCx_qairKJhvPMZ8,9590
49
49
  airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/operations.py,sha256=RpzGtAI4yvAtMHAfMUMcUwgHv_qJojnKlNb75_agUF8,5729
50
50
  airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/security.py,sha256=6ljzf_JHs4amnQX9AhePcEsT8P3ZnTSC4xeg7-cvsNQ,9100
51
51
  airbyte_agent_amazon_ads/_vendored/connector_sdk/telemetry/__init__.py,sha256=RaLgkBU4dfxn1LC5Y0Q9rr2PJbrwjxvPgBLmq8_WafE,211
52
52
  airbyte_agent_amazon_ads/_vendored/connector_sdk/telemetry/config.py,sha256=tLmQwAFD0kP1WyBGWBS3ysaudN9H3e-3EopKZi6cGKg,885
53
53
  airbyte_agent_amazon_ads/_vendored/connector_sdk/telemetry/events.py,sha256=8Y1NbXiwISX-V_wRofY7PqcwEXD0dLMnntKkY6XFU2s,1328
54
54
  airbyte_agent_amazon_ads/_vendored/connector_sdk/telemetry/tracker.py,sha256=Ftrk0_ddfM7dZG8hF9xBuPwhbc9D6JZ7Q9qs5o3LEyA,5579
55
- airbyte_agent_amazon_ads-0.1.6.dist-info/METADATA,sha256=1fIq0thyfKkVulSJkgVW5tqo4YgoSr5YwFK82aAUt4c,5152
56
- airbyte_agent_amazon_ads-0.1.6.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
57
- airbyte_agent_amazon_ads-0.1.6.dist-info/RECORD,,
55
+ airbyte_agent_amazon_ads-0.1.7.dist-info/METADATA,sha256=ZPorQiA_AYniOFTK7wJ-Be1bZXDVgN3lugfB5hAbS8Q,5153
56
+ airbyte_agent_amazon_ads-0.1.7.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
57
+ airbyte_agent_amazon_ads-0.1.7.dist-info/RECORD,,