{"openapi":"3.1.0","info":{"title":"appbk App Market Data API","version":"0.1.0","description":"Read-only REST API backed by appbk's stored MySQL market data. It never triggers the crawler or calls RapidAPI."},"servers":[{"url":"/","description":"Current deployment"}],"security":[{"bearerAuth":[]}],"paths":{"/healthz":{"get":{"summary":"Service health","security":[],"responses":{"200":{"description":"Service is running."}}}},"/api/v1/rankings":{"get":{"summary":"Latest market or category chart","parameters":[{"name":"country","in":"query","schema":{"type":"string","enum":["cn","us","jp"],"default":"cn"},"description":"App Store market."},{"name":"collection","in":"query","schema":{"type":"string","enum":["topfreeapplications","toppaidapplications","topgrossingapplications"],"default":"topfreeapplications"},"description":"Chart collection."},{"name":"category","in":"query","schema":{"type":"string","default":"all"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":10}}],"responses":{"200":{"description":"Stored appbk data returned as JSON."},"400":{"description":"Invalid query parameter."},"401":{"description":"Missing or invalid Bearer token."},"503":{"description":"The stored data service is temporarily unavailable."}}}},"/api/v1/categories":{"get":{"summary":"Stored category catalog","parameters":[{"name":"country","in":"query","schema":{"type":"string","enum":["cn","us","jp"],"default":"cn"},"description":"App Store market."},{"name":"query","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Stored appbk data returned as JSON."},"400":{"description":"Invalid query parameter."},"401":{"description":"Missing or invalid Bearer token."},"503":{"description":"The stored data service is temporarily unavailable."}}}},"/api/v1/category-rankings":{"get":{"summary":"Category-name-aware chart lookup","parameters":[{"name":"country","in":"query","schema":{"type":"string","enum":["cn","us","jp"],"default":"cn"},"description":"App Store market."},{"name":"collection","in":"query","schema":{"type":"string","enum":["topfreeapplications","toppaidapplications","topgrossingapplications"],"default":"topfreeapplications"},"description":"Chart collection."},{"name":"category","in":"query","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":10}}],"responses":{"200":{"description":"Stored appbk data returned as JSON."},"400":{"description":"Invalid query parameter."},"401":{"description":"Missing or invalid Bearer token."},"503":{"description":"The stored data service is temporarily unavailable."}}}},"/api/v1/apps/search":{"get":{"summary":"Search by App name, developer or Apple ID","parameters":[{"name":"country","in":"query","schema":{"type":"string","enum":["cn","us","jp"],"default":"cn"},"description":"App Store market."},{"name":"query","in":"query","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":20,"default":8}}],"responses":{"200":{"description":"Stored appbk data returned as JSON."},"400":{"description":"Invalid query parameter."},"401":{"description":"Missing or invalid Bearer token."},"503":{"description":"The stored data service is temporarily unavailable."}}}},"/api/v1/apps/{app}":{"get":{"summary":"App detail","parameters":[{"name":"app","in":"path","required":true,"schema":{"type":"string"},"description":"Apple ID or App name."},{"name":"country","in":"query","schema":{"type":"string","enum":["cn","us","jp"],"default":"cn"},"description":"App Store market."},{"name":"full","in":"query","schema":{"type":"boolean","default":false},"description":"Include description, release notes, genres and screenshots."}],"responses":{"200":{"description":"Stored appbk data returned as JSON."},"400":{"description":"Invalid query parameter."},"401":{"description":"Missing or invalid Bearer token."},"503":{"description":"The stored data service is temporarily unavailable."}}}},"/api/v1/apps/{app}/reviews":{"get":{"summary":"Recent stored reviews","parameters":[{"name":"app","in":"path","required":true,"schema":{"type":"string"}},{"name":"country","in":"query","schema":{"type":"string","enum":["cn","us","jp"],"default":"cn"},"description":"App Store market."},{"name":"rating","in":"query","schema":{"type":"integer","minimum":1,"maximum":5}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":30,"default":15}}],"responses":{"200":{"description":"Stored appbk data returned as JSON."},"400":{"description":"Invalid query parameter."},"401":{"description":"Missing or invalid Bearer token."},"503":{"description":"The stored data service is temporarily unavailable."}}}},"/api/v1/apps/{app}/review-signals":{"get":{"summary":"Rating and review aggregates","parameters":[{"name":"app","in":"path","required":true,"schema":{"type":"string"}},{"name":"country","in":"query","schema":{"type":"string","enum":["cn","us","jp"],"default":"cn"},"description":"App Store market."},{"name":"days","in":"query","schema":{"type":"integer","minimum":1,"maximum":365,"default":90}}],"responses":{"200":{"description":"Stored appbk data returned as JSON."},"400":{"description":"Invalid query parameter."},"401":{"description":"Missing or invalid Bearer token."},"503":{"description":"The stored data service is temporarily unavailable."}}}},"/api/v1/apps/{app}/rank-history":{"get":{"summary":"App chart rank history","parameters":[{"name":"app","in":"path","required":true,"schema":{"type":"string"}},{"name":"country","in":"query","schema":{"type":"string","enum":["cn","us","jp"],"default":"cn"},"description":"App Store market."},{"name":"collection","in":"query","schema":{"type":"string","enum":["topfreeapplications","toppaidapplications","topgrossingapplications"],"default":"topfreeapplications"},"description":"Chart collection."},{"name":"category","in":"query","schema":{"type":"string","default":"all"}},{"name":"days","in":"query","schema":{"type":"integer","minimum":1,"maximum":90,"default":30}}],"responses":{"200":{"description":"Stored appbk data returned as JSON."},"400":{"description":"Invalid query parameter."},"401":{"description":"Missing or invalid Bearer token."},"503":{"description":"The stored data service is temporarily unavailable."}}}},"/api/v1/market-changes":{"get":{"summary":"Compare the latest two chart snapshots","parameters":[{"name":"country","in":"query","schema":{"type":"string","enum":["cn","us","jp"],"default":"cn"},"description":"App Store market."},{"name":"collection","in":"query","schema":{"type":"string","enum":["topfreeapplications","toppaidapplications","topgrossingapplications"],"default":"topfreeapplications"},"description":"Chart collection."},{"name":"category","in":"query","schema":{"type":"string","default":"all"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":30,"default":15}}],"responses":{"200":{"description":"Stored appbk data returned as JSON."},"400":{"description":"Invalid query parameter."},"401":{"description":"Missing or invalid Bearer token."},"503":{"description":"The stored data service is temporarily unavailable."}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"One token from APPBK_API_KEYS."}}}}