|
from typing import Dict, Optional |
|
|
|
from agent.tools.data_providers.RapidDataProviderBase import RapidDataProviderBase, EndpointSchema |
|
|
|
|
|
class AmazonProvider(RapidDataProviderBase): |
|
def __init__(self): |
|
endpoints: Dict[str, EndpointSchema] = { |
|
"search": { |
|
"route": "/search", |
|
"method": "GET", |
|
"name": "Amazon Product Search", |
|
"description": "Search for products on Amazon with various filters and parameters.", |
|
"payload": { |
|
"query": "Search query (supports both free-form text queries or a product asin)", |
|
"page": "Results page to return (default: 1)", |
|
"country": "Sets the Amazon domain, marketplace country, language and currency (default: US)", |
|
"sort_by": "Return the results in a specific sort order (RELEVANCE, LOWEST_PRICE, HIGHEST_PRICE, REVIEWS, NEWEST, BEST_SELLERS)", |
|
"product_condition": "Return products in a specific condition (ALL, NEW, USED, RENEWED, COLLECTIBLE)", |
|
"is_prime": "Only return prime products (boolean)", |
|
"deals_and_discounts": "Return deals and discounts in a specific condition (NONE, ALL_DISCOUNTS, TODAYS_DEALS)", |
|
"category_id": "Find products in a specific category / department (optional)", |
|
"category": "Filter by specific numeric Amazon category (optional)", |
|
"min_price": "Only return product offers with price greater than a certain value (optional)", |
|
"max_price": "Only return product offers with price lower than a certain value (optional)", |
|
"brand": "Find products with a specific brand (optional)", |
|
"seller_id": "Find products sold by specific seller (optional)", |
|
"four_stars_and_up": "Return product listings with ratings of 4 stars & up (optional)", |
|
"additional_filters": "Any filters available on the Amazon page but not part of this endpoint's parameters (optional)" |
|
} |
|
}, |
|
"product-details": { |
|
"route": "/product-details", |
|
"method": "GET", |
|
"name": "Amazon Product Details", |
|
"description": "Get detailed information about specific Amazon products by ASIN.", |
|
"payload": { |
|
"asin": "Product ASIN for which to get details. Supports batching of up to 10 ASINs in a single request, separated by comma.", |
|
"country": "Sets the Amazon domain, marketplace country, language and currency (default: US)", |
|
"more_info_query": "A query to search and get more info about the product as part of Product Information, Customer Q&As, and Customer Reviews (optional)", |
|
"fields": "A comma separated list of product fields to include in the response (field projection). By default all fields are returned. (optional)" |
|
} |
|
}, |
|
"products-by-category": { |
|
"route": "/products-by-category", |
|
"method": "GET", |
|
"name": "Amazon Products by Category", |
|
"description": "Get products from a specific Amazon category.", |
|
"payload": { |
|
"category_id": "The Amazon category for which to return results. Multiple category values can be separated by comma.", |
|
"page": "Page to return (default: 1)", |
|
"country": "Sets the Amazon domain, marketplace country, language and currency (default: US)", |
|
"sort_by": "Return the results in a specific sort order (RELEVANCE, LOWEST_PRICE, HIGHEST_PRICE, REVIEWS, NEWEST, BEST_SELLERS)", |
|
"min_price": "Only return product offers with price greater than a certain value (optional)", |
|
"max_price": "Only return product offers with price lower than a certain value (optional)", |
|
"product_condition": "Return products in a specific condition (ALL, NEW, USED, RENEWED, COLLECTIBLE)", |
|
"brand": "Only return products of a specific brand. Multiple brands can be specified as a comma separated list (optional)", |
|
"is_prime": "Only return prime products (boolean)", |
|
"deals_and_discounts": "Return deals and discounts in a specific condition (NONE, ALL_DISCOUNTS, TODAYS_DEALS)", |
|
"four_stars_and_up": "Return product listings with ratings of 4 stars & up (optional)", |
|
"additional_filters": "Any filters available on the Amazon page but not part of this endpoint's parameters (optional)" |
|
} |
|
}, |
|
"product-reviews": { |
|
"route": "/product-reviews", |
|
"method": "GET", |
|
"name": "Amazon Product Reviews", |
|
"description": "Get customer reviews for a specific Amazon product by ASIN.", |
|
"payload": { |
|
"asin": "Product asin for which to get reviews.", |
|
"country": "Sets the Amazon domain, marketplace country, language and currency (default: US)", |
|
"page": "Results page to return (default: 1)", |
|
"sort_by": "Return reviews in a specific sort order (TOP_REVIEWS, MOST_RECENT)", |
|
"star_rating": "Only return reviews with a specific star rating (ALL, 5_STARS, 4_STARS, 3_STARS, 2_STARS, 1_STARS, POSITIVE, CRITICAL)", |
|
"verified_purchases_only": "Only return reviews by reviewers who made a verified purchase (boolean)", |
|
"images_or_videos_only": "Only return reviews containing images and / or videos (boolean)", |
|
"current_format_only": "Only return reviews of the current format (product variant - e.g. Color) (boolean)" |
|
} |
|
}, |
|
"seller-profile": { |
|
"route": "/seller-profile", |
|
"method": "GET", |
|
"name": "Amazon Seller Profile", |
|
"description": "Get detailed information about a specific Amazon seller by Seller ID.", |
|
"payload": { |
|
"seller_id": "The Amazon Seller ID for which to get seller profile details", |
|
"country": "Sets the Amazon domain, marketplace country, language and currency (default: US)", |
|
"fields": "A comma separated list of seller profile fields to include in the response (field projection). By default all fields are returned. (optional)" |
|
} |
|
}, |
|
"seller-reviews": { |
|
"route": "/seller-reviews", |
|
"method": "GET", |
|
"name": "Amazon Seller Reviews", |
|
"description": "Get customer reviews for a specific Amazon seller by Seller ID.", |
|
"payload": { |
|
"seller_id": "The Amazon Seller ID for which to get seller reviews", |
|
"country": "Sets the Amazon domain, marketplace country, language and currency (default: US)", |
|
"star_rating": "Only return reviews with a specific star rating or positive / negative sentiment (ALL, 5_STARS, 4_STARS, 3_STARS, 2_STARS, 1_STARS, POSITIVE, CRITICAL)", |
|
"page": "The page of seller feedback results to retrieve (default: 1)", |
|
"fields": "A comma separated list of seller review fields to include in the response (field projection). By default all fields are returned. (optional)" |
|
} |
|
} |
|
} |
|
base_url = "https://real-time-amazon-data.p.rapidapi.com" |
|
super().__init__(base_url, endpoints) |
|
|
|
|
|
if __name__ == "__main__": |
|
from dotenv import load_dotenv |
|
load_dotenv() |
|
tool = AmazonProvider() |
|
|
|
|
|
search_result = tool.call_endpoint( |
|
route="search", |
|
payload={ |
|
"query": "Phone", |
|
"page": 1, |
|
"country": "US", |
|
"sort_by": "RELEVANCE", |
|
"product_condition": "ALL", |
|
"is_prime": False, |
|
"deals_and_discounts": "NONE" |
|
} |
|
) |
|
print("Search Result:", search_result) |
|
|
|
|
|
details_result = tool.call_endpoint( |
|
route="product-details", |
|
payload={ |
|
"asin": "B07ZPKBL9V", |
|
"country": "US" |
|
} |
|
) |
|
print("Product Details:", details_result) |
|
|
|
|
|
category_result = tool.call_endpoint( |
|
route="products-by-category", |
|
payload={ |
|
"category_id": "2478868012", |
|
"page": 1, |
|
"country": "US", |
|
"sort_by": "RELEVANCE", |
|
"product_condition": "ALL", |
|
"is_prime": False, |
|
"deals_and_discounts": "NONE" |
|
} |
|
) |
|
print("Category Products:", category_result) |
|
|
|
|
|
reviews_result = tool.call_endpoint( |
|
route="product-reviews", |
|
payload={ |
|
"asin": "B07ZPKN6YR", |
|
"country": "US", |
|
"page": 1, |
|
"sort_by": "TOP_REVIEWS", |
|
"star_rating": "ALL", |
|
"verified_purchases_only": False, |
|
"images_or_videos_only": False, |
|
"current_format_only": False |
|
} |
|
) |
|
print("Product Reviews:", reviews_result) |
|
|
|
|
|
seller_result = tool.call_endpoint( |
|
route="seller-profile", |
|
payload={ |
|
"seller_id": "A02211013Q5HP3OMSZC7W", |
|
"country": "US" |
|
} |
|
) |
|
print("Seller Profile:", seller_result) |
|
|
|
|
|
seller_reviews_result = tool.call_endpoint( |
|
route="seller-reviews", |
|
payload={ |
|
"seller_id": "A02211013Q5HP3OMSZC7W", |
|
"country": "US", |
|
"star_rating": "ALL", |
|
"page": 1 |
|
} |
|
) |
|
print("Seller Reviews:", seller_reviews_result) |
|
|
|
|