channel3-sdk 2.11.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.
- channel3_sdk/__init__.py +102 -0
- channel3_sdk/_base_client.py +2001 -0
- channel3_sdk/_client.py +636 -0
- channel3_sdk/_compat.py +219 -0
- channel3_sdk/_constants.py +14 -0
- channel3_sdk/_exceptions.py +108 -0
- channel3_sdk/_files.py +123 -0
- channel3_sdk/_models.py +857 -0
- channel3_sdk/_qs.py +150 -0
- channel3_sdk/_resource.py +43 -0
- channel3_sdk/_response.py +832 -0
- channel3_sdk/_streaming.py +333 -0
- channel3_sdk/_types.py +261 -0
- channel3_sdk/_utils/__init__.py +64 -0
- channel3_sdk/_utils/_compat.py +45 -0
- channel3_sdk/_utils/_datetime_parse.py +136 -0
- channel3_sdk/_utils/_logs.py +25 -0
- channel3_sdk/_utils/_proxy.py +65 -0
- channel3_sdk/_utils/_reflection.py +42 -0
- channel3_sdk/_utils/_resources_proxy.py +24 -0
- channel3_sdk/_utils/_streams.py +12 -0
- channel3_sdk/_utils/_sync.py +58 -0
- channel3_sdk/_utils/_transform.py +457 -0
- channel3_sdk/_utils/_typing.py +156 -0
- channel3_sdk/_utils/_utils.py +421 -0
- channel3_sdk/_version.py +4 -0
- channel3_sdk/lib/.keep +4 -0
- channel3_sdk/py.typed +0 -0
- channel3_sdk/resources/__init__.py +89 -0
- channel3_sdk/resources/brands.py +169 -0
- channel3_sdk/resources/enrich.py +169 -0
- channel3_sdk/resources/price_tracking.py +450 -0
- channel3_sdk/resources/products.py +206 -0
- channel3_sdk/resources/search.py +231 -0
- channel3_sdk/resources/websites.py +171 -0
- channel3_sdk/types/__init__.py +30 -0
- channel3_sdk/types/availability_status.py +9 -0
- channel3_sdk/types/brand.py +20 -0
- channel3_sdk/types/brand_find_params.py +11 -0
- channel3_sdk/types/enrich_enrich_url_params.py +12 -0
- channel3_sdk/types/paginated_subscriptions.py +14 -0
- channel3_sdk/types/price.py +18 -0
- channel3_sdk/types/price_history.py +43 -0
- channel3_sdk/types/price_tracking_get_history_params.py +12 -0
- channel3_sdk/types/price_tracking_list_subscriptions_params.py +14 -0
- channel3_sdk/types/price_tracking_start_params.py +11 -0
- channel3_sdk/types/price_tracking_stop_params.py +11 -0
- channel3_sdk/types/product.py +89 -0
- channel3_sdk/types/product_detail.py +84 -0
- channel3_sdk/types/product_retrieve_params.py +26 -0
- channel3_sdk/types/redirect_mode.py +7 -0
- channel3_sdk/types/search_config_param.py +27 -0
- channel3_sdk/types/search_filter_price_param.py +18 -0
- channel3_sdk/types/search_filters_param.py +44 -0
- channel3_sdk/types/search_perform_params.py +37 -0
- channel3_sdk/types/search_perform_response.py +10 -0
- channel3_sdk/types/subscription.py +16 -0
- channel3_sdk/types/variant.py +13 -0
- channel3_sdk/types/website.py +16 -0
- channel3_sdk/types/website_find_params.py +11 -0
- channel3_sdk-2.11.0.dist-info/METADATA +411 -0
- channel3_sdk-2.11.0.dist-info/RECORD +64 -0
- channel3_sdk-2.11.0.dist-info/WHEEL +4 -0
- channel3_sdk-2.11.0.dist-info/licenses/LICENSE +201 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List, Optional
|
|
4
|
+
|
|
5
|
+
from .._models import BaseModel
|
|
6
|
+
from .subscription import Subscription
|
|
7
|
+
|
|
8
|
+
__all__ = ["PaginatedSubscriptions"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class PaginatedSubscriptions(BaseModel):
|
|
12
|
+
subscriptions: List[Subscription]
|
|
13
|
+
|
|
14
|
+
next_page_token: Optional[str] = None
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
from .._models import BaseModel
|
|
6
|
+
|
|
7
|
+
__all__ = ["Price"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Price(BaseModel):
|
|
11
|
+
currency: str
|
|
12
|
+
"""The currency code of the product, like USD, EUR, GBP, etc."""
|
|
13
|
+
|
|
14
|
+
price: float
|
|
15
|
+
"""The current price of the product, including any discounts."""
|
|
16
|
+
|
|
17
|
+
compare_at_price: Optional[float] = None
|
|
18
|
+
"""The original price of the product before any discounts."""
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List, Optional
|
|
4
|
+
from datetime import datetime
|
|
5
|
+
from typing_extensions import Literal
|
|
6
|
+
|
|
7
|
+
from .._models import BaseModel
|
|
8
|
+
|
|
9
|
+
__all__ = ["PriceHistory", "History", "Statistics"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class History(BaseModel):
|
|
13
|
+
currency: str
|
|
14
|
+
|
|
15
|
+
price: float
|
|
16
|
+
|
|
17
|
+
timestamp: datetime
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class Statistics(BaseModel):
|
|
21
|
+
currency: str
|
|
22
|
+
|
|
23
|
+
current_price: float
|
|
24
|
+
|
|
25
|
+
current_status: Literal["low", "typical", "high"]
|
|
26
|
+
|
|
27
|
+
max_price: float
|
|
28
|
+
|
|
29
|
+
mean: float
|
|
30
|
+
|
|
31
|
+
min_price: float
|
|
32
|
+
|
|
33
|
+
std_dev: float
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class PriceHistory(BaseModel):
|
|
37
|
+
canonical_product_id: str
|
|
38
|
+
|
|
39
|
+
history: Optional[List[History]] = None
|
|
40
|
+
|
|
41
|
+
product_title: Optional[str] = None
|
|
42
|
+
|
|
43
|
+
statistics: Optional[Statistics] = None
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing_extensions import TypedDict
|
|
6
|
+
|
|
7
|
+
__all__ = ["PriceTrackingGetHistoryParams"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class PriceTrackingGetHistoryParams(TypedDict, total=False):
|
|
11
|
+
days: int
|
|
12
|
+
"""Number of days of history to fetch (max 30)"""
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Optional
|
|
6
|
+
from typing_extensions import TypedDict
|
|
7
|
+
|
|
8
|
+
__all__ = ["PriceTrackingListSubscriptionsParams"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class PriceTrackingListSubscriptionsParams(TypedDict, total=False):
|
|
12
|
+
limit: int
|
|
13
|
+
|
|
14
|
+
page_token: Optional[str]
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing_extensions import Required, TypedDict
|
|
6
|
+
|
|
7
|
+
__all__ = ["PriceTrackingStartParams"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class PriceTrackingStartParams(TypedDict, total=False):
|
|
11
|
+
canonical_product_id: Required[str]
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing_extensions import Required, TypedDict
|
|
6
|
+
|
|
7
|
+
__all__ = ["PriceTrackingStopParams"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class PriceTrackingStopParams(TypedDict, total=False):
|
|
11
|
+
canonical_product_id: Required[str]
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List, Optional
|
|
4
|
+
from typing_extensions import Literal
|
|
5
|
+
|
|
6
|
+
from .price import Price
|
|
7
|
+
from .variant import Variant
|
|
8
|
+
from .._models import BaseModel
|
|
9
|
+
from .availability_status import AvailabilityStatus
|
|
10
|
+
|
|
11
|
+
__all__ = ["Product", "Image"]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class Image(BaseModel):
|
|
15
|
+
"""Product image with metadata"""
|
|
16
|
+
|
|
17
|
+
url: str
|
|
18
|
+
|
|
19
|
+
alt_text: Optional[str] = None
|
|
20
|
+
|
|
21
|
+
is_main_image: Optional[bool] = None
|
|
22
|
+
|
|
23
|
+
photo_quality: Optional[Literal["professional", "ugc", "poor"]] = None
|
|
24
|
+
"""
|
|
25
|
+
Photo quality classification for API responses. Note: This enum is decoupled
|
|
26
|
+
from internal ImageIntelligence types as they may diverge.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
shot_type: Optional[
|
|
30
|
+
Literal[
|
|
31
|
+
"hero",
|
|
32
|
+
"lifestyle",
|
|
33
|
+
"on_model",
|
|
34
|
+
"detail",
|
|
35
|
+
"scale_reference",
|
|
36
|
+
"angle_view",
|
|
37
|
+
"flat_lay",
|
|
38
|
+
"in_use",
|
|
39
|
+
"packaging",
|
|
40
|
+
"size_chart",
|
|
41
|
+
"color_swatch",
|
|
42
|
+
"product_information",
|
|
43
|
+
"merchant_information",
|
|
44
|
+
]
|
|
45
|
+
] = None
|
|
46
|
+
"""
|
|
47
|
+
Product image type classification for API responses. Note: This enum is
|
|
48
|
+
decoupled from internal ImageIntelligence types as they may diverge.
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class Product(BaseModel):
|
|
53
|
+
"""A search result that includes product details and a relevance score."""
|
|
54
|
+
|
|
55
|
+
id: str
|
|
56
|
+
|
|
57
|
+
availability: AvailabilityStatus
|
|
58
|
+
|
|
59
|
+
image_url: str
|
|
60
|
+
"""Main product image (deprecated, use images field)"""
|
|
61
|
+
|
|
62
|
+
price: Price
|
|
63
|
+
|
|
64
|
+
score: int
|
|
65
|
+
|
|
66
|
+
title: str
|
|
67
|
+
|
|
68
|
+
url: str
|
|
69
|
+
|
|
70
|
+
brand_id: Optional[str] = None
|
|
71
|
+
|
|
72
|
+
brand_name: Optional[str] = None
|
|
73
|
+
|
|
74
|
+
categories: Optional[List[str]] = None
|
|
75
|
+
|
|
76
|
+
description: Optional[str] = None
|
|
77
|
+
|
|
78
|
+
gender: Optional[Literal["male", "female", "unisex"]] = None
|
|
79
|
+
|
|
80
|
+
image_urls: Optional[List[str]] = None
|
|
81
|
+
"""List of image URLs (deprecated, use images field)"""
|
|
82
|
+
|
|
83
|
+
images: Optional[List[Image]] = None
|
|
84
|
+
|
|
85
|
+
key_features: Optional[List[str]] = None
|
|
86
|
+
|
|
87
|
+
materials: Optional[List[str]] = None
|
|
88
|
+
|
|
89
|
+
variants: Optional[List[Variant]] = None
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List, Optional
|
|
4
|
+
from typing_extensions import Literal
|
|
5
|
+
|
|
6
|
+
from .price import Price
|
|
7
|
+
from .variant import Variant
|
|
8
|
+
from .._models import BaseModel
|
|
9
|
+
from .availability_status import AvailabilityStatus
|
|
10
|
+
|
|
11
|
+
__all__ = ["ProductDetail", "Image"]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class Image(BaseModel):
|
|
15
|
+
"""Product image with metadata"""
|
|
16
|
+
|
|
17
|
+
url: str
|
|
18
|
+
|
|
19
|
+
alt_text: Optional[str] = None
|
|
20
|
+
|
|
21
|
+
is_main_image: Optional[bool] = None
|
|
22
|
+
|
|
23
|
+
photo_quality: Optional[Literal["professional", "ugc", "poor"]] = None
|
|
24
|
+
"""
|
|
25
|
+
Photo quality classification for API responses. Note: This enum is decoupled
|
|
26
|
+
from internal ImageIntelligence types as they may diverge.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
shot_type: Optional[
|
|
30
|
+
Literal[
|
|
31
|
+
"hero",
|
|
32
|
+
"lifestyle",
|
|
33
|
+
"on_model",
|
|
34
|
+
"detail",
|
|
35
|
+
"scale_reference",
|
|
36
|
+
"angle_view",
|
|
37
|
+
"flat_lay",
|
|
38
|
+
"in_use",
|
|
39
|
+
"packaging",
|
|
40
|
+
"size_chart",
|
|
41
|
+
"color_swatch",
|
|
42
|
+
"product_information",
|
|
43
|
+
"merchant_information",
|
|
44
|
+
]
|
|
45
|
+
] = None
|
|
46
|
+
"""
|
|
47
|
+
Product image type classification for API responses. Note: This enum is
|
|
48
|
+
decoupled from internal ImageIntelligence types as they may diverge.
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class ProductDetail(BaseModel):
|
|
53
|
+
"""A product with detailed information"""
|
|
54
|
+
|
|
55
|
+
id: str
|
|
56
|
+
|
|
57
|
+
availability: AvailabilityStatus
|
|
58
|
+
|
|
59
|
+
price: Price
|
|
60
|
+
|
|
61
|
+
title: str
|
|
62
|
+
|
|
63
|
+
url: str
|
|
64
|
+
|
|
65
|
+
brand_id: Optional[str] = None
|
|
66
|
+
|
|
67
|
+
brand_name: Optional[str] = None
|
|
68
|
+
|
|
69
|
+
categories: Optional[List[str]] = None
|
|
70
|
+
|
|
71
|
+
description: Optional[str] = None
|
|
72
|
+
|
|
73
|
+
gender: Optional[Literal["male", "female", "unisex"]] = None
|
|
74
|
+
|
|
75
|
+
image_urls: Optional[List[str]] = None
|
|
76
|
+
"""List of image URLs (deprecated, use images field)"""
|
|
77
|
+
|
|
78
|
+
images: Optional[List[Image]] = None
|
|
79
|
+
|
|
80
|
+
key_features: Optional[List[str]] = None
|
|
81
|
+
|
|
82
|
+
materials: Optional[List[str]] = None
|
|
83
|
+
|
|
84
|
+
variants: Optional[List[Variant]] = None
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Optional
|
|
6
|
+
from typing_extensions import TypedDict
|
|
7
|
+
|
|
8
|
+
from .._types import SequenceNotStr
|
|
9
|
+
from .redirect_mode import RedirectMode
|
|
10
|
+
|
|
11
|
+
__all__ = ["ProductRetrieveParams"]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class ProductRetrieveParams(TypedDict, total=False):
|
|
15
|
+
redirect_mode: Optional[RedirectMode]
|
|
16
|
+
"""
|
|
17
|
+
"price" redirects to the product page with the lowest price "commission"
|
|
18
|
+
redirects to the product page with the highest commission rate "brand" redirects
|
|
19
|
+
to the brand's product page
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
website_ids: Optional[SequenceNotStr[str]]
|
|
23
|
+
"""
|
|
24
|
+
Optional list of website IDs to constrain the buy URL to, relevant if multiple
|
|
25
|
+
merchants exist
|
|
26
|
+
"""
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Optional
|
|
6
|
+
from typing_extensions import TypedDict
|
|
7
|
+
|
|
8
|
+
from .redirect_mode import RedirectMode
|
|
9
|
+
|
|
10
|
+
__all__ = ["SearchConfigParam"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class SearchConfigParam(TypedDict, total=False):
|
|
14
|
+
"""Configuration for a search request"""
|
|
15
|
+
|
|
16
|
+
keyword_search_only: bool
|
|
17
|
+
"""If True, search will only use keyword search and not vector search.
|
|
18
|
+
|
|
19
|
+
Keyword-only search is not supported with image input.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
redirect_mode: Optional[RedirectMode]
|
|
23
|
+
"""
|
|
24
|
+
"price" redirects to the product page with the lowest price "commission"
|
|
25
|
+
redirects to the product page with the highest commission rate "brand" redirects
|
|
26
|
+
to the brand's product page
|
|
27
|
+
"""
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Optional
|
|
6
|
+
from typing_extensions import TypedDict
|
|
7
|
+
|
|
8
|
+
__all__ = ["SearchFilterPriceParam"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SearchFilterPriceParam(TypedDict, total=False):
|
|
12
|
+
"""Price filter. Values are inclusive."""
|
|
13
|
+
|
|
14
|
+
max_price: Optional[float]
|
|
15
|
+
"""Maximum price, in dollars and cents"""
|
|
16
|
+
|
|
17
|
+
min_price: Optional[float]
|
|
18
|
+
"""Minimum price, in dollars and cents"""
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import List, Optional
|
|
6
|
+
from typing_extensions import Literal, TypedDict
|
|
7
|
+
|
|
8
|
+
from .._types import SequenceNotStr
|
|
9
|
+
from .availability_status import AvailabilityStatus
|
|
10
|
+
from .search_filter_price_param import SearchFilterPriceParam
|
|
11
|
+
|
|
12
|
+
__all__ = ["SearchFiltersParam"]
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class SearchFiltersParam(TypedDict, total=False):
|
|
16
|
+
age: Optional[List[Literal["newborn", "infant", "toddler", "kids", "adult"]]]
|
|
17
|
+
"""Filter by age group. Age-agnostic products are treated as adult products."""
|
|
18
|
+
|
|
19
|
+
availability: Optional[List[AvailabilityStatus]]
|
|
20
|
+
"""If provided, only products with these availability statuses will be returned"""
|
|
21
|
+
|
|
22
|
+
brand_ids: Optional[SequenceNotStr[str]]
|
|
23
|
+
"""If provided, only products from these brands will be returned"""
|
|
24
|
+
|
|
25
|
+
category_ids: Optional[SequenceNotStr[str]]
|
|
26
|
+
"""If provided, only products from these categories will be returned"""
|
|
27
|
+
|
|
28
|
+
condition: Optional[Literal["new", "refurbished", "used"]]
|
|
29
|
+
"""Filter by product condition.
|
|
30
|
+
|
|
31
|
+
Incubating: condition data is currently incomplete; products without condition
|
|
32
|
+
data will be included in all condition filter results.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
exclude_product_ids: Optional[SequenceNotStr[str]]
|
|
36
|
+
"""If provided, products with these IDs will be excluded from the results"""
|
|
37
|
+
|
|
38
|
+
gender: Optional[Literal["male", "female", "unisex"]]
|
|
39
|
+
|
|
40
|
+
price: Optional[SearchFilterPriceParam]
|
|
41
|
+
"""Price filter. Values are inclusive."""
|
|
42
|
+
|
|
43
|
+
website_ids: Optional[SequenceNotStr[str]]
|
|
44
|
+
"""If provided, only products from these websites will be returned"""
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Optional
|
|
6
|
+
from typing_extensions import TypedDict
|
|
7
|
+
|
|
8
|
+
from .search_config_param import SearchConfigParam
|
|
9
|
+
from .search_filters_param import SearchFiltersParam
|
|
10
|
+
|
|
11
|
+
__all__ = ["SearchPerformParams"]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class SearchPerformParams(TypedDict, total=False):
|
|
15
|
+
base64_image: Optional[str]
|
|
16
|
+
"""Base64 encoded image"""
|
|
17
|
+
|
|
18
|
+
config: SearchConfigParam
|
|
19
|
+
"""Optional configuration"""
|
|
20
|
+
|
|
21
|
+
context: Optional[str]
|
|
22
|
+
"""Optional customer information to personalize search results"""
|
|
23
|
+
|
|
24
|
+
filters: SearchFiltersParam
|
|
25
|
+
"""Optional filters.
|
|
26
|
+
|
|
27
|
+
Search will only consider products that match all of the filters.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
image_url: Optional[str]
|
|
31
|
+
"""Image URL"""
|
|
32
|
+
|
|
33
|
+
limit: Optional[int]
|
|
34
|
+
"""Optional limit on the number of results. Default is 20, max is 30."""
|
|
35
|
+
|
|
36
|
+
query: Optional[str]
|
|
37
|
+
"""Search query"""
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List
|
|
4
|
+
from typing_extensions import TypeAlias
|
|
5
|
+
|
|
6
|
+
from .product import Product
|
|
7
|
+
|
|
8
|
+
__all__ = ["SearchPerformResponse"]
|
|
9
|
+
|
|
10
|
+
SearchPerformResponse: TypeAlias = List[Product]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
from typing_extensions import Literal
|
|
5
|
+
|
|
6
|
+
from .._models import BaseModel
|
|
7
|
+
|
|
8
|
+
__all__ = ["Subscription"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Subscription(BaseModel):
|
|
12
|
+
canonical_product_id: str
|
|
13
|
+
|
|
14
|
+
created_at: datetime
|
|
15
|
+
|
|
16
|
+
subscription_status: Literal["active", "cancelled"]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
from .._models import BaseModel
|
|
6
|
+
|
|
7
|
+
__all__ = ["Website"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Website(BaseModel):
|
|
11
|
+
id: str
|
|
12
|
+
|
|
13
|
+
url: str
|
|
14
|
+
|
|
15
|
+
best_commission_rate: Optional[float] = None
|
|
16
|
+
"""The maximum commission rate for the website, as a percentage"""
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing_extensions import Required, TypedDict
|
|
6
|
+
|
|
7
|
+
__all__ = ["WebsiteFindParams"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class WebsiteFindParams(TypedDict, total=False):
|
|
11
|
+
query: Required[str]
|