airbyte-agent-amazon-ads 0.1.18__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.
Files changed (57) hide show
  1. airbyte_agent_amazon_ads/__init__.py +75 -0
  2. airbyte_agent_amazon_ads/_vendored/__init__.py +1 -0
  3. airbyte_agent_amazon_ads/_vendored/connector_sdk/__init__.py +82 -0
  4. airbyte_agent_amazon_ads/_vendored/connector_sdk/auth_strategies.py +1171 -0
  5. airbyte_agent_amazon_ads/_vendored/connector_sdk/auth_template.py +135 -0
  6. airbyte_agent_amazon_ads/_vendored/connector_sdk/cloud_utils/__init__.py +5 -0
  7. airbyte_agent_amazon_ads/_vendored/connector_sdk/cloud_utils/client.py +213 -0
  8. airbyte_agent_amazon_ads/_vendored/connector_sdk/connector_model_loader.py +1116 -0
  9. airbyte_agent_amazon_ads/_vendored/connector_sdk/constants.py +78 -0
  10. airbyte_agent_amazon_ads/_vendored/connector_sdk/exceptions.py +23 -0
  11. airbyte_agent_amazon_ads/_vendored/connector_sdk/executor/__init__.py +31 -0
  12. airbyte_agent_amazon_ads/_vendored/connector_sdk/executor/hosted_executor.py +196 -0
  13. airbyte_agent_amazon_ads/_vendored/connector_sdk/executor/local_executor.py +1773 -0
  14. airbyte_agent_amazon_ads/_vendored/connector_sdk/executor/models.py +190 -0
  15. airbyte_agent_amazon_ads/_vendored/connector_sdk/extensions.py +693 -0
  16. airbyte_agent_amazon_ads/_vendored/connector_sdk/http/__init__.py +37 -0
  17. airbyte_agent_amazon_ads/_vendored/connector_sdk/http/adapters/__init__.py +9 -0
  18. airbyte_agent_amazon_ads/_vendored/connector_sdk/http/adapters/httpx_adapter.py +251 -0
  19. airbyte_agent_amazon_ads/_vendored/connector_sdk/http/config.py +98 -0
  20. airbyte_agent_amazon_ads/_vendored/connector_sdk/http/exceptions.py +119 -0
  21. airbyte_agent_amazon_ads/_vendored/connector_sdk/http/protocols.py +114 -0
  22. airbyte_agent_amazon_ads/_vendored/connector_sdk/http/response.py +104 -0
  23. airbyte_agent_amazon_ads/_vendored/connector_sdk/http_client.py +693 -0
  24. airbyte_agent_amazon_ads/_vendored/connector_sdk/introspection.py +481 -0
  25. airbyte_agent_amazon_ads/_vendored/connector_sdk/logging/__init__.py +11 -0
  26. airbyte_agent_amazon_ads/_vendored/connector_sdk/logging/logger.py +273 -0
  27. airbyte_agent_amazon_ads/_vendored/connector_sdk/logging/types.py +93 -0
  28. airbyte_agent_amazon_ads/_vendored/connector_sdk/observability/__init__.py +11 -0
  29. airbyte_agent_amazon_ads/_vendored/connector_sdk/observability/config.py +179 -0
  30. airbyte_agent_amazon_ads/_vendored/connector_sdk/observability/models.py +19 -0
  31. airbyte_agent_amazon_ads/_vendored/connector_sdk/observability/redactor.py +81 -0
  32. airbyte_agent_amazon_ads/_vendored/connector_sdk/observability/session.py +103 -0
  33. airbyte_agent_amazon_ads/_vendored/connector_sdk/performance/__init__.py +6 -0
  34. airbyte_agent_amazon_ads/_vendored/connector_sdk/performance/instrumentation.py +57 -0
  35. airbyte_agent_amazon_ads/_vendored/connector_sdk/performance/metrics.py +93 -0
  36. airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/__init__.py +75 -0
  37. airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/base.py +201 -0
  38. airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/components.py +244 -0
  39. airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/connector.py +120 -0
  40. airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/extensions.py +301 -0
  41. airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/operations.py +146 -0
  42. airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/security.py +236 -0
  43. airbyte_agent_amazon_ads/_vendored/connector_sdk/secrets.py +182 -0
  44. airbyte_agent_amazon_ads/_vendored/connector_sdk/telemetry/__init__.py +10 -0
  45. airbyte_agent_amazon_ads/_vendored/connector_sdk/telemetry/config.py +32 -0
  46. airbyte_agent_amazon_ads/_vendored/connector_sdk/telemetry/events.py +59 -0
  47. airbyte_agent_amazon_ads/_vendored/connector_sdk/telemetry/tracker.py +155 -0
  48. airbyte_agent_amazon_ads/_vendored/connector_sdk/types.py +255 -0
  49. airbyte_agent_amazon_ads/_vendored/connector_sdk/utils.py +60 -0
  50. airbyte_agent_amazon_ads/_vendored/connector_sdk/validation.py +828 -0
  51. airbyte_agent_amazon_ads/connector.py +711 -0
  52. airbyte_agent_amazon_ads/connector_model.py +2213 -0
  53. airbyte_agent_amazon_ads/models.py +225 -0
  54. airbyte_agent_amazon_ads/types.py +238 -0
  55. airbyte_agent_amazon_ads-0.1.18.dist-info/METADATA +140 -0
  56. airbyte_agent_amazon_ads-0.1.18.dist-info/RECORD +57 -0
  57. airbyte_agent_amazon_ads-0.1.18.dist-info/WHEEL +4 -0
@@ -0,0 +1,225 @@
1
+ """
2
+ Pydantic models for amazon-ads connector.
3
+
4
+ This module contains Pydantic models used for authentication configuration
5
+ and response envelope types.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from pydantic import BaseModel, ConfigDict, Field
11
+ from typing import TypeVar, Generic, Union, Any
12
+
13
+ # Authentication configuration
14
+
15
+ class AmazonAdsAuthConfig(BaseModel):
16
+ """OAuth2 Authentication"""
17
+
18
+ model_config = ConfigDict(extra="forbid")
19
+
20
+ client_id: str
21
+ """The client ID of your Amazon Ads API application"""
22
+ client_secret: str
23
+ """The client secret of your Amazon Ads API application"""
24
+ refresh_token: str
25
+ """The refresh token obtained from the OAuth authorization flow"""
26
+
27
+ # ===== RESPONSE TYPE DEFINITIONS (PYDANTIC) =====
28
+
29
+ class Profile(BaseModel):
30
+ """An advertising profile represents an advertiser's account in a specific marketplace.
31
+ Profiles are used to scope API calls and manage advertising campaigns.
32
+ """
33
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
34
+
35
+ profile_id: Union[int, Any] = Field(default=None, alias="profileId")
36
+ country_code: Union[str | None, Any] = Field(default=None, alias="countryCode")
37
+ currency_code: Union[str | None, Any] = Field(default=None, alias="currencyCode")
38
+ daily_budget: Union[float | None, Any] = Field(default=None, alias="dailyBudget")
39
+ timezone: Union[str | None, Any] = Field(default=None)
40
+ account_info: Union[Any, Any] = Field(default=None, alias="accountInfo")
41
+
42
+ class AccountInfo(BaseModel):
43
+ """Information about the advertiser's account associated with a profile"""
44
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
45
+
46
+ marketplace_string_id: Union[str | None, Any] = Field(default=None, alias="marketplaceStringId")
47
+ id: Union[str | None, Any] = Field(default=None)
48
+ type: Union[str | None, Any] = Field(default=None)
49
+ name: Union[str | None, Any] = Field(default=None)
50
+ sub_type: Union[str | None, Any] = Field(default=None, alias="subType")
51
+ valid_payment_method: Union[bool | None, Any] = Field(default=None, alias="validPaymentMethod")
52
+
53
+ class Portfolio(BaseModel):
54
+ """A portfolio is a container for grouping campaigns together for organizational
55
+ and budget management purposes.
56
+ """
57
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
58
+
59
+ portfolio_id: Union[Any, Any] = Field(default=None, alias="portfolioId")
60
+ name: Union[str | None, Any] = Field(default=None)
61
+ budget: Union[Any, Any] = Field(default=None)
62
+ in_budget: Union[bool | None, Any] = Field(default=None, alias="inBudget")
63
+ state: Union[str | None, Any] = Field(default=None)
64
+ creation_date: Union[int | None, Any] = Field(default=None, alias="creationDate")
65
+ last_updated_date: Union[int | None, Any] = Field(default=None, alias="lastUpdatedDate")
66
+ serving_status: Union[str | None, Any] = Field(default=None, alias="servingStatus")
67
+
68
+ class PortfolioBudget(BaseModel):
69
+ """Budget configuration for a portfolio"""
70
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
71
+
72
+ amount: Union[float | None, Any] = Field(default=None)
73
+ currency_code: Union[str | None, Any] = Field(default=None, alias="currencyCode")
74
+ policy: Union[str | None, Any] = Field(default=None)
75
+ start_date: Union[str | None, Any] = Field(default=None, alias="startDate")
76
+ end_date: Union[str | None, Any] = Field(default=None, alias="endDate")
77
+
78
+ class SponsoredProductCampaign(BaseModel):
79
+ """A Sponsored Products campaign promotes individual product listings on Amazon.
80
+ Campaigns contain ad groups, which contain ads and targeting settings.
81
+ Note: The list endpoint (v3) and get endpoint (v2) return slightly different field formats.
82
+ """
83
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
84
+
85
+ campaign_id: Union[Any, Any] = Field(default=None, alias="campaignId")
86
+ portfolio_id: Union[Any, Any] = Field(default=None, alias="portfolioId")
87
+ name: Union[str | None, Any] = Field(default=None)
88
+ campaign_type: Union[str | None, Any] = Field(default=None, alias="campaignType")
89
+ tags: Union[dict[str, Any] | None, Any] = Field(default=None)
90
+ targeting_type: Union[str | None, Any] = Field(default=None, alias="targetingType")
91
+ premium_bid_adjustment: Union[bool | None, Any] = Field(default=None, alias="premiumBidAdjustment")
92
+ state: Union[str | None, Any] = Field(default=None)
93
+ dynamic_bidding: Union[Any, Any] = Field(default=None, alias="dynamicBidding")
94
+ bidding: Union[Any, Any] = Field(default=None)
95
+ start_date: Union[str | None, Any] = Field(default=None, alias="startDate")
96
+ end_date: Union[str | None, Any] = Field(default=None, alias="endDate")
97
+ daily_budget: Union[float | None, Any] = Field(default=None, alias="dailyBudget")
98
+ budget: Union[Any, Any] = Field(default=None)
99
+ extended_data: Union[dict[str, Any] | None, Any] = Field(default=None, alias="extendedData")
100
+ marketplace_budget_allocation: Union[str | None, Any] = Field(default=None, alias="marketplaceBudgetAllocation")
101
+ off_amazon_settings: Union[dict[str, Any] | None, Any] = Field(default=None, alias="offAmazonSettings")
102
+
103
+ class DynamicBiddingPlacementbiddingItem(BaseModel):
104
+ """Nested schema for DynamicBidding.placementBidding_item"""
105
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
106
+
107
+ placement: Union[str | None, Any] = Field(default=None, description="The placement type")
108
+ """The placement type"""
109
+ percentage: Union[int | None, Any] = Field(default=None, description="The bid adjustment percentage")
110
+ """The bid adjustment percentage"""
111
+
112
+ class DynamicBidding(BaseModel):
113
+ """Dynamic bidding settings for a campaign"""
114
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
115
+
116
+ placement_bidding: Union[list[DynamicBiddingPlacementbiddingItem] | None, Any] = Field(default=None, alias="placementBidding")
117
+ strategy: Union[str | None, Any] = Field(default=None)
118
+
119
+ class CampaignBudget(BaseModel):
120
+ """Budget configuration for a campaign"""
121
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
122
+
123
+ budget_type: Union[str | None, Any] = Field(default=None, alias="budgetType")
124
+ budget: Union[float | None, Any] = Field(default=None)
125
+
126
+ # ===== METADATA TYPE DEFINITIONS (PYDANTIC) =====
127
+ # Meta types for operations that extract metadata (e.g., pagination info)
128
+
129
+ # ===== RESPONSE ENVELOPE MODELS =====
130
+
131
+ # Type variables for generic envelope models
132
+ T = TypeVar('T')
133
+ S = TypeVar('S')
134
+
135
+
136
+ class AmazonAdsExecuteResult(BaseModel, Generic[T]):
137
+ """Response envelope with data only.
138
+
139
+ Used for actions that return data without metadata.
140
+ """
141
+ model_config = ConfigDict(extra="forbid")
142
+
143
+ data: T
144
+ """Response data containing the result of the action."""
145
+
146
+
147
+ class AmazonAdsExecuteResultWithMeta(AmazonAdsExecuteResult[T], Generic[T, S]):
148
+ """Response envelope with data and metadata.
149
+
150
+ Used for actions that return both data and metadata (e.g., pagination info).
151
+ """
152
+ meta: S
153
+ """Metadata about the response (e.g., pagination cursors, record counts)."""
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
+
210
+
211
+
212
+ # ===== OPERATION RESULT TYPE ALIASES =====
213
+
214
+ # Concrete type aliases for each operation result.
215
+ # These provide simpler, more readable type annotations than using the generic forms.
216
+
217
+ ProfilesListResult = AmazonAdsExecuteResult[list[Profile]]
218
+ """Result type for profiles.list operation."""
219
+
220
+ PortfoliosListResult = AmazonAdsExecuteResult[dict[str, Any]]
221
+ """Result type for portfolios.list operation."""
222
+
223
+ SponsoredProductCampaignsListResult = AmazonAdsExecuteResult[dict[str, Any]]
224
+ """Result type for sponsored_product_campaigns.list operation."""
225
+
@@ -0,0 +1,238 @@
1
+ """
2
+ Type definitions for amazon-ads connector.
3
+ """
4
+ from __future__ import annotations
5
+
6
+ # Use typing_extensions.TypedDict for Pydantic compatibility
7
+ try:
8
+ from typing_extensions import TypedDict, NotRequired
9
+ except ImportError:
10
+ from typing import TypedDict, NotRequired # type: ignore[attr-defined]
11
+
12
+ from typing import Any, Literal
13
+
14
+
15
+ # ===== NESTED PARAM TYPE DEFINITIONS =====
16
+ # Nested parameter schemas discovered during parameter extraction
17
+
18
+ class SponsoredProductCampaignsListParamsStatefilter(TypedDict):
19
+ """Nested schema for SponsoredProductCampaignsListParams.stateFilter"""
20
+ include: NotRequired[str]
21
+
22
+ # ===== OPERATION PARAMS TYPE DEFINITIONS =====
23
+
24
+ class ProfilesListParams(TypedDict):
25
+ """Parameters for profiles.list operation"""
26
+ profile_type_filter: NotRequired[str]
27
+
28
+ class ProfilesGetParams(TypedDict):
29
+ """Parameters for profiles.get operation"""
30
+ profile_id: str
31
+
32
+ class PortfoliosListParams(TypedDict):
33
+ """Parameters for portfolios.list operation"""
34
+ include_extended_data_fields: NotRequired[str]
35
+
36
+ class PortfoliosGetParams(TypedDict):
37
+ """Parameters for portfolios.get operation"""
38
+ portfolio_id: str
39
+
40
+ class SponsoredProductCampaignsListParams(TypedDict):
41
+ """Parameters for sponsored_product_campaigns.list operation"""
42
+ state_filter: NotRequired[SponsoredProductCampaignsListParamsStatefilter]
43
+ max_results: NotRequired[int]
44
+ next_token: NotRequired[str]
45
+
46
+ class SponsoredProductCampaignsGetParams(TypedDict):
47
+ """Parameters for sponsored_product_campaigns.get operation"""
48
+ campaign_id: str
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]]
@@ -0,0 +1,140 @@
1
+ Metadata-Version: 2.4
2
+ Name: airbyte-agent-amazon-ads
3
+ Version: 0.1.18
4
+ Summary: Airbyte Amazon-Ads Connector for AI platforms
5
+ Project-URL: Homepage, https://github.com/airbytehq/airbyte-agent-connectors
6
+ Project-URL: Documentation, https://docs.airbyte.com/ai-agents/
7
+ Project-URL: Repository, https://github.com/airbytehq/airbyte-agent-connectors
8
+ Project-URL: Issues, https://github.com/airbytehq/airbyte-agent-connectors/issues
9
+ Author-email: Airbyte <contact@airbyte.io>
10
+ License: Elastic-2.0
11
+ Keywords: agent,ai,airbyte,amazon-ads,api,connector,data-integration,llm,mcp
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: Other/Proprietary License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
19
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
+ Classifier: Typing :: Typed
21
+ Requires-Python: >=3.13
22
+ Requires-Dist: httpx>=0.24.0
23
+ Requires-Dist: jinja2>=3.0.0
24
+ Requires-Dist: jsonpath-ng>=1.6.1
25
+ Requires-Dist: jsonref>=1.1.0
26
+ Requires-Dist: opentelemetry-api>=1.37.0
27
+ Requires-Dist: opentelemetry-sdk>=1.37.0
28
+ Requires-Dist: pydantic>=2.0.0
29
+ Requires-Dist: python-dotenv>=1.0.0
30
+ Requires-Dist: pyyaml>=6.0
31
+ Requires-Dist: segment-analytics-python>=2.2.0
32
+ Description-Content-Type: text/markdown
33
+
34
+ # Amazon-Ads agent connector
35
+
36
+ Amazon Ads is Amazon's advertising platform that enables sellers and vendors to promote their
37
+ products across Amazon's marketplace. This connector provides access to advertising profiles
38
+ for managing and analyzing advertising campaigns across different marketplaces.
39
+
40
+
41
+ ## Example questions
42
+
43
+ The Amazon-Ads connector is optimized to handle prompts like these.
44
+
45
+ - List all my advertising profiles across marketplaces
46
+ - Show me the profiles for my seller accounts
47
+ - What marketplaces do I have advertising profiles in?
48
+ - List all portfolios for a specific profile
49
+ - Show me all sponsored product campaigns
50
+ - What campaigns are currently enabled?
51
+ - Find campaigns with a specific targeting type
52
+
53
+ ## Unsupported questions
54
+
55
+ The Amazon-Ads connector isn't currently able to handle prompts like these.
56
+
57
+ - Create a new advertising campaign
58
+ - Update my campaign budget
59
+ - Delete an ad group
60
+ - Generate a performance report
61
+
62
+ ## Installation
63
+
64
+ ```bash
65
+ uv pip install airbyte-agent-amazon-ads
66
+ ```
67
+
68
+ ## Usage
69
+
70
+ Connectors can run in open source or hosted mode.
71
+
72
+ ### Open source
73
+
74
+ In open source mode, you provide API credentials directly to the connector.
75
+
76
+ ```python
77
+ from airbyte_agent_amazon-ads import AmazonAdsConnector
78
+ from airbyte_agent_amazon_ads.models import AmazonAdsAuthConfig
79
+
80
+ connector = AmazonAdsConnector(
81
+ auth_config=AmazonAdsAuthConfig(
82
+ client_id="<The client ID of your Amazon Ads API application>",
83
+ client_secret="<The client secret of your Amazon Ads API application>",
84
+ refresh_token="<The refresh token obtained from the OAuth authorization flow>"
85
+ )
86
+ )
87
+
88
+ @agent.tool_plain # assumes you're using Pydantic AI
89
+ @AmazonAdsConnector.tool_utils
90
+ async def amazon-ads_execute(entity: str, action: str, params: dict | None = None):
91
+ return await connector.execute(entity, action, params or {})
92
+ ```
93
+
94
+ ### Hosted
95
+
96
+ In hosted mode, API credentials are stored securely in Airbyte Cloud. You provide your Airbyte credentials instead.
97
+
98
+ This example assumes you've already authenticated your connector with Airbyte. See [Authentication](AUTH.md) to learn more about authenticating. If you need a step-by-step guide, see the [hosted execution tutorial](https://docs.airbyte.com/ai-agents/quickstarts/tutorial-hosted).
99
+
100
+ ```python
101
+ from airbyte_agent_amazon-ads import AmazonAdsConnector
102
+
103
+ connector = AmazonAdsConnector(
104
+ external_user_id="<your_external_user_id>",
105
+ airbyte_client_id="<your-client-id>",
106
+ airbyte_client_secret="<your-client-secret>"
107
+ )
108
+
109
+ @agent.tool_plain # assumes you're using Pydantic AI
110
+ @AmazonAdsConnector.tool_utils
111
+ async def amazon-ads_execute(entity: str, action: str, params: dict | None = None):
112
+ return await connector.execute(entity, action, params or {})
113
+ ```
114
+
115
+ ## Full documentation
116
+
117
+ ### Entities and actions
118
+
119
+ This connector supports the following entities and actions. For more details, see this connector's [full reference documentation](REFERENCE.md).
120
+
121
+ | Entity | Actions |
122
+ |--------|---------|
123
+ | Profiles | [List](./REFERENCE.md#profiles-list), [Get](./REFERENCE.md#profiles-get) |
124
+ | Portfolios | [List](./REFERENCE.md#portfolios-list), [Get](./REFERENCE.md#portfolios-get) |
125
+ | Sponsored Product Campaigns | [List](./REFERENCE.md#sponsored-product-campaigns-list), [Get](./REFERENCE.md#sponsored-product-campaigns-get) |
126
+
127
+
128
+ ### Authentication and configuration
129
+
130
+ For all authentication and configuration options, see the connector's [authentication documentation](AUTH.md).
131
+
132
+ ### Amazon-Ads API docs
133
+
134
+ See the official [Amazon-Ads API reference](https://advertising.amazon.com/API/docs/en-us).
135
+
136
+ ## Version information
137
+
138
+ - **Package version:** 0.1.18
139
+ - **Connector version:** 1.0.4
140
+ - **Generated with Connector SDK commit SHA:** 97007bbdad3a6ac982ee2c0cdd667acdb5c12d3c
@@ -0,0 +1,57 @@
1
+ airbyte_agent_amazon_ads/__init__.py,sha256=f883U_4eSRjMLgjqpi5rGcKZ0U44ME_Z0IY-XZhwlPc,1896
2
+ airbyte_agent_amazon_ads/connector.py,sha256=iN7jP_VemUPoTbpWcpgggUyl8S9ZZvzFYFeGNQ3UhQw,24164
3
+ airbyte_agent_amazon_ads/connector_model.py,sha256=EBw-dpn0Vf5NpZCxGI-pHxaB52h4e1ApHfOXKGPPuCQ,97995
4
+ airbyte_agent_amazon_ads/models.py,sha256=TOHCY0p3cE0rWVv3YfYvyvL-lmdYBcoGRTXtFNNBztc,9182
5
+ airbyte_agent_amazon_ads/types.py,sha256=EW-jvOmXyJQqe2ESiDCs7nCIIsFreDCIZBlA6aplxpA,6728
6
+ airbyte_agent_amazon_ads/_vendored/__init__.py,sha256=ILl7AHXMui__swyrjxrh9yRa4dLiwBvV6axPWFWty80,38
7
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/__init__.py,sha256=T5o7roU6NSpH-lCAGZ338sE5dlh4ZU6i6IkeG1zpems,1949
8
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/auth_strategies.py,sha256=5Sb9moUp623o67Q2wMa8iZldJH08y4gQdoutoO_75Iw,42088
9
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/auth_template.py,sha256=nju4jqlFC_KI82ILNumNIyiUtRJcy7J94INIZ0QraI4,4454
10
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/connector_model_loader.py,sha256=AW9bsdggzuc3ydy2bYYF33L6LxLKLQer9Wm47IOuQw0,41492
11
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/constants.py,sha256=AtzOvhDMWbRJgpsQNWl5tkogHD6mWgEY668PgRmgtOY,2737
12
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/exceptions.py,sha256=ss5MGv9eVPmsbLcLWetuu3sDmvturwfo6Pw3M37Oq5k,481
13
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/extensions.py,sha256=XWRRoJOOrwUHSKbuQt5DU7CCu8ePzhd_HuP7c_uD77w,21376
14
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/http_client.py,sha256=09Fclbq4wrg38EM2Yh2kHiykQVXqdAGby024elcEz8E,28027
15
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/introspection.py,sha256=e9uWn2ofpeehoBbzNgts_bjlKLn8ayA1Y3OpDC3b7ZA,19517
16
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/secrets.py,sha256=J9ezMu4xNnLW11xY5RCre6DHP7YMKZCqwGJfk7ufHAM,6855
17
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/types.py,sha256=in8gHsn5nsScujOfHZmkOgNmqmJKiPyNNjg59m5fGWc,8807
18
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/utils.py,sha256=G4LUXOC2HzPoND2v4tQW68R9uuPX9NQyCjaGxb7Kpl0,1958
19
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/validation.py,sha256=4MPrxYmQh8TbCU0KdvvRKe35Lg1YYLEBd0u4aKySl_E,32122
20
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/cloud_utils/__init__.py,sha256=4799Hv9f2zxDVj1aLyQ8JpTEuFTp_oOZMRz-NZCdBJg,134
21
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/cloud_utils/client.py,sha256=YxdRpQr9XjDzih6csSseBVGn9kfMtaqbOCXP0TPuzFY,7189
22
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/executor/__init__.py,sha256=EmG9YQNAjSuYCVB4D5VoLm4qpD1KfeiiOf7bpALj8p8,702
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=tVbfstxOrm5qJt1NawTwjhIIpDgPCC4wSrKM5eALPSQ,74064
25
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/executor/models.py,sha256=lYVT_bNcw-PoIks4WHNyl2VY-lJVf2FntzINSOBIheE,5845
26
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/http/__init__.py,sha256=y8fbzZn-3yV9OxtYz8Dy6FFGI5v6TOqADd1G3xHH3Hw,911
27
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/http/config.py,sha256=6J7YIIwHC6sRu9i-yKa5XvArwK2KU60rlnmxzDZq3lw,3283
28
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/http/exceptions.py,sha256=eYdYmxqcwA6pgrSoRXNfR6_nRBGRH6upp2-r1jcKaZo,3586
29
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/http/protocols.py,sha256=eV7NbBIQOcPLw-iu8mtkV2zCVgScDwP0ek1SbPNQo0g,3323
30
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/http/response.py,sha256=Q-RyM5D0D05ZhmZVJk4hVpmoS8YtyXNOTM5hqBt7rWI,3475
31
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/http/adapters/__init__.py,sha256=gjbWdU4LfzUG2PETI0TkfkukdzoCAhpL6FZtIEnkO-s,209
32
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/http/adapters/httpx_adapter.py,sha256=dkYhzBWiKBmzWZlc-cRTx50Hb6fy3OI8kOQvXRfS1CQ,8465
33
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/logging/__init__.py,sha256=IZoE5yXhwSA0m3xQqh0FiCifjp1sB3S8jnnFPuJLYf8,227
34
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/logging/logger.py,sha256=rUdKDEQe3pOODmBLEcvhgZeEZi48BvrgKXKq1xvCXu0,8387
35
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/logging/types.py,sha256=ONb9xKNXUkrR2lojSBMF7ruof7S2r92WjrO_kEZic84,3239
36
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/observability/__init__.py,sha256=ojx1n9vaWCXFFvb3-90Pwtg845trFdV2v6wcCoO75Ko,269
37
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/observability/config.py,sha256=uWvRAPHnEusVKviQQncqcpnHKNhoZ4ZoFK6nUOSVClY,5372
38
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/observability/models.py,sha256=IRGjlJia28_IU7BMSBb5RHWs47yAOLvE20JIIXHazLY,448
39
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/observability/redactor.py,sha256=HRbSwGxsfQYbYlG4QBVvv8Qnw0d4SMowMv0dTFHsHqQ,2361
40
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/observability/session.py,sha256=WYRIB3bVz9HhpElkUO9CILCRIrWs9p2MR2hmf8uJm3E,3086
41
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/performance/__init__.py,sha256=Sp5fSd1LvtIQkv-fnrKqPsM7-6IWp0sSZSK0mhzal_A,200
42
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/performance/instrumentation.py,sha256=_dXvNiqdndIBwDjeDKNViWzn_M5FkSUsMmJtFldrmsM,1504
43
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/performance/metrics.py,sha256=FRff7dKt4iwt_A7pxV5n9kAGBR756PC7q8-weWygPSM,2817
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=IoAucZQ0j0xTdm4VWotB636R4jsrkYnppMQhXE0uoyU,6541
46
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/components.py,sha256=nJIPieavwX3o3ODvdtLHPk84d_V229xmg6LDfwEHjzc,8119
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=5hgpFHK7fzpzegCkJk882DeIP79bCx_qairKJhvPMZ8,9590
49
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/operations.py,sha256=RpzGtAI4yvAtMHAfMUMcUwgHv_qJojnKlNb75_agUF8,5729
50
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/schema/security.py,sha256=1CVCavrPdHHyk7B6JtUD75yRS_hWLCemZF1zwGbdqxg,9036
51
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/telemetry/__init__.py,sha256=RaLgkBU4dfxn1LC5Y0Q9rr2PJbrwjxvPgBLmq8_WafE,211
52
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/telemetry/config.py,sha256=tLmQwAFD0kP1WyBGWBS3ysaudN9H3e-3EopKZi6cGKg,885
53
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/telemetry/events.py,sha256=8Y1NbXiwISX-V_wRofY7PqcwEXD0dLMnntKkY6XFU2s,1328
54
+ airbyte_agent_amazon_ads/_vendored/connector_sdk/telemetry/tracker.py,sha256=Ftrk0_ddfM7dZG8hF9xBuPwhbc9D6JZ7Q9qs5o3LEyA,5579
55
+ airbyte_agent_amazon_ads-0.1.18.dist-info/METADATA,sha256=PfE1O17uqZ97g8e1YNX7zAon367Q0q00h_10uK_uHHs,5192
56
+ airbyte_agent_amazon_ads-0.1.18.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
57
+ airbyte_agent_amazon_ads-0.1.18.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.28.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any