amazon-creatorsapi-python-sdk 1.0.0__py3-none-any.whl → 1.2.0__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.
- {amazon_creatorsapi_python_sdk-1.0.0.dist-info → amazon_creatorsapi_python_sdk-1.2.0.dist-info}/METADATA +11 -5
- amazon_creatorsapi_python_sdk-1.2.0.dist-info/RECORD +109 -0
- {amazon_creatorsapi_python_sdk-1.0.0.dist-info → amazon_creatorsapi_python_sdk-1.2.0.dist-info}/WHEEL +1 -1
- creatorsapi_python_sdk/__init__.py +128 -127
- creatorsapi_python_sdk/api/__init__.py +5 -5
- creatorsapi_python_sdk/api/default_api.py +2427 -2412
- creatorsapi_python_sdk/api_client.py +915 -912
- creatorsapi_python_sdk/api_response.py +21 -21
- creatorsapi_python_sdk/auth/__init__.py +21 -21
- creatorsapi_python_sdk/auth/oauth2_config.py +139 -123
- creatorsapi_python_sdk/auth/oauth2_token_manager.py +133 -120
- creatorsapi_python_sdk/configuration.py +455 -455
- creatorsapi_python_sdk/exceptions.py +204 -204
- creatorsapi_python_sdk/models/__init__.py +111 -110
- creatorsapi_python_sdk/models/access_denied_exception_response_content.py +97 -97
- creatorsapi_python_sdk/models/access_denied_reason.py +45 -45
- creatorsapi_python_sdk/models/availability.py +44 -44
- creatorsapi_python_sdk/models/browse_node.py +116 -116
- creatorsapi_python_sdk/models/browse_node_ancestor.py +103 -103
- creatorsapi_python_sdk/models/browse_node_child.py +96 -96
- creatorsapi_python_sdk/models/browse_node_info.py +106 -106
- creatorsapi_python_sdk/models/browse_nodes_result.py +100 -100
- creatorsapi_python_sdk/models/by_line_info.py +111 -111
- creatorsapi_python_sdk/models/classifications.py +101 -101
- creatorsapi_python_sdk/models/condition.py +44 -44
- creatorsapi_python_sdk/models/content_info.py +113 -113
- creatorsapi_python_sdk/models/content_rating.py +96 -96
- creatorsapi_python_sdk/models/contributor.py +98 -98
- creatorsapi_python_sdk/models/customer_reviews.py +98 -98
- creatorsapi_python_sdk/models/deal_details.py +102 -102
- creatorsapi_python_sdk/models/delivery_flag.py +46 -46
- creatorsapi_python_sdk/models/dimension_based_attribute.py +111 -111
- creatorsapi_python_sdk/models/error_data.py +94 -94
- creatorsapi_python_sdk/models/external_ids.py +106 -106
- creatorsapi_python_sdk/models/feed.py +98 -98
- creatorsapi_python_sdk/models/get_browse_nodes_request_content.py +107 -107
- creatorsapi_python_sdk/models/get_browse_nodes_resource.py +44 -44
- creatorsapi_python_sdk/models/get_browse_nodes_response_content.py +106 -106
- creatorsapi_python_sdk/models/get_feed_request_content.py +93 -93
- creatorsapi_python_sdk/models/get_feed_response_content.py +92 -92
- creatorsapi_python_sdk/models/get_items_request_content.py +124 -124
- creatorsapi_python_sdk/models/get_items_resource.py +76 -76
- creatorsapi_python_sdk/models/get_items_response_content.py +106 -106
- creatorsapi_python_sdk/models/get_report_request_content.py +93 -93
- creatorsapi_python_sdk/models/get_report_response_content.py +92 -92
- creatorsapi_python_sdk/models/get_variations_request_content.py +135 -135
- creatorsapi_python_sdk/models/get_variations_resource.py +79 -79
- creatorsapi_python_sdk/models/get_variations_response_content.py +106 -106
- creatorsapi_python_sdk/models/image_size.py +96 -96
- creatorsapi_python_sdk/models/image_type.py +111 -111
- creatorsapi_python_sdk/models/images.py +105 -105
- creatorsapi_python_sdk/models/internal_server_exception_response_content.py +94 -94
- creatorsapi_python_sdk/models/item.py +138 -138
- creatorsapi_python_sdk/models/item_info.py +156 -156
- creatorsapi_python_sdk/models/items_result.py +100 -100
- creatorsapi_python_sdk/models/language_type.py +94 -94
- creatorsapi_python_sdk/models/languages.py +104 -104
- creatorsapi_python_sdk/models/list_feeds_response_content.py +100 -100
- creatorsapi_python_sdk/models/list_reports_response_content.py +100 -100
- creatorsapi_python_sdk/models/manufacture_info.py +106 -106
- creatorsapi_python_sdk/models/money.py +96 -96
- creatorsapi_python_sdk/models/multi_valued_attribute.py +96 -96
- creatorsapi_python_sdk/models/offer_availability_v2.py +98 -98
- creatorsapi_python_sdk/models/offer_condition_v2.py +96 -96
- creatorsapi_python_sdk/models/offer_listing_v2.py +133 -133
- creatorsapi_python_sdk/models/offer_loyalty_points_v2.py +92 -92
- creatorsapi_python_sdk/models/offer_merchant_info_v2.py +94 -94
- creatorsapi_python_sdk/models/offer_price_v2.py +113 -113
- creatorsapi_python_sdk/models/offer_saving_basis.py +101 -101
- creatorsapi_python_sdk/models/offer_savings.py +98 -98
- creatorsapi_python_sdk/models/offer_type.py +45 -45
- creatorsapi_python_sdk/models/offers_v2.py +100 -100
- creatorsapi_python_sdk/models/product_info.py +124 -124
- creatorsapi_python_sdk/models/rating.py +92 -92
- creatorsapi_python_sdk/models/refinement.py +104 -104
- creatorsapi_python_sdk/models/refinement_bin.py +94 -94
- creatorsapi_python_sdk/models/report_metadata.py +98 -98
- creatorsapi_python_sdk/models/resource_not_found_exception_response_content.py +98 -98
- creatorsapi_python_sdk/models/saving_basis_type.py +46 -46
- creatorsapi_python_sdk/models/search_items_request_content.py +242 -242
- creatorsapi_python_sdk/models/search_items_resource.py +77 -77
- creatorsapi_python_sdk/models/search_items_response_content.py +106 -106
- creatorsapi_python_sdk/models/search_refinements.py +110 -110
- creatorsapi_python_sdk/models/search_result.py +110 -110
- creatorsapi_python_sdk/models/single_boolean_valued_attribute.py +96 -96
- creatorsapi_python_sdk/models/single_integer_valued_attribute.py +96 -96
- creatorsapi_python_sdk/models/single_string_valued_attribute.py +96 -96
- creatorsapi_python_sdk/models/sort_by.py +48 -48
- creatorsapi_python_sdk/models/technical_info.py +102 -102
- creatorsapi_python_sdk/models/throttle_exception_response_content.py +98 -98
- creatorsapi_python_sdk/models/trade_in_info.py +98 -98
- creatorsapi_python_sdk/models/trade_in_price.py +96 -96
- creatorsapi_python_sdk/models/unauthorized_exception_reason.py +51 -51
- creatorsapi_python_sdk/models/unauthorized_exception_response_content.py +97 -97
- creatorsapi_python_sdk/models/unit_based_attribute.py +98 -98
- creatorsapi_python_sdk/models/validation_exception_field.py +94 -94
- creatorsapi_python_sdk/models/validation_exception_reason.py +48 -48
- creatorsapi_python_sdk/models/validation_exception_response_content.py +107 -107
- creatorsapi_python_sdk/models/variation_attribute.py +94 -94
- creatorsapi_python_sdk/models/variation_dimension.py +98 -98
- creatorsapi_python_sdk/models/variation_summary.py +110 -104
- creatorsapi_python_sdk/models/variation_summary_price.py +101 -0
- creatorsapi_python_sdk/models/variations_result.py +106 -106
- creatorsapi_python_sdk/models/website_sales_rank.py +98 -98
- creatorsapi_python_sdk/rest.py +262 -262
- amazon_creatorsapi_python_sdk-1.0.0.dist-info/RECORD +0 -108
- {amazon_creatorsapi_python_sdk-1.0.0.dist-info → amazon_creatorsapi_python_sdk-1.2.0.dist-info}/licenses/LICENSE.txt +0 -0
- {amazon_creatorsapi_python_sdk-1.0.0.dist-info → amazon_creatorsapi_python_sdk-1.2.0.dist-info}/licenses/NOTICE.txt +0 -0
- {amazon_creatorsapi_python_sdk-1.0.0.dist-info → amazon_creatorsapi_python_sdk-1.2.0.dist-info}/top_level.txt +0 -0
|
@@ -1,242 +1,242 @@
|
|
|
1
|
-
# coding: utf-8
|
|
2
|
-
|
|
3
|
-
"""
|
|
4
|
-
Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
5
|
-
|
|
6
|
-
Licensed under the Apache License, Version 2.0 (the "License").
|
|
7
|
-
You may not use this file except in compliance with the License.
|
|
8
|
-
A copy of the License is located at
|
|
9
|
-
|
|
10
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
|
|
12
|
-
or in the "license" file accompanying this file. This file is distributed
|
|
13
|
-
on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
|
|
14
|
-
express or implied. See the License for the specific language governing
|
|
15
|
-
permissions and limitations under the License.
|
|
16
|
-
|
|
17
|
-
""" # noqa: E501
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
from __future__ import annotations
|
|
22
|
-
import pprint
|
|
23
|
-
import re # noqa: F401
|
|
24
|
-
import json
|
|
25
|
-
|
|
26
|
-
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
|
27
|
-
from typing import Any, ClassVar, Dict, List, Optional, Union
|
|
28
|
-
from typing_extensions import Annotated
|
|
29
|
-
from creatorsapi_python_sdk.models.availability import Availability
|
|
30
|
-
from creatorsapi_python_sdk.models.condition import Condition
|
|
31
|
-
from creatorsapi_python_sdk.models.delivery_flag import DeliveryFlag
|
|
32
|
-
from creatorsapi_python_sdk.models.search_items_resource import SearchItemsResource
|
|
33
|
-
from creatorsapi_python_sdk.models.sort_by import SortBy
|
|
34
|
-
from typing import Optional, Set
|
|
35
|
-
from typing_extensions import Self
|
|
36
|
-
|
|
37
|
-
class SearchItemsRequestContent(BaseModel):
|
|
38
|
-
"""
|
|
39
|
-
The request object for the search items operation. It contains the request parameters for the search items operation.
|
|
40
|
-
""" # noqa: E501
|
|
41
|
-
actor: Optional[Annotated[str, Field(strict=True, max_length=1000)]] = Field(default=None, description="Actor name associated with the item. You can enter all or part of the name.")
|
|
42
|
-
artist: Optional[Annotated[str, Field(strict=True, max_length=1000)]] = Field(default=None, description="Artist name associated with the item. You can enter all or part of the name.")
|
|
43
|
-
author: Optional[Annotated[str, Field(strict=True, max_length=1000)]] = Field(default=None, description="Author name associated with the item. You can enter all or part of the name.")
|
|
44
|
-
availability: Optional[Availability] = None
|
|
45
|
-
brand: Optional[Annotated[str, Field(strict=True, max_length=1000)]] = Field(default=None, description="Brand name associated with the item. You can enter all or part of the name.")
|
|
46
|
-
browse_node_id: Optional[Annotated[str, Field(strict=True, max_length=19)]] = Field(default=None, description="A unique ID assigned by Amazon that identifies a product category/sub-category. The BrowseNodeId is a positive Long having max value upto Long.MAX_VALUE i.e. 9223372036854775807 (inclusive).", alias="browseNodeId")
|
|
47
|
-
condition: Optional[Condition] = None
|
|
48
|
-
currency_of_preference: Optional[Annotated[str, Field(strict=True, max_length=100)]] = Field(default=None, description="Currency of preference in which the prices information should be returned in response. By default the prices are returned in the default currency of the marketplace. Expected currency code format is the ISO 4217 currency code (i.e. USD, EUR etc.).", alias="currencyOfPreference")
|
|
49
|
-
delivery_flags: Optional[Annotated[List[DeliveryFlag], Field(max_length=100)]] = Field(default=None, description="List of DeliveryFlag which denotes a certain delivery program.", alias="deliveryFlags")
|
|
50
|
-
item_count: Optional[Union[Annotated[float, Field(le=100, strict=True, ge=1)], Annotated[int, Field(le=100, strict=True, ge=1)]]] = Field(default=None, description="The number of items desired in SearchItems response.", alias="itemCount")
|
|
51
|
-
item_page: Optional[Union[Annotated[float, Field(le=10, strict=True, ge=1)], Annotated[int, Field(le=10, strict=True, ge=1)]]] = Field(default=None, description="The specific page of items to be returned from the available Search Results.", alias="itemPage")
|
|
52
|
-
keywords: Optional[Annotated[str, Field(strict=True, max_length=1000)]] = Field(default=None, description="A word or phrase that describes an item i.e. the search query.")
|
|
53
|
-
languages_of_preference: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=1000)]], Field(max_length=1)]] = Field(default=None, description="Languages in order of preference in which the item information should be returned in response. By default the item information is returned in the default language of the marketplace.", alias="languagesOfPreference")
|
|
54
|
-
max_price: Optional[Union[Annotated[float, Field(strict=True, ge=1)], Annotated[int, Field(strict=True, ge=1)]]] = Field(default=None, description="The MaxPrice parameter filters search results to items with at least one offer price below the specified value.", alias="maxPrice")
|
|
55
|
-
min_price: Optional[Union[Annotated[float, Field(strict=True, ge=1)], Annotated[int, Field(strict=True, ge=1)]]] = Field(default=None, description="The MinPrice parameter filters search results to items with at least one offer price above the specified value.", alias="minPrice")
|
|
56
|
-
min_reviews_rating: Optional[Union[Annotated[float, Field(le=4, strict=True, ge=1)], Annotated[int, Field(le=4, strict=True, ge=1)]]] = Field(default=None, description="The MinReviewsRating parameter filters search results to items with customer review ratings above specified value.", alias="minReviewsRating")
|
|
57
|
-
min_saving_percent: Optional[Union[Annotated[float, Field(le=99, strict=True, ge=1)], Annotated[int, Field(le=99, strict=True, ge=1)]]] = Field(default=None, description="The MinSavingPercent parameter filters search results to items with at least one offer having saving percentage above the specified value.", alias="minSavingPercent")
|
|
58
|
-
partner_tag: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field(default=None, description="An alphanumeric token that uniquely identifies a partner. If the value of PartnerType is Associates, enter your Store Id or tracking ID.", alias="partnerTag")
|
|
59
|
-
properties: Optional[Dict[str, Annotated[str, Field(strict=True)]]] = Field(default=None, description="Reserved parameter for specifying key-value pairs. This is a flexible mechanism for passing additional context or metadata to the API.")
|
|
60
|
-
resources: Optional[Annotated[List[SearchItemsResource], Field(max_length=100)]] = Field(default=None, description="List of resources for SearchItems operation which specify the values to return.")
|
|
61
|
-
search_index: Optional[Annotated[str, Field(strict=True, max_length=1000)]] = Field(default=None, description="Indicates the product category to search. SearchIndex values differ by marketplace.", alias="searchIndex")
|
|
62
|
-
sort_by: Optional[SortBy] = Field(default=None, alias="sortBy")
|
|
63
|
-
title: Optional[Annotated[str, Field(strict=True, max_length=1000)]] = Field(default=None, description="Title associated with the item.")
|
|
64
|
-
__properties: ClassVar[List[str]] = ["actor", "artist", "author", "availability", "brand", "browseNodeId", "condition", "currencyOfPreference", "deliveryFlags", "itemCount", "itemPage", "keywords", "languagesOfPreference", "maxPrice", "minPrice", "minReviewsRating", "minSavingPercent", "partnerTag", "properties", "resources", "searchIndex", "sortBy", "title"]
|
|
65
|
-
|
|
66
|
-
@field_validator('actor')
|
|
67
|
-
def actor_validate_regular_expression(cls, value):
|
|
68
|
-
"""Validates the regular expression"""
|
|
69
|
-
if value is None:
|
|
70
|
-
return value
|
|
71
|
-
|
|
72
|
-
if not re.match(r".*\S.*", value):
|
|
73
|
-
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
74
|
-
return value
|
|
75
|
-
|
|
76
|
-
@field_validator('artist')
|
|
77
|
-
def artist_validate_regular_expression(cls, value):
|
|
78
|
-
"""Validates the regular expression"""
|
|
79
|
-
if value is None:
|
|
80
|
-
return value
|
|
81
|
-
|
|
82
|
-
if not re.match(r".*\S.*", value):
|
|
83
|
-
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
84
|
-
return value
|
|
85
|
-
|
|
86
|
-
@field_validator('author')
|
|
87
|
-
def author_validate_regular_expression(cls, value):
|
|
88
|
-
"""Validates the regular expression"""
|
|
89
|
-
if value is None:
|
|
90
|
-
return value
|
|
91
|
-
|
|
92
|
-
if not re.match(r".*\S.*", value):
|
|
93
|
-
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
94
|
-
return value
|
|
95
|
-
|
|
96
|
-
@field_validator('brand')
|
|
97
|
-
def brand_validate_regular_expression(cls, value):
|
|
98
|
-
"""Validates the regular expression"""
|
|
99
|
-
if value is None:
|
|
100
|
-
return value
|
|
101
|
-
|
|
102
|
-
if not re.match(r".*\S.*", value):
|
|
103
|
-
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
104
|
-
return value
|
|
105
|
-
|
|
106
|
-
@field_validator('browse_node_id')
|
|
107
|
-
def browse_node_id_validate_regular_expression(cls, value):
|
|
108
|
-
"""Validates the regular expression"""
|
|
109
|
-
if value is None:
|
|
110
|
-
return value
|
|
111
|
-
|
|
112
|
-
if not re.match(r"^[1-9][0-9]*$", value):
|
|
113
|
-
raise ValueError(r"must validate the regular expression /^[1-9][0-9]*$/")
|
|
114
|
-
return value
|
|
115
|
-
|
|
116
|
-
@field_validator('currency_of_preference')
|
|
117
|
-
def currency_of_preference_validate_regular_expression(cls, value):
|
|
118
|
-
"""Validates the regular expression"""
|
|
119
|
-
if value is None:
|
|
120
|
-
return value
|
|
121
|
-
|
|
122
|
-
if not re.match(r".*\S.*", value):
|
|
123
|
-
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
124
|
-
return value
|
|
125
|
-
|
|
126
|
-
@field_validator('keywords')
|
|
127
|
-
def keywords_validate_regular_expression(cls, value):
|
|
128
|
-
"""Validates the regular expression"""
|
|
129
|
-
if value is None:
|
|
130
|
-
return value
|
|
131
|
-
|
|
132
|
-
if not re.match(r".*\S.*", value):
|
|
133
|
-
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
134
|
-
return value
|
|
135
|
-
|
|
136
|
-
@field_validator('partner_tag')
|
|
137
|
-
def partner_tag_validate_regular_expression(cls, value):
|
|
138
|
-
"""Validates the regular expression"""
|
|
139
|
-
if value is None:
|
|
140
|
-
return value
|
|
141
|
-
|
|
142
|
-
if not re.match(r".*\S.*", value):
|
|
143
|
-
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
144
|
-
return value
|
|
145
|
-
|
|
146
|
-
@field_validator('search_index')
|
|
147
|
-
def search_index_validate_regular_expression(cls, value):
|
|
148
|
-
"""Validates the regular expression"""
|
|
149
|
-
if value is None:
|
|
150
|
-
return value
|
|
151
|
-
|
|
152
|
-
if not re.match(r".*\S.*", value):
|
|
153
|
-
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
154
|
-
return value
|
|
155
|
-
|
|
156
|
-
@field_validator('title')
|
|
157
|
-
def title_validate_regular_expression(cls, value):
|
|
158
|
-
"""Validates the regular expression"""
|
|
159
|
-
if value is None:
|
|
160
|
-
return value
|
|
161
|
-
|
|
162
|
-
if not re.match(r".*\S.*", value):
|
|
163
|
-
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
164
|
-
return value
|
|
165
|
-
|
|
166
|
-
model_config = ConfigDict(
|
|
167
|
-
populate_by_name=True,
|
|
168
|
-
validate_assignment=True,
|
|
169
|
-
protected_namespaces=(),
|
|
170
|
-
)
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
def to_str(self) -> str:
|
|
174
|
-
"""Returns the string representation of the model using alias"""
|
|
175
|
-
return pprint.pformat(self.model_dump(by_alias=True))
|
|
176
|
-
|
|
177
|
-
def to_json(self) -> str:
|
|
178
|
-
"""Returns the JSON representation of the model using alias"""
|
|
179
|
-
return self.model_dump_json(by_alias=True, exclude_unset=True)
|
|
180
|
-
|
|
181
|
-
@classmethod
|
|
182
|
-
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
183
|
-
"""Create an instance of SearchItemsRequestContent from a JSON string"""
|
|
184
|
-
return cls.from_dict(json.loads(json_str))
|
|
185
|
-
|
|
186
|
-
def to_dict(self) -> Dict[str, Any]:
|
|
187
|
-
"""Return the dictionary representation of the model using alias.
|
|
188
|
-
|
|
189
|
-
This has the following differences from calling pydantic's
|
|
190
|
-
`self.model_dump(by_alias=True)`:
|
|
191
|
-
|
|
192
|
-
* `None` is only added to the output dict for nullable fields that
|
|
193
|
-
were set at model initialization. Other fields with value `None`
|
|
194
|
-
are ignored.
|
|
195
|
-
"""
|
|
196
|
-
excluded_fields: Set[str] = set([
|
|
197
|
-
])
|
|
198
|
-
|
|
199
|
-
_dict = self.model_dump(
|
|
200
|
-
by_alias=True,
|
|
201
|
-
exclude=excluded_fields,
|
|
202
|
-
exclude_none=True,
|
|
203
|
-
)
|
|
204
|
-
return _dict
|
|
205
|
-
|
|
206
|
-
@classmethod
|
|
207
|
-
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
208
|
-
"""Create an instance of SearchItemsRequestContent from a dict"""
|
|
209
|
-
if obj is None:
|
|
210
|
-
return None
|
|
211
|
-
|
|
212
|
-
if not isinstance(obj, dict):
|
|
213
|
-
return cls.model_validate(obj)
|
|
214
|
-
|
|
215
|
-
_obj = cls.model_validate({
|
|
216
|
-
"actor": obj.get("actor"),
|
|
217
|
-
"artist": obj.get("artist"),
|
|
218
|
-
"author": obj.get("author"),
|
|
219
|
-
"availability": obj.get("availability"),
|
|
220
|
-
"brand": obj.get("brand"),
|
|
221
|
-
"browseNodeId": obj.get("browseNodeId"),
|
|
222
|
-
"condition": obj.get("condition"),
|
|
223
|
-
"currencyOfPreference": obj.get("currencyOfPreference"),
|
|
224
|
-
"deliveryFlags": obj.get("deliveryFlags"),
|
|
225
|
-
"itemCount": obj.get("itemCount"),
|
|
226
|
-
"itemPage": obj.get("itemPage"),
|
|
227
|
-
"keywords": obj.get("keywords"),
|
|
228
|
-
"languagesOfPreference": obj.get("languagesOfPreference"),
|
|
229
|
-
"maxPrice": obj.get("maxPrice"),
|
|
230
|
-
"minPrice": obj.get("minPrice"),
|
|
231
|
-
"minReviewsRating": obj.get("minReviewsRating"),
|
|
232
|
-
"minSavingPercent": obj.get("minSavingPercent"),
|
|
233
|
-
"partnerTag": obj.get("partnerTag"),
|
|
234
|
-
"properties": obj.get("properties"),
|
|
235
|
-
"resources": obj.get("resources"),
|
|
236
|
-
"searchIndex": obj.get("searchIndex"),
|
|
237
|
-
"sortBy": obj.get("sortBy"),
|
|
238
|
-
"title": obj.get("title")
|
|
239
|
-
})
|
|
240
|
-
return _obj
|
|
241
|
-
|
|
242
|
-
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
5
|
+
|
|
6
|
+
Licensed under the Apache License, Version 2.0 (the "License").
|
|
7
|
+
You may not use this file except in compliance with the License.
|
|
8
|
+
A copy of the License is located at
|
|
9
|
+
|
|
10
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
|
|
12
|
+
or in the "license" file accompanying this file. This file is distributed
|
|
13
|
+
on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
|
|
14
|
+
express or implied. See the License for the specific language governing
|
|
15
|
+
permissions and limitations under the License.
|
|
16
|
+
|
|
17
|
+
""" # noqa: E501
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
from __future__ import annotations
|
|
22
|
+
import pprint
|
|
23
|
+
import re # noqa: F401
|
|
24
|
+
import json
|
|
25
|
+
|
|
26
|
+
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
|
27
|
+
from typing import Any, ClassVar, Dict, List, Optional, Union
|
|
28
|
+
from typing_extensions import Annotated
|
|
29
|
+
from creatorsapi_python_sdk.models.availability import Availability
|
|
30
|
+
from creatorsapi_python_sdk.models.condition import Condition
|
|
31
|
+
from creatorsapi_python_sdk.models.delivery_flag import DeliveryFlag
|
|
32
|
+
from creatorsapi_python_sdk.models.search_items_resource import SearchItemsResource
|
|
33
|
+
from creatorsapi_python_sdk.models.sort_by import SortBy
|
|
34
|
+
from typing import Optional, Set
|
|
35
|
+
from typing_extensions import Self
|
|
36
|
+
|
|
37
|
+
class SearchItemsRequestContent(BaseModel):
|
|
38
|
+
"""
|
|
39
|
+
The request object for the search items operation. It contains the request parameters for the search items operation.
|
|
40
|
+
""" # noqa: E501
|
|
41
|
+
actor: Optional[Annotated[str, Field(strict=True, max_length=1000)]] = Field(default=None, description="Actor name associated with the item. You can enter all or part of the name.")
|
|
42
|
+
artist: Optional[Annotated[str, Field(strict=True, max_length=1000)]] = Field(default=None, description="Artist name associated with the item. You can enter all or part of the name.")
|
|
43
|
+
author: Optional[Annotated[str, Field(strict=True, max_length=1000)]] = Field(default=None, description="Author name associated with the item. You can enter all or part of the name.")
|
|
44
|
+
availability: Optional[Availability] = None
|
|
45
|
+
brand: Optional[Annotated[str, Field(strict=True, max_length=1000)]] = Field(default=None, description="Brand name associated with the item. You can enter all or part of the name.")
|
|
46
|
+
browse_node_id: Optional[Annotated[str, Field(strict=True, max_length=19)]] = Field(default=None, description="A unique ID assigned by Amazon that identifies a product category/sub-category. The BrowseNodeId is a positive Long having max value upto Long.MAX_VALUE i.e. 9223372036854775807 (inclusive).", alias="browseNodeId")
|
|
47
|
+
condition: Optional[Condition] = None
|
|
48
|
+
currency_of_preference: Optional[Annotated[str, Field(strict=True, max_length=100)]] = Field(default=None, description="Currency of preference in which the prices information should be returned in response. By default the prices are returned in the default currency of the marketplace. Expected currency code format is the ISO 4217 currency code (i.e. USD, EUR etc.).", alias="currencyOfPreference")
|
|
49
|
+
delivery_flags: Optional[Annotated[List[DeliveryFlag], Field(max_length=100)]] = Field(default=None, description="List of DeliveryFlag which denotes a certain delivery program.", alias="deliveryFlags")
|
|
50
|
+
item_count: Optional[Union[Annotated[float, Field(le=100, strict=True, ge=1)], Annotated[int, Field(le=100, strict=True, ge=1)]]] = Field(default=None, description="The number of items desired in SearchItems response.", alias="itemCount")
|
|
51
|
+
item_page: Optional[Union[Annotated[float, Field(le=10, strict=True, ge=1)], Annotated[int, Field(le=10, strict=True, ge=1)]]] = Field(default=None, description="The specific page of items to be returned from the available Search Results.", alias="itemPage")
|
|
52
|
+
keywords: Optional[Annotated[str, Field(strict=True, max_length=1000)]] = Field(default=None, description="A word or phrase that describes an item i.e. the search query.")
|
|
53
|
+
languages_of_preference: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=1000)]], Field(max_length=1)]] = Field(default=None, description="Languages in order of preference in which the item information should be returned in response. By default the item information is returned in the default language of the marketplace.", alias="languagesOfPreference")
|
|
54
|
+
max_price: Optional[Union[Annotated[float, Field(strict=True, ge=1)], Annotated[int, Field(strict=True, ge=1)]]] = Field(default=None, description="The MaxPrice parameter filters search results to items with at least one offer price below the specified value.", alias="maxPrice")
|
|
55
|
+
min_price: Optional[Union[Annotated[float, Field(strict=True, ge=1)], Annotated[int, Field(strict=True, ge=1)]]] = Field(default=None, description="The MinPrice parameter filters search results to items with at least one offer price above the specified value.", alias="minPrice")
|
|
56
|
+
min_reviews_rating: Optional[Union[Annotated[float, Field(le=4, strict=True, ge=1)], Annotated[int, Field(le=4, strict=True, ge=1)]]] = Field(default=None, description="The MinReviewsRating parameter filters search results to items with customer review ratings above specified value.", alias="minReviewsRating")
|
|
57
|
+
min_saving_percent: Optional[Union[Annotated[float, Field(le=99, strict=True, ge=1)], Annotated[int, Field(le=99, strict=True, ge=1)]]] = Field(default=None, description="The MinSavingPercent parameter filters search results to items with at least one offer having saving percentage above the specified value.", alias="minSavingPercent")
|
|
58
|
+
partner_tag: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field(default=None, description="An alphanumeric token that uniquely identifies a partner. If the value of PartnerType is Associates, enter your Store Id or tracking ID.", alias="partnerTag")
|
|
59
|
+
properties: Optional[Dict[str, Annotated[str, Field(strict=True)]]] = Field(default=None, description="Reserved parameter for specifying key-value pairs. This is a flexible mechanism for passing additional context or metadata to the API.")
|
|
60
|
+
resources: Optional[Annotated[List[SearchItemsResource], Field(max_length=100)]] = Field(default=None, description="List of resources for SearchItems operation which specify the values to return.")
|
|
61
|
+
search_index: Optional[Annotated[str, Field(strict=True, max_length=1000)]] = Field(default=None, description="Indicates the product category to search. SearchIndex values differ by marketplace.", alias="searchIndex")
|
|
62
|
+
sort_by: Optional[SortBy] = Field(default=None, alias="sortBy")
|
|
63
|
+
title: Optional[Annotated[str, Field(strict=True, max_length=1000)]] = Field(default=None, description="Title associated with the item.")
|
|
64
|
+
__properties: ClassVar[List[str]] = ["actor", "artist", "author", "availability", "brand", "browseNodeId", "condition", "currencyOfPreference", "deliveryFlags", "itemCount", "itemPage", "keywords", "languagesOfPreference", "maxPrice", "minPrice", "minReviewsRating", "minSavingPercent", "partnerTag", "properties", "resources", "searchIndex", "sortBy", "title"]
|
|
65
|
+
|
|
66
|
+
@field_validator('actor')
|
|
67
|
+
def actor_validate_regular_expression(cls, value):
|
|
68
|
+
"""Validates the regular expression"""
|
|
69
|
+
if value is None:
|
|
70
|
+
return value
|
|
71
|
+
|
|
72
|
+
if not re.match(r".*\S.*", value):
|
|
73
|
+
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
74
|
+
return value
|
|
75
|
+
|
|
76
|
+
@field_validator('artist')
|
|
77
|
+
def artist_validate_regular_expression(cls, value):
|
|
78
|
+
"""Validates the regular expression"""
|
|
79
|
+
if value is None:
|
|
80
|
+
return value
|
|
81
|
+
|
|
82
|
+
if not re.match(r".*\S.*", value):
|
|
83
|
+
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
84
|
+
return value
|
|
85
|
+
|
|
86
|
+
@field_validator('author')
|
|
87
|
+
def author_validate_regular_expression(cls, value):
|
|
88
|
+
"""Validates the regular expression"""
|
|
89
|
+
if value is None:
|
|
90
|
+
return value
|
|
91
|
+
|
|
92
|
+
if not re.match(r".*\S.*", value):
|
|
93
|
+
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
94
|
+
return value
|
|
95
|
+
|
|
96
|
+
@field_validator('brand')
|
|
97
|
+
def brand_validate_regular_expression(cls, value):
|
|
98
|
+
"""Validates the regular expression"""
|
|
99
|
+
if value is None:
|
|
100
|
+
return value
|
|
101
|
+
|
|
102
|
+
if not re.match(r".*\S.*", value):
|
|
103
|
+
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
104
|
+
return value
|
|
105
|
+
|
|
106
|
+
@field_validator('browse_node_id')
|
|
107
|
+
def browse_node_id_validate_regular_expression(cls, value):
|
|
108
|
+
"""Validates the regular expression"""
|
|
109
|
+
if value is None:
|
|
110
|
+
return value
|
|
111
|
+
|
|
112
|
+
if not re.match(r"^[1-9][0-9]*$", value):
|
|
113
|
+
raise ValueError(r"must validate the regular expression /^[1-9][0-9]*$/")
|
|
114
|
+
return value
|
|
115
|
+
|
|
116
|
+
@field_validator('currency_of_preference')
|
|
117
|
+
def currency_of_preference_validate_regular_expression(cls, value):
|
|
118
|
+
"""Validates the regular expression"""
|
|
119
|
+
if value is None:
|
|
120
|
+
return value
|
|
121
|
+
|
|
122
|
+
if not re.match(r".*\S.*", value):
|
|
123
|
+
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
124
|
+
return value
|
|
125
|
+
|
|
126
|
+
@field_validator('keywords')
|
|
127
|
+
def keywords_validate_regular_expression(cls, value):
|
|
128
|
+
"""Validates the regular expression"""
|
|
129
|
+
if value is None:
|
|
130
|
+
return value
|
|
131
|
+
|
|
132
|
+
if not re.match(r".*\S.*", value):
|
|
133
|
+
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
134
|
+
return value
|
|
135
|
+
|
|
136
|
+
@field_validator('partner_tag')
|
|
137
|
+
def partner_tag_validate_regular_expression(cls, value):
|
|
138
|
+
"""Validates the regular expression"""
|
|
139
|
+
if value is None:
|
|
140
|
+
return value
|
|
141
|
+
|
|
142
|
+
if not re.match(r".*\S.*", value):
|
|
143
|
+
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
144
|
+
return value
|
|
145
|
+
|
|
146
|
+
@field_validator('search_index')
|
|
147
|
+
def search_index_validate_regular_expression(cls, value):
|
|
148
|
+
"""Validates the regular expression"""
|
|
149
|
+
if value is None:
|
|
150
|
+
return value
|
|
151
|
+
|
|
152
|
+
if not re.match(r".*\S.*", value):
|
|
153
|
+
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
154
|
+
return value
|
|
155
|
+
|
|
156
|
+
@field_validator('title')
|
|
157
|
+
def title_validate_regular_expression(cls, value):
|
|
158
|
+
"""Validates the regular expression"""
|
|
159
|
+
if value is None:
|
|
160
|
+
return value
|
|
161
|
+
|
|
162
|
+
if not re.match(r".*\S.*", value):
|
|
163
|
+
raise ValueError(r"must validate the regular expression /.*\S.*/")
|
|
164
|
+
return value
|
|
165
|
+
|
|
166
|
+
model_config = ConfigDict(
|
|
167
|
+
populate_by_name=True,
|
|
168
|
+
validate_assignment=True,
|
|
169
|
+
protected_namespaces=(),
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
def to_str(self) -> str:
|
|
174
|
+
"""Returns the string representation of the model using alias"""
|
|
175
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
176
|
+
|
|
177
|
+
def to_json(self) -> str:
|
|
178
|
+
"""Returns the JSON representation of the model using alias"""
|
|
179
|
+
return self.model_dump_json(by_alias=True, exclude_unset=True)
|
|
180
|
+
|
|
181
|
+
@classmethod
|
|
182
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
183
|
+
"""Create an instance of SearchItemsRequestContent from a JSON string"""
|
|
184
|
+
return cls.from_dict(json.loads(json_str))
|
|
185
|
+
|
|
186
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
187
|
+
"""Return the dictionary representation of the model using alias.
|
|
188
|
+
|
|
189
|
+
This has the following differences from calling pydantic's
|
|
190
|
+
`self.model_dump(by_alias=True)`:
|
|
191
|
+
|
|
192
|
+
* `None` is only added to the output dict for nullable fields that
|
|
193
|
+
were set at model initialization. Other fields with value `None`
|
|
194
|
+
are ignored.
|
|
195
|
+
"""
|
|
196
|
+
excluded_fields: Set[str] = set([
|
|
197
|
+
])
|
|
198
|
+
|
|
199
|
+
_dict = self.model_dump(
|
|
200
|
+
by_alias=True,
|
|
201
|
+
exclude=excluded_fields,
|
|
202
|
+
exclude_none=True,
|
|
203
|
+
)
|
|
204
|
+
return _dict
|
|
205
|
+
|
|
206
|
+
@classmethod
|
|
207
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
208
|
+
"""Create an instance of SearchItemsRequestContent from a dict"""
|
|
209
|
+
if obj is None:
|
|
210
|
+
return None
|
|
211
|
+
|
|
212
|
+
if not isinstance(obj, dict):
|
|
213
|
+
return cls.model_validate(obj)
|
|
214
|
+
|
|
215
|
+
_obj = cls.model_validate({
|
|
216
|
+
"actor": obj.get("actor"),
|
|
217
|
+
"artist": obj.get("artist"),
|
|
218
|
+
"author": obj.get("author"),
|
|
219
|
+
"availability": obj.get("availability"),
|
|
220
|
+
"brand": obj.get("brand"),
|
|
221
|
+
"browseNodeId": obj.get("browseNodeId"),
|
|
222
|
+
"condition": obj.get("condition"),
|
|
223
|
+
"currencyOfPreference": obj.get("currencyOfPreference"),
|
|
224
|
+
"deliveryFlags": obj.get("deliveryFlags"),
|
|
225
|
+
"itemCount": obj.get("itemCount"),
|
|
226
|
+
"itemPage": obj.get("itemPage"),
|
|
227
|
+
"keywords": obj.get("keywords"),
|
|
228
|
+
"languagesOfPreference": obj.get("languagesOfPreference"),
|
|
229
|
+
"maxPrice": obj.get("maxPrice"),
|
|
230
|
+
"minPrice": obj.get("minPrice"),
|
|
231
|
+
"minReviewsRating": obj.get("minReviewsRating"),
|
|
232
|
+
"minSavingPercent": obj.get("minSavingPercent"),
|
|
233
|
+
"partnerTag": obj.get("partnerTag"),
|
|
234
|
+
"properties": obj.get("properties"),
|
|
235
|
+
"resources": obj.get("resources"),
|
|
236
|
+
"searchIndex": obj.get("searchIndex"),
|
|
237
|
+
"sortBy": obj.get("sortBy"),
|
|
238
|
+
"title": obj.get("title")
|
|
239
|
+
})
|
|
240
|
+
return _obj
|
|
241
|
+
|
|
242
|
+
|