| from typing import Dict |
|
|
| 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) |
|
|
|
|