Selling partnerRevelyst Inc.Vendor group ×11 · Seller account ×3US · CA · MX53 critical alerts unactionedSupabase · synced Aug 28, 3:40 PM UTC
SP-API Integration
How this console reaches Amazon: one self-authorised Selling Partner API application, three marketplaces, 10 roles (7 granted), 18 scheduled report pulls and 10 push subscriptions. Connection state as of Aug 28, 2026. Credentials shown masked, and none of them are real.
Connected accounts
4
1 Seller Central, 3 vendor groups
Marketplaces
3
NA region, one endpoint
Granted roles
7 of 10
3 PII roles left ungranted
Scheduled pulls
18
Reports, Vendor API, Data Kiosk
Pulls healthy
16 of 18
1 failed, 1 late
Subscriptions active
8 of 10
1 in error
Events ingested 24h
76K
EventBridge + SQS
Throttled calls 24h
167
4 operations affected
2 feeds degraded, with downstream screens already drifting. GET_VENDOR_TRAFFIC_REPORT (Vendor traffic (glance views)) last succeeded Aug 27, 10:50 AM, so glance views on Sales & Traffic go stale for every vendor-channel brand: conversion and unit-session rates there are computed on a frozen denominator and will read high until the pull recovers. GET_BRAND_ANALYTICS_SEARCH_TERMS_REPORT is past its window (Weekly Tue 10:00); search-term share on Brand Breakouts is one cycle behind. BRANDED_ITEM_CONTENT_CHANGE is in ERROR, so unauthorised copy and image edits on branded detail pages stop being detected: a third-party contribution can overwrite a title or bullet set and nothing raises a catalog alert until the next full listings pull. Both are re-grant or re-subscribe operations, not code changes, and neither is self-healing.
ConnectionDeveloper Central application profile · Login with Amazon
Application type
SP-API private application, self-authorised
LWA client id
amzn1.application-oa2-client.••••4c7e
Authorisation model
Login with Amazon refresh token per selling partner, rotated quarterly
Region
North America (us-east-1)
Endpoint
https://sellingpartnerapi-na.amazon.com
Request signing
LWA access token only (AWS SigV4 signing was retired for SP-API)
Restricted Data Token
Not requested: no PII roles are granted, so no RDT is required
Token cache
Access token valid 1 hour, refreshed at 55 minutes
Seller id
A2••••••••9QK7
Vendor group codes
RVLYS, RVOUT, RVRGT
Brands mapped
14 across 3 segments
ASINs in scope
1,448
MarketplacesgetMarketplaceParticipations
CountryMarketplace IDChannelsASINsStatus
United StatesATVPDKIKX0DERVendor Central + Seller Central1,448ACTIVE
CanadaA2EUQ1WTGCTBG2Vendor Central + Seller Central898ACTIVE
MexicoA1AM78C64UM0Y8Seller Central only405LIMITED
Roles and scopesDeveloper Central role grants · 7 of 10 granted
RoleGrantedData classUsed by
Inventory and Order TrackingGrantedNo PIIInventory Health, Replenishment, Alerts
Amazon FulfillmentGrantedNo PIIFulfillment Centers, Shipments, Reimbursements
Product ListingGrantedNo PIICatalog Health
PricingGrantedNo PIIPricing & Buy Box
Finance and AccountingGrantedNo PIIFees & Profitability, Reimbursements
Selling Partner InsightsGrantedNo PIISales & Traffic, Overview
Brand AnalyticsGrantedNo PIISales & Traffic
Buyer CommunicationNot grantedPII-
Direct-to-Consumer ShippingNot grantedPII-
Tax InvoicingNot grantedPII-
The 3 ungranted roles are ungranted on purpose. Requesting a PII scope (Buyer Communication, Direct-to-Consumer Shipping, Tax Invoicing) puts the application into Amazon's Data Protection Policy audit track: annual security questionnaire, encryption and retention attestations, and penetration-test evidence. No screen in this console needs a buyer name, address or email, so the application stays outside that scope and every response it handles is aggregate or ASIN-level.
Ingestion pipeline18 feeds defined in code · 13 wired · ingestion disabled in this environment
FeedSourceAPIAccountRole requiredCadenceWindowTierRestatedWhat breaks when stale
FBA inventory position
fba-inventory
GET_FBA_MYI_UNSUPPRESSED_INVENTORY_DATAREPORTSELLERAmazon Fulfilment6hfullCOREupsertStockout and restock alerts go blind. Days-of-supply figures freeze at the last good pull.
FBA inventory by fulfilment centre
fba-inventory-by-node
GET_AFN_INVENTORY_DATA_BY_COUNTRYREPORTSELLERAmazon FulfilmentdailyfullCOREupsertNode-level capacity and overfill projection stop updating, which is the feed the never-overfill-a-warehouse rule runs on.
Inventory ledger, summary view
ledger-summary
GET_LEDGER_SUMMARY_VIEW_DATAREPORTSELLERAmazon Fulfilmentdaily45dRECOVERYrewrites windowReimbursement detection stops. This is the evidence feed: without it a claim is an assertion Amazon will deny.
Sales and traffic by ASIN
sales-traffic
analytics_salesAndTraffic_2024_04_24DATA KIOSKSELLERBrand Analyticsdaily30dCORErewrites windowEvery revenue figure and the whole executive summary go stale.
Vendor sales and traffic
vendor-sales
analytics_vendorAnalytics_2024_09_30DATA KIOSKVENDORSelling Partner Insightsdaily30dCORErewrites windowVendor-side revenue, shipped COGS and replenishment out-of-stock all freeze.
FBA customer returns
customer-returns
GET_FBA_FULFILLMENT_CUSTOMER_RETURNS_DATAREPORTSELLERAmazon Fulfilmentdaily60dRECOVERYrewrites windowRefunds-without-a-returned-unit stop being detected, and each of those is a claim with a 60 day clock.
FBA reimbursements
reimbursements
GET_FBA_REIMBURSEMENTS_DATAREPORTSELLERAmazon Fulfilmentdaily180dRECOVERYrewrites windowRecovered dollars and the capture-rate metric stop moving, and the filing queue re-surfaces claims Amazon has already paid.
Removal shipment detail
removal-shipments
GET_FBA_REMOVAL_SHIPMENT_DETAIL_DATAREPORTSELLERAmazon Fulfilmentweekly180dRECOVERYrewrites windowRemovals that Amazon lost in transit stop being detected. These are reimbursable and routinely missed.
Financial events and settlements
finances
finances.listFinancialEventsSP APISELLERFinance and Accountingdaily60dRECOVERYupsertThe cash bridge stops closing, so nobody can tie ordered revenue to money in the bank.
Estimated FBA fees per unit
estimated-fees
GET_FBA_ESTIMATED_FBA_FEES_TXT_DATAREPORTSELLERAmazon FulfilmentweeklyfullCOMMERCIALupsertSize-tier errors stop being detected. Fee-correction claims have a 90 day window and are the most reliably paid category there is.
Monthly storage fees
storage-fees
GET_FBA_STORAGE_FEE_CHARGES_DATAREPORTSELLERAmazon FulfilmentmonthlyfullCOMMERCIALupsertAged-inventory surcharge forecasting stops, and the surcharge compounds monthly.
Buy box and competitive pricing
competitive-pricing
pricing.getItemOffersBatchSP APISELLERPricing6hfullCOMMERCIALupsertBuy box share and MAP violation detection fall back to the notification stream alone, so a silent loss goes unnoticed.
Listing quality and suppression
listings-issues
GET_MERCHANT_LISTINGS_ALL_DATAREPORTSELLERProduct ListingdailyfullCOMMERCIALupsertSuppressed listings stop being detected. A suppressed ASIN has no offer at all, so this is revenue already being lost.
Advertising campaigns and budgets
ads-campaigns
ads.listCampaignsADS APISELLERAds API (separate application)dailyfullADVERTISINGupsertOut-of-budget campaigns stop being flagged.
Advertising performance by campaign and ASIN
ads-performance
ads.reporting.v3ADS APISELLERAds API (separate application)daily60dADVERTISINGrewrites windowThe spend-on-unbuyable-inventory join goes dark, which is usually the largest single avoidable number in the account.
Vendor purchase orders
vendor-purchase-orders
vendorOrders.getPurchaseOrdersVENDOR APIVENDORVendor Direct Fulfilment / Vendor Ordershourly30dCOMPLIANCEupsertThe 24 hour acknowledgement clock stops being tracked. A missed acknowledgement earns a chargeback and drops the PO out of the fill-rate numerator: two penalties for one silence.
Vendor chargebacks
vendor-chargebacks
GET_VENDOR_CHARGEBACK_REPORTREPORTVENDORVendor Paymentsdaily120dCOMPLIANCErewrites windowThe dispute deadline clock stops. Amazon does not reopen a chargeback window.
Vendor demand forecast
vendor-forecast
analytics_vendorAnalytics_2024_09_30 vendorForecastingDATA KIOSKVENDORSelling Partner InsightsweeklyfullCOMPLIANCErewrites windowForecast-versus-plan comparison stops updating, which is the input to the buy plan.
Three properties of this pipeline are worth naming, because they are the difference between a script and something that can be left running. Restated windows are rewritten, not upserted: Amazon moves sales figures for up to 72 hours and can reopen a settlement, so the 9 feeds marked above delete their window before writing it, which is the only way a total keeps matching Amazon's own console. Auth failures are separated from throttling: a 403 from a lapsed role grant and a 429 from rate limiting look alike in a log and need opposite responses, so the client classifies them and a feed waiting on a human is held back rather than retried every fifteen minutes all weekend. Nothing here writes to Amazon. There is no code path in the ingestion layer that POSTs to a selling partner resource. Acknowledging a PO and filing a claim are separate operations, each behind an explicit human approval.
Scheduled data pullsReports API createReport / Vendor Retail Analytics / Data Kiosk
Report typeWhat it feedsAPICadenceLast runNext runRowsStatus
GET_VENDOR_TRAFFIC_REPORTVendor traffic (glance views)VENDOR APIDaily 10:30 UTCAug 27, 10:50 AMAug 28, 10:04 AM2,216FAILED
GET_BRAND_ANALYTICS_SEARCH_TERMS_REPORTBrand analytics: search termsSP APIWeekly Tue 10:00Aug 26, 10:36 AMSep 2, 10:56 AM100,000LATE
GET_FBA_MYI_UNSUPPRESSED_INVENTORY_DATAFBA inventory: unsuppressedSP APIEvery 4 hoursAug 27, 12:14 PMAug 27, 4:32 PM4,187HEALTHY
GET_FBA_INVENTORY_PLANNING_DATAInventory planning (age, DOS, IPI)SP APIDaily 06:00 UTCAug 27, 6:30 AMAug 28, 6:40 AM3,962HEALTHY
GET_RESTOCK_INVENTORY_RECOMMENDATIONS_REPORTRestock recommendationsSP APIDaily 07:00 UTCAug 27, 7:03 AMAug 28, 7:22 AM2,411HEALTHY
GET_AFN_INVENTORY_DATA_BY_COUNTRYAFN inventory by countrySP APIDaily 06:30 UTCAug 27, 6:04 AMAug 28, 6:15 AM5,104HEALTHY
GET_STRANDED_INVENTORY_UI_DATAStranded inventorySP APIDaily 15:00 UTCAug 27, 3:14 PMAug 28, 3:42 PM118HEALTHY
GET_LEDGER_DETAIL_VIEW_DATAInventory ledger: detail viewSP APIDaily 05:00 UTCAug 27, 5:17 AMAug 28, 5:39 AM26,840HEALTHY
GET_FBA_FULFILLMENT_CUSTOMER_RETURNS_DATAFBA customer returnsSP APIDaily 08:00 UTCAug 27, 8:43 AMAug 28, 8:28 AM942HEALTHY
GET_FBA_REIMBURSEMENTS_DATAFBA reimbursementsSP APIDaily 08:30 UTCAug 27, 8:00 AMAug 28, 8:26 AM407HEALTHY
GET_FBA_FULFILLMENT_LONGTERM_STORAGE_FEE_CHARGES_DATAAged inventory surchargeSP APIWeekly Mon 09:00Aug 25, 9:04 AMSep 1, 9:55 AM1,633HEALTHY
GET_V2_SETTLEMENT_REPORT_DATA_FLAT_FILESettlement: flat file v2SP APIOn Amazon closeAug 23, 3:32 AMSep 6, 3:05 AM88,214HEALTHY
GET_SALES_AND_TRAFFIC_REPORTSales & traffic by ASINSP APIDaily 09:00 UTCAug 27, 9:53 AMAug 28, 9:55 AM1,348HEALTHY
GET_VENDOR_SALES_REPORTVendor sales (Retail Analytics)VENDOR APIDaily 10:00 UTCAug 27, 10:08 AMAug 28, 10:11 AM2,216HEALTHY
GET_VENDOR_INVENTORY_REPORTVendor inventory (sourceable, on-hand)VENDOR APIDaily 10:15 UTCAug 27, 10:07 AMAug 28, 10:38 AM2,216HEALTHY
GET_VENDOR_FORECASTING_REPORTVendor demand forecastVENDOR APIWeekly Mon 11:00Aug 25, 11:10 AMSep 1, 11:41 AM1,904HEALTHY
GET_VENDOR_REAL_TIME_INVENTORY_REPORTVendor real-time inventoryVENDOR APIHourlyAug 27, 3:45 PMAug 27, 4:42 PM2,216HEALTHY
salesAndTrafficByAsinData Kiosk: sales & traffic GraphQLDATA KIOSKDaily 09:30 UTCAug 27, 9:15 AMAug 28, 9:24 AM1,348HEALTHY
Push notificationsNotifications API createSubscription · destination per type
Notification typeDestinationStatusEvents 24hPurpose
BRANDED_ITEM_CONTENT_CHANGEEventBridgeERROR-Unauthorised copy edits: SQS policy needs re-grant
FEE_PROMOTIONEventBridgePENDING-Fee change early warning
ANY_OFFER_CHANGEDEventBridgeACTIVE41,822Buy box and competitive price monitoring
LISTINGS_ITEM_STATUS_CHANGEEventBridgeACTIVE316Suppression detection inside 2 minutes
LISTINGS_ITEM_ISSUES_CHANGEEventBridgeACTIVE204Catalog health queue
FBA_INVENTORY_AVAILABILITY_CHANGESSQSACTIVE12,904Live days-of-supply recompute
FBA_OUTBOUND_SHIPMENT_STATUSSQSACTIVE2,211Fulfilment exception tracking
ORDER_CHANGEEventBridgeACTIVE18,740Order-level velocity signal
REPORT_PROCESSING_FINISHEDSQSACTIVE96Report ingestion pipeline trigger
PRODUCT_TYPE_DEFINITION_CHANGEEventBridgeACTIVE7Attribute schema drift
Why two latencies exist in this app. Notifications land on an EventBridge bus or an SQS queue, a small consumer normalises the payload and writes it to Supabase, and the alert rules evaluate on write rather than on a poll. That is why buy-box loss and suppression alerts appear within minutes of the event, while anything sourced from a report (fees, settlement, aged inventory, vendor traffic) can only move on the report cadence shown above. When a number on another page looks behind, the row that explains it is in one of these two tables.
Rate limits and throttlingx-amzn-RateLimit-Limit headers, trailing 24h
OperationRate / secBurstUsage of quotaThrottles 24h
getPricing (competitive)0.50001
92%
118
getInventorySummaries2.02
78%
41
searchCatalogItems2.02
61%
6
getReportDocument0.016715
51%
-
createReport0.016715
44%
2
getCatalogItem5.05
34%
-
getPurchaseOrders (Vendor)10.010
22%
-
submitShipmentConfirmations10.010
14%
-
submitAcknowledgement (Vendor)10.010
8%
-
createFulfillmentOrder2.030
3%
-
The client holds a per-operation token bucket and retries a 429 with jittered exponential backoff, so a throttle costs latency rather than a dropped record. The binding constraint is getPricing competitive pricing at 0.5 requests per second: at 1,448 ASINs a full polled sweep of buy-box state takes over an hour, which is why it currently runs at 92% of quota with 118 throttles in the last 24 hours. Buy-box and offer changes are therefore taken from the ANY_OFFER_CHANGED notification, which carries the same signal push-side at no quota cost, and getPricing is reserved for on-demand checks when an operator opens a single ASIN.
Data flowAuthorise, pull, normalise, evaluate, render
  1. 1Authorise. The selling partner authorises the application in Seller Central or Vendor Central once, the app stores the returned refresh token per partner, and every call exchanges that token for a one-hour LWA access token.
  2. 2Request. A cron worker calls createReport for each schedule above and createSubscription once per notification type, so the same domain is covered by a slow authoritative feed and a fast event feed.
  3. 3Collect. The worker polls getReport until the processing status is DONE, then getReportDocument returns a pre-signed URL to a gzipped tab-delimited (or JSON, for Data Kiosk) document it streams and parses.
  4. 4Normalise. Rows are mapped onto the app's camelCase model, keyed on ASIN, FC code, PO number or claim id, and upserted into the Supabase tables listed on Data Admin.
  5. 5Evaluate. Alert rules run on write for event-sourced tables and on cron for report-sourced tables, comparing each record against its threshold and writing an alert plus an email or Slack notification when it crosses.
  6. 6Render. Every page in this app is an async server component that reads through one accessor, so nothing in the UI knows or cares whether the row came from Amazon an hour ago or from the demo generator.