From 6b5c4c051204eaf221cbb736e9a0dc4986930900 Mon Sep 17 00:00:00 2001 From: Adam Cohen Hillel Date: Wed, 16 Apr 2025 17:43:40 +0100 Subject: [PATCH] amazon --- .../agent/tools/api_services/AmazonService.py | 191 ++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 backend/agent/tools/api_services/AmazonService.py diff --git a/backend/agent/tools/api_services/AmazonService.py b/backend/agent/tools/api_services/AmazonService.py new file mode 100644 index 00000000..662ace3c --- /dev/null +++ b/backend/agent/tools/api_services/AmazonService.py @@ -0,0 +1,191 @@ +from typing import Dict, Optional + +from agent.tools.api_services.APIServicesBase import APIServicesBase, EndpointSchema + + +class AmazonService(APIServicesBase): + 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__": + import os + os.environ["RAPID_API_KEY"] = "b5258e1150msh2e4f098fdeeda7fp1ac998jsncbc24fc76b95" + tool = AmazonService() + + # Example for product search + 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) + + # Example for product details + details_result = tool.call_endpoint( + route="product-details", + payload={ + "asin": "B07ZPKBL9V", + "country": "US" + } + ) + print("Product Details:", details_result) + + # Example for products by category + 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) + + # Example for product reviews + 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) + + # Example for seller profile + seller_result = tool.call_endpoint( + route="seller-profile", + payload={ + "seller_id": "A02211013Q5HP3OMSZC7W", + "country": "US" + } + ) + print("Seller Profile:", seller_result) + + # Example for seller reviews + 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) +