{"openapi":"3.1.0","info":{"title":"AccessTrade (BYOK) API","version":"0.1.0","description":"AccessTrade (BYOK) lets an AI assistant read your own AccessTrade data through the AccessTrade API with a key you supply (AccessTrade publisher access key). Read-only: 8 tools (list_campaigns, get_commission_policies, list_transactions, list_orders, list_offers, list_datafeeds, get_product_detail, list_top_products). The BYOK key travels with each request, is used for that one call only and is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-accesstrade.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-accesstrade/docs"},"termsOfService":"https://connectorbay.com/byok-accesstrade/terms"},"servers":[{"url":"https://byok-accesstrade.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-accesstrade/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_campaigns":{"post":{"operationId":"list_campaigns","summary":"List AccessTrade merchant campaigns with name, merchant, approval state, category, dates and landing URL. Paged. Use for","description":"List AccessTrade merchant campaigns with name, merchant, approval state, category, dates and landing URL. Paged. Use for \"Which AccessTrade campaigns am I approved for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"approval":{"anyOf":[{"enum":["successful","pending","unregistered"],"type":"string"},{"type":"null"}],"default":null,"description":"Set to 'successful' to list only campaigns you are approved for.","title":"Approval"},"campaign_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only this campaign id.","title":"Campaign Id"},"page":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page (1 to 200).","title":"Limit"}},"title":"list_campaignsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_commission_policies":{"post":{"operationId":"get_commission_policies","summary":"Get the commission rules of a campaign: default reward and the per-category and per-product splits for a month. Use for ","description":"Get the commission rules of a campaign: default reward and the per-category and per-product splits for a month. Use for \"What commission does AccessTrade campaign 5585194803623188142 pay\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"camp_id":{"description":"Campaign id from list_campaigns.","maxLength":64,"title":"Camp Id","type":"string"},"month":{"anyOf":[{"maxLength":7,"type":"string"},{"type":"null"}],"default":null,"description":"Month the rules apply to, MM-YYYY, for example 10-2026.","title":"Month"}},"required":["camp_id"],"title":"get_commission_policiesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_transactions":{"post":{"operationId":"list_transactions","summary":"List your AccessTrade conversions (transactions) in a period with merchant, status, value, commission, product and UTM f","description":"List your AccessTrade conversions (transactions) in a period with merchant, status, value, commission, product and UTM fields (device details are not returned). Limited to 10 calls a minute. Use for \"How much commission did I earn on AccessTrade this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"since":{"description":"Start of the period, ISO 8601, for example 2026-10-01T00:00:00Z.","maxLength":200,"title":"Since","type":"string"},"until":{"description":"End of the period, ISO 8601, for example 2026-10-07T00:00:00Z.","maxLength":200,"title":"Until","type":"string"},"status":{"anyOf":[{"enum":[0,1,2],"type":"integer"},{"type":"null"}],"default":null,"description":"Conversion status: 0 pending or hold, 1 approved, 2 rejected.","title":"Status"},"merchant":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Merchant name as used by AccessTrade, for example 'lazada' or 'tikivn'.","title":"Merchant"},"is_confirmed":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":null,"description":"1 for approved conversions only, 0 for unapproved.","title":"Is Confirmed"},"utm_source":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only this utm_source.","title":"Utm Source"},"page":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page (1 to 200).","title":"Limit"}},"required":["since","until"],"title":"list_transactionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_orders":{"post":{"operationId":"list_orders","summary":"List your AccessTrade orders (v2) in a period with merchant, order value, commission, approval counts and UTM fields. Pa","description":"List your AccessTrade orders (v2) in a period with merchant, order value, commission, approval counts and UTM fields. Paged. Use for \"Which orders came through my AccessTrade links last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"since":{"description":"Start of the period, ISO 8601, for example 2026-10-01T00:00:00Z.","maxLength":200,"title":"Since","type":"string"},"until":{"description":"End of the period, ISO 8601, for example 2026-10-07T00:00:00Z.","maxLength":200,"title":"Until","type":"string"},"status":{"anyOf":[{"enum":[0,1,2],"type":"integer"},{"type":"null"}],"default":null,"description":"Conversion status: 0 pending or hold, 1 approved, 2 rejected.","title":"Status"},"merchant":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Merchant name as used by AccessTrade, for example 'lazada' or 'tikivn'.","title":"Merchant"},"utm_source":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only this utm_source.","title":"Utm Source"},"page":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":300,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Orders per page (1 to 300).","title":"Limit"}},"required":["since","until"],"title":"list_ordersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_offers":{"post":{"operationId":"list_offers","summary":"List AccessTrade promotions, vouchers and coupons by merchant, domain or category, with dates and affiliate links. Paged","description":"List AccessTrade promotions, vouchers and coupons by merchant, domain or category, with dates and affiliate links. Paged. Use for \"Which active vouchers does AccessTrade have for Lazada\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"merchant":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Merchant name as used by AccessTrade, for example 'lazada' or 'tikivn'.","title":"Merchant"},"domain":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Domain of the offer, for example lazada.vn.","title":"Domain"},"categories":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Offer category names, comma separated, for example voucher-services.","title":"Categories"},"scope":{"anyOf":[{"const":"expiring","type":"string"},{"type":"null"}],"default":null,"description":"Set to 'expiring' to list offers about to expire.","title":"Scope"},"coupon":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":null,"description":"1 for offers with a coupon code, 0 for offers without.","title":"Coupon"},"status":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":null,"description":"1 for active offers, 0 for expired ones.","title":"Status"},"page":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Offers per page (1 to 100).","title":"Limit"}},"title":"list_offersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_datafeeds":{"post":{"operationId":"list_datafeeds","summary":"Search AccessTrade product datafeeds by campaign, domain, price and discount filters, with prices, discount rates and af","description":"Search AccessTrade product datafeeds by campaign, domain, price and discount filters, with prices, discount rates and affiliate deep links. Paged. Use for \"Which discounted products does AccessTrade list for lazada.vn\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"campaign":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Merchant (campaign) of the products.","title":"Campaign"},"domain":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Domain of the product owner, for example lazada.vn.","title":"Domain"},"price_from":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Minimum price.","title":"Price From"},"price_to":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Maximum price.","title":"Price To"},"discount_rate_from":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Minimum discount rate.","title":"Discount Rate From"},"discount_rate_to":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Maximum discount rate.","title":"Discount Rate To"},"status_discount":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":null,"description":"1 for discounted products only, 0 for undiscounted.","title":"Status Discount"},"page":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page (1 to 200).","title":"Limit"}},"title":"list_datafeedsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_product_detail":{"post":{"operationId":"get_product_detail","summary":"Get one product from an AccessTrade merchant: name, price, discount, brand, category, link and image. Use for \"What is t","description":"Get one product from an AccessTrade merchant: name, price, discount, brand, category, link and image. Use for \"What is the price of product 00033675--80799010-N-1 at fpt_longchau\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"merchant":{"description":"Merchant name, for example lazada.","maxLength":100,"title":"Merchant","type":"string"},"product_id":{"description":"Product id as given in the datafeeds.","maxLength":200,"title":"Product Id","type":"string"}},"required":["merchant","product_id"],"title":"get_product_detailArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_top_products":{"post":{"operationId":"list_top_products","summary":"List the top selling products across AccessTrade merchants in a date range, with prices, discounts and affiliate links. ","description":"List the top selling products across AccessTrade merchants in a date range, with prices, discounts and affiliate links. Use for \"What are the best selling products on AccessTrade this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_from":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Start date DD-MM-YYYY, for example 01-10-2026.","title":"Date From"},"date_to":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"End date DD-MM-YYYY, for example 20-10-2026.","title":"Date To"},"merchant":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Merchant name as used by AccessTrade, for example 'lazada' or 'tikivn'.","title":"Merchant"}},"title":"list_top_productsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}