mirror of https://github.com/kortix-ai/suna.git
amazon
This commit is contained in:
parent
7260b030a7
commit
6b5c4c0512
|
@ -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)
|
||||
|
Loading…
Reference in New Issue